CN107294539A - 一种准动态霍夫曼硬件编码器及编码方法 - Google Patents
一种准动态霍夫曼硬件编码器及编码方法 Download PDFInfo
- Publication number
- CN107294539A CN107294539A CN201710367404.8A CN201710367404A CN107294539A CN 107294539 A CN107294539 A CN 107294539A CN 201710367404 A CN201710367404 A CN 201710367404A CN 107294539 A CN107294539 A CN 107294539A
- Authority
- CN
- China
- Prior art keywords
- output
- port
- data
- module
- binary
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
Abstract
本发明公开了一种准动态霍夫曼硬件编码器及编码方法,编码器每次接收2n个BCD码数据进行编码,其中n为正整数;该编码器包括排序网络模块、树构建模块、树解析模块、级联FIFO、输出模块,排序网络模块和级联FIFO上均连接有一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口;排序网络模块、树构建模块、树解析模块以及输出模块依次相连,级联FIFO和输出模块相连;输出模块上具有一个n+1位的数据输出端口、一个n+1位的数据有效端口、一个数据输出起始信号端口和一个数据输出结束信号端口。设计结果表明,当使用Nexys4 DDR平台时,该编码器可以工作在100MHz以上的频率,同时具有高吞吐、低延迟、编码效率高和译码器简单的特性。
Description
技术领域
本发明涉及编解码技术领域,具体涉及一种准动态霍夫曼硬件编码器及编码方法。
背景技术
霍夫曼编码是一种由David.A.Huffman在1952年发明的无损数据压缩编码。得益于其高效性,霍夫曼编码已经在计算机,数据加密和通信等领域中广泛采用。一般的霍夫曼编码的利用方式一般是通过查找静态表或是动态实现,前者的灵活性较差,而后者由于数据解码时同样是动态的,使得接收端的软硬件构成同样复杂。霍夫曼编码的核心过程便是排序,而排序对于通用CPU来说又是一件相对复杂且频繁的运算。对于快速和实时性比较高的霍夫曼编码,软件排序过程已经难以满足。相比之下由硬件实现的排序电路在保证运算速度的同时,使得功耗相对降低,同时使得通用CPU能够解放出来去处理更复杂的问题,不失为一种较好的策略。
发明内容
针对上述不足,本发明提供一种准动态霍夫曼硬件编码器及编码方法,该编码器可有选择的配置排序方法并结合现场可编程门阵列实现,优化霍夫曼编码速度及效率。
本发明解决技术问题所采用的技术方案如下:一种准动态霍夫曼硬件编码器,所述编码器每次接收2n个BCD码数据进行编码,其中n为正整数;该编码器包括排序网络模块、树构建模块、树解析模块、级联FIFO、输出模块,排序网络模块和级联FIFO上均连接有一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口;所述排序网络模块、树构建模块、树解析模块以及输出模块依次相连,级联FIFO和输出模块相连;所述输出模块上具有一个n+1位的数据输出端口、一个n+1位的数据有效端口、一个数据输出起始信号端口和一个数据输出结束信号端口。
进一步的,所述排序网络模块为动态排序网络模块或改进奇偶静态排序网络模块。
进一步的,所述动态排序网络模块包括10组寄存器,其中每组寄存器为n+5位,其中高4位用于存放BCD码,低n+1位用于存放对应BCD的频数;每组寄存器包含若干比较器、译码器和一个加法器,其中比较器和译码器用于完成动态排序功能,加法器用于对与当前输入BCD码对应的频数自增1;所述动态排序网络模块的输入端包括一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口,动态排序网络模块的输出端为内部10组寄存器的输出端。
进一步的,所述改进奇偶静态排序网络模块包括10组寄存器和32个交换模块;其中每组寄存器为n+1位,用于存放对应BCD的频数;32个交换模块用于对BCD码的频数进行从大到小排序;所述动态排序网络模块的输入端包括一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口,改进奇偶静态排序网络模块的输出端为内部10组寄存器的输出端。
进一步的,所述树构建模块包括9级结构,其中每级结构分别包含若干寄存器组、若干比较模块和若干选择器;其中寄存器组用于存储二叉树构建过程中频数的合并阶段信息和结果信息,比较模块和选择器共同用于完成相邻级间的数据插入排序操作;所述树构建模块的输入与排序网络模块的输出相对应,树构建模块的输出为每级结构中频数被合并的寄存器组的输出。
进一步的,所述树解析模块包括若干组寄存器和若干比较器;其中寄存器用于存放最终霍夫曼编码的结果,比较器用于在二叉树解析过程中确定霍夫曼编码每一位的值及编码长度;所述树解析模块的输入与树构建模块的输出对应,树解析模块的输出为最终各BCD对应的霍夫曼编码及霍夫曼编码的有效位。
进一步的,所述级联FIFO包括内置FIFO和分布式FIFO,分布式FIFO的数据输出即为内置FIFO的数据输入;内置FIFO由SRAM构成,内置FIFO的位宽为4、深度为2n;分布式FIFO由寄存器构成,分布式FIFO的位宽为4、深度为10;其中内置FIFO用于存储编码器接收的2n个BCD码数据,分布式FIFO用于在编码完成后固定输出BCD码0-9;所述级联FIFO的输入包括一个4位的数据输入端口、一个开始信号端口、一个低电平复位端口以及读写控制端口,级联FIFO的输出为4位BCD码输出端口。
进一步的,所述输出模块包括一个输出控制状态机以及一个n+1位的计数器;其中输出控制状态机用于将级联FIFO中输出的BCD码译码为对应的霍夫曼编码及霍夫曼编码的有效位,并输出;计数器用于统计当前已经输出BCD码数据的个数并由输出控制状态机参考并决定是否继续译码级联FIFO中输出的数据;所述输出模块的输入对应树解析模块的输出及级联FIFO的输出,输出模块的输出由准动态霍夫曼硬件编码器的输出以及级联FIFO的读写控制端口组成。
本发明的另一目的是提供一种准动态霍夫曼硬件编码器的编码方法,该方法包括如下步骤:
(1)首先通过时钟端口加上时钟激励,低电平复位端口输入低电平,使编码器复位;复位后,低电平复位端口拉高;
(2)在开始信号端口输出开始信号,保持一个时钟周期的高电平;在每一个时钟上升沿到来前,在数据输入端口准备好要输入的BCD码,一共输入2n个BCD码;在接收输入数据序列同时进行动态排序或接收完成后进行静态排序;在得到各BCD码码元频率排序后进行二叉树构建;当完成二叉树构建后对二叉树各节点编码,从而得到最终的霍夫曼变编码;
(3)经过若干个周期的编码延迟,等待数据输出开始信号端口的高电平输出;
(4)当输出开始信号端口输出一个周期高电平结束后,数据输出端口与数据有效端口将顺次输出BCD码0-9的霍夫曼编码及其有效位数据;接着数据输出端口与数据有效端口将顺次输出BCD码输入过程中BCD码序列对应的霍夫曼编码及其有效位数据。
(5)在完成10+2n个BCD码序列对应的霍夫曼编码及其有效位数据后,数据输出结束信号端口产生一个时钟周期的高电平输出,标志输出结束。
(6)在执行步骤(4)时,步骤(2)中的BCD码数据输入过程将会被同时执行。
(7)每次接收一组2n个BCD码进行编码,完成编码后将结果并行输出并接受下一轮数据,实现流水式工作,以保证编码器的高效运行。
相对于现有技术,本发明的有益效果如下:
本发明针对软件霍夫曼静态编码计算量大,而动态霍夫曼编码使得解码器同样复杂的缺点,提出了一种准动态霍夫曼硬件编码器。该编码器每次对一组的数据序列进行静态编码,然后将编码并行输出,从而使得编码器具有较高的编码速度,而其延迟时间仅为一次编码过程的总时间。首先,为了充分利用硬件并行特性,分别使用了动态排序和静态排序两种排序网络从而适应不同场合的编码需要。接着,使用数据流驱动的硬件二叉树构建和解析结构得到信源符号对应的霍夫曼编码。最后,将储存在FIFO中给的输入数据查表并输出。设计结果表明,当使用Nexys4DDR平台时,由本发明中提出的准动态霍夫曼硬件编码方法实现的编码器可以工作在100MHz以上的频率。同时具有如下优点:
高吞吐:本发明解决技术问题所采用的技术方案中输出当前组BCD码数据序列对应的霍夫曼编码及其有效位数据同时接收下一组BCD码数据输入的实现方式,使得本发明中提出的一种准动态霍夫曼硬件编码器具有可连续工作的特性,从而使得编码器的吞吐率得到提高。
低延迟:本发明解决技术问题所采用的技术方案中输出当前组BCD码数据序列对应的霍夫曼编码及其有效位数据同时接收下一组BCD码数据输入的实现方式,使得本发明中提出的一种准动态霍夫曼硬件编码器每一组数据的编码延时缩短为排序网络模块、树构建模块及树解析模块的组合逻辑延时时间,从而使得编码器的延迟时间得到降低。
编码效率高:本发明解决技术问题所采用的技术方案中对数据序列进行分段编码的方式,克服了静态霍夫曼编码的编码时间长的缺点以及动态霍夫曼编码由于无法得知真实的信源符号频率分布从而使得平局码长增加的缺点,从而整体数据序列的编码效率。
译码器简单:本发明解决技术问题所采用的技术方案的输出过程中首先输出BCD码0-9的霍夫曼编码及其有效位数据,可以使得译码器提前得知码表,从而大大简化了动态霍夫曼编码对应译码器的复杂程度。
附图说明
图1为本发明的顶层结构示意图;
图2为本发明动态排序无数据交换典型过程示意图;
图3为本发明动态排序有数据交换典型过程示意图;
图4为本发明改进奇偶静态排序网络交换模块结构图;
图5为本发明改进奇偶静态排序网络示意图;
图6为本发明树构建典型过程示意图;
图7为本发明树构建模块结构图;
图8为本发明树构建模块比较模块结构图;
图9为本发明树解析典型过程示意图;
图10为级联FIFO结构图。
具体实施方式
下面结合实施例和附图对本发明做进一步的说明。
本发明首次提供一种准动态霍夫曼硬件编方法,包括以下步骤:
(1)首先通过时钟端口加上时钟激励,低电平复位端口输入低电平,使编码器复位;复位后,低电平复位端口拉高;
(2)在开始信号端口输出开始信号,保持一个时钟周期的高电平;在每一个时钟上升沿到来前,在数据输入端口准备好要输入的BCD码,一共输入2n个BCD码;在接收输入数据序列同时进行动态排序或接收完成后进行静态排序;在得到各BCD码码元频率排序后进行二叉树构建;当完成二叉树构建后对二叉树各节点编码,从而得到最终的霍夫曼变编码;
(3)经过若干个周期的编码延迟,等待数据输出开始信号端口的高电平输出;
(4)当输出开始信号端口输出一个周期高电平结束后,数据输出端口与数据有效端口将顺次输出BCD码0-9的霍夫曼编码及其有效位数据;接着数据输出端口与数据有效端口将顺次输出BCD码输入过程中BCD码序列对应的霍夫曼编码及其有效位数据。
(5)在完成10+2n个BCD码序列对应的霍夫曼编码及其有效位数据后,数据输出结束信号端口产生一个时钟周期的高电平输出,标志输出结束。
(6)在执行步骤(4)时,步骤(2)中的BCD码数据输入过程将会被同时执行。
(7)每次接收一组2n个BCD码进行编码,完成编码后将结果并行输出并接受下一轮数据,实现流水式工作,以保证编码器的高效运行。
本发明其次提供一种准动态霍夫曼硬件编码器,包括:
如图1所示,一种准动态霍夫曼硬件编码器,所述编码器每次接收2n个BCD码数据进行编码,其中n为正整数;该编码器包括排序网络模块、树构建模块、树解析模块、级联FIFO、输出模块,排序网络模块和级联FIFO上均连接有一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口;所述排序网络模块、树构建模块、树解析模块以及输出模块依次相连,级联FIFO和输出模块相连;所述输出模块上具有一个n+1位的数据输出端口、一个n+1位的数据有效端口、一个数据输出起始信号端口和一个数据输出结束信号端口。
排序网络模块,用于在接收输入数据序列时动态地对数据频数进行排序,或是在输入数据序列完成后利用改进奇偶排序网络进行频数从大到小的排序。
树构建模块,用于每次取最小的两个频,求和并插入序列,记录每次的操作数,从而完成二叉树自底向上的构建过程。
树解析模块,用于确定二叉树节点之间的父子关系,从根节点开始对子节点递归编码。
级联FIFO,用于记录输入数据序列,以实现输入数据到输出的流水线工作流程。
输出模块,用于将FIFO的输出译码为对应的哈夫曼编码以及相应的有效位信息,以并行方式输出。
下面将以输入BCD码数据个数为256,即n=8的情况为例,详细说明本发明的提供的一种准动态霍夫曼硬件编码器的具体工作原理和流程。当n≠8时,仅需要分别增加编码器输出位宽同时增加排序网络模块、树构建模块和树解析模块中寄存器位宽以及级联FIFO的存储深度即可,如图1所示。
一、排序网络模块
1)动态排序网络模块
动态排序每读入一个新的BCD码,调整一次顺序,回避传统插入排序的移位和插入的过程,以巧妙的元素交换方式提高了电路工作频率,同时通过硬件复用减小资源消耗。方案用10组寄存器,以下简称为桶(bucket),其中每组寄存器为n+5位,其中高4位用于存放BCD码,低n+1位用于存放对应BCD的频数;初始化后,每个BCD的频数为零,将每个桶按频数排序,使其满足上方的桶大于等于下方。将当前输入的BCD对应的桶定义为目标桶,满足以下两个推论,完成动态排序;两个推论如下:
推论1:不必考虑在目标桶下方的桶,即目标桶频数增加,只有可能使目标桶与上方的桶互换位置,对其下方的桶的顺序没有影响。
推论2:不必考虑比目标桶频数大的桶,即目标桶频数增加后,至多与这些桶频数相同,无需调整他们的顺序。
图2表示了一次数据输入中不需交换数据顺序的过程,图3为一次需要交换多组数据顺序的过程。对于图2,由比较器得知当前输入BCD所在桶的位置后,取出其频数并利用比较器进行比较,由推论1可知可直接增加其对应频数。对于图3,当前输入为9,目标桶为5号桶。5号桶上方的3,4号桶的当前频数和5号相同。处理步骤如下:通过比较模块,选择3,4,5号中最上方的桶,即3号桶;将3号桶,而不是5号桶,的频数增加1;将被增加的桶的频数赋值给实际的目标桶,即5号桶;将当前输入的BCD赋值给被增加的桶,即3号桶。
可以看到,只要当前状态满足排序关系,读入新的输入后,依然可以保证排序关系。那么,只要最开始满足排序关系,最终的结果就满足排序关系。而在初始状态,所有桶的频数都为0,满足上方的桶大于等于下方的桶。
2)改进odd-even静态排序网络模块
常用的odd-even排序只能处理2n个数的情况,针对BCD只有10个输的情况则需要做出改进。首先需要定义一个如图4所示的交换模块,其输入为两个无符号数,经比较后按大小顺序输出。
整个静态排序网络的结构如图5所示。为便于表示,水平长线代表一条数据通路,垂直箭头表示交换模块,且箭头所指的方向为Larger端口。其核心过程便是先通过4级比较得到10个数的最大和最小值(Min Max Phase),之后中间的8个数通过一般的odd-even网络进行排序即可(Odd Even Phase)。同时可以看出,每一条数据通路至多经过5个交换,组合逻辑延时比普通的插入排序等方法大为减少。
Min Max Phase的4个Stage分别可以得到如下结果:
Stage 1:
A1≥B1,C1≥D1
Stage 2:
A2=max{A,B,C,D},D2=min{A,B,C,D}
E2=max{E,F,G,H},H2=min{E,F,G,H}
Stage 3:
A3=max{A,B,C,D,E,F,G,H}
H3=max{A,B,C,D,E,F,G,H}
Stage 4:
A4=max{A,B,C,D,E,F,G,H,I,J}
J4=max{A,B,C,D,E,F,G,H,I,J}
分析上述两种排序网络可知,均为组合逻辑构成,具有数据流驱动的特点。其中动态排序网络可以方便地增加排序元素,静态排序网络在数据量较小时可获得更小的排序延时。
二、树构建模块
通过改进原始的动态排序网络可以用于霍夫曼树的构建,其中共有9次合并过程。改进的主要内容在于为每个桶增加了一个4位的数据位宽child,目的是记录霍夫曼编码过程中概率合并的父子节点关系,从而方便编码模块解析树构建输出从而得到最终的编码。图6所示为一次典型的树构建过程。原始输入的child域赋值为0xf。取最小的两个桶求和后插入上方的合适位置,使其满足排序关系,并将将child中的数据传递给下一级。依次递归,直至剩下一个桶,该桶为哈夫曼树的根节点。最后将每一级最下方两个桶的数据作为编码模块的输入即可。其中为了满足编码方差最小的特性,若存在和带插入数相同的桶,必须优先插入在所有相同的桶的最上方。其硬件结构中的某两级如图7所示,其中的比较器模块如图8所示。
三、树解析模块
该部分通过一个简单的组合逻辑映射实现。由于对于n码元符号进行编码的霍夫曼树的最大高度为n-1,所以该模块仅需9位数据位即可表示所有编码。同时,为了输出方便和降低译码电路的复杂度,对于每个位霍夫曼编码使用一位数据位记录其有效性,从而使得输出部分电路可在串行和并行输出之间灵活选择。图9所示为一次典型编码的具体过程,其输入为树构建过程每一级最下方两个桶的输出。从根节点开始。根节点的编码为空,根节点的两个子节点,较大的编码为1,较小的编码为0。即“150”节点编码为“1”,“106”节点编码为“0”。递归对子节点编码。例如,“150”的子节点为“85”节点和“65”节点。因此,“85”和“65”节点将继承“150”节点的编码,然后“85”增补1,“65”增补0。依次类推,通过不断的“继承”,“增补”操作,可以得到所有叶子节点的哈夫曼编码。
四、FIFO及输出模块
为了尽可能提高编码速度并充分利用Artix7FPGA芯片的资源,编码器中使用了FPGA芯片内建DRAM实例化的FIFO。其中FIFO在进行当前批次数据编码的同时输出上次的输入数据并结合上次编码结果查表输出,从而使得整个编码器以流水线方式工作提高了工作效率。另外,在编码器的内建FIFO前级串联了一个由触发器构成的10位FIFO,其作用是在每次输出序列编码之前顺次输出BCD码的编码,从而使简化译码端结构得到相应简化,其结构如图10所示。
Claims (9)
1.一种准动态霍夫曼硬件编码器,其特征在于,所述编码器每次接收2n个BCD码数据进行编码,其中n为正整数;该编码器包括排序网络模块、树构建模块、树解析模块、级联FIFO、输出模块等,排序网络模块和级联FIFO上均连接有一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口;所述排序网络模块、树构建模块、树解析模块以及输出模块依次相连,级联FIFO和输出模块相连;所述输出模块上具有一个n+1位的数据输出端口、一个n+1位的数据有效端口、一个数据输出起始信号端口和一个数据输出结束信号端口。
2.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述排序网络模块为动态排序网络模块或改进奇偶静态排序网络模块。
3.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述动态排序网络模块包括10组寄存器,其中每组寄存器为n+5位,其中高4位用于存放BCD码,低n+1位用于存放对应BCD的频数;每组寄存器包含若干比较器、译码器和一个加法器,其中比较器和译码器用于完成动态排序功能,加法器用于对与当前输入BCD码对应的频数自增1;所述动态排序网络模块的输入端包括一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口,动态排序网络模块的输出端为内部10组寄存器的输出端。
4.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述改进奇偶静态排序网络模块包括10组寄存器和32个交换模块;其中每组寄存器为n+1位,用于存放对应BCD的频数;32个交换模块用于对BCD码的频数进行从大到小排序;所述动态排序网络模块的输入端包括一个4位的数据输入端口、一个开始信号端口、一个时钟端口以及一个低电平复位端口,改进奇偶静态排序网络模块的输出端为内部10组寄存器的输出端。
5.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述树构建模块包括9级结构,其中每级结构分别包含若干寄存器组、若干比较模块和若干选择器;其中寄存器组用于存储二叉树构建过程中频数的合并阶段信息和结果信息,比较模块和选择器共同用于完成相邻级间的数据插入排序操作;所述树构建模块的输入与排序网络模块的输出相对应,树构建模块的输出为每级结构中频数被合并的寄存器组的输出。
6.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述树解析模块包括若干组寄存器和若干比较器;其中寄存器用于存放最终霍夫曼编码的结果,比较器用于在二叉树解析过程中确定霍夫曼编码每一位的值及编码长度;所述树解析模块的输入与树构建模块的输出对应,树解析模块的输出为最终各BCD对应的霍夫曼编码及霍夫曼编码的有效位。
7.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述级联FIFO包括内置FIFO和分布式FIFO,分布式FIFO的数据输出即为内置FIFO的数据输入;内置FIFO由SRAM构成,内置FIFO的位宽为4、深度为2n;分布式FIFO由寄存器构成,分布式FIFO的位宽为4、深度为10;其中内置FIFO用于存储编码器接收的2n个BCD码数据,分布式FIFO用于在编码完成后固定输出BCD码0-9;所述级联FIFO的输入包括一个4位的数据输入端口、一个开始信号端口、一个低电平复位端口以及读写控制端口,级联FIFO的输出为4位BCD码输出端口。
8.根据权利要求1所述的准动态霍夫曼硬件编码器,其特征在于,所述输出模块包括一个输出控制状态机以及一个n+1位的计数器;其中输出控制状态机用于将级联FIFO中输出的BCD码译码为对应的霍夫曼编码及霍夫曼编码的有效位,并输出;计数器用于统计当前已经输出BCD码数据的个数并由输出控制状态机参考并决定是否继续译码级联FIFO中输出的数据;所述输出模块的输入对应树解析模块的输出及级联FIFO的输出,输出模块的输出由准动态霍夫曼硬件编码器的输出以及级联FIFO的读写控制端口组成。
9.一种准动态霍夫曼硬件编码器的编码方法,其特征在于,该方法包括如下步骤:
(1)首先通过时钟端口加上时钟激励,低电平复位端口输入低电平,使编码器复位;复位后,低电平复位端口拉高;
(2)在开始信号端口输出开始信号,保持一个时钟周期的高电平;在每一个时钟上升沿到来前,在数据输入端口准备好要输入的BCD码,一共输入2n个BCD码;在接收输入数据序列同时进行动态排序或接收完成后进行静态排序;在得到各BCD码码元频率排序后进行二叉树构建;当完成二叉树构建后对二叉树各节点编码,从而得到最终的霍夫曼变编码;
(3)经过若干个周期的编码延迟,等待数据输出开始信号端口的高电平输出;
(4)当输出开始信号端口输出一个周期高电平结束后,数据输出端口与数据有效端口将顺次输出BCD码0-9的霍夫曼编码及其有效位数据;接着数据输出端口与数据有效端口将顺次输出BCD码输入过程中BCD码序列对应的霍夫曼编码及其有效位数据。
(5)在完成10+2n个BCD码序列对应的霍夫曼编码及其有效位数据后,数据输出结束信号端口产生一个时钟周期的高电平输出,标志输出结束。
(6)在执行步骤(4)时,步骤(2)中的BCD码数据输入过程将会被同时执行。
(7)每次接收一组2n个BCD码进行编码,完成编码后将结果并行输出并接受下一轮数据,实现流水式工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710367404.8A CN107294539B (zh) | 2017-05-23 | 2017-05-23 | 一种准动态霍夫曼硬件编码器及编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710367404.8A CN107294539B (zh) | 2017-05-23 | 2017-05-23 | 一种准动态霍夫曼硬件编码器及编码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107294539A true CN107294539A (zh) | 2017-10-24 |
CN107294539B CN107294539B (zh) | 2020-04-28 |
Family
ID=60094545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710367404.8A Active CN107294539B (zh) | 2017-05-23 | 2017-05-23 | 一种准动态霍夫曼硬件编码器及编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107294539B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108092670A (zh) * | 2017-11-03 | 2018-05-29 | 西安万像电子科技有限公司 | 编码方法和装置 |
CN109672450A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电软件有限公司 | 一种采用硬件动态分片实现最优huffman编码的装置及方法 |
CN110072114A (zh) * | 2019-04-16 | 2019-07-30 | 西南交通大学 | 用于静态霍夫曼表生成的全并行频数生成电路结构与方法 |
CN112737596A (zh) * | 2021-01-07 | 2021-04-30 | 苏州浪潮智能科技有限公司 | 一种基于排序网络的动态霍夫曼编码方法、装置及设备 |
CN112969074A (zh) * | 2021-02-01 | 2021-06-15 | 西南交通大学 | 一种应用于静态霍夫曼表的全并行频数排序生成方法 |
CN113676187A (zh) * | 2021-08-11 | 2021-11-19 | 山东云海国创云计算装备产业创新中心有限公司 | 一种哈夫曼修正编码方法、系统及相关组件 |
CN116346940A (zh) * | 2023-05-29 | 2023-06-27 | 德州禹工环保设备有限公司 | 一种智慧海绵城市的监测管理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090140895A1 (en) * | 2007-11-30 | 2009-06-04 | Comtech Aha Corporation | Generating Dynamic Huffman Codes |
CN102983866A (zh) * | 2012-11-14 | 2013-03-20 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
CN106027066A (zh) * | 2015-03-28 | 2016-10-12 | 国际商业机器公司 | 用于解码的并行霍夫曼数据解码器、设计结构和方法 |
CN106560010A (zh) * | 2014-06-09 | 2017-04-05 | 泰德系统股份有限公司 | Vlsi高效霍夫曼编码设备和方法 |
-
2017
- 2017-05-23 CN CN201710367404.8A patent/CN107294539B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090140895A1 (en) * | 2007-11-30 | 2009-06-04 | Comtech Aha Corporation | Generating Dynamic Huffman Codes |
CN102983866A (zh) * | 2012-11-14 | 2013-03-20 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
CN106560010A (zh) * | 2014-06-09 | 2017-04-05 | 泰德系统股份有限公司 | Vlsi高效霍夫曼编码设备和方法 |
CN106027066A (zh) * | 2015-03-28 | 2016-10-12 | 国际商业机器公司 | 用于解码的并行霍夫曼数据解码器、设计结构和方法 |
Non-Patent Citations (3)
Title |
---|
L.-Y. LIU 等: "Design and hardware architectures for dynamic Huffman coding", 《IEE PROCEEDINGS - COMPUTERS AND DIGITAL TECHNIQUES》 * |
倪泽峰: "并行哈夫曼编码器的硬件设计与实现", 《微电子学与计算机》 * |
林建英: "一种易于硬件实现的快速自适应哈夫曼编码算法", 《大连理工大学学报》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108092670A (zh) * | 2017-11-03 | 2018-05-29 | 西安万像电子科技有限公司 | 编码方法和装置 |
CN108092670B (zh) * | 2017-11-03 | 2019-06-07 | 西安万像电子科技有限公司 | 编码方法和装置 |
CN109672450A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电软件有限公司 | 一种采用硬件动态分片实现最优huffman编码的装置及方法 |
CN109672450B (zh) * | 2018-12-13 | 2023-01-17 | 武汉中元华电软件有限公司 | 一种采用硬件动态分片实现最优huffman编码的装置及方法 |
CN110072114A (zh) * | 2019-04-16 | 2019-07-30 | 西南交通大学 | 用于静态霍夫曼表生成的全并行频数生成电路结构与方法 |
CN110072114B (zh) * | 2019-04-16 | 2021-04-09 | 西南交通大学 | 用于静态霍夫曼表生成的全并行频数生成电路结构与方法 |
WO2022148304A1 (zh) * | 2021-01-07 | 2022-07-14 | 苏州浪潮智能科技有限公司 | 一种基于排序网络的动态霍夫曼编码方法、装置及设备 |
CN112737596A (zh) * | 2021-01-07 | 2021-04-30 | 苏州浪潮智能科技有限公司 | 一种基于排序网络的动态霍夫曼编码方法、装置及设备 |
US11923875B2 (en) | 2021-01-07 | 2024-03-05 | Inspur Suzhou Intelligent Technology Co., Ltd. | Sorting network-based dynamic Huffman encoding method, apparatus and device |
CN112969074B (zh) * | 2021-02-01 | 2021-11-16 | 西南交通大学 | 一种应用于静态霍夫曼表的全并行频数排序生成方法 |
CN112969074A (zh) * | 2021-02-01 | 2021-06-15 | 西南交通大学 | 一种应用于静态霍夫曼表的全并行频数排序生成方法 |
CN113676187A (zh) * | 2021-08-11 | 2021-11-19 | 山东云海国创云计算装备产业创新中心有限公司 | 一种哈夫曼修正编码方法、系统及相关组件 |
CN116346940A (zh) * | 2023-05-29 | 2023-06-27 | 德州禹工环保设备有限公司 | 一种智慧海绵城市的监测管理系统 |
CN116346940B (zh) * | 2023-05-29 | 2023-08-22 | 德州禹工环保设备有限公司 | 一种智慧海绵城市的监测管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107294539B (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107294539A (zh) | 一种准动态霍夫曼硬件编码器及编码方法 | |
CN105049061B (zh) | 基于超前计算的高维基极化码译码器和极化码译码方法 | |
CN103997346B (zh) | 一种基于流水线的数据匹配方法和装置 | |
CN102122966A (zh) | 基于信道极化的交错结构重复码的编码器及其编译码方法 | |
CN105791828B (zh) | 二进制算术编码器及其编码方法 | |
Doulgerakis et al. | Finding closest lattice vectors using approximate Voronoi cells | |
CN110022188B (zh) | 基于冻结比特对的极化码编码方法及极化码串行抵消译码方法和电路 | |
CN108964671A (zh) | 一种译码方法及译码器 | |
CN110033089A (zh) | 基于分布式估计算法的深度神经网络参数优化方法及系统 | |
CN112633507A (zh) | 一种将复向量编码到量子线路的方法及装置 | |
CN110138390A (zh) | 一种基于深度学习的极化码sscl算法译码器 | |
CN108574494A (zh) | 编译码方法及装置 | |
CN1379931A (zh) | 维特比译码器的高速相加-比较-选择 | |
CN103746706B (zh) | 基于双游程交替编码的测试数据压缩与解压缩方法 | |
CN110704424B (zh) | 一种应用于数据库的排序方法、装置及相关设备 | |
CN110097581B (zh) | 基于点云配准icp算法构建k-d树的方法 | |
Geffert et al. | Two-way unary automata versus logarithmic space | |
CN114358319A (zh) | 基于机器学习框架的分类方法及相关装置 | |
CN103746704B (zh) | 基于双游程交替编码的芯片测试数据传输方法 | |
CN108509764A (zh) | 一种基于遗传属性约简的古生物谱系演化分析方法 | |
CN108009111A (zh) | 数据流连接方法及装置 | |
CN106921859A (zh) | 一种基于fpga的cabac熵编码方法与装置 | |
CN115145639B (zh) | 一种数据移位方法、系统、计算机设备及可读存储介质 | |
CN103428502B (zh) | 一种解码方法及解码系统 | |
Ashley et al. | Complexity and sliding-block decodability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |