- 相關(guān)推薦
非定長碼高速實時拼接專用集成電路的研制
摘要:給出一種流水線與陣列處理相結(jié)合的VLSI系統(tǒng)結(jié)構(gòu),以實現(xiàn)非定長碼的高速定時拼接與存儲。該結(jié)構(gòu)不但并行處理能力強,能夠在每個時鐘周期內(nèi)拼接一個非定長碼,并且復(fù)雜度低,僅需10000門單元電路即可實現(xiàn)。利用ACTEL公司的現(xiàn)場可編程門陣列實現(xiàn)該功能,驗證結(jié)構(gòu)表明,所研制的專用芯片工作頻率大于70MHz、功耗低于130mW、性能穩(wěn)定可靠,具有良好的工程應(yīng)用前景。關(guān)鍵詞:非定長碼 并行處理 實時 大規(guī)模集成電路 系統(tǒng)結(jié)構(gòu) 現(xiàn)場可編程門陣列
在數(shù)字圖像、視頻、語音等數(shù)據(jù)壓縮應(yīng)用中,經(jīng)常使用熵編碼,例如Huffman編碼、RICE編碼、算術(shù)編碼等。而這些二進制的編碼數(shù)據(jù)在表示中僅有若干位(即碼字長度)有效數(shù)字(碼字),這就要求去除冗余字位,把碼字按其長度依次連接,形成緊湊的定長字,經(jīng)緩存后按恒定碼速率輸出。
(范文先生網(wǎng)m.panasonaic.com收集整理)
1 碼字拼接功能描述
圖1為數(shù)字圖像壓縮流程示意圖。數(shù)據(jù)經(jīng)壓縮與熵編碼后,碼字長度不定,最短的碼字只有1位,最長的碼字需用16位表示,這些碼字包含在位寬為16的輸出數(shù)據(jù)中,如圖2所示。
M[15:0]為熵編碼輸出數(shù)據(jù),M[15:n]中存放碼字,其中n等于15、14、13....2、1、0。由于每個輸出數(shù)據(jù)中僅有碼字長度個有效字位,這就要求去除熵編碼輸出數(shù)據(jù)中的冗余字位M[n-1:0],把這些有效的不定長的碼字M[15:n]拼接湊整,形成定長字。如兩個碼字A和B長度分別為10和6,用熵編碼輸出數(shù)據(jù)M1[15:6]和M2[15:10]表示,這兩個碼字的拼接結(jié)果為Q[15:0],則Q[15:6]存儲M1[15:6],Q[5:0]存儲M2[15:10],即兩個碼字A、B拼接湊整為一個定長字Q[15:0],如圖3所示。
碼字拼接器就是為完成這一功能而設(shè)計的,它去除了原數(shù)據(jù)中的冗余信息,從而減少數(shù)據(jù)量,節(jié)省存儲空間、降低對傳輸信道的帶寬要求。在實際應(yīng)用中,壓縮與熵編碼功能單元(如圖1所示)在每個時鐘周期輸出一個熵編碼數(shù)據(jù),為保證實時性,要求碼字拼接器能于每個時鐘周期內(nèi)完成一次拼接操作,并且每湊足16位,輸出定長字。以上功能的VerilogHDL行為描述如下(該描述不可綜合):
module Connector (clock,code,codelength,dataout);//碼字拼接器模塊
input clock; //時鐘
input [15:0] code; //碼字
input [4:0] codelength; //碼長
output [15:0] dataout; //定長字
reg [4:0] counter;
reg [31:0] tempdata;
initial //初始化
begin
counter = 0;
end
always @(posedge clock) //clock 上升沿
begin
tempdata[31-counter]:(31-counter-15)]
=code[15:0];//緩存碼字
counter=counter+codelength;//累計碼長
if(counter>=16)//如果累計碼長大于等于16
begin
dataout[15:0]=tempdata[31:16];
//輸出一個定長字
tempdata[31:16]=tempdata[15:0];
//低16位移動到高16位
counter=counter-16; //累計碼長減16
end;
end;
endmodeule
2 VLSI體系結(jié)構(gòu)
上述功能映射到VLSI結(jié)構(gòu),如圖4所示。該碼字拼接器采用并行陣列式結(jié)構(gòu),以流水線方式工作,能夠連接不斷地在每一個時鐘周期內(nèi)完成1到16之間的任意碼長的碼字的拼接湊整,每湊足16位輸出定長字。
圖4中陣列A與陣列B中D觸發(fā)器與十六選一多路選擇器對的結(jié)構(gòu)如圖5所示。
圖4和圖5中,位寬為5的累加器模塊是五位累加器,對碼長求和,其輸出由累加和譯碼器譯碼,生成D觸發(fā)器與十六選一多路選擇器的鎖存信號Ln和選擇信號Seln[0:3]。當(dāng)累加結(jié)果大于等于16時,多路選擇輸出陣列A或B中的定長字。
陣列A和B各由16對圖5所示的D觸發(fā)器與十六選一多路選擇器對構(gòu)成,D觸發(fā)器暫存碼字某一特定位。累加和譯碼器模塊對累加器的輸出進行譯碼,其輸出接到陣列A和B中32個十六選一多路選擇器的選擇信號端、D觸發(fā)器的鎖存信號端以及多路選擇器的選擇信號端。
多路選擇器模塊由16個二選一的多路選擇器構(gòu)成。當(dāng)累加器中的碼長和大于等于16時,該多路選擇器輸出陣列A或B中的定長字。
該VLSI結(jié)構(gòu)工作原理為:時鐘發(fā)生有效跳變,累加器讀入碼長,并與原有數(shù)據(jù)累加。若累加器第五位由“0”跳變?yōu)椤?”,則多路選擇器將在下個周期輸出陣列A的定長字;由“1”跳變?yōu)椤?”,則輸出陣列B的定長字;若沒有跳變;不產(chǎn)生輸出,陣列A、B讀入碼字。累加器中原有數(shù)據(jù)由累加和譯碼器譯碼,產(chǎn)生陣列A、B中相應(yīng)D觸發(fā)器的鎖存信號Ln和十六選一多路選擇器的選擇信號Seln[0:3],這兩個信號把碼字的全部16位存入D觸發(fā)器,為下一個周期作好數(shù)據(jù)準(zhǔn)備。
由此可見,對5位累加器的輸出進行解釋的累加和譯碼器,是整個電路的控制核心。它有5位輸入,160位輸出,其中32位輸出L0~L31,160位輸出,其中32位輸出L0~L31,控制D觸發(fā)器的鎖存;其它128位Sel0[0:3] ~Sel31[0:3]控制32個十六選一多路選擇器。其功能的實現(xiàn)方法如下:當(dāng)累加器為C時,說明陣列A與B的前C位D[31:31-C+1]已是有效碼字,當(dāng)連接下個碼字時,這些位的鎖存信號為無效態(tài),其它位允許鎖存;此時第C+1個十六選一多路選擇器輸出當(dāng)前碼字最高位,存儲在第C+1個D觸發(fā)器中,第C+2個十六選一多路選擇器輸出碼字次高位,存儲在第C+2個D觸發(fā)器中,余下以此類推,全部碼字存儲在在16個D觸發(fā)器內(nèi)。當(dāng)累加器大于等于16時(即最高位由0到1跳變),說明陣列A內(nèi)已經(jīng)拼接湊整了一個16位定長字,此時多路選擇器輸出該值。當(dāng)累加器再次小于16時(即最高位由A到0跳變。注釋:累加器只有5位,當(dāng)C加碼長大于31時,C的實際值將小于16),此時表明陣列B內(nèi)已經(jīng)拼接湊整一個16位定長字,多路選擇器輸出該值。
第0個十六選一多路選擇器選擇信號Sel0[3:0]的VHDL描述如下[1]:
case(C)
Sel0 <="1111" when "00000",
"1110" when "00001",
"1101" when "00010",
"1100" when "00011",
"1011" when "00100",
"1010" when "00101",
"1001" when "00110",
"1000" when "00111",
"0111" when "01000",
"0110" when "01001",
"0101" when "01010",
"0100" when "01011",
"0011" when "01100",
"0010" when "01101",
"0001" when "01110",
"0000" when "01111",
"----" when others;
第0個D觸發(fā)器的鎖存信號L0的VHDL描述:
whit C select
L0 <='1' when "00000" |"00001"|"00010"|"00011"
|"00100"|"00101"|"00110"|"00111"|"01000"|"01001"|"01010"
|"01011"|"01100"|"01101"|"01110"|"01111",
'0' when others;
其它1到31的十六進一多路選擇器與D觸發(fā)器對的控制信號的描述與以上類似,在此不一一列出。
3 基于FPGA的物理實現(xiàn)
選用ACTEL公司的eX256TQ100-STD FPGA[2]器件實現(xiàn)上述的VLSI結(jié)構(gòu),研制成非定長碼高速實時拼接專用集成電路[3],設(shè)計結(jié)果如表1。
表1 FPGA實現(xiàn)結(jié)果
組合單元
系統(tǒng)門數(shù)
I/O引腳
全局時鐘
硬線時鐘 256
512
12,000
81
2
1 78
505
9108
42
1
1 30.47
98.63
75.91
51.85
50
100
使用ModelSim仿真器,對非定長碼高速實時拼接專用集成電路進行帶延時的后仿真,仿真驗證結(jié)果如表2。
表2 非定長碼高速實時拼接專用集成電路驗證結(jié)果
本文提出的VLSI結(jié)構(gòu),適合圖像壓縮、視頻編碼等應(yīng)用中非定長碼的高速實時拼接,其結(jié)構(gòu)復(fù)雜度低,并行處理能力器。以ACTEL公司eX256 TQ100-STD FPGA實現(xiàn)該VLSI結(jié)構(gòu)的專用集成電路,性能穩(wěn)定可靠、工作頻率高、功耗低、具有良好的工程應(yīng)用前景。
【非定長碼高速實時拼接專用集成電路的研制】相關(guān)文章:
用高速DSP在頻域上實現(xiàn)LFM信號的實時脈沖壓縮08-06
NRZ-HDB3碼轉(zhuǎn)換器的高速長距離通信08-06
實時混音的實現(xiàn)?08-06
基于高速串行BCD碼除法的數(shù)字頻率計的設(shè)計08-06
天氣實時播報作文02-21
提高實時操作系統(tǒng)的實時性能和可靠性策略08-19
實時性遠程答疑系統(tǒng)08-06
實時性遠程答疑系統(tǒng)08-06