基於 Verilog 實現 CRC-32 晶片模擬 採用modelsim 模擬軟體
目錄
1.背景知識2.安裝 Modelsim
3.CRC-16 模擬
4.CRC-32 模擬
5.Modelsim基礎使用教學
1.背景知識
CRC:循環冗餘查核(英語:Cyclic redundancy check,通稱「CRC」)是一種根據網路資料封包或電腦檔案等資料產生簡短固定位數驗證碼的一種雜湊函數,主要用來檢測或校驗資料傳輸或者保存後可能出現的錯誤。生成的數字在傳輸或者儲存之前計算出來並且附加到資料後面,然後接收方進行檢驗確定資料是否發生變化。一般來說,循環冗餘校驗的值都是32位元的整數。<取自Wiki 百科>
詳細的計算可以看這篇文章了解CRC運作原理.
習題:假設資料位元(D)為10110011011011001101 並使用CRC-16(P),試問CRC碼以多項式和二進位表示為何?加上CRC碼後的完整訊息(T)為何?
想知道答案可至這裡檢查
Modelsim:
Mentor公司的ModelSim是業界最優秀的HDL語言仿真軟件,它能提供友好的仿真環境,是業界唯一的單內核支持VHDL和Verilog混合仿真的仿真器。它採用直接優化的編譯技術、Tcl/Tk技術、和單一內核仿真技術,編譯仿真速度快,編譯的代碼與平台無關,便於保護IP核,個性化的圖形界面和用戶接口,為用戶加快調錯提供強有力的手段,是FPGA/ASIC設計的首選仿真軟件。<取自Baidu 百科>
2..安裝 modelsim
在這邊示範的是 ModelSim PE Student Edition (學生嘛~~)首先讓我們到官網下載安裝程式 |
下載成功之後就安裝去吧 |
熟悉冗長的安裝過程~~ |
超冗長的安裝對吧~~~ |
安裝結尾這裡記得點選 YES |
安裝結束後會跳出個網頁 要求填寫基本資料 這裡亂填就好XDD 但是信箱要確定能收的到 |
[HINT:不想註冊真實信箱]
反正卻確定信箱有收到信件且有附件檔案 |
依照信件指示 將剛收到的附件放入指定資料夾當中 |
如此一來我們就有180天的試用期惹~~
3..基礎使用教學
這邊就看看影片吧
4..CRC-16 模擬
串列模擬結果 |
模擬結果分析:
上圖為測試程式的仿真結果,圖中所示中輸入信號為CRC_IN,當資料沒有完全輸入編碼器的時候,輸入信號CRC_IN作為CRC_OUT的輸出資料,當d_finish信號變為高電位就代表資料登入完成,這時候將線性移位暫存器CRC_REG中的校驗位依次輸出到CRC_OUT
並列模擬結果 |
上面所視為CRC-16並行編碼電路測試程式的仿真結果,圖中輸入信號是CRC_IN,當資料沒有完全輸入編碼器時,輸入信號CRC_IN 作為CRC_OUT的輸出資料,當d-finish 信號為高電位就表示資料輸入完畢,這時候將線性移位暫存器 CRC_REG 中的校驗位並行8位輸出到CRC_OUT
串列/並行說明:
在利用CRC-16串列編碼電路對於輸入資料進行編碼時,他的輸入資料是串列輸入的,因此資料傳輸率較低,它運算速度的提高完全依賴於系統時鐘頻率(clk)的提高,不能夠滿足現在的低功號下的資料快速傳輸。如果將資料進行並行處理,就可以在較低的時鐘頻率下快速處理資料。因此,並行的CRC-16在目前應用廣泛。
CRC-16 簡易邏輯設計圖 |
5..CRC-32 模擬
並行模擬圖 |
CRC-32 簡易邏輯設計圖 |
參考資料
1.http://j92a21b.ee.ncku.edu.tw/broad/99logic/lab9/introduction_to_modelsim.pdf
2.基於Verilog HDL 的通信系統設計
3.http://zh.wikipedia.org/wiki/循環冗餘校驗
4.http://baike.baidu.com/view/1301834.htm
5.http://ff320232.blogspot.tw/2013/11/verilogc-crc.html
6.http://ghsi.de/CRC/index.php?Polynom=10001000000100001&Message=aa
留言
張貼留言