• 方案介紹
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

串行數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)Verilog代碼VIVADO仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

名稱:串行數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)Verilog代碼VIVADO仿真

軟件:VIVADO

語言:Verilog

代碼功能:

一種串行數(shù)據(jù)通信系統(tǒng)

圖1為一種數(shù)據(jù)通信系統(tǒng)的示意圖,圖2為數(shù)據(jù)包格式。

圖1 數(shù)據(jù)通信系統(tǒng)示意圖

圖2 數(shù)據(jù)包格式

要求1:系統(tǒng)為同步設(shè)計(jì)。TX模塊通過串行通道向RX模塊發(fā)送串行數(shù)據(jù),串行數(shù)據(jù)中包含有效數(shù)據(jù)和無效數(shù)據(jù),串行通道僅有1位時(shí)鐘和1位數(shù)據(jù),RX應(yīng)正確接收TX發(fā)來的有效數(shù)據(jù),不接收無效數(shù)據(jù)。自定義標(biāo)記有效數(shù)據(jù)和無效數(shù)據(jù)的方法。

要求2:在要求1的基礎(chǔ)上,TX模塊以數(shù)據(jù)包的形式向RX發(fā)送串行數(shù)據(jù),TX發(fā)送的數(shù)據(jù)包來源于TS0、TS1、TS2...TSn等源節(jié)點(diǎn)模塊(n不小于3)。每個(gè)源節(jié)點(diǎn)模塊產(chǎn)生獨(dú)立的數(shù)據(jù)包,產(chǎn)生數(shù)據(jù)包的事件由輸入端口控制(該輸入端口有脈沖信號則產(chǎn)生一個(gè)數(shù)據(jù)包)。數(shù)據(jù)包格式如圖2所示。header字段為數(shù)據(jù)包包頭,格式自定義,但須包含

源節(jié)點(diǎn)模塊序號信息。payload字段為需要傳輸?shù)臄?shù)據(jù)載荷,格式自定義。TX與各源節(jié)點(diǎn)模塊之間的接口自定義。

要求3:RX接收TX發(fā)送的數(shù)據(jù)包,并對收到的數(shù)據(jù)包進(jìn)行解析,識別數(shù)據(jù)包來源于哪個(gè)源節(jié)點(diǎn)模塊,并將數(shù)據(jù)包中的payload(不含header)發(fā)送給具有相同序號的阱節(jié)點(diǎn)模塊。RS0、RS1、RS2...RSn為阱節(jié)點(diǎn)模塊(n不小于3,且與源節(jié)點(diǎn)模塊數(shù)量相同)。RX與各阱節(jié)點(diǎn)模塊之間的接口自定義。

要求4:編寫Testbench,對設(shè)計(jì)進(jìn)行仿真。其中一個(gè)源節(jié)點(diǎn)模塊產(chǎn)生的數(shù)據(jù)包中的payload應(yīng)包含學(xué)號、姓名拼音的ASCII碼等信息,并在文檔中有清晰截圖和文字說明。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

部分代碼展示:

//接收
module?RX(
input?clock,//時(shí)鐘
input?data?,//數(shù)據(jù)
input?reset,//復(fù)位
output?[55:0]?receive_data//接收到的有效數(shù)據(jù)
);
//數(shù)據(jù)包格式:
//header:ABCD
//paylod:?0123456789
//使用數(shù)據(jù)接收
reg?[55:0]?data_receive;
always@(posedge?clock?or?posedge?reset)
if(reset)
data_receive<=56'd0;//復(fù)位
else?begin
data_receive[0]<=data;//將輸入的數(shù)據(jù)移入最低位
data_receive[55:1]<=data_receive[54:0];//原數(shù)據(jù)整體左移1位
end

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1361

相關(guān)推薦