通信編解碼器_第1頁
通信編解碼器_第2頁
通信編解碼器_第3頁
通信編解碼器_第4頁
通信編解碼器_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、學(xué) 號 EDA技術(shù)及應(yīng)用A 課程設(shè)計說明書 通信編解碼器起止日期: 2015 年 12 月 28 日 至 2015 年 12 月 31 日學(xué)生姓名班級成績指導(dǎo)教師(簽字)計算機與信息工程學(xué)院電子信息與工程系2015年12月31日課程設(shè)計任務(wù)書2014 2015 學(xué)年第 1 學(xué)期 電子與信息工程 系 電子信息科學(xué)與技術(shù) 專業(yè)課程設(shè)計名稱: EDA技術(shù)及應(yīng)用A 設(shè)計題目: 通信編解碼器 完成期限:自 2015 年 12月 28 日至 2015 年 12 月 31 日共 1 周一課程設(shè)計依據(jù)在掌握常用數(shù)字電路原理和技術(shù)的基礎(chǔ)上,利用EDA技術(shù)和硬件描述語言,EDA開發(fā)軟件(Quartus)和硬件開發(fā)

2、平臺(達盛試驗箱CycloneFPGA)進行初步數(shù)字系統(tǒng)設(shè)計。二課程設(shè)計內(nèi)容采用狀態(tài)機結(jié)構(gòu)設(shè)計簡易串行數(shù)據(jù)編碼器,輸入為NRZ碼,實現(xiàn)把輸入碼轉(zhuǎn)換為轉(zhuǎn)換為差分碼,雙相碼,曼徹斯特碼功能,串行數(shù)據(jù)速率為9600bit/s,要求通過仿真驗證。擴展設(shè)計:數(shù)據(jù)9600bit/s從串口來,采用1MHz超采樣,實現(xiàn)數(shù)據(jù)9600bit/s NRZ碼恢復(fù),然后進行碼變換。三課程設(shè)計要求1.要求獨立完成設(shè)計任務(wù)。2.課程設(shè)計說明書封面格式要求見天津城建大學(xué)課程設(shè)計教學(xué)工作規(guī)范附表13.課程設(shè)計的說明書要求簡潔、通順,計算正確,圖紙表達內(nèi)容完整、清楚、規(guī)范。4.測試要求:根據(jù)題目的特點,采用相應(yīng)的時序仿真或者在實

3、驗系統(tǒng)上觀察結(jié)果。5.課設(shè)說明書要求:1) 說明題目的設(shè)計原理和思路、采用方法及設(shè)計流程。2) 對各子模塊的功能以及各子模塊之間的關(guān)系作明確的描述。3) 對實驗和調(diào)試過程,仿真結(jié)果和時序圖進行說明和分析。4) 包含系統(tǒng)框圖、電路原理圖、HDL設(shè)計程序、仿真測試圖。 指導(dǎo)教師(簽字): 教研室主任(簽字): 批準日期: 2015 年 12 月 24 日 目 錄第一章 通信編解碼器概述11.1 總體方案設(shè)計11.2 概念介紹11.2.1 狀態(tài)機11.1.2 NRZ碼21.1.3 差分碼21.1.4 曼徹斯特碼(又稱雙相碼)21.3編碼器的設(shè)計及程序31.3.1 采用狀態(tài)機結(jié)構(gòu)設(shè)計31.3.2 差分

4、碼模塊程序31.3.3 曼徹斯特碼模塊程序4第二章 轉(zhuǎn)碼器的設(shè)計與仿真62.1 功能描述62.2 差分碼源程序(基于Verilog HDL語言)62.2.1功能模塊仿真72.3 曼徹斯特碼源程序(基于Verilog HDL)82.3.1功能模塊仿真10第三章 轉(zhuǎn)碼器的綜合設(shè)計及驗證123.1 基于原理圖的層次化設(shè)計123.2 轉(zhuǎn)碼器碼的原理圖133.2.1 曼徹斯特碼轉(zhuǎn)碼器133.2.2 差分碼轉(zhuǎn)碼器13第四章 編解碼器的設(shè)計總結(jié)144.1 設(shè)計調(diào)試144.2 設(shè)計心得14參考文獻15第一章 通信編解碼器概述編解碼器(codec)指的是一個能夠?qū)σ粋€信號或者一個數(shù)據(jù)流進行變換的設(shè)備或者程序。這

