0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ARM微處理器的MPEG-2解復(fù)用器設(shè)計(jì)方案

電子設(shè)計(jì) ? 來源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-05-03 10:04 ? 次閱讀

引言

隨著芯片技術(shù)的發(fā)展,FPGA的容量已經(jīng)達(dá)到上百萬門級,從而使FPGA成為設(shè)計(jì)的選擇之一。Altera公司的FPGA芯片EPXA10應(yīng)用SOPC技術(shù),集高密度邏輯(FPGA)、存儲器(SRAM)及嵌入式處理器ARM)于單片可編程邏輯器件上,實(shí)現(xiàn)了RISC和FPGA的完美結(jié)合。本文使用EPXA10芯片,利用片上的ARM微處理器對MPEG-2傳輸流進(jìn)行解碼,得到必要的解碼參數(shù),實(shí)現(xiàn)了將傳輸流分成視頻流和音頻流的解復(fù)用。

EPAX10器件

簡要介紹

ALTERA公司的EPXA10器件單片集成了ARM硬核,百萬門級的FPGA,以及SDRAM存儲器的接口。它將FPGA和ARM處理器完美結(jié)合在一起,是一個(gè)典型的SOPC結(jié)構(gòu)。

其中ARM處理器是32位的ARM922T,工作頻率可以達(dá)到200MHz,具有8K的數(shù)據(jù)緩存和8K的指令緩存。通過板上的JTAG接口,可以實(shí)現(xiàn)斷點(diǎn)調(diào)試功能。

片上的百萬門級FPGA可用于實(shí)現(xiàn)用戶自定義的邏輯。它通過AHB總線和ARM處理器相互連接。為了更加靈活的使用,F(xiàn)PGA用戶自定義邏輯可以定義為主模塊(master),在總線通信時(shí)處于發(fā)起端;或是定義為從模塊(slave),在總線通信時(shí)處于接收端。FPGA器件內(nèi)部有3M大小的存儲器,同時(shí)集成了SDRAM控制器。在FPGA開發(fā)板上可以外接128M的SDRAM,為了便于內(nèi)部FPGA和外部SDRAM大數(shù)據(jù)量的交換,用戶還可以定義自己的DMA模塊,用于訪問外部SDRAM。通過UART、網(wǎng)卡接口、JTAG接口,F(xiàn)PGA可以很方便地同外部計(jì)算機(jī)通信、下載程序,及調(diào)試程序等。

基于ARM微處理器的MPEG-2解復(fù)用器設(shè)計(jì)方案

MPEG-2傳輸流解復(fù)用原理

MPEG-2傳輸流簡要介紹

作為數(shù)字視頻壓縮技術(shù)的國際通用標(biāo)準(zhǔn),MPEG-2標(biāo)準(zhǔn)于1994年被運(yùn)動圖像專家組制定出來,分成系統(tǒng)層、視頻壓縮層和音頻壓縮層。系統(tǒng)層主要用來描述音、視頻的數(shù)據(jù)復(fù)用和音、視頻的同步方式。在系統(tǒng)層定義了TS(傳輸流)和PS(節(jié)目流)兩種形式的碼流。PS通常用于相對無錯(cuò)的環(huán)境,例如DVD中,其長度為2048字節(jié);TS通常用于相對有錯(cuò)的環(huán)境,例如數(shù)字電視的地面廣播傳輸中,分組長度規(guī)定為188字節(jié)。TS流和PS流都是由編碼后的基本數(shù)據(jù)流(ES)根據(jù)一定的格式打包形成PES包,再加入一些系統(tǒng)信息而構(gòu)成的,碼流形成過程如圖2所示。根據(jù)MPEG-2協(xié)議,在發(fā)送端,基本流的PES打包由音/視頻編碼器完成,復(fù)用器接收編碼端的音、視頻數(shù)據(jù)流以及輔助數(shù)據(jù)流,按照一定的復(fù)用方法將其交織成為單一的TS流。為了實(shí)現(xiàn)音、視頻同步,在碼流中還必須加入各種時(shí)間的標(biāo)志和系統(tǒng)的控制信息。接收端和發(fā)送端正好相反。

傳輸流及其PSI表

傳輸流TS的結(jié)構(gòu)長度為188字節(jié),分成包頭和包負(fù)荷兩部分。包頭主要包括同步字節(jié)和PID以及其他的信息,同步字節(jié)用來指示一個(gè)TS包開始(0x47),PID表示TS包的類型。例如一個(gè)節(jié)目里的音頻PES包,在轉(zhuǎn)換成為TS包后會具備同樣的PID,這樣,接收端只需要接收具有此PID的TS包,就可以將該節(jié)目的音頻解出來了。包負(fù)荷是包的實(shí)際內(nèi)容,根據(jù)具體情況,可以放置PES包或PSI包。傳輸流由一個(gè)或者多個(gè)節(jié)目構(gòu)成,而每一個(gè)節(jié)目由視頻流、音頻流、私有信息流以及其他的數(shù)據(jù)包構(gòu)成。

