新聞中心

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

        TS流的CRC譯碼器設計

        作者: 時間:2012-12-25 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/189722.htm

        d.JPG



        4 校驗
        校驗有兩種方法:一種是按位來計算的,一種是按字節來計算的。按位來計算的占用FPGA邏輯資源比較少,但是相對來說速度會比較慢,不能適應高速的的要求。按字節來運算的速度快,但是占用FPGA的邏輯資源多。綜合考慮后,這里使用按字節的算法。
        本設計的CRC算法采用直驅動表法,由于一個字節只有8 b,與生成項進行異或后最多有256個結果,先將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進行仿真的結果使用的是PSI表里的一個section的數據,可以看到,校驗到最后的時候,crc_reg的值變為了0,說明數據是正確的。

        e.JPG


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

        f.JPG



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


        上一頁 1 2 3 下一頁

        關鍵詞: CRC TS流 譯碼器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 双鸭山市| 郸城县| 轮台县| 信阳市| 松桃| 肃北| 巴里| 开化县| 永福县| 灌南县| 讷河市| 娱乐| 景洪市| 商城县| 图木舒克市| 涞源县| 平武县| 沅陵县| 阿荣旗| 息烽县| 松溪县| 保山市| 台东县| 同江市| 钟祥市| 华亭县| 营口市| 额济纳旗| 威海市| 噶尔县| 庄浪县| 金昌市| 宾川县| 南江县| 象州县| 安福县| 新巴尔虎左旗| 郓城县| 武乡县| 申扎县| 镇平县|