5、里指的變換既包括將信號或者數(shù)據(jù)流進行編碼(通常是為了傳輸、存儲或者加密)或者提取得到一個編碼流的操作,也包括為了觀察或者處理從這個編碼流中恢復(fù)適合觀察或操作的形式的操作。編解碼器經(jīng)常用在視頻會議和流媒體等應(yīng)用中,通常主要還是用在廣電行業(yè),作前端應(yīng)用。1.1 總體方案設(shè)計本文主要介紹用Verilog HDL語言來描述編寫一個將NRZ碼轉(zhuǎn)換為曼徹斯特碼和差分碼的軟件模塊,并能夠在FPGA芯片中調(diào)試和仿真??傮w的設(shè)計原理框圖如圖1-1所示。圖1-1 原理框圖1.2 概念介紹1.2.1 狀態(tài)機狀態(tài)機是一個有向圖形,由一組節(jié)點和一組相應(yīng)的轉(zhuǎn)移函數(shù)組成。狀態(tài)機通過響應(yīng)一系列事件而“運行”。每個事件都在屬于

6、“當(dāng)前”節(jié)點的轉(zhuǎn)移函數(shù)的控制范圍內(nèi),其中函數(shù)的范圍是節(jié)點的一個子集。函數(shù)返回“下一個”(也許是同一個)節(jié)點。這些節(jié)點中至少有一個必須是終態(tài)。當(dāng)?shù)竭_終態(tài),狀態(tài)機停止。狀態(tài)機主要分為2大類:第一類,若輸出只和狀態(tài)有關(guān)而與輸入無關(guān),則稱為Moore狀態(tài)機:第二類,輸出不僅和狀態(tài)有關(guān)而且和輸入有關(guān)系,則稱為Mealy狀態(tài)機。要特別注意的是,因為Mealy狀態(tài)機和輸入有關(guān),輸出會受到輸入的干擾,所以可能會產(chǎn)生毛刺(Gitch)現(xiàn)象,使用時應(yīng)當(dāng)注意。事實上現(xiàn)在市面上有很多EDA工具可以很方便的將采用狀態(tài)圖的描述轉(zhuǎn)換成可以綜合的VHDL程序代碼。1.1.2 NRZ碼數(shù)字信號可以直接采用基帶傳輸所謂基帶就是指

7、基本頻帶?;鶐鬏斁褪窃诰€路中直接傳送數(shù)字信號的電脈沖,這是一種最簡單的傳輸方式,近距離通信的局域網(wǎng)都采用基帶傳輸?;鶐鬏敃r,需要解決 數(shù)字數(shù)據(jù)的數(shù)字信號表示以及收發(fā)兩端之間的信號同步問題。對于傳輸數(shù)字信號來說,最簡單最常用的方法是用不同的電壓電平來表示兩個二進制數(shù)字,也即數(shù)字信號由矩形脈沖組成。按數(shù)字編碼方式,可以劃分為單極性碼和雙極性碼。1.1.3 差分碼通信中的差分編碼,差分編碼輸入序列an,差分編碼輸出序列bn,二者都為0,1序列,則差分編碼輸出結(jié)果為bn=an異或bn-1,并不是bn=an異或an-1(即所謂的:對數(shù)字數(shù)據(jù)流,除第一個元素外,將其中各元素都表示為各該元素與其前一元素

8、的差的編碼。這么定義是不準確的。)前者多用在2dpsk調(diào)制,后者多用在msk調(diào)制預(yù)編碼。同時后者是碼反變換器的數(shù)學(xué)表達式,即用來解差分編碼用的。1.1.4 曼徹斯特碼(又稱雙相碼)曼徹斯特編碼(Manchester Encoding),也叫做相位編碼(PE),是一個同步時鐘編碼技術(shù),被物理層使用來編碼一個同步位流的時鐘和數(shù)據(jù)。曼徹斯特編碼被用在以太網(wǎng)媒介系統(tǒng)中。曼徹斯特編碼提供一個簡單的方式給編碼簡單的二進制序列而沒有長的周期沒有轉(zhuǎn)換級別,因而防止時鐘同步的丟失,或來自低頻率位移在貧乏補償?shù)哪M鏈接位錯誤。在這個技術(shù)下,實際上的二進制數(shù)據(jù)被傳輸通過這個電纜,不是作為一個序列的邏輯1或0來發(fā)送的