PSI包在傳輸流解復(fù)用中占據(jù)重要地位,它通過四個(gè)表格來定義碼流的結(jié)構(gòu),分別是節(jié)目關(guān)聯(lián)表(PAT)、節(jié)目映射表(PMT)、條件接收表(CAT)和網(wǎng)絡(luò)信息表(NIT)。其中最為關(guān)鍵的部分是PAT表和PMT表。

PAT表是PSI信息的索引表,PID值固定為0。在PAT表中列出了該傳輸碼流中所有節(jié)目的PMT表的PID值。如果接收方希望接收其中的一個(gè)節(jié)目,即可根據(jù)這個(gè)PID值解出對應(yīng)于該節(jié)目的PMT表,從中可以查詢到與該節(jié)目相關(guān)的所有音頻流、視頻流,以及私有信息的PID,在接收時(shí)就可以只接收具有這些PID值的包。

基于ARM微處理器的MPEG-2解復(fù)用器設(shè)計(jì)方案

PAT表的PID值為0,根據(jù)PAT表可以得到各個(gè)節(jié)目對應(yīng)的PID值,如節(jié)目0,PID=122,對應(yīng)NIT網(wǎng)絡(luò)信息表;節(jié)目1,PID=60;節(jié)目20,PID=200等。如果希望看節(jié)目20,就根據(jù)200這個(gè)PID值得到節(jié)目20對應(yīng)的PMT表,再進(jìn)一步查到節(jié)目20的視頻、音頻及私有信息包對應(yīng)的PID值,分別為500、510和540。解有這些PID值的傳輸包就可以解出音頻和視頻的PES包,最終解出音頻流和視頻流。CAT表的PID值固定為1,用來傳遞加密信息,不在本文的討論范圍內(nèi)。

在MPEG-2系統(tǒng)層解碼時(shí),需要由一個(gè)解復(fù)用器按照上述的原理對PSI表進(jìn)行處理,同時(shí)將各個(gè)音、視頻基本流從傳輸流中分離出來,送入對應(yīng)的解碼器中,所以解復(fù)用器在MPEG-2解碼中占據(jù)重要的地位。

解復(fù)用系統(tǒng)的具體實(shí)現(xiàn)

本文設(shè)計(jì)的是DVB的SDTV系統(tǒng)集成解碼芯片,視頻解碼最高支持MPEG-2的MP@ML,分辨率為720×576,實(shí)時(shí)解碼;音頻解碼滿足AC-3標(biāo)準(zhǔn)。

從前面的部分可知,解復(fù)用器需要承擔(dān)將數(shù)據(jù)分流的工作,所以數(shù)據(jù)處理量相當(dāng)大,很多解復(fù)用器都采用DSP或者專用ASIC進(jìn)行處理。本文中,有別與以往的結(jié)構(gòu),利用EPXA10的片上ARM處理器,以及片上內(nèi)嵌的SDRAM控制器和DMA控制器的特性,來實(shí)現(xiàn)對MPEG-2的傳輸流進(jìn)行解復(fù)用,同時(shí)由硬件完成對PID包過濾的任務(wù)。所有的數(shù)據(jù)分解過程都由系統(tǒng)軟件來完成,因此在數(shù)據(jù)處理方面更加靈活,保證了系統(tǒng)對于MPEG-2傳輸流解碼的靈活性,同時(shí)避免了語法上的不兼容。

基于ARM微處理器的MPEG-2解復(fù)用器設(shè)計(jì)方案

系統(tǒng)硬件由PID過濾、片上緩存及DMA等構(gòu)成;系統(tǒng)軟件部分由ARM實(shí)現(xiàn)。片外SDRAM用來存放數(shù)據(jù)。音/視頻解碼模塊使用硬件實(shí)現(xiàn),在本文中不涉及到相關(guān)內(nèi)容。

系統(tǒng)硬件的功能是:當(dāng)外部的8位傳輸流數(shù)據(jù)輸入到FPGA上時(shí),根據(jù)傳輸流包頭進(jìn)行同步,并將同步好的數(shù)據(jù)送入到PID過濾器。如果在傳輸過程中有錯(cuò)誤,也就是包頭中有sequence-error-code=1,就丟棄這個(gè)包;如果沒有,則檢查PID碼表的數(shù)據(jù),如果在碼表中有這個(gè)PID值,那么就將這個(gè)傳輸流的包送入到FPGA的片上緩存中;否則就丟棄這個(gè)包。PID過濾器工作完成后,數(shù)據(jù)送入FPGA片上緩存部分,為了加快數(shù)據(jù)處理速度,使用DMA將緩存中的數(shù)據(jù)傳輸?shù)狡蟂DRAM對應(yīng)的傳輸流緩沖區(qū)。

