日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > EDA > 電子設(shè)計自動化
[導(dǎo)讀]TS流的CRC譯碼器設(shè)計 潘家頂,楊光杰 (桂林理工大學(xué)信息科學(xué)與工程學(xué)院,廣西 桂林 541004) 摘要:TS流是數(shù)字電視信號傳輸?shù)闹饕绞?,由于其采用的是廣播方式且信道中存在著許多干擾,因此是不可靠傳輸。為了保證

摘要:TS流是數(shù)字電視信號傳輸?shù)闹饕绞?,由于其采用的是廣播方式且信道中存在著許多干擾,因此是不可靠傳輸。為了保證數(shù)據(jù)的正確性,一般需要進行信道編碼。在發(fā)送端,TS流中通常采用的信道編碼方式是CRC校驗;在接收端進行譯碼。由于TS流數(shù)據(jù)量非常大,通常的軟件譯碼方法不能滿足要求。設(shè)計了一個基于FPGA的CRC譯碼器,速度快,并且具有很強的實時性。
關(guān)鍵詞:FPGA;TS流;CRC校驗;譯碼器

0 引言
    隨著我國數(shù)字電視發(fā)展的越來越快,集成度越來越高,數(shù)據(jù)傳輸?shù)恼_性也變得越來越重要。而TS流作為數(shù)字電視傳輸?shù)闹饕绞?,其信號的正確性將直接影響到電視畫面的質(zhì)量以及各種數(shù)字電視業(yè)務(wù)的發(fā)展,如互聯(lián)網(wǎng)等。為了保證傳輸?shù)目煽啃?,就要對?shù)據(jù)加上CRC校驗碼,接收的時候?qū)ζ溥M行譯碼。當(dāng)前的譯碼大多是在微處理器上用軟件來實現(xiàn)的,這樣的軟件譯碼方式速度比較慢,無法滿足高速大容量的的數(shù)字電視信道的要求。本文設(shè)計了一個基于FPGA的CRC譯碼器,通過查找表法進行譯碼,能夠達(dá)到很高的速度,具有很強的實時性。

1 TS流的結(jié)構(gòu)
   
傳送流(Transport Stream,TS流),它是根據(jù)ITU-T Rec.H.222.0 | ISO/IEC 13818-2和ISO/IEC13818-3協(xié)議而定義的一種數(shù)據(jù)流,其目的是為了在有可能發(fā)生嚴(yán)重錯誤的情況下進行一道或多道程序編碼數(shù)據(jù)的傳送和存儲。傳送流由一道或多道節(jié)目組成,每道節(jié)目由一個或多個原始流和一些其他流復(fù)合在一起,包括視頻流、音頻流、節(jié)目特殊信息流(PSI)和其他數(shù)據(jù)包。TS流是數(shù)字電視信號的主要傳輸形式,TS流由許多的TS包組成,每個TS包的長度為188 B,它由包頭、自適應(yīng)區(qū)、數(shù)據(jù)區(qū)三個部分組成,其中,每個TS包的有效信息占184 B,字節(jié)后面是4 B的CRC校驗碼。其結(jié)構(gòu)如圖1所示。



2 系統(tǒng)總體設(shè)計
   
本系統(tǒng)采用了Altera公司的低成本低功耗的CycloneⅣ系列的EP4CE6E22C8N芯片,此芯片具有6 272個LE,還有270 KB的內(nèi)部存儲器,非常適合用來做CRC校驗。本系統(tǒng)采用了Verilog語言在FPGA上實現(xiàn)了UART的收發(fā)和CRC校驗的功能。
    TS包的數(shù)據(jù)由串口發(fā)送至FPGA,在FPGA內(nèi)進行CRC校驗,當(dāng)一個section的數(shù)據(jù)校驗完之后,又由UART發(fā)送出去??傮w框圖如圖2所示。



3 UART設(shè)計
    UART的程序采用了自頂向下的分模塊設(shè)計方法,其功能模塊主要分為波特率產(chǎn)生模塊、起始位檢測模塊、發(fā)送模塊和接收模塊四部分。各個模塊分別編寫好并且仿真通過之后,再在頂層對其進行例化,使各個模塊能夠連接起來。
3.1 波特率產(chǎn)生模塊
   
設(shè)計采用的波特率為9 600 b/s,幀格式為1 b起始位,8 b數(shù)據(jù)位,無奇偶校驗位,1 b停止位。波特率的產(chǎn)生主要是使用累加的方法,當(dāng)累加到一定值的時候,就給clk_bps一個時鐘的高電平,從而產(chǎn)生波特率。產(chǎn)生波特率的部分代碼如下:
   
    波特率產(chǎn)生的RTL視圖如圖3所示。


3.2 起始位檢測模塊
   
起始位是UART傳輸數(shù)據(jù)的開始,因此起始位檢測的好壞至關(guān)重要,本設(shè)計采用了邊沿檢測技術(shù)來檢測起始位,當(dāng)起始位的那個下降沿到來的時候,H2L_sig端口就會產(chǎn)生一個時鐘周期的高電平,為下面的接收做好準(zhǔn)備,起始位檢測的部分代碼如下:
   
    起始位的RTL視圖如圖4所示。


3.3 發(fā)送模塊
   
發(fā)送模塊主要功能就是將FIFO里8 b的數(shù)據(jù)按9 600 b/s波特率一位一位地發(fā)送出去,最后再加上停止位,其RTL視圖如圖5所示。


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



4 CRC校驗
    CRC校驗有兩種方法:一種是按位來計算的,一種是按字節(jié)來計算的。按位來計算的占用FPGA邏輯資源比較少,但是相對來說速度會比較慢,不能適應(yīng)高速的TS流的要求。按字節(jié)來運算的速度快,但是占用FPGA的邏輯資源多。綜合考慮后,這里使用按字節(jié)的算法。
    本設(shè)計的CRC算法采用直驅(qū)動表法,由于一個字節(jié)只有8 b,與生成項進行異或后最多有256個結(jié)果,先將256個待查表的值生成MIF文件,放入由FPGA的IP核生成的ROM里,然后用查表法可以達(dá)到很快的運算速度,具有很強的實時性。其具體算法如下:
    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ù)是正確的。


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



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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