第一篇:基于FPGA的交織器,深圳大學,通信系統中串行數據交織器的設計(精選)
深 圳 大 學 實 驗 報 告
課程名稱:硬件描述語言與邏輯綜合
實驗項目名稱:通信系統中串行數據交織器的設計
學院: 電子科學與技術學院
專業: 電子科學與技術
指導教師: 劉春平
報告人學號: 班級:電子(2)班
實驗時間:
實驗報告提交時間:
一、實驗原理
交織器是通信編碼中抗突發干擾的一種重要手段,將突發干擾產生的分布集中的誤碼分散到信息數據中,以便采用糾錯編碼的方法進行糾錯。本項目要求設計一個行列交織器,如圖所示,PN碼發生器模擬數據源產生串行數據,按行寫入一m行n列的RAM中,寫滿后按列讀出。為避免數據丟失,需使用兩個這樣的RAM交替讀寫。即一個讀時,另一個寫。一個寫時,另一個讀,這樣交替循環。因此,會產生一個周期的延時。這里統一要求m和n都選4.二、源程序
module jiaozhiqi(out,waveout,clk);
//輸出未交織的out和交織后的waveout,輸入50Mclk時鐘
output out,waveout;input clk;reg [0:0]out;reg [0:0]waveout;reg A0,A1,A2,A3;reg mem_A[3:0][3:0];//4*4的二維寄存器型數組mem_A reg mem_B[3:0][3:0];//4*4的二維寄存器型數組mem_B integer i,j;reg clock,flag;reg[31:0] count;
initial//初始化各變量 begin i<=0;j<=0;A0<=1;A1<=0;A2<=0;A3<=1;flag<=0;count<=0;clock<=0;end
//將clk分頻,產生交織器所需的頻率clock always @(posedge clk)
begin
end
//偽隨機碼發生器 if(count==1)
begin count<=0;clock<=~clock;end else count<=count+1;always @(posedge clock)begin
j=j+1;A0<=A0^A3;A1<=A0;A2<=A1;A3<=A2;end always @(posedge clock)//對mem_A或mem_B中的數據進行交織 begin
if(j>3)//利用i和j控制mem_A和mem_B按行輸入,按列輸出
begin
end begin
i=0;flag=~flag;//每輸入完16個數據,標志位發生一次變化。標志位用于控制
mem_A寫mem_B讀,還是mem_B寫mem_A讀 j=0;i=i+1;if(i>3)end begin
if(flag==0)//這個周期實現mem_A按行寫,mem_B按列讀
mem_A[i][j]<=A3;//mem_A按行寫 out<=mem_B[i][j];
//mem_B按行讀,即mem_B交織前的數據
waveout<=mem_B[j][i];//mem_B按列讀,即mem_B交織后的數據
end else //這個周期實現mem_B按行寫,mem_A按列讀
begin
mem_B[i][j]<=A3;//mem_B按行寫 out<=mem_A[i][j];
//mem_A按行讀,即mem_A交織前的數據
waveout<=mem_A[j][i];//mem_A按列讀,即mem_A交織后的數據
end end endmodule
三、實驗結果與分析
剛剛開始仿真時的第一個周期,由于flag=0,所以mem_A按行寫,mem_B按列讀,由于mem_B之前還未寫入過數據,所以out(交織前)和waveout(交織后)輸出均為0.第二個周期,flag=1,輸出的為前一周期寫入mem_A的數據,輸出的out(未交織)為0000 1111 0101 1001,即
0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 而輸出的waveout(交織后)為0101 0110 0100 0111,即
0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 可見,交織成功。
第三個周期,flag=0,輸出的為前一周期寫入mem_B的數據,輸出的out(未交織)為0001 1110 1011 0010,即
0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0
而輸出的waveout(交織后)為0110 0100 0111 1010,即
0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 可見,交織成功。
一直這樣循環下去,可見,源程序仿真通過。
四、實驗演示
clk分配50MHz,out分配到GPIO 0,waveout分配到GPIO 1,然后用示波器雙蹤觀察out與waveout,觀察是否交織成功。
實驗結果:
要在示波器中找到某一周期的起點不容易,但由于用的是偽隨機碼,有一定的規律。如上圖,利用仿真器輸出的波形,成功在示波器找出了某一周期起點的位置。由圖可見仿真和示波器的out輸出均為0101 1001 0001 1110 1011 0010 0011 1101 ······即
0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 交織后的waveout為0101 1001 0001 1110 1001 0001 1110 1011,即
0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 交織成功。可見,本次試驗是成功的。
五、心得體會
通過本次實驗,我掌握了串行數據交織器的原理,學會了串行數據交織器的設計。由于剛開始時不太懂,參考了一下網上的程序,結果老師說大家的版本都差不多,懷疑我是抄的。其實也算不上是抄,只是參考。本來我想自己寫的,但見別人寫得那么好了,我已經無法超越了,就把別人的改了改就拿來用了,其實網上那個版本也是有點問題的,我發現了四句是多余的,原來那個人也是未完全弄懂的啊!因此,我寫了這個用二維數組來控制的,發現其實用二維數組來控制其實更加簡單,程序更加簡潔,可移植性也大大增強。只要肯努力,相信自己可以做得更加好!其實,velilog這東西基礎真的很重要,基礎不好真的很容易出錯,出了錯自己本人一般是很難看出來的。
第二篇:FPGA數據采集與回放系統設計論文
FPGA數據采集與回放系統設計論文
在個人成長的多個環節中,大家或多或少都會接觸過論文吧,論文是我們對某個問題進行深入研究的文章。怎么寫論文才能避免踩雷呢?下面是小編為大家整理的FPGA數據采集與回放系統設計論文,歡迎閱讀,希望大家能夠喜歡。
1系統及其原理
基于通用信號處理開發板,利用FPGA技術控制AD9233芯片對目標模擬信號采樣,再將采樣量化后的數據寫入USB接口芯片CY7C68013的FIFO中,FIFO寫滿后采用自動觸發工作方式將數據傳輸到PC機。利用VC++6.0軟件編寫上位機實現友好的人機交互界面,將傳輸到PC機上的數據進行儲存和實時回放。本系統主要實現以下兩大功能:1)ADC模塊對目標模擬信號進行采樣,利用FPGA技術將采樣后的數據傳輸到USB接口芯片CY7C68013的FIFO中存儲。2)運用USB2.0總線數據傳輸技術,將雷達回波信號數據傳輸到PC機實時回放。分為應用層、內核層和物理層3部分。應用層和內核層主要由軟件實現。應用層采用VC++6.0開發用戶界面程序,為用戶提供可視化操作界面。內核層基于DriverWorks和DDK開發系統驅動程序,主要起應用軟件與硬件之間的橋梁作用,把客戶端的控制命令或數據流傳到硬件中,同時把硬件傳輸過來的數據進行緩存。物理層主要以FPGA為核心,對USB接口芯片CY7C68013進行控制,通過USB2.0總線實現對中頻信號采集。系統設計采用自底向上的方法,從硬件設計開始逐步到最終的應用軟件的設計。
2硬件設計
FPGA在觸發信號下,控制ADC采樣輸入信號,并存入FIFO中。當存滿時,將數據寫入USB接口芯片CY7C68013,同時切換另一塊FIFO接收ADC轉換的數據,實現乒乓存儲,以提高效率。FPGA模塊的一個重要作用是控制USB接口芯片CY7C68013。當ADC采樣后,數據進入FPGA模塊,FPGA控制數據流將其寫入CY7C68013的FIFO中,以便于USB向PC機傳輸。CY7C68013的數據傳輸模式采用異步slaveFIFO和同步slaveFIFO切換模式。通過實測,前者傳輸速度約為5~10Mbit/s,后者傳輸速度最高可達20Mbit/s,傳輸速度的提高可通過更改驅動程序的讀取方式實現。
3軟件設計
3.1USB驅動程序設計
USB2.0總線傳輸技術最高速率可達480Mbit/s。本系統采用批量傳輸的slaveFIFO模式。CY7C68013芯片內部提供了多個FIFO緩沖區,外部邏輯可對這些端點FIFO緩沖區直接進行讀寫操作。在該種傳輸模式下,USB數據在USB主機與外部邏輯通信時無需CPU的干預,可大大提高數據傳輸速度。Cypress公司為CY7C68013芯片提供了通用的驅動程序,用戶可根據需求開發相應的固件程序。
3.2FPGA模塊程序設計
系統中FPGA模塊的'核心作用是控制AD9233芯片進行采樣。AD9233作為高速采樣芯片,其最高采樣速率達125Mbit/s,最大模擬帶寬為650MHz。通過改變采樣速率可使該系統采集不同速率需求的信號,擴展了該系統的應用范圍。描述FPGA控制USB數據寫入接口芯片FIFO的狀態機如圖6所示。狀態1表示指向INFIFO,觸發FIFOADR[1:0],轉向狀態2;狀態2表示若FIFO未滿則轉向狀態3,否則停留在狀態2;狀態3表示驅動數據到總線上,通過觸發SLWR寫數據到FIFO并增加FIFO的指針,然后轉向狀態4;狀態4表示若還有數據寫則轉向狀態2,否則轉向完成。
3.3上位機設計
為實現人機交互,利用VC++MFC在PC機上編寫了可視化操作界面,即上位機。上位機既用于數據采集的控制,同時也用于采集數據的實時回放。上位機界面如圖7所示。上位機主要功能:
1)按下“檢測USB”按鈕,可檢測USB是否連接正常,并顯示USB基本信息。
2)按下“開始采集”按鈕,可將采集的數據傳輸到PC機并實時回放數據波形;再次按下“開始采集”按鈕,可暫停數據波形回放。
3)按下“保存數據”按鈕,可將采集的數據以*.dat文件的形式存儲到PC機硬盤。
4)按下“結束采集”按鈕,可關閉采集系統并退出界面;或按下“確定”和“取消”按鈕,也可直接退出界面。
4系統實測
為了測試數據采集與回放系統,利用通用信號處理開發板設計了DDS模塊。該DDS模塊產生一個正弦波作為測試信號,通過AD9744芯片轉換后變為模擬信號輸出,并將此輸出信號接至示波器以便驗證系統。數據采集與回放系統的實物圖及系統實測波形與回放波形。
5結束語
通過實際測試,基于FPGA的數據采集與回放系統達到了預期設計的要求。此系統能夠對目標模擬數據進行采集,并能對采集的數據實時回放,且可將數據以*.dat文件的形式存入PC機硬盤;系統具有高速的采集傳輸功能,上位機能夠實時、動態地回放數據;信號采集板和處理板共用一套硬件,避免了重復制板,在實際調試時可方便地在信號采集與信號處理的工作模式間來回切換,提高了工作效率。原驅動程序官方版本為了滿足通用性和穩定性的要求,限制了傳輸速率,本設計開發了相應的USB驅動程序,提高了傳輸速率。
第三篇:基于51單片機的盲文助讀器系統設計研究論文(共)
引言
中國是全世界盲人最多的國家之一,據統計約有900萬盲人。盲人接受文字信息的途徑主要有利用語音合成發聲軟件閱讀和觸摸盲文凸字兩種形式。語音合成發聲感情生硬,缺乏閱讀快感,較晦澀的文字和公式更是難以理解記憶。同時,供盲人閱讀的新版圖書只有104種,盲文期刊僅8種,品種數量可謂奇缺叫。另一方面,現有的盲文助讀器由于采用壓電陶瓷,其價格也頗為昂貴。本文基于51單片機設計了一種新型的盲文助讀器。
1新型盲文助讀器的總體架構設計
目前廣泛應用的盲文有現行盲文和雙拼盲文兩種,現行盲文以三行兩列的6個凸點為一個基本單位,6個凸點之間通過不同的排列組合形成不同的文字,本文基于流行最廣的現行盲文設計了一種8方的盲文助讀器。因微型步進電機具有體積小、利于控制、價格低廉等優點,機械部分采用步進電機來實現凸點的起落,控制部分則采用STC89C51單片機,通過6個1,B1848M步進電機驅動芯片來控制6個步進電機,每個步進電機控制1個凸點的起降,每6個步進電機控制的凸點表示1個盲文單元(即盲文的1方),每個盲文單元可以顯示1個阿拉伯數字或英文字母,2個或3個單元可以顯示1個漢字。電路連接部分采用自行設計的PC'B板,將電機驅動芯片、步進電機、單片機有序地連接。單片機通過內部程序控制來實現盲文單元內6個步進電機間以及每個盲文單元間的協調組合,從而實現盲文的表達輸出。
2機械整體架構
采用微型步進電機作為原動機(即控制終端),通過單片機發送的信號控制電機的旋轉,帶動螺旋機構控制螺母和凸點的升降運動。將微型步進電機鑲嵌在底盤內,焊接在PCB板上,利用導軌板壁和與之配合的電機限制螺母沿二,二軸平動和繞二,y軸轉動,使之只能繞二軸轉動從而實現沿導軌板壁的上下移動,每6個凸點為1個單元,通過不同凸點的起降變化,顯示不同的文字。
步進電機是四線二項混合式微型步進電機,此款電機屬于二相四拍式步進電機。通過1,B1848M芯片產生的驅動信號驅動步進電機,帶動絲軸上的螺母上下運動,距離控制在2 mm的統一高度。步進電機結構示意圖如圖3所示。
3控制部分設計
3.1多機通訊的硬件設計
PC機作為上位機,主機和從機都為51單片機。PC'機與主機通過串口通訊。由于通訊距離較短,所以本項目采用RS232進行串口通訊,波特率為9 600,數據位為8位。
主機利用緩沖寄存器SBUF接收PC'機發來的字符數據后經過內部轉碼處理,將字符數據翻譯為對應的電機控制碼,通過串行通訊發送給從機。從機接收完主機發來的數據后,實時控制相應步進電機的轉動狀態。其中從機部分只顯示出了一個單片機和1個電機。
PCB板的設計是本項目硬件系統的重要部分,使用Propel DXP2004,實現了SCH(原理圖)設計、SCH仿真、PCB(印制電路板)設計、Auto Router(自動布線器)和FPUA設計。
在PC'B的制作過程中,芯片IB1848M的封裝根據技術手冊完成。為了減小盲人助讀器的整體尺寸并且配合微型步進電機的焊接,實際制作時,采用兩層PCB板作為信號層,其主要的工藝指標如下:PCB板寬為24 mil;最小線寬為6 mil;走線與焊盤的最小距離為12 mil;過孔最小內徑為16 mil。
3.2多機通訊的軟件設計
通過對51單片機內部的多機通訊控制位SM2SM1的控制實現多機通訊。利用串行通訊來實現主機與從機間的通訊,主機先利用串口向所有從機發送地址,在從機接收到地址時進行判斷。若地址不符則不作為,地址相符則繼續接收主機發來的電機控制信息,進而對電機進行控制以實現盲文的顯示。
在進行多機通訊時,主機依次對從機進行控制,實現8組步進電機的依次控制,先控制第1個從機,令電機顯示第1個盲文,再控制第2個從機,令電機顯示第2個盲文。
在8組從機依次控制完畢后將所有從機的控制位SM2-SM1恢復為初始狀態,準備進行下一次通訊命令的接收。
4結論
本文從我國盲文使用現狀入手,指出了現有語音合成發聲軟件和紙質書籍的弊端,并詳細介紹了新型盲文助讀器的具體設計原理。利用微型步進電機控制凸點,用單片機控制電機,通過PCB進行電路搭建,實現了新型盲文助讀器的設計。它能很方便地將電子版文字轉化為盲文凸起形式,價格低廉,對盲人的學習、生活有很大的幫助。