糾錯碼技術是一種通過增加一定冗余信息來提高信息傳輸可靠性的有效方法。RS碼是一種典型的糾錯碼,在線性分組碼中,它具有最強的糾錯能力,既能糾正隨機錯誤,也能糾正突發錯誤,在深空通信、移動通信、磁盤陣列、光存儲及數字視頻廣播(DVB)等系統中具有廣泛的應用。 DVD是一種高容量的存儲媒質。DVD技術的應用很廣泛,在數字技術中占有重要地位。DVD系統中采用里德-所羅門乘積碼(RS-PC:Reed-Solomon ProductCode)進行糾錯,RS碼譯碼器在伺服芯片中具有重要作用。 FPGA在開發階段具有安全、方便、可隨時修改設計等不可替代的優點,在電子系統中采用FPGA可以極大的提升硬件系統設計的靈活性,可靠性,同時提高硬件開發的速度和降低系統的成本。FPGA的固有優點使其得到越來越廣泛的應用,FPGA設計技術也被越來越多的設計人員所掌握。 本文首先介紹了編碼理論和常用的RS編譯碼算法,提出RS編碼器實現方案,詳細分析了譯碼器的ME算法和改進BM算法的實現,針對ME算法提出了一種流水線結構的糾刪糾錯RS譯碼器實現方案,在譯碼器復雜度和延時上作了折衷,降低了譯碼器的復雜度并提高了最高工作頻率,利用有限域乘法器的特性對編譯碼電路進行優化。這些技術的采用大大的提高了RS編譯碼器的效率,節省了RS編譯碼器占用的資源。在Xilinx公司的Virtex-II系列FPGA上設計并成功實現了RS(208,192)編譯碼器。
上傳時間: 2013-07-20
上傳用戶:xinshou123456
本論文設計了一種基于FPGA的高速FIR數字濾波器,濾波器實現低通濾波,截止頻率為1MHz,通帶波紋小于1 dB,阻帶最大衰減為-40 dB,輸入輸出數據為8位二進制,采樣頻率為10MHz。 論文首先簡要介紹了數字濾波器的基本原理和線性FIR數字濾波器的性質、結構,根據濾波器的性能要求選擇窗函數、確定系數,在算法上為了滿足數字濾波器的要求,對系數放大512倍并取整,并用Matlab對數字濾波器原理進行了證明。同時簡述了EDA技術和FPGA設計流程。 其次,論文說明了FIR數字濾波器模塊的劃分,并用Verilog語言在Modelsim環境下進行了功能測試。對于數字濾波器系數中的-1,-2,4這些簡單的系數乘法直接進行移位和取反,可以極大的節省資源和優化設計。而對普通系數乘法采用4-BANT(4bits-at-a-time)的并行算法,用加法累加快速實現了乘積的運算;另外,在本設計進行部分積累加時,采用舍取冗余位,主要是根據設計時已對系數進行了放大,而輸出時又要將結果相應的縮小,所以在累加時,提前對部分積縮小,從而減少了運算量,從時間和資源上都得到了優化。 論文的最后分別用Modelsim和Quartus II進行了FIR數字濾波器的前仿真和后仿真,將仿真的結果和Matlab中原理驗證時得到的理想值進行了比較,并對所產生的誤差進行了分析。仿真結果表明:本16階FIR數字濾波器設計能夠實現截止頻率為1MHz的低通濾波,并且工作頻率可達150MHz以上。
上傳時間: 2013-07-15
上傳用戶:lanwei
本文應用EDA技術,基于FPGA器件設計與實現UART,并采用CRC校驗。主要工作如下: 1、在異步串行通信電路部分完全用FPGA來實現。選用Xilinx公司的SpartanⅢ系列的XC3S1000來實現異步串行通信的接收、發送和接口控制功能,利用FPGA集成度比較高,具有在線可編程能力,在其完成各種功能的同時,完全可以將串行通信接口構建其中,可根據實際需求分配資源。 2、利用VerilogHDL語言非常容易掌握,功能比VHDL更強大的特點,可以在設計時不斷修改程序,來適用不同規模的應用,而且采用Verilog輸入法與工藝性無關,利用系統設計時對芯片的要求,施加不同的約束條件,即可設計出實際電路。 3、利用ModelSim仿真工具對程序進行功能仿真和時序仿真,以驗證設計是否能獲得所期望的功能,確定設計程序配置到邏輯芯片之后是否可以運行,以及程序在目標器件中的時序關系。 4、為保證數據傳輸的正確性,采用循環冗余校驗CRC(CyclicRedundancyCheck),該編碼簡單,誤判概率低,為了減少硬件成本,降低硬件設計的復雜度,本設計通過CRC算法軟件實現。 實驗結果表明,基于EDA技術的現場可編程門陣列FPGA集成度高,結構靈活,設計方法多樣,開發周期短,調試方便,修改容易,采用FPGA較好地實現了串行數據的通信功能,并對數據作了一定的處理,本設計中為CRC校驗。另外,可以利用FPGA的在線可編程特性,對本設計電路進行功能擴展,以滿足更高的要求。
上傳時間: 2013-04-24
上傳用戶:Altman
交流電源供電方式正在由集中式向分布式、全功能式發展,而實現分布式電源的核心就是模塊的并聯技術。多臺逆變器并聯可以實現大容量供電和冗余供電,可大大提高系統的靈活性,使電源系統的體積重量大為降低,同時其主開關器件的電流應力也可大大減少,從根本上提高了可靠性、降低成本和提高功率密度。本文主要研究逆變器并聯技術。 本文首先對電壓、電流雙閉環逆變器控制系統進行了研究。通過對傳遞函數的分析,得到了基于等效輸出阻抗的雙閉環控制的逆變器并聯系統模型。在分析逆變器模型的基礎上設計了各控制器參數,并通過MATLAB仿真進行了驗證。根據上述模型,分析了逆變器并聯的環流特性,以及基于有功和無功功率的并聯控制方案。 隨著電子技術的不斷發展,FPGA技術正在越來越多地用于工程實踐中。本文在研究SPWM控制技術的基礎上,應用FPGA芯片EP1C12Q240C8實現了SPWM數字控制器,用于多模塊逆變器并聯控制系統。文中給出了仿真結果和芯片的測試結果。 基于FPGA的三相逆變器并聯數字控制器的研究具有現實意義,設計具有創新性。仿真和芯片的初步測試結果表明:本文設計的基于FPGA的逆變器并聯數字控制器能夠滿足逆變器并聯系統的要求。
上傳時間: 2013-08-05
上傳用戶:ccclll
近年來,計算機圖形學應用越來越廣泛,尤其是三維(3D)繪圖。3D繪圖使用3D模型和各種影像處理產生具有三維空間真實感的影像,應用于虛擬真實情況以及多媒體的產品上,且多半是使用低成本的實時3D計算機繪圖技術為基礎。在初期3D圖形學剛起步時,由于圖形簡單,因此可以利用CPU來運算,但隨著圖形學技術的發展,所要繪制的圖形越來越復雜,這時如果單純依賴CPU來處理,不能達到實時的要求,因此需要專門的硬件來加速圖形處理,GPU(圖形處理單元)因此出現了。不過由于3D圖形加速硬件的復雜性和短壽命,這極大地提高了對硬件開發環境的需要。為了更好的對設計進行更改和測試,不能僅僅用專門定制的方法來設計,需要其他的方:硬件描述語言(HDL)和FPGA。 隨著計算機繪圖規模的需要,借助輔助硬件資源,來提高圖形處理單元(GPU)處理速度的需求越來越普遍。自從15年前現場可編程門陣列(FPGA)開始出現以來,其在可編程硬件領域所起的作用越來越大。它們在速度、體積和速度方面都有了很大的提高。這意味著FPGA在以前只能使用專用硬件的場合越來越重要。其中一個應用領域就是3D圖形渲染,在這個研究領域里人們正在利用具有可編程性能的FPGA來幫助改進圖形處理單元(GPU)的性能。 能夠在廉價、可動態重新配置的FPGA上實現復雜算法來輔助硬件設計。本文的設計就是通過在FPGA上實現3維圖形幾何處理管線部分功能來提高圖形處理速度。具體實現中使用硬件描述語言(Verilog HDL)進行邏輯設計,并發現問題解決問題。 本文主要特色如下: 1.針對幾何變換換子系統,提出一種硬件實現方案,該方案能對基本的幾何變換如:平移、縮放、旋轉和投影進行操作。首先構造出總體變換矩陣,隨后進行矩陣乘法運算,再進行投影變換,最后輸出變換座標。提出一種脈動陣列結構,用于兩個矩陣的乘法運算。找到一種快捷的方法來實現矩陣相乘,將能大大提高系統的效率。 2.對于3D圖形裁剪,文中描述了一種裁剪引擎,它能夠處理3D圖形中的裁剪、透視除法以及視口映射的功能。硬件實現的難度取決于裁剪算法的復雜程度。我們在Sutherland-Hodgman裁剪算法的基礎上提出一種新的裁剪算法,該算法通過去除冗余頂點以提高處理速度,同時利用編碼來判斷線段可見性的方法使得硬件實現變得很容易。 3.最后,我們在FPGA上實現了幾何變換以及三維裁剪,并與C語言的模擬結果對比發現結果正確,且三維裁剪能夠以3M個三角形/s的速度運行,滿足了圖形流水中的實時性要求。
上傳時間: 2013-04-24
上傳用戶:yerik
多功能車輛總線一類設備是一個在列車通信網(TCN,TrainCommunication Network)中普遍使用的網絡接口單元。目前我國的新式列車大多采用列車通信網傳輸列車中大量的控制和服務信息。但使用的列車通信網產品主要為國外進口,因此迫切需要研制具有自主知識產權的列車通信網產品。 論文以一類設備控制器的設計為核心,采取自頂向下的模塊設計方法。將設備控制器分為同步層和數據處理層來分別實現對幀的發送與接收處理和對幀數據的提取與存儲處理。 同步層包含幀的識別模塊、曼徹斯特譯碼模塊、曼徹斯特編碼與幀封裝三個模塊。幀識別模塊檢測幀的起始位并對幀類型進行判斷。譯碼模塊根據采集的樣本值來判斷曼徹斯特編碼的值,采樣的難點在于非理想信號帶來的采樣誤差,論文使用結合位同步的多點采樣法來提高采樣質量。幀分界符中的非數據符不需要進行曼徹斯特編碼,編碼時在非數據符位關閉編碼電路使非數據符保持原來的編碼輸出。 數據處理層以主控單元(MCU,Main Control Unit)和通信存儲器為設計核心。MCU是控制器的核心,對接收的主幀進行分析,判斷是從通信存儲器相應端口取出應答從幀并發送,還是準備接收從幀并存入通信存儲器。通信存儲器存儲設備的通信數據,合適的地址分配能簡化MCU的控制程序,論文固定了通信存儲器端口大小使MCU可以根據一個固定的公式進行端口的遍歷從而簡化了MCU程序的復雜度。數據在傳輸中由于受到干擾和沖突等問題而出現錯誤,論文采用循環冗余檢驗碼結合偶檢驗擴展來對傳輸數據進行差錯控制。 最后,使用FPGA和硬件描述語言Verilog HDL開發出了MVB一類設備。目前該一類設備已運用在SS4G電力機車的制動控制單元(BCU.Brake Control Unit)中并在鐵道科學研究院通過了TCN通信測試。一類設備的成功研制為列車通信網中總線管理器等高類設備的開發奠定了堅實的基礎。
上傳時間: 2013-07-27
上傳用戶:qazxsw
本文結合目前國內外航電數據處理系統的發展概況,設計了一款集數據采集、處理、控制及傳輸于一體的航電處理系統。文章首先深入研究了自適應濾波器原理,分析了LMS算法性能,著重從影響算法性能的因素入手,通過分析仿真,改進算法,提升了算法性能,給出仿真結果分析,并設計應用于系統之中;其次介紹了ARINC-429航空總線和RS-422串行總線的信息標準和傳輸格式。在此基礎上,設計了基于FPGA的解決航電系統數據采集、濾波處理、控制傳輸和復雜非線性運算的一體化實現方案。選用XILINX公司的FPGA,實現了航電數據采集、傳輸和控制,集成了ARlNC-429和RS-422兩種通信接口,實現了總線冗余,并實現了數據濾波和相應的算法處理。最后,在實驗室環境下,對每個模塊分別進行了軟硬件測試。
上傳時間: 2013-07-01
上傳用戶:R50974
隨著遙感影像數據量不斷增長,為了更加高效地組織與管理海量的遙感影像,研究并提出了改進的基于小波分解的影像金字塔構建方法。利用多分辨率分析和圖像的小波分解與重構算法,參考影像金字塔構建的一般方法,將圖像小波分解的不同級系數量化、編碼后,分別存儲于金字塔的不同層中。該構建方法可以有效地降低金字塔各層之間的數據冗余,減少總數據量和瀏覽時的數據流量,并能更好地支持嵌入式碼流和漸進式傳輸。
上傳時間: 2013-10-20
上傳用戶:1477849018@qq.com
波形質量更好。論文介紹了五電平功率單元級聯變頻器的主電路拓撲結構特點、探討了輸入移相整流技術,運用坐標變換的方法推導和分析了單元級聯變頻器及異步電機矢量控制系統的數學模型。研究和比較了級聯式變頻器的幾種PWM算法的特點,并選取載波相移層疊混合PWM方式為變頻器的控制方式。提出了三點式五電平功率單元的開關控制策略,以及單元平衡控制的解決方案。并研究了矢量控制方法在中壓級聯變頻器系統的應用。研究和完成了控制系統的軟件、硬件方案設計,對于系統的兩級旁路保護與實現、在線故障識別系統,DSP/CPLD冗余控制系統等關鍵技術進行了研究。同時對采取該變頻器供電的異步電機PWM控制系統和異步電機矢量控制系統分別進行了仿真研究,成功研制了中壓五電平單元級聯變頻器樣機。在不同負載和不同實驗條件下對變頻器樣機進行了滿功率大電流實驗,結果表明五電平功率單元級聯變頻器輸出穩定,動態響應好,得到了滿意的預期效果。論文最后對研究工作進行了總結,并提出了一些需要進一步探討和解決的問題。
上傳時間: 2013-11-12
上傳用戶:上善若水
串行編程器源程序(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