如果片外SDRAM的傳輸流緩存中有未處理的包,則取出該包,判斷PID的值。如果PID=0,表示當(dāng)前的包是PAT,那么就對該包進(jìn)行解析,根據(jù)選定的節(jié)目號,確定需要解碼的PMT包的PID,再更新FPGA上PID碼表中PMT的PID,并將PMT的狀態(tài)位設(shè)定為需要解碼。

如果PID等于PID碼表中PMT包的PID,則判斷PMT的狀態(tài)位。如果不需要解碼,就丟棄這個(gè)包;如果需要解碼,則進(jìn)入PMT包解析子程序,提取出該解碼對應(yīng)的音、視頻傳輸流包的PID,將提取出的音、視頻傳輸流包的PID值對FPGA片上的PID碼表進(jìn)行更新。

如果PID等于PID碼表中的音、視頻PID值,那么就進(jìn)入到音/視頻處理程序,對音、視頻的傳輸流包進(jìn)行解包,將解得的PES包的內(nèi)容(就是實(shí)際的音、視頻流)通過DMA發(fā)送到片外SDRAM的音/視頻緩沖區(qū)中,供下一級的音/視頻解碼器完成解碼功能,最終完成MPEG-2碼流的解碼過程。

基于ARM微處理器的MPEG-2解復(fù)用器設(shè)計(jì)方案

結(jié)語

本文使用了Altera公司的一款具有ARM硬核的FPGA器件EPXA10,提出了一種基于ARM微處理器的對MPEG-2的傳輸流進(jìn)行解復(fù)用的解復(fù)用器設(shè)計(jì)方案。根據(jù)傳輸流的特點(diǎn),使用硬件實(shí)現(xiàn)了數(shù)據(jù)量操作比較大的PID包過濾、DMA傳輸?shù)热蝿?wù),并利用ARM處理器完成較為復(fù)雜的PAT、PMT包的解包工作,同時(shí)也將音、視頻包解包,并將解出的音、視頻發(fā)送到片外SDRAM上的音/視頻緩沖區(qū)中。

最終設(shè)計(jì)的解復(fù)用器能對碼率最高為19 Mbps的傳輸流進(jìn)行解復(fù)用,對系統(tǒng)層的數(shù)據(jù)和其他輔助數(shù)據(jù)進(jìn)行解碼。解復(fù)用得出的視頻流和音頻流可供下一級的音/視頻模塊進(jìn)行實(shí)時(shí)解碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603463
  • 芯片
    +關(guān)注

    關(guān)注

    455

    文章

    50818

    瀏覽量

    423722
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7492

    瀏覽量

    163853
