可靠通信要求消息從信源到信宿盡量無誤傳輸,這就要求通信系統具有很好的糾錯能力,如使用差錯控制編碼。自仙農定理提出以來,先后有許多糾錯編碼被相繼提出,例如漢明碼,BCH碼和RS碼等,而C。Berrou等人于1993年提出的Turbo碼以其優異的糾錯性能成為通信界的一個里程碑。 然而,Turbo碼迭代譯碼復雜度大,導致其譯碼延時大,故而在工程中的應用受到一定限制,而并行Turbo譯碼可以很好地解決上述問題。本論文的主要工作是通過硬件實現一種基于幀分裂和歸零處理的新型并行Turbo編譯碼算法。論文提出了一種基于多端口存儲器的并行子交織器解決方法,很好地解決了并行訪問存儲器沖突的問題。 本論文在現場可編程門陣列(FPGA)平臺上實現了一種基于幀分裂和籬笆圖歸零處理的并行Turbo編譯碼器。所實現的并行Turbo編譯碼器在時鐘頻率為33MHz,幀長為1024比特,并行子譯碼器數和最大迭代次數均為4時,可支持8.2Mbps的編譯碼數掘吞吐量,而譯碼時延小于124us。本文還使用EP2C35FPGA芯片設計了系統開發板。該開發板可提供高速以太網MAC/PHY和PCI接口,很好地滿足了通信系統需求。系統測試結果表明,本文所實現的并行Turbo編譯碼器及其開發板運行正確、有效且可靠。 本論文主要分為五章,第一章為緒論,介紹Turbo碼背景和硬件實現相關技術。第二章為基于幀分裂和歸零的并行Turbo編碼的設計與實現,分別介紹了編碼器和譯碼器的RTL設計,還提出了一種基于多端口存儲器的并行子交織器和解交織器設計。第三章討論了使用NIOS處理器的SOC架構,使用SOC架構處理系統和基于NIOSII處理器和uC/0S一2操作系統的架構。第四章介紹了FPGA系統開發板設計與調試的一些工作。最后一章為本文總結及其展望。
上傳時間: 2013-04-24
上傳用戶:ziyu_job1234
回波消除器廣泛應用于公用電話交換網(PSTN)、移動通信系統和視頻電話會議系統等多種語音通信領域。在PSTN系統中,由于線路阻抗不匹配,遠端語音信號通過混合線圈時產生一定泄漏,一部分信號又傳回遠端,產生線路回波,回波的存在會嚴重影響語音通信質量。本文主要針對線路回波進行研究,設計并實現了滿足實用要求的基于FPGA平臺的回波消除器。 首先,對回波產生原理和目前幾種常用回波消除算法進行了分析,在研究自適應回波消除器的各個模塊,特別是深入分析各種自適應濾波算法和雙講檢測算法,綜合考慮各種算法的運算復雜度和性能的情況下,這里采用NLMS算法實現自適應回波消除器。針對傳統雙講檢測算法在近端語音幅度較低情況下容易產生誤判的情況,給出一種基于子帶濾波器組的改進雙講檢測算法。 本文首先使用C語言實現回波消除器的各個模塊,其中包括自適應濾波器、遠端檢測、雙講檢測、非線性處理和舒適噪聲產生模塊。經過仿真測試,相關模塊算法能夠有效提高回波消除器性能。在此基礎上,本文使用硬件描述語言Veillog HDL,在QuartusⅡ和ModelSim軟件平臺上實現各功能模塊,并通過模塊級和系統級功能仿真以及時序仿真驗證,最終在現場可編程門陣列(Field Programmable Gate Arrav,FPGA)平臺上實現回波消除系統。本文詳細闡述了基于FPGA的設計流程與設計方法,并描述了自適應濾波器、基于分布式算法FIR濾波器、除法器和有限狀態機的設計過程。 根據ITU-T G.168標準提出的測試要求,本文塒基于FPGA設計實現的自適應回波消除系統進行大量主客觀測試。經過測試,各項性能指標均達到或超過G.168標準的要求,具有良好的回波消除效果。
上傳時間: 2013-06-18
上傳用戶:qwe1234
·詳細說明:DTMF 解碼器, 用C 寫的, 簡單易懂, 整合容易.
上傳時間: 2013-06-24
上傳用戶:mqien
C語言函數庫查詢器(迅速查詢版),需要的下載用用吧。
上傳時間: 2013-04-24
上傳用戶:小儒尼尼奧
H.264編碼解碼器源碼(c語言版本),采用VS打開即可使用。
上傳時間: 2013-07-24
上傳用戶:cjf0304
本文:采用了FPGA方法來模擬高動態(Global Position System GPS)信號源中的C/A碼產生器。C/A碼在GPS中實現分址、衛星信號粗捕和精碼(P碼)引導捕獲起著重要的作用,通過硬件描述語言VERILOG在ISE中實現電路生成,采用MODELSIM、SYNPLIFY工具分別進行仿真和綜合。
上傳時間: 2013-08-31
上傳用戶:pwcsoft
摘要本文介紹了一種用CPLD設計GPS數字通道相關器中C/A碼產生囂的方法,詳細分析了設計原理并給出了相應的仿真結果.這種設計方法已在我們研制的GPS,GLONASS兼容機中得到實際應用。
上傳時間: 2013-09-01
上傳用戶:wangdean1101
數字容性隔離器的應用環境通常包括一些大型電動馬達、發電機以及其他產生強電磁場的設備。暴露在這些磁場中,可引起潛在的數據損壞問題,因為電勢(EMF,即這些磁場形成的電壓)會干擾數據信號傳輸。由于存在這種潛在威脅,因此許多數字隔離器用戶都要求隔離器具備高磁場抗擾度 (MFI)。許多數字隔離器技術都聲稱具有高 MFI,但容性隔離器卻因其設計和內部結構擁有幾乎無窮大的MFI。本文將對其設計進行詳細的介紹。
上傳時間: 2013-10-26
上傳用戶:litianchu
pic18fxx8單片機通用同步異步收發器的接口電路和c源代碼
上傳時間: 2013-11-06
上傳用戶:zhangzhenyu
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現編程的讀,寫,擦等細節//AT89C2051的特殊處:給XTAL一個脈沖,地址計數加1;P1的引腳排列與AT89C51相反,需要用函數轉換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結束后的工作,設置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數據{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉換并設置P0口的數據{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //寫一個單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗:循環讀,直到讀出與寫入的數相同 { nTimeOut++; if(nTimeOut>1000)//超時了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //讀一個單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設置成編程狀態//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設置pw中的函數指針,讓主程序可以調用上面的函數{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時間: 2013-11-12
上傳用戶:gut1234567