基于SATAII協(xié)議的CRC32并行算法的研究
SATA協(xié)議中CRC生成校驗模塊采用有限狀態(tài)機來識別傳輸數據流中的原語,從而完成CRC值的生成與校驗。其狀態(tài)機結構圖如圖3所示。本文引用地址:http://www.ex-cimer.com/article/159619.htm
其中狀態(tài)STATE0檢測幀頭并裝入STATE1狀態(tài);在STATE1中,當輸入數據為幀尾時,則轉入STATE3狀態(tài),否則轉入STATE2狀態(tài),在STATE1狀態(tài)下輸出幀頭,并設置CRC初始值為0x52325032h;在STATE2中,當輸入為幀尾時,則轉入STATE3狀態(tài),否則轉入STATE2狀態(tài),對非原語數據進行CRC值生成,并保存到寄存器中,輸出為數據或保持原語;在STATE3中輸出最終的CRC值,并轉入STATE4狀態(tài);在STATE4中輸出幀尾,并轉入STATTE0狀態(tài)等待下一次數據的輸入。
輸入一幀數據,并由式(14)進行計算,得出輸入數據對應的CRC計算值如表1所示。
其對應的系統(tǒng)仿真結果如圖4所示。
仿真結果顯示,CRC數據校驗與表1中的理論值一致,CRC生成模塊能夠自動識別數據流中的原語和數據,并能有數據生成正確的CRC校驗值。其中每雙字數據生成CRC值僅需一個時鐘周期,系統(tǒng)輸出延時僅為一個時鐘周期,相對于串行CRC生成算法,CRC32并行算法更能滿足SATA協(xié)議對時鐘頻率的要求。
5 結束語
文中介紹了CRC校驗原理和常用CRC32實現算法,并根據比特型算法推導出一種CRC32并行算法的實現方案,該方案實現簡單,實現的并行算法相對于串行算法具有速度快,運算簡單,并且易于硬件實現等優(yōu)點。本文還將將CRC32并行算法與SATA協(xié)議相結合,實現了滿足SATA協(xié)議規(guī)范的CRC生成和校驗模塊,并成功應用于SATAⅡ主控制器的設計中。
評論