技术领域
[0001] 本发明涉及数据压缩技术,尤其涉及一种非定长码高速拼接硬件实现装置。
相关背景技术
[0002] 在数字图像、视频、语音等数据压缩应用中,经常使用熵编码,例如Huffman编码、RICE编码、算术编码等。而这些二进制的编码数据在表示中仅有若干位有效的编码,即输出的编码是非定长码,但在数据输出时要求所有的码字信息为规定格式,这就要求把所有的码字按照其长度依次连接,形成紧凑的定长字,经缓存后按恒定码速率输出。
[0003] FPGA(Field Programmable Gate Arry),即现场可编程门阵列。它是在PAL、GAL、CPLD等可编程器件基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有的可编程器件门电路数有限的缺点。但是FPGA的内部资源也是有限的。
[0004] 因此,如何有效的在实现同等功能和性能的同时,有效的减少资源的消耗,成为了FPGA设计时的一个首要的问题。
具体实施方式
[0013] 下面结合附图对本发明做进一步的详细说明:如图1所示,本发明设计了一种非定长码高速拼接硬件实现装置,包括8码字拼接模块和定长码至定长码拼接模块,其中,
8码字拼接模块用于将输入的非定长码拼接成8比特定长码数据;例如,有数据101和
11001,则通过8码字拼接模块后输出定长码10111001;或者,有数据1001和1100101,则通过8码字拼接模块后输出定长码10011100,并将剩余的101存储在8码字拼接模块中,与下一次的码字进行拼接操作;
定长码至定长码拼接模块用于将上述拼接后的8比特定长码数据拼接成定长码数据并输出;例如,当8码字拼接模块输出了定长码11001100,11011101,11111111,10001000;
则通过定长码至定长码拼接模块后变成11001100110111011111111110001000。
[0014] 如图2和图3所示,作为本发明的一种优化结构:所述8码字拼接模块包括码长累加模块、累加和译码模块、第一数据暂存阵列、第二数据暂存阵列和多路选择器,其中,码长累加模块用于累计到当前位置的非定长码的码元总长;例如,之前共有7比特的码元,码长累加模块中的数据为7,而当前的码元为101,则码长累加模块中的数据变为10;另外,当码长累加模块中的数据为14,当前的码元为101时,则码元累加模块中的数据变为
1(14+3-16),其余的类似的情况与上述采取同样的方式对码元长度进行累加;
累加和译码模块用于将上述非定长码的码元总长解析成拼接控制信号,并分别传输至第一数据暂存阵列、第二数据暂存阵列和多路选择器;例如,当码长累加模块中的数值为11时,而当前的码元为101,则产生相应的控制信号向12、13、14个D触发器中写入数据“1”、“0”和“1”;
第一数据暂存阵列和第二数据暂存阵列用于根据累加和译码模块解析成的控制信号暂存码字数据,当任意一个数据暂存阵列中码字数据存满时,将码字数据输出;例如,当码长累加模块中的数值为3时,而当前的码元为101,则分别将数据“1”、“0”和“1”存储到第一数据暂存阵列中的第4、5、6个D触发器中;当第一数据暂存阵列中的8个D触发器中都存储了数据时,则将其中的数据以定长码输出;
当码长累加模块中的数值为11时,而当前的码元为101,则分别将数据“1”、“0”和“1”存储到第二数据阵列中的第4、5、6个D触发器中;当第二数据暂存阵列中的8个D触发器中都存储了数据时,则将其中的数据以定长码输出;
多路选择器用于根据上述控制信号选择输出其中一个数据暂存阵列中的数据;例如,当第一数据暂存阵列中的数据存满时,多路选择器选择第一数据暂存阵列中的数据以定长码输出;同样,当第二数据暂存阵列中的数据存满时,多路选择器选择第二数据暂存阵列中的数据以定长码输出。
[0015] 如图4和图5所示,作为本发明的一种优化结构:所述定长码至定长码拼接模块包括字节累加模块、字节和译码模块及数据暂存阵列,其中,字节累加模块用于计算到当前位置共输出的字节数目;例如,之前共有2字节的数据,字节累加模块中的数据为2,而当前的字节为11011101,则字节累加模块中的数据变为3;
另外,当字节累加模块中的数据为8,当前的码元为11011101时,则字节累加模块中的数据变为1(8+1-8);
字节和译码模块用于根据上述字节数目产生该字节的写入位置和控制信号,并将控制信号传输至数据暂存阵列;例如,当字节累加模块中的数值为7时,而当前的码元为
11011101,则产生相应的控制信号向数据暂存阵列中的对应第8个字节的位置写入数据“11011101”;
数据暂存阵列,用于根据上述控制信号暂存定长码数据,当定长码数据存满时,将定长码数据输出;例如,当字节累加模块中的数值为3时,而当前的码元为11011101,则将数据“11011101”存储到数据缓存阵列中的第4字节对应的位置中;当数据暂存阵列中的8个字节中都存储了数据时,则将其中的数据以定长码输出。
[0016] 如图6所示,作为本发明的一种优化结构:所述数据暂存阵列包括D触发器阵列和多路选择器阵列,其中,所述多路选择器阵列包括至少一个多路选择器,字节和译码模块将解析成的控制信号传输至多路选择器阵列中的一个或多个多路选择器中;
所述D触发器阵列中D触发器的个数与多路选择器阵列中多路选择器的个数相同,且一一对应,多路选择器根据字节和译码模块解析成的控制信号将定长码数据存储到与其对应的D触发器中,该 D触发器根据自身的锁存信号暂存定长码数据,当定长码数据存满时,将定长码数据输出。
[0017] 当8码字拼接模块将定长码送至定长码至定长码拼接模块时,首先由字节累加模块计算当前的数据应该所在的字节位置,并将计算结果反馈给字节和译码模块,字节和译码模块根据信息产生写入数据的地址和控制信号,将定长码数据写入到数据暂存阵列中,当数据暂存阵列中的数据存储满时,架构数据以较长的(需要的格式)定长码输出。
[0018] 本发明中所有数据暂存阵列均由图所示的这种结构或者类似的结构实现,其主要的实现方式是,由控制信号中的选择信号选择对应的D触发器的数据选择端,根据控制信号中的锁存信号将数据锁存到对应的D触发器中,通过这种结构的堆叠可以实现任意长度码字的拼接。
[0019] 本发明中数据暂存阵列采用的堆叠次数为8次。
[0020] 参考前述本发明示例性的描述,本领域技术人员可以知晓本发明具有以下优点。本发明提供了一种变长码高速拼接的硬件实现装置,采用可编程逻辑器件(FPGA)实现了非定长码元的高速实时拼接,通过采用流水操作和Pipeline结构实现了变长码得实时高速拼接,同时优化了结构,大大的减少了硬件资源的消耗。
[0021] 尽管本发明此处具体化一些特定的例子示出和描述,然而本发明不限制于所示出的细节,因为在不偏离本发明精神以及在权利要求的范围和同等范围内,可以做出多种改进和结构变化。因此,宽范围地并且如权利要求中所阐述的在某种意义上与本发明的范围一致地解释附加的权利要求是适当的。