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