9、(技術(shù)上叫做反向不歸零制(NRZ))。相反地,這些位被轉(zhuǎn)換為一個稍微不同的格式,它通過使用直接的二進制編碼有很多的優(yōu)點。曼徹斯特編碼,常用于局域網(wǎng)傳輸。它利用兩個具有不同相位的二進制碼來代替原來的二進制碼來代替原來的二級制信息碼,它是由普通二進制數(shù)據(jù)與其位率時鐘信號相異或而得,解決了傳輸數(shù)據(jù)沒有時鐘的問題。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘信號,又作數(shù)據(jù)信號;從低到高跳變表示"0",從高到低跳變表示"1"。編碼規(guī)則如表1-1所示。表1-1 曼徹斯特碼的編碼規(guī)則二進制信息碼雙相碼110001不像AMI碼和HDB3碼那樣,曼徹斯特碼

10、的特點是僅僅使用了兩個電平。曼徹斯特碼不僅能夠提供足夠的定時分量,而且沒有直流漂移,更重要的是其編碼過程比較簡單,但是這種碼的帶寬于其它碼相比較要寬一些。1.3編碼器的設(shè)計及程序1.3.1 采用狀態(tài)機結(jié)構(gòu)設(shè)計狀態(tài)機結(jié)構(gòu)設(shè)計簡易串行數(shù)據(jù)編碼器,實現(xiàn)NRZ碼轉(zhuǎn)換為差分碼,雙相碼和曼徹斯特碼,串行數(shù)據(jù)速率為9600bit/s元再分成兩個相等的間隔,碼元是前一個間隔為高電平而后一個間隔為低電平;碼元則正好相反,從低電平變到高電平。設(shè)初始狀態(tài)為s0編碼為00,根據(jù)功能帶入輸入0時得到下一狀態(tài)s1和相應(yīng)輸出0.依次代入類推,可得到如圖1-2所示的狀態(tài)圖.圖1-2 狀態(tài)圖1.3.2 差分碼模塊程序其狀態(tài)機設(shè)

11、計程序如下:always (negedge clk or negedge reset) if(reset = 0)state<=S0;else state<=next_state; always (state or in) begin Out = 0; case(state) S0:begin if(in= 0)next_state = S1;else next_state = S3;end S1:begin next_state = S2;end S2:begin Out = 1;if( in= 0)next_state = S1;else next_state = S3;end

12、 S3:begin Out = 1;next_state = S0;end endcase end1.3.3 曼徹斯特碼模塊程序曼徹斯特編碼模塊如下:module Manchester_bian(in_dat,clk_tong,clk_fan,out_dat_tong,out_dat_fan,clr);input in_dat,clk_tong,clk_fan,clr;output out_dat_tong,out_dat_fan;wire out_dat_tong,out_dat_fan;wire out_dat_tong_1,out_dat_fan_1;wire out_dat_tong_

13、0,out_dat_fan_0;assign out_dat_tong_1=(state11:0=2'b01)?(clk_tong && con):1'b0;assign out_dat_tong_0=(state11:0=2'b10)?(clk_fan && con):1'b0;assign out_dat_tong=(out_dat_tong_1) |( out_dat_tong_0);assign out_dat_fan_1=(state21:0=2'b01)?(clk_tong && con):1&

14、#39;b0;assign out_dat_fan_0=(state21:0=2'b10)?(clk_fan && con):1'b0;assign out_dat_fan=(out_dat_fan_1) | (out_dat_fan_0);reg 1:0 state1;reg 1:0 state2;reg 1:0 dat_reg;reg con;always (posedge clk_tong ) begin con=1'b0; if(clr) begin state11:0=2'b01; state21:0=2'b01; con=1&

15、#39;b0; end else begin dat_reg1:0=dat_reg1:0>>1; dat_reg1=in_dat; if(dat_reg1) begin state11:0=2'b01; con=1'b1; if(state21:0=2'b01) begin state21:0=2'b10; end else begin state21:0=2'b01; end end else begin state11:0=2'b10; con=1'b1; if(state21:0=2'b01) begin sta

16、te21:0=2'b01; end else if(state21:0=2'b10) begin state21:0=2'b10; end end end endendmodule第二章 轉(zhuǎn)碼器的設(shè)計與仿真2.1 功能描述碼轉(zhuǎn)換器是將 RS232信號和 RS485信號互轉(zhuǎn)的接口轉(zhuǎn)換器。也稱之為485轉(zhuǎn)換器,該設(shè)備直接從其他設(shè)備的 串口(如計算機 COM口)取饋電,無需外接電源,具有體積小,傳輸距離遠、速率高、性能穩(wěn)定等特性。它采用 DB9針通用 串行接口,廣泛用于 考勤機、 硬盤錄像機、收費系統(tǒng)中。 本課程設(shè)計的功能描述如下:1、輸入NRZ碼;2、連接編碼模塊、設(shè)置CL

17、K;3、輸出差分碼,曼徹斯特碼。2.2 差分碼源程序(基于Verilog HDL語言)module NRZ To Different (Out, in,clk,reset); output Out; input in; input clk,reset; reg Out; reg 1:0 state,next_state; parameter S0 = 0,S1 = 1, S2 = 2,S3 = 3; always (negedge clk or negedge reset) if(reset = 0)state<=S0;else state<=next_state; always

18、(state or in) begin Out = 0; case(state) S0:begin if(in= 0)next_state = S1;else next_state = S3;end S1:begin next_state = S2;end S2:begin Out = 1;if( in= 0)next_state = S1;else next_state = S3;end S3:begin Out = 1;next_state = S0;end endcase endendmodulemodule stimulus(); reg CLK,RESET; reg BIN; wir

19、e BOUT; CFM T1( . Out (BOUT), .in (BIN), .clk(CLK), .reset(RESET) ); initial $monitor($time," : IN = %b OUT = %b ", BIN,BOUT,); initial begin RESET <= 0;BIN <= 0; #5 if(BOUT != 0) $display($time," : Reset State_0 Failed ! "); RESET <= 1; #10 if(BOUT != 0) $display($time,

20、" : State_1 Failed ! "); #5 BIN <= 1; #5 if(BOUT != 1) $display($time," : State_2 Failed ! "); #10 if(BOUT != 1) $display($time," : State_3 Failed ! "); #45 BIN <= 0; #40 BIN <= 1; #20 BIN <= 0; #60 $stop; endendmodule2.2.1功能模塊仿真與Max+plus II 相比,Quartus II提供了

21、更強大、更直觀便捷和操作靈活的原理圖輸入設(shè)計功能,提供了原理圖輸入多層次設(shè)計功能,同時配備了更豐富、適用于各種需要的元件庫,具有不可比擬的優(yōu)勢和先進性。為此本文采用Quartus II 7.2實現(xiàn)功能模塊仿真:1.在Quartus下,首先創(chuàng)建新工程,新建一個Verilog HDL file文件,將上述程序復(fù)制到生成的文本框中,以NRZ_To_Differential命名保存;2.單擊運行,程序驗證無誤后,新建一個Vector Waveform file文件保存在同一文件夾下;3.將輸入輸出端口:Out、CLK、RESET導(dǎo)入窗口;4.設(shè)定End Time,CLK和Count every的值;5

22、.保存窗口,調(diào)整波形可得到如下仿真波形;以上步驟如圖2-1時序仿真所示。 圖2-1 差分碼時序仿真2.3 曼徹斯特碼源程序(基于Verilog HDL)Manchester碼(雙相碼)編碼器。module Manchester_shuchu(clk,clr,in_dat,out_dat_tong,out_dat_fan);input clk,clr,in_dat;output out_dat_tong,out_dat_fan;wire clk_fan;fpj u0(.clk(clk), .clk_fan(clk_fan), );Manchester_bian u1(.in_dat(in_dat

23、), .clk_tong(clk), .clk_fan(clk_fan), .out_dat_tong(out_dat_tong), .out_dat_fan(out_dat_fan), .clr(clr);endmodule/fpj模塊:module fpj(clk,clk_fan);output clk_fan;input clk;wire clk2_fan;assign clk_fan=clk;endmodule/Manchester_bian模塊:module Manchester_bian(in_dat,clk_tong,clk_fan,out_dat_tong,out_dat_fa

24、n,clr);input in_dat,clk_tong,clk_fan,clr;output out_dat_tong,out_dat_fan;wire out_dat_tong,out_dat_fan;wire out_dat_tong_1,out_dat_fan_1;wire out_dat_tong_0,out_dat_fan_0;assign out_dat_tong_1=(state11:0=2'b01)?(clk_tong && con):1'b0;assign out_dat_tong_0=(state11:0=2'b10)?(clk_f

25、an && con):1'b0;assign out_dat_tong=(out_dat_tong_1) |( out_dat_tong_0);assign out_dat_fan_1=(state21:0=2'b01)?(clk_tong && con):1'b0;assign out_dat_fan_0=(state21:0=2'b10)?(clk_fan && con):1'b0;assign out_dat_fan=(out_dat_fan_1) | (out_dat_fan_0);reg 1:0

26、state1;reg 1:0 state2;reg 1:0 dat_reg;reg con;always (posedge clk_tong ) begin con=1'b0; if(clr) begin state11:0=2'b01; state21:0=2'b01; con=1'b0; end else begin dat_reg1:0=dat_reg1:0>>1; dat_reg1=in_dat; if(dat_reg1) begin state11:0=2'b01; con=1'b1; if(state21:0=2'

27、b01) begin state21:0=2'b10; end else begin state21:0=2'b01; end end else begin state11:0=2'b10; con=1'b1; if(state21:0=2'b01) begin state21:0=2'b01; end else if(state21:0=2'b10) begin state21:0=2'b10; end end end endendmodule2.3.1功能模塊仿真采用Quartus II 7.2實現(xiàn)功能模塊仿真:1.在Quar

28、tus下,首先創(chuàng)建新工程,新建一個Verilog HDL file文件,將上述程序復(fù)制到生成的文本框中,以Manchester_shuchu命名保存;2.單擊運行,程序驗證無誤后,新建一個Vector Waveform file文件保存在同一文件夾下;3.將輸入輸出端口:clk、clr、in_dat、out_dat_tong、fan導(dǎo)入窗口;4.設(shè)定End Time,CLK和Count every的值;5.保存窗口,調(diào)整波形可得到如下仿真波形;以上步驟如圖2-2時序仿真所示。圖2-2 曼徹斯特時序仿真第三章 轉(zhuǎn)碼器的綜合設(shè)計及驗證3.1 基于原理圖的層次化設(shè)計在Quartus II軟件的圖形編

29、譯模式下,將三個輸入端口分別與曼徹斯特轉(zhuǎn)碼器的clk、clr、in_dat相連,兩個輸出端口分別與曼徹斯特碼轉(zhuǎn)碼器的輸出端相連,并定義各輸入、輸出端口的名字。即構(gòu)成了曼徹斯特圖形文件仿真如圖3-1所示。圖3-1曼徹斯特圖形文件在Quartus II軟件的圖形編譯模式下,將三個輸入端口分別與差分碼轉(zhuǎn)碼器的in、clk、reset相連,輸出端口output與差分碼轉(zhuǎn)碼器輸出端相連。與Stimulus共同構(gòu)成了差分碼圖形文件仿真如圖3-2所示。圖3-2差分碼圖形文件3.2 轉(zhuǎn)碼器碼的原理圖3.2.1 曼徹斯特碼轉(zhuǎn)碼器在Quartus II軟件的圖形編譯模式下,將輸入NRZ碼通過轉(zhuǎn)碼器輸出曼徹斯特碼。

30、綜合后的曼徹斯特碼轉(zhuǎn)碼器內(nèi)核有3個輸入控制端clk、clr、in_dat,2個輸出端out_dat_tong、fan。如圖3-3所示。圖3-3 曼徹斯特碼轉(zhuǎn)碼器3.2.2 差分碼轉(zhuǎn)碼器同理,將輸入將輸入NRZ碼通過轉(zhuǎn)碼器輸出差分碼。綜合后的差分碼轉(zhuǎn)碼器有三個輸入控制端clk、in、reset。輸出端out。如圖3-4所示。 圖3-4差分碼轉(zhuǎn)碼器第四章 編解碼器的設(shè)計總結(jié)4.1 設(shè)計調(diào)試調(diào)試過程是整個課程實設(shè)計的關(guān)鍵,是驗證程序的準確性、動手操作、檢驗問題、解決問題的關(guān)鍵。在程序校驗過程中出現(xiàn)了一些錯誤。比如運行文件的命名與程序的頭文件名不一致,字母的大小寫,運算符的使用等問題。最后在老師和同學(xué)的幫助下都得以解決,同時對于Quartus II軟件的使用也更加靈活、熟練。4.2 設(shè)計心得為期一周的課程設(shè)計終于接近了尾聲,通信編解碼設(shè)計也逐步完善。從一開始茫然無措,到查找各種資料逐漸找到頭緒,直到課程設(shè)計報告的撰寫。這一過程有自己的努力,也離不開老師的答疑指導(dǎo)和同學(xué)們的熱心幫助。在剛?cè)胧蛛A段,首先認真閱讀了本課設(shè)的任務(wù)要求,依據(jù)本學(xué)期學(xué)到的知識初步確定設(shè)計方案,設(shè)計流程以及設(shè)計核心。經(jīng)老師直指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論