請簡述網(wǎng)站開發(fā)的流程圖南寧百度seo排名
前言
????????書接上文【FPGA項目】沙盤演練——基礎(chǔ)版報文收發(fā)_子墨祭的博客-CSDN博客,前面我們做了基礎(chǔ)版的報文收發(fā),相信對邏輯設(shè)計有了一定的認(rèn)知,在此基礎(chǔ)上,繼續(xù)完善一個實際報文收發(fā)可能會遇到的一些處理:
- 報文處理
- 握手與反壓
- 跨時鐘域處理CDC
- CRC校驗
一、項目要求
????????從上游模塊接收報文數(shù)據(jù),對報文中的數(shù)據(jù)進(jìn)行CRC校驗,生成CRC8校驗碼并附在報文后,隨數(shù)據(jù)輸出發(fā)送給下游模塊。注意,接收與發(fā)送為兩個時鐘域,所以需要異步FIFO進(jìn)行跨時鐘域處理。
1.1 接口時鐘
接收(與上游模塊接口)時鐘頻率:180MHz
發(fā)送(與下游模塊接口)時鐘頻率:200MHz
1.2 接口時序
輸入時序:
輸出時序:
1.3 接口信號
信號 | I/O | 位寬 | 描述 |
系統(tǒng)接口信號 | |||
clk_in_180 | I | 1 | 系統(tǒng)時鐘,180Mhz |
rst_n_180 | I | 1 | 硬復(fù)位,低有效 |
clk_out_200 | I | 1 | 系統(tǒng)時鐘,200Mhz |
rst_n_180 | I | 1 | 硬復(fù)位,低有效 |
與上游模塊接口信號 | |||
sop_in | I | 1 | 輸入報文頭指示信號,高有效 |
eop_in | I | 1 | 輸入報文尾指示信號,高有效 |
vld_in | I | 1 | 輸入報文數(shù)據(jù)有效信號,高有效 |
din_rdy | O | 1 | 可以接收上游模塊報文的指示信號,高有效 |
data_in | I | 8 | 輸入報文數(shù)據(jù) |
與下游模塊接口信號 | |||
sop_out | O | 1 | 輸出報文頭指示信號,高有效 |
eop_out | O | 1 | 輸出報文尾指示信號,高有效 |
vld_out | O | 1 | 輸出報文數(shù)據(jù)有效信號,高有效 |
data_out | O | 8 | 輸出報文數(shù)據(jù) |
dout_rdy | I | 1 | 下游模塊可以接收報文的指示信號,高有效 |
1.4 數(shù)據(jù)格式
1.輸入數(shù)據(jù)格式:
輸入數(shù)據(jù)的第一拍(sop)為報文參數(shù)head[2:0],指示報文前面有多少bit數(shù)據(jù)是無效的,即:
Head =0 ?: 第一行數(shù)據(jù)全部有效(0 bit無效);
Head =1 ?: 第一行數(shù)據(jù)最低bit無效(1 bit無效);
...
Head =7 ?: 第一行數(shù)據(jù)最高位有效(7 bit無效);
2.CRC校驗前的數(shù)據(jù)格式:
在做CRC校驗之前,需要將無效bit清除,替換為0;
并且參數(shù)(head)不參與CRC校驗。
3.輸出數(shù)據(jù)格式:
輸出數(shù)據(jù)要求向前對齊,將CRC校驗碼附在報文之后,并且在末尾填充0以補(bǔ)足8bit。
二、項目方案設(shè)計
2.1功能分解
通過前面的描述,我們可以將功能分解為以下幾塊:
- 報文處理,包括接收的格式處理,輸出的格式處理;
- CRC校驗,這里我們使用并行的CRC8算法
- 跨時鐘域處理,這里我們使用異步FIFO
- 握手與反壓,上個項目只是規(guī)定了包間隔>2clk cycle,但是發(fā)送方不遵守咋辦?這里就需要一個反壓信號,在你能接收的時候才打開使能。
2.2系統(tǒng)框圖
問:CRC在FIFO之后可以嗎?
2.3項目代碼
方案寫的這么清楚了,代碼還不是分分鐘拿捏?
當(dāng)然這不是唯一的設(shè)計方案,可以先自行考慮設(shè)計及驗證。
若需完整代碼工程,后續(xù)再補(bǔ)充。
三、工程仿真
對激勵數(shù)據(jù)做CRC校驗,然后與系統(tǒng)輸出進(jìn)行比數(shù),完全匹配則通過。
四、項目收獲
- 方案設(shè)計的重要性:任何項目都是始于方案設(shè)計,前期需要花大量的功夫去理清思路,方案設(shè)計完成,代碼實現(xiàn)只不過是水到渠成的事情。
- 仿真的學(xué)習(xí):通過本項目,完成了testbench的編寫,仿真驗證,是對自己設(shè)計的一次檢驗,是實際項目縮短調(diào)試時間的最佳利器。
- 對時序的理解,時鐘是FPGA的心跳:任何時序操作都是發(fā)生在時鐘的跳變沿。當(dāng)采樣發(fā)生在當(dāng)前上升沿時刻,數(shù)據(jù)變化是發(fā)生在下一時刻的上升沿。
- 繪畫時序圖,可以使用https://wavedrom.com/editor.html ?(每個模塊的信號都可以畫出時序圖,便于代碼設(shè)計及調(diào)試)
后記
????????這個算是一個標(biāo)準(zhǔn)的完備的數(shù)字邏輯設(shè)計虛擬項目學(xué)習(xí)??梢詾槲覀兿到y(tǒng)設(shè)計奠定一個基礎(chǔ)。
????????后續(xù)我們將進(jìn)行實際項目演練。
????????咱們下期見~