新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > TS流的CRC譯碼器設計

TS流的CRC譯碼器設計

作者: 時間:2012-12-25 來源:網(wǎng)絡 收藏

3.4 接收模塊
接收模塊的主要功能就是檢測到起始位后再在每個數(shù)據(jù)的中央位置進行采樣,接收完一幀數(shù)據(jù)后就放到接收FIFO里供校驗模塊使用,其RTL視圖如圖6所示。

本文引用地址:http://m.butianyuan.cn/article/189722.htm

d.JPG



4 校驗
校驗有兩種方法:一種是按位來計算的,一種是按字節(jié)來計算的。按位來計算的占用FPGA邏輯資源比較少,但是相對來說速度會比較慢,不能適應高速的的要求。按字節(jié)來運算的速度快,但是占用FPGA的邏輯資源多。綜合考慮后,這里使用按字節(jié)的算法。
本設計的CRC算法采用直驅(qū)動表法,由于一個字節(jié)只有8 b,與生成項進行異或后最多有256個結(jié)果,先將256個待查表的值生成MIF文件,放入由FPGA的IP核生成的ROM里,然后用查表法可以達到很快的運算速度,具有很強的實時性。其具體算法如下:
crc_reg=crctab[crc_reg[31:24]^buffer[7:0]8'hff]^{crc_reg[23:0],8'h0};
圖7是用model sire對CRC進行仿真的結(jié)果使用的是PSI表里的一個section的數(shù)據(jù),可以看到,校驗到最后的時候,crc_reg的值變?yōu)榱?,說明數(shù)據(jù)是正確的。

e.JPG


只要在接收FIFO里有數(shù)據(jù),CRC模塊就會將讀取數(shù)據(jù)進行CRC校驗。而每個PSI表里都有一個section_length是記錄在這個表里面從該字節(jié)之后有多個字節(jié)是有效數(shù)據(jù)的。所以,要將這個數(shù)據(jù)提取出來再加上3就得到了整個表的長度。在CRC校驗的時候,也要設置一個計數(shù)器,用于記錄處理多少個數(shù)據(jù),并與section_length比較。若這兩個數(shù)相同,則判斷CRC寄存器里的值;若為0,則說明這個數(shù)據(jù)段是正確的,通過串口發(fā)0x00給上位機;若CRC寄存器不為0,則說明這個數(shù)據(jù)斷是錯誤的,F(xiàn)PGA發(fā)送0x01給上位機。
CRC校驗處理的流程圖如圖8所示。

f.JPG



5 結(jié)論
本系統(tǒng)經(jīng)過實際驗證具有很高的準確性和實時性,并且在上位機和FPGA上都進行了校驗,可以驗證是否數(shù)據(jù)在串口傳輸?shù)倪^程發(fā)生了錯誤,其FPGA部分可以當作一個獨立的模塊加入到其他系統(tǒng)中,具有很強的實時性。


上一頁 1 2 3 下一頁

關(guān)鍵詞: CRC TS流 譯碼器

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