非定长码高速实时拼接专用集成电路的研制
关键词:非定长码 并行处理 实时 大规模集成电路 系统结构 现场可编程门阵列
在数字图像、视频、语音等数据压缩应用中,经常使用熵编码,例如Huffman编码、RICE编码、算术编码等。而这些二进制的编码数据在表示中仅有若干位(即码字长度)有效数字(码字),这就要求去除冗余字位,把码字按其长度依次连接,形成紧凑的定长字,经缓存后按恒定码速率输出。
(凹丫丫范文网fanwen.oyaya.net收集整理)
1 码字拼接功能描述
图1为数字图像压缩流程示意图。数据经压缩与熵编码后,码字长度不定,最短的码字只有1位,最长的码字需用16位表示,这些码字包含在位宽为16的输出数据中,如图2所示。
M[15:0]为熵编码输出数据,M[15:n]中存放码字,其中n等于15、14、13....2、1、0。由于每个输出数据中仅有码字长度个有效字位,这就要求去除熵编码输出数据中的冗余字位M[n-1:0],把这些有效的不定长的码字M[15:n]拼接凑整,形成定长字。如两个码字A和B长度分别为10和6,用熵编码输出数据M1[15:6]和M2[15:10]表示,这两个码字的拼接结果为Q[15:0],则Q[15:6]存储M1[15:6],Q[5:0]存储M2[15:10],即两个码字A、B拼接凑整为一个定长字Q[15:0],如图3所示。
码字拼接器就是为完成这一功能而设计的,它去除了原数据中的冗余信息,从而减少数据量,节省存储空间、降低对传输信道的带宽要求。在实际应用中,压缩与熵编码功能单元(如图1所示)在每个时钟周期输出一个熵编码数据,为保证实时性,要求码字拼接器能于每个时钟周期内完成一次拼接操作,并且每凑足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
《非定长码高速实时拼接专用集成电路的研制》