<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MPEG-2編碼復用器中的FPGA邏輯設計

MPEG-2編碼復用器中的FPGA邏輯設計

作者: 時(shí)間:2017-06-06 來(lái)源:網(wǎng)絡(luò ) 收藏
方案綜述:

  MPEG-2編碼復用器主要由DSP(數字信號處理器)和FPGA兩大部分組成。其中,DSP作為整個(gè)系統的主控單元,而FPGA則完成相應的輔助邏輯功能。用FPGA實(shí)現的編碼復用器,具有設計,升級都非常方便,快速的特點(diǎn),提高了工作效率。

FPGA芯片簡(jiǎn)介

  編碼復用器中所使用的FPGA芯片是美國Altera公司生產(chǎn)的FLEX10K50V。 Flex10K系列是Altera公司在FLEX8000系列基礎上發(fā)展起來(lái)的一種新型器件。它的結構的主要特點(diǎn)除了主要的邏輯陣列塊(LAB)之外,首次采用了嵌入陣列塊(EAB)。 FLEX10K50V的主要特性指標為:

  ●邏輯門(mén)數目為50,000門(mén);

  ●最大I/O引腳數為274個(gè);

  ●提供-1,-2,-3,-4四種速度級別;

  ●觸發(fā)器數目為3,184個(gè);

  ●LE(Logic Element,邏輯單元)數目為2,880個(gè);

  ●總的RAM為20,480bits。

MAX+ PLUS II開(kāi)發(fā)工具

  MAX+ PLUS II是開(kāi)發(fā)Altera公司FPGA產(chǎn)品(包括MAX系列和FLEX系列)的軟件工具包。利用MAX+ PLUS II提供的設計環(huán)境和設計工具,可以靈活高效地完成各種數字電路設計。在MAX+ PLUS II的設計環(huán)境下, FPGA的整個(gè)設計流程如圖1所示:

  1. MAX+ PLUS II的設計輸入可以有三種方式,即圖形輸入,文本輸入和波形輸入。此外,符號編輯器用于編輯用戶(hù)自己的模塊符號。需要說(shuō)明的是: 在本系統中,我們使用AHDL(Altera,HDL) 語(yǔ)言作為文本輸入方式。

  2. 設計實(shí)現即在FPGA器件內物理地實(shí)現所需地邏輯.這個(gè)過(guò)程由MAX+ PLUS II中的核心部分編譯器完成。它依據設計輸入文件自動(dòng)生成用于器件編程、波形仿真、延時(shí)分析等所需的數據文件。

  3. 設計仿真是由仿真器和時(shí)延分析器利用編譯器產(chǎn)生的數據文件,自動(dòng)完成邏輯功能仿真和延時(shí)特性仿真。通過(guò)仿真,發(fā)現設計中的錯誤與不足,對設計輸入進(jìn)行修改和完善,最終達到設計要求。

  4. 在仿真結果正確以后,就可以進(jìn)行器件編程,即通過(guò)編程器(Programmer)將設計文件下載到FPGA芯片中,在實(shí)際芯片中進(jìn)行實(shí)際信號的時(shí)序驗證,就芯片的實(shí)際運行性能進(jìn)行系統測試。