收藏 人收藏

    評論

    相關(guān)推薦

    波分復(fù)用/復(fù)用器知多少?

    ,Demultiplexer)將各種波長的光載波分離,然后由光接收機(jī)作進(jìn)一步處理以恢復(fù)原信號。這種在同一根光纖中同時(shí)傳輸兩個(gè)或眾多不同波長光信號的技術(shù),稱為波分復(fù)用。波分復(fù)用/
    發(fā)表于 08-11 15:42

    內(nèi)嵌ARM核怎么進(jìn)行復(fù)用?

    )及嵌入式處理器(ARM)于單片可編程邏輯器件上,實(shí)現(xiàn)了RISC和FPGA的完美結(jié)合。本文使用EPXA10芯片,利用片上的ARM微處理器MPEG-
    發(fā)表于 04-14 07:00

    MPEG-2編碼復(fù)用器中的FPGA邏輯設(shè)計(jì),看完你就懂了

    MPEG-2編碼復(fù)用器中的FPGA邏輯設(shè)計(jì),看完你就懂了
    發(fā)表于 04-29 06:13

    MPEG-2編碼復(fù)用器中的FPGA邏輯設(shè)計(jì)

        摘要:簡要介紹了現(xiàn)場可編程門陣列(FPGA)的特性,并結(jié)合MPEG-2編碼復(fù)用器開發(fā)過程中的經(jīng)驗(yàn),給出了在MAX+ PLUS II提供的設(shè)計(jì)環(huán)境下FPGA邏輯設(shè)計(jì)的
    發(fā)表于 05-26 21:52 ?838次閱讀
    <b class='flag-5'>MPEG-2</b>編碼<b class='flag-5'>復(fù)用器</b>中的FPGA邏輯設(shè)計(jì)

    MPEG-2編碼復(fù)用器中的FPGA邏輯設(shè)計(jì)

     摘要:簡要介紹了現(xiàn)場可編程門陣列(FPGA)的特性,并結(jié)合MPEG-2編碼復(fù)用器開發(fā)過程中的經(jīng)驗(yàn),給出了在MAX+ PLUS II提供的設(shè)計(jì)環(huán)境下FPGA邏輯設(shè)計(jì)的一些方法和技巧。設(shè)計(jì)的邏
    發(fā)表于 06-20 14:40 ?637次閱讀
    <b class='flag-5'>MPEG-2</b>編碼<b class='flag-5'>復(fù)用器</b>中的FPGA邏輯設(shè)計(jì)

    MPEG-2復(fù)用器PSI信息分析部分的FPGA實(shí)現(xiàn)

    MPEG-2復(fù)用器PSI信息分析部分的FPGA實(shí)現(xiàn)  復(fù)用器是數(shù)字電視前端平臺的關(guān)鍵設(shè)備,它的主要功能是完成對輸入多路傳輸流(Transport Stream,TS)的復(fù)用工作,它的
    發(fā)表于 01-08 11:57 ?959次閱讀
    <b class='flag-5'>MPEG-2</b><b class='flag-5'>復(fù)用器</b>PSI信息分析部分的FPGA實(shí)現(xiàn)

    基于FPGA器件EPXA10實(shí)現(xiàn)MPEG-2傳輸流復(fù)用器的設(shè)計(jì)

    )及嵌入式處理器ARM)于單片可編程邏輯器件上,實(shí)現(xiàn)了RISC和FPGA的完美結(jié)合。本文使用EPXA10芯片,利用片上的ARM微處理器MPEG-
    的頭像 發(fā)表于 01-15 08:08 ?2176次閱讀
    基于FPGA器件EPXA10實(shí)現(xiàn)<b class='flag-5'>MPEG-2</b>傳輸流<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>的設(shè)計(jì)

    2 通道模擬復(fù)用器/復(fù)用器-74LVC1G3157

    2 通道模擬復(fù)用器/復(fù)用器-74LVC1G3157
    發(fā)表于 02-07 18:59 ?0次下載
    <b class='flag-5'>2</b> 通道模擬<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74LVC1G3157

    四路 1-of-2 多路復(fù)用器/復(fù)用器-74CBTLV3257_Q100

    四路 1-of-2 多路復(fù)用器/復(fù)用器-74CBTLV3257_Q100
    發(fā)表于 02-07 20:27 ?0次下載
    四路 1-of-<b class='flag-5'>2</b> 多路<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74CBTLV3257_Q100

    2通道模擬復(fù)用器/復(fù)用器-74LVC1G3157_Q100

    2 通道模擬復(fù)用器/復(fù)用器-74LVC1G3157_Q100
    發(fā)表于 02-10 18:55 ?0次下載
    <b class='flag-5'>2</b>通道模擬<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74LVC1G3157_Q100

    四路 1-of-2多路復(fù)用器/復(fù)用器-CBT3257A

    四路 1-of-2 多路復(fù)用器/復(fù)用器-CBT3257A
    發(fā)表于 02-15 20:08 ?0次下載
    四路 1-of-<b class='flag-5'>2</b>多路<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-CBT3257A

    2通道模擬復(fù)用器/復(fù)用器-74LVC1G53_Q100

    2 通道模擬復(fù)用器/復(fù)用器-74LVC1G53_Q100
    發(fā)表于 02-15 20:14 ?0次下載
    <b class='flag-5'>2</b>通道模擬<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74LVC1G53_Q100

    2通道模擬復(fù)用器/復(fù)用器-74LVC1G53

    2 通道模擬復(fù)用器/復(fù)用器-74LVC1G53
    發(fā)表于 02-15 20:15 ?0次下載
    <b class='flag-5'>2</b>通道模擬<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74LVC1G53

    2通道模擬復(fù)用器/復(fù)用器-74LVC2G53

    2 通道模擬復(fù)用器/復(fù)用器-74LVC2G53
    發(fā)表于 02-16 20:45 ?0次下載
    <b class='flag-5'>2</b>通道模擬<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74LVC<b class='flag-5'>2</b>G53

    四路 1-of-2多路復(fù)用器/復(fù)用器-74CBTLV3257

    四路 1-of-2 多路復(fù)用器/復(fù)用器-74CBTLV3257
    發(fā)表于 02-20 20:02 ?0次下載
    四路 1-of-<b class='flag-5'>2</b>多路<b class='flag-5'>復(fù)用器</b>/<b class='flag-5'>解</b><b class='flag-5'>復(fù)用器</b>-74CBTLV3257