顧涵 丁力 瞿佳韻
【摘 要】基于FPGA芯片采用類曼徹斯特組碼方式,設(shè)計和仿真了串行數(shù)據(jù)傳輸過程中譯碼接收模塊的功能。首先對譯碼接收模塊的硬件電路進行設(shè)計,其次結(jié)合LVDS硬件電路和芯片端口重點分析和編寫了各模塊的VHDL程序,最后采用Isim對設(shè)計功能進行波形仿真,驗證了設(shè)計的準確性。
【關(guān)鍵詞】類曼徹斯特;VHDL;設(shè)計
0 引言
類曼徹斯特碼[1]是一種利用自同步法保持位同步的線路碼型,在傳輸數(shù)字信息的同時,也將同步時鐘信號一起傳輸?shù)綄Ψ?,它用上升沿來表示一個碼元的開始,然后連續(xù)兩個時鐘信號的高電平表示“1”,對應編碼數(shù)據(jù)“0100”,反之連續(xù)兩個時鐘的低電平表示“0”,對應編碼數(shù)據(jù)“0111”。經(jīng)類曼徹斯特編碼后,無論是數(shù)據(jù)“1”還是數(shù)據(jù)“0”,在開始的時候都有一個上升沿,包含了時鐘信息,正是具有這一特點,在現(xiàn)代通信中得到了廣泛的應用。我們采用類曼徹斯特碼,設(shè)計和仿真了串行數(shù)據(jù)傳輸過程中譯碼接收模塊的功能。
1 LVDS技術(shù)介紹
LVDS[2]是一種低擺幅的差分信號技術(shù),具有終端適配簡潔方便、低功耗、低成本、高速傳輸?shù)葍?yōu)點,并且能對傳輸數(shù)據(jù)進行時效保護,確保了數(shù)據(jù)傳輸?shù)目煽啃浴VDS使得信號能夠在差分平衡電纜上以幾百Mbps[3]的速率傳輸,其低壓幅和低電流的驅(qū)動輸出完全達到了低噪聲和低功耗的要求。采用LVDS技術(shù)設(shè)計的接收器引進恒流式驅(qū)動方式,準許帶電插入,對系統(tǒng)不會造成任何損壞,適用于高速數(shù)據(jù)的傳輸。
差分信號的抗噪特性在理想狀態(tài)[4]下,所謂理想狀態(tài)是指線路沒有干擾時,發(fā)送端IN= IN+-IN-,接收端IN+-IN-=OUT,發(fā)送端信號等于接收端信號。在非理想狀態(tài)下,非理想狀態(tài)是指線路有干擾時,發(fā)送端IN=IN+-IN-,接收端(IN++q)-(IN-+q)= IN+-IN-=OUT,噪聲在輸出端被抑制掉,所以輸入端信號依舊等于輸出端信號。從兩種狀態(tài)的分析可知差分方式可以很好的抑制噪聲,確保數(shù)據(jù)準確無誤的傳輸。
2 硬件設(shè)計
圖1 LVDS譯碼接收電路
硬件設(shè)計采用LVDS差分電路,LVDS譯碼接收電路如圖1所示,電路中臨近接收器端并接了兩個51Ω的電阻,電阻間對地接了10pF的電容,能夠起到消除共模干擾的作用。在傳輸過程中使用雙絞屏蔽電纜,該電纜具有良好的傳輸特性,主要參數(shù)為時間延時4.3ns/m(max) [5],2芯時延差0.1ns/m(max),特性阻抗(94~106)Ω,衰減32db/100m(80Mhz)。采用這種方式設(shè)計電路一方面能夠提高系統(tǒng)的抗干擾性,另一方面能夠保證數(shù)據(jù)傳輸?shù)臏蚀_性。
3 軟件設(shè)計
譯碼接收過程可分為三步進行:第一步,檢測接收的數(shù)據(jù)是否為有效數(shù)據(jù),若不是則重新開始新的十七位數(shù)據(jù)譯碼;第二步,對十七位數(shù)據(jù)進行類曼徹斯特譯碼;第三步,將生成的校驗位(對接收的數(shù)據(jù)進行偶校驗的結(jié)果)與編碼時生成的校驗位進行比較,若相等則將譯碼后的十六位數(shù)據(jù)發(fā)送出去。具體VHDL程序可以分為數(shù)據(jù)定義、數(shù)據(jù)緩存、數(shù)據(jù)有效性判斷和數(shù)據(jù)轉(zhuǎn)換及校驗四大模塊,其中最后一個模塊和編碼程序類似,本文就不再闡述。
3.1 數(shù)據(jù)定義模塊
數(shù)據(jù)及輸入輸出端口定義模塊程序為:
module Manchester_Decoder(clk,rst,sdi,in_data) ;
input clk,rst;input sdi;
output [15:0] in_data;
3.2 數(shù)據(jù)緩存模塊
數(shù)據(jù)緩存模塊中數(shù)據(jù)傳輸采用逐位傳遞方式,具體程序為:
reg [4:0] sdi_delay;always @(posedge clk)
begin
sdi_delay[4:1]<=sdi_delay[3:0];//空出最后一位待放新接收的數(shù)據(jù)
sdi_delay[0]<=sdi;//將接收到的數(shù)據(jù)放入緩存
end
3.3 數(shù)據(jù)有效性判斷模塊
在對數(shù)據(jù)有效性進行判斷時要分別對連續(xù)“1”和連續(xù)“0”的個數(shù)進行判斷,具體程序為:
reg [7:0] hign_count,low_count;
always @(posedge clk or posedge sdi_delay[0])
begin
if(sdi_delay[0]==1'b1)
begin
hign_count<=hign_count+1;//判斷接收數(shù)據(jù)中連續(xù)1的個數(shù)
low_count<=8'd0;
end
else
begin
hign_count<=8'd0;
low_count<=low_count+1; //判斷接收數(shù)據(jù)中連續(xù)0的個數(shù)
end
end
4 測試和仿真
若接收到的數(shù)據(jù)為0100-0100-0100-0100-0100-0100-0100-0100-0100-0100-0100-0100-01 11-0111-0111-0111-0111,則經(jīng)過譯碼后的數(shù)據(jù)應為0x001F。采用ISim進行波形仿真,驗證譯碼模塊功能的準確性,ISim測試代碼為:
initial begin
clk = 0;rst = 0;
bufd=72'b0100_0100_0100_0100_0100_0100_0100_0100_0100_0100_0100_0100_0111_0111_0111_0111_0111;#100 rst=1;
end(下轉(zhuǎn)第187頁)
always #5 clk=~clk;always@(posedge clk) bufd<=bufd>>1;assign sdi=bufd[0];
從圖2中我們可以看出,當數(shù)據(jù)接收完成后,譯碼輸出數(shù)據(jù)為0x001F,和預期設(shè)計功能相符。
【參考文獻】
[1]江曉林,等.通信原理[M].哈爾濱工業(yè)大學出版社,2010.
[2]劉江海.EDA技術(shù)[M].華中科技大學出版社,2009.
[3]王曉聰.基于FPGA的HDB3碼編碼器優(yōu)化設(shè)計與分析[J].現(xiàn)代電子技術(shù),2011.
[4]楊少春.類曼徹斯特編解碼器設(shè)計及應用[J].器件與電路,2012.
[5]樊昌信.現(xiàn)代通信原理[M].人民郵電出版社,2011.
[責任編輯:劉帥]