復用器中的FPGA邏輯設計

  在MPEG-2編碼復用器中,FPGA所實(shí)現的邏輯功能主要是:

  (1)系統上電后,完成對其他器件(如DSP、、FIFO)的復位;

  (2)響應系統主控單元DSP的指令,從相應的輸入FIFO中讀取TS流數據,做并串變換后傳輸至DSP的串行輸入口;

  (3)由于復用器必須對進(jìn)入該系統的數據傳送流(TS流)中的程 序參考時(shí)鐘域(PCR域)中的數值進(jìn)行補償計數.因此,FPGA還需要完成:

  a.在復用器的數據傳送流輸入端檢測PCR域并紀錄PCR域初值;

  b.在復用器的數據傳送流輸出端檢測PCR域并將經(jīng)過(guò)補償計數后的PCR的新值 裝載進(jìn)PCR域;

  (4)其他一些邏輯。

  1、輸入輸出FIFO的復位模塊

  輸入輸出FIFO復位模塊較為簡(jiǎn)單.它由文本輸入方式實(shí)現,內部主要由計數器和D觸發(fā)器組成。它對電路的控制主要包括:整個(gè)系統上電后,主控單元DSP通過(guò)I/O端口向FPGA發(fā)出FIFO復位的指令, FPGA通過(guò)地址譯碼,產(chǎn)生RSFIFO信號.RSFIFO作為計數器內部的清0端信號,CLK38(全局時(shí)鐘信號)作為計數器的時(shí)鐘信號,并引導計數器開(kāi)始計數。計數器計數到一定數值時(shí),再連通D觸發(fā)器先后產(chǎn)生RESET(輸入輸出FIFO復位信號)以及FO_ENA(輸出FIFO讀允許信號),完成了FIFO復位模塊的邏輯時(shí)序.

  2、并/串轉換模塊

  圖3是并串模塊的上層圖。其I/O引腳情況見(jiàn)表1:

 
表1 并/串轉換模塊I/O引管腳說(shuō)明
管腳名稱(chēng)管腳功能
CLK38并串模塊工作時(shí)鐘
HF輸入FIFO半滿(mǎn)信號
Q[8...0] TS流并行數據信號
P——CLK TS流串行數據包同步信號
S——DATA TS流串行數據信號
S——CLK TS流串行數據時(shí)鐘信號
FIFO——R——CLK 輸入FIFO讀時(shí)鐘信號
CLK——CONTROL 輸入FIFO讀時(shí)鐘控制信號



  由于MAX+PLUSII的老式宏函數中只提供了作4、5、8位和16位并串變換的移位寄存器 ,而此處系統完成的是9位并串變換(8位數據位加1位包同步位),因此必須自己編寫(xiě)tdf文件,而不能直接調用宏函數。具體的功能實(shí)現為:

  選擇使用9個(gè)D觸發(fā)器,將它們相互連通組成9位的移位寄存器。一旦產(chǎn)生輸入FIFO的半滿(mǎn)信號(HF),模塊開(kāi)始工作,將輸入FIFO中的9位并行數據讀入移位寄存器中,在CLK38的工作時(shí)鐘控制下,將9位數據順序串行移出產(chǎn)生S_DATA(TS流串行數據)。并且,在模塊中還設置了一個(gè)4位計數器A。計數器A同樣在CLK38的工作時(shí)鐘控制下,整體模塊開(kāi)始工作時(shí)開(kāi)始同步計數。每計數到9時(shí)計數器清0,并輸出一個(gè)高電平信號。而在其他計數值時(shí),該信號輸出為低電平。那么,產(chǎn)生的這個(gè)信號就是TS流的串行數據包同步信號(P_CLK)。而TS流串行數據的時(shí)鐘信號(S_CLK),很顯然就是CLK38。

  此外,將CLK38時(shí)鐘進(jìn)行8分頻作為輸入FIFO的讀時(shí)鐘信號(FIFO_R_CLK)。而輸入FIFO讀時(shí)鐘的控制信號(CLK_CONTROL),則由模塊中設置的另外一個(gè)計數器B來(lái)產(chǎn)生,確保輸入FIFO一次半滿(mǎn)后,FPGA只從其中讀取該FIFO最大容量之一半的數據。例如:在本系統中,輸入FIFO的最大容量為512個(gè)字節。那么,設置的計數器B就必須是一個(gè)9位計數器。計數器的計數時(shí)鐘為FIFO_R_CLK,從輸入FIFO半滿(mǎn),FPGA啟動(dòng)讀數時(shí)開(kāi)始計數。每計數到256(輸入FIFO容量的一半)時(shí)計數器清0,并將輸入FIFO讀時(shí)鐘的控制信號(CLK_CONTROL)置為低電平,從而禁止再產(chǎn)生輸入FIFO讀時(shí)鐘信號。

  3、PCR補償計數模塊

  根據MPEGII標準,TS流中的PCR域共有42位有效碼字,由兩部分組成:一部分以系統參考時(shí)鐘的1/300(90KHZ)為單位,稱(chēng)為program_clock_reference_base,33字段;另一部分稱(chēng)為program_clock_reference_extension, 以系統參考時(shí)鐘(27MHz)為單位的9位字段。

  因此,整個(gè)PCR補償計數模塊分為兩大部分:一部分是9位字段(E0~E8)的PCR域補償計數模塊,由一個(gè)8位計數器(調用宏函數8COUNT)和一個(gè)4位計數器(調用宏函數74161)組成。其中,8COUNT的計數時(shí)鐘為27MHz時(shí)鐘(由硬件電路中的27MHz晶振提供);而74161的計數時(shí)鐘則為8COUNT提供的最高位進(jìn)位時(shí)鐘(由8COUNT中的最高位E7取反后得到);另一部分為33位字段(Q32~Q0)的PCR域補償計數模塊,由4個(gè)8位計數器(調用宏函數8COUNT)和一個(gè)4位計數器(調用宏函數74161)組成。其中,74161的計數時(shí)鐘為27MHz時(shí)鐘300分頻后得到的90KHZ時(shí)鐘,它只對33位字段中的最低位Q0進(jìn)行補償計數。第一個(gè)8COUNT的計數時(shí)鐘為74161的Q0位的進(jìn)位時(shí)鐘(由Q0取反后得到);而其他3個(gè)8COUNT的計數時(shí)鐘則分別為前一個(gè)8COUNT的進(jìn)位時(shí)鐘(即分別由Q8,Q16,Q24取反后得到)。

  4、復用系統FPGA邏輯設計中一些技巧

  在該系統FPGA邏輯設計過(guò)程中,由于系統結構比較復雜,整個(gè)FPGA邏輯設計也比較大,所以在作邏輯設計時(shí),一般應有一個(gè)整體的考慮。具體作設計時(shí),應該采用層次化的結構設計。另外,還必須結合整個(gè)系統的特點(diǎn),有意識的對FPGA中邏輯設計進(jìn)行優(yōu)化和精簡(jiǎn)。例如:檢測TS數據流的包同步字0X47,由于該同步頭字節并不是唯一的,中間可能有碼字也恰為其值。因此,一般情況下,FPGA搜索同步碼字的邏輯如下:首先找到第一個(gè)0X47,然后進(jìn)行計數,計到187字節后,再檢測是否為0X47,如果是,輸出包同步信號;接著(zhù)每隔187檢測一次,如是0X47,則繼續輸出包同步信號,如不是,則從事開(kāi)始搜索0X47。

  而在該系統的設計中,并沒(méi)有采用這種方法,而是利用了I/O FIFO的9比特特性,FPGA直接搜索9位包同步字節0X147。另外,在PCR域補償計數的模塊中,也存在一個(gè)PCR域確認的問(wèn)題。PCR域的長(cháng)度為6個(gè)字節48位碼字(42位有效碼字加6位保留位),在FPGA已經(jīng)裝載PCR域的初值后,完全可以將PCR域中的6個(gè)字節改為預先設定好的協(xié)議碼字(當然,它們必須對于碼流而言是唯一的)。這樣,在TS碼流輸出端進(jìn)行將補償計數后的PCR數值重新裝載進(jìn)PCR域的工作時(shí),FPGA不僅能夠很方便的識別出PCR域的具體位置,而且還可以從這些協(xié)議碼字中讀出較多的復用信息。

  簡(jiǎn)潔而有效的FPGA邏輯設計,可以使系統運行的穩定性得到很大的改善。


關(guān)鍵詞: MPEG-2編碼FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>