将一位热码译码为二进制码的方法及一位热码译码器的制作方法

文档序号:7510861阅读:282来源:国知局
专利名称:将一位热码译码为二进制码的方法及一位热码译码器的制作方法
技术领域
本发明涉及译码技术,尤其涉及一种将一位热码译码为二进制码的方法及一位热码译码器。
背景技术
在现代数字逻辑电路设计中,一位热码(One-hot)编码方式是一种常用的编码方式。其特点为对于任何给定状态,最多只有一个状态位为“1”,所有其它的状态位都为“0”。如用“0001”表示“1”,“0010”表示“2”......“1000”表示“4”等。
采用一位热码编码方式的优点在于易于综合、易于寻找关键路径、易于进行静态时序分析。具体来说,要判断当前是否在某一状态,只需要判断相应的状态位是“1”还是“0”即可。考虑一个典型的输出,它在某些特定状态时输出1,剩下的状态输出0,则只需要将上述特定状态对应的状态位“或”起来即可产生该输出,并且从状态稳定到输出稳定的延时很确定(一个或门的延时),因此易于综合以及进行静态时序分析。另外,一位热码还用于多个通道中某一通道被选中的表示方式。
在某些情形下,需要将一位热码译码为二进制码(如8421码、格雷码等),二进制码是一种最紧密的编码,优点在于它使用的状态向量的位数最少。一个n位的二进制码可以表示最多2n的数,而n位一位热码编码只能表示n个数。
下面通过一种16位一位热码译码器来对现有技术中将一位热码译码为二进制码的具体过程进行说明。
请参阅图1,该图为现有技术中一种16位一位热码译码器的逻辑电路图,由图中可见,该16位一位热码译码器使用二选一多路选择器及或门进行搭建,其基本原理为通过五层二选一多路选择器确定出输入的16位一位热码中向量“1”所处的位置,然后即可根据“向量”1所处的位置将该一位热码转换为所需的二进制码。
上述现有技术中的这种采用二选一多路选择器及逻辑门搭建的一位热码译码器,由于其使用的器件较多,因此其控制逻辑复杂,并且其耗费的资源较多,成本较高,另外,由于其采用了多达五层的二选一多路选择器,因此其得出最终结果的时间较长,速度较慢。

发明内容
本发明提供了一种将一位热码译码为二进制码的方法及一位热码译码器,用以解决现有技术中对一位热码进行译码时所需器件较多且控制逻辑复杂的问题。
本发明技术方案包括一种将一位热码译码为二进制码的方法,包括步骤A、建立一位热码对应的二进制码矩阵;B、将输入的一位热码分别与矩阵各列的向量做“与”操作,或者分别按照矩阵各列中向量“1”所处的位置从输入的一位热码中提取相应位置的向量做“或”操作;C、根据二进制矩阵的列排序情况拼接所述操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列。
较佳的,所述步骤A具体包括步骤确定一位热码对应的二进制码的码字长度Lb,Lb为大于log2(Lo)的最小整数,其中Lo为一位热码的码字长度;建立一位热码对应的二进制码矩阵,矩阵中二进制码的列数等于二进制码的码字长度Lb。
较佳的,所述步骤B具体包括步骤
确定矩阵中各列二进制码对应的掩码码字Mn,Mn={P(i,j-n),P(i-1,j-n),…,P(0,j-n)},其中P(i,j)为矩阵中第i行,第j列的二进制码字;将输入的一位热码分别与矩阵各列对应的掩码码字Mn做“与”操作,或者按照矩阵各列对应的掩码码字Mn中向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作。
较佳的,所述二进制码为8421码或格雷码。
一种一位热码译码器,包括逻辑运算模块,用于根据一位热码对应的二进制矩阵将输入的一位热码分别与矩阵中各列的向量做“与”操作,或者按照矩阵各列中向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作;排序模块,用于根据二进制矩阵的列排序情况拼接逻辑运算模块输出的操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列。
较佳的,所述逻辑运算模块中进一步包括若干个码字确定子模块,每个码字确定子模块与矩阵中的一列二进制码相对应,用于将输入的一位热码与该列二进制码的向量值做“与”操作,或者按照该列二进制中值为“1”的向量位置从输入的一位热码中提取相应位置的向量值做“或”操作。
较佳的,所述二进制码为8421码或格雷码。
本发明的一位热码译码器只需两层功能模块即可实现,从而解决了现有技术中对一位热码进行译码时所需器件较多且控制逻辑复杂的问题,使得一位热码译码器的产品结构得到了简化,降低了产品成本,同时提高了译码速度,并且本发明的译码方式的可扩展性很强,无论多少位的一位热码,无论输出的二进制码为何种要求,都可以根据计算公式得到掩码。


图1为现有技术中一种16位的一位热码译码器的逻辑电路图;图2为本发明将一位热码译码为二进制码的方法的实现原理流程图;
图3为本发明一位热码译码器的结构框图;图4为本发明实施例一中将16位的一位热码译码为8421码的流程图;图5为本发明实施例一中16位的一位热码译码器的电路原理图;图6为本发明实施例二中将16位的一位热码译码为格雷码的流程图;图7为本发明实施例二中16位的一位热码译码器的电路原理图。
具体实施例方式
为解决现有技术中对一位热码进行译码时所需器件较多且控制逻辑复杂的问题,本发明通过建立一位热码对应的二进制码矩阵,将输入的一位热码分别与矩阵中各列二进制码的向量值做“与”操作,或者分别按照各列二进制码中值为“1”的向量位置从输入的一位热码中提取相应位置的向量值做“或”操作,然后根据二进制矩阵的列排序情况拼接所述操作结果,得到输入的一位热码对应的二进制码字序列。采用上述方式对一位热码进行译码时,一位热码译码器只需两层功能模块即可构建,从而使一位热码译码器的产品结构得到了简化,降低了产品成本,同时提高了译码速度。
请参阅图2,该图为本发明将一位热码译码为二进制码的方法的实现原理流程图,其主要包括步骤步骤S20、确定一位热码对应的二进制码的码字长度Lb,Lb为大于log2(Lo)的最小整数,其中Lo为一位热码的码字长度;步骤S21、建立一位热码对应的二进制码矩阵,矩阵中二进制码的列数等于二进制码的码字长度Lb;步骤S22、确定矩阵中各列二进制码对应的掩码码字Mn,Mn={P(i,j-n),P(i-1,j-n),…,P(0,j-n)},其中P(i,j)为矩阵中第i行,第j列的二进制码字;步骤S23、将输入的一位热码分别与矩阵各列对应的掩码码字Mn做“与”操作,或者按照矩阵各列对应的掩码码字Mn中向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作;
步骤S24、根据二进制矩阵的列排序情况拼接所述操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列。
相应于上述方法,本发明进而提出了一种一位热码译码器,请参阅图3,该图为本发明一位热码译码器的结构框图,其主要包括逻辑运算模块和排序模块,其中各个模块的主要作用如下逻辑运算模块,用于根据一位热码对应的二进制矩阵将输入的一位热码分别与矩阵中各列的向量做“与”操作,或者按照矩阵各列中向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作;排序模块,用于根据二进制矩阵的列排序情况拼接逻辑运算模块输出的操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列。
其中所述逻辑运算模块中进一步包括若干个码字确定子模块,每个码字确定子模块与矩阵中的一列二进制码相对应,用于将输入的一位热码与该列二进制码的向量值做“与”操作,或者按照该列二进制中值为“1”的向量位置从输入的一位热码中提取相应位置的向量值做“或”操作。
下面将通过两个具体实施例对本发明的具体实现过程做进一步详细的阐述,其中实施例一描述了将16位的一位热码译码为8421码的具体过程及相应的一位热码译码器,实施例二描述了将16位的一位热码译码为格雷码的具体过程及相应的一位热码译码器。
实施例一请参阅图4,该图为本发明实施例一中将16位的一位热码译码为8421码的流程图,其主要包括步骤步骤S40、确定16位的一位热码对应的8421码的码字长度Lb,由于Lb=cell(log2(Lo)),其中cell(X)表示取大于X的最小整数,Lo为一位热码的码字长度,因此16位的一位热码对应的8421码的码字长度等于5。
步骤S41、建立16位的一位热码对应的8421码矩阵,矩阵中8421码的列数等于步骤S40中确定的8421码的码字长度4,本步骤中建立的8421码矩阵如下表所示

步骤S42、确定矩阵中各列8421码对应的掩码码字Mn,Mn={P(i,j-n),P(i-1,j-n),…,P(0,j-n)},其中P(i,j)为矩阵中第i行,第j列的8421码字;M0={0101_0101_0101_0101}M1={0110_0110_0110_0110}M2={0111_1000_0111_1000}M3={0111_1111_1000_0000}M4={1000_0000_0000_0000}步骤S43、将输入的16位一位热码分别与矩阵各列对应的掩码码字M0、M1、M2、M3和M4做“与”操作,得到t0、t1、t2、t3和t4;或者分别按照矩阵各列对应的掩码码字M0、M1、M2、M3和M4中向量“1”所处的位置从输入的一位热码中提取相应位置的向量做“或”操作,得到t0、t1、t2、t3和t4;步骤S44、根据上述8421码矩阵的列排序情况拼接所述操作结果,得到的码字序列{t4,t3,t2,t1,t0},该序列即为输入的一位热码对应的8421码码字序列。
另外,当输入的16位的一位热码为全零时,通过上述方式也可同样将该全零的16位的一位热码译码为相应的8421码。
请参阅图5,该图为本发明实施例一中16位的一位热码译码器的电路原理图,其中逻辑运算模块用于按照8421码矩阵中各列向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作;排序模块用于根据8421码矩阵的列排序情况拼接逻辑运算模块输出的操作结果,得到输入的一位热码对应的8421码码字序列。所述逻辑运算模块中进一步包括5个码字确定子模块,每个码字确定子模块与矩阵中的一列8421码的掩码码字Mn相对应,用于按照该掩码码字Mn中值为“1”的向量位置从输入的一位热码中提取相应位置的向量值做“或”操作。
实施例二请参阅图6,该图为本发明实施例二中将16位的一位热码译码为格雷码的流程图,其主要包括步骤步骤S60、确定16位的一位热码对应的格雷码的码字长度Lb,由于Lb=cell(log2(Lo)),其中cell(X)表示取大于X的最小整数,Lo为一位热码的码字长度,因此16位的一位热码对应的格雷码的码字长度等于5。
步骤S61、建立16位的一位热码对应的格雷码矩阵,矩阵中格雷码的列数等于步骤S60中确定的格雷码的码字长度4,本步骤中建立的格雷码矩阵如下表所示


步骤S62、确定矩阵中各列格雷码对应的掩码码字Mn,Mn={P(i,j-n),P(i-1,j-n),…,P(0,j-n)},其中P(i,j)为矩阵中第i行,第j列的格雷码码字;M0={0011_0011_0011_0011}M1={0001_1110_0001_1110}M2={0000_0111_1111_1000}M3={1111_1111_1000_0000}M4={1000_0000_0000_0000}步骤S63、将输入的16位一位热码分别与矩阵各列对应的掩码码字M0、M1、M2、M3和M4做“与”操作,得到t0、t1、t2、t3和t4;或者分别按照矩阵各列对应的掩码码字M0、M1、M2、M3和M4中向量“1”所处的位置从输入的一位热码中提取相应位置的向量做“或”操作,得到t0、t1、t2、t3和t4;步骤S64、根据上述格雷码矩阵的列排序情况拼接所述操作结果,得到的码字序列{t4,t3,t2,t1,t0},该序列即为输入的一位热码对应的格雷码码字序列。
另外,当输入的16位的一位热码为全零时,通过上述方式也可同样将该全零的16位的一位热码译码为相应的格雷码。
请参阅图7,该图为本发明实施例二中16位的一位热码译码器的电路原理图,其中逻辑运算模块用于按照格雷码矩阵中各列向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作;排序模块用于根据格雷码矩阵的列排序情况拼接逻辑运算模块输出的操作结果,得到输入的一位热码对应的格雷码码字序列。所述逻辑运算模块中进一步包括5个码字确定子模块,每个码字确定子模块与矩阵中的一列格雷码的掩码码字Mn相对应,用于按照该掩码码字Mn中值为“1”的向量位置从输入的一位热码中提取相应位置的向量值做“或”操作。
与传统的一位热码译码器相比,采用本发明的译码原理构建的的一位热码译码器只需两层功能模块即可实现,从而使一位热码译码器的产品结构得到了简化,降低了产品成本,同时提高了译码速度,并且本发明的译码方式的可扩展性很强,无论多少位的一位热码,无论输出的二进制码为何种要求,都可以根据计算公式得到掩码。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种将一位热码译码为二进制码的方法,其特征在于,包括步骤A、建立一位热码对应的二进制码矩阵;B、将输入的一位热码分别与矩阵各列的向量做“与”操作,或者分别按照矩阵各列中向量“1”所处的位置从输入的一位热码中提取相应位置的向量做“或”操作;C、根据二进制矩阵的列排序情况拼接所述操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列。
2.如权利要求1所述的方法,其特征在于,所述步骤A具体包括步骤确定一位热码对应的二进制码的码字长度Lb,Lb为大于log2(Lo)的最小整数,其中Lo为一位热码的码字长度;建立一位热码对应的二进制码矩阵,矩阵中二进制码的列数等于二进制码的码字长度Lb。
3.如权利要求1或2所述的方法,其特征在于,所述步骤B具体包括步骤确定矩阵中各列二进制码对应的掩码码字Mn,Mn={P(i,j-n),P(i-1,j-n),…,P(0,j-n)},其中P(i,j)为矩阵中第i行,第j列的二进制码字;将输入的一位热码分别与矩阵各列对应的掩码码字Mn做“与”操作,或者按照矩阵各列对应的掩码码字Mn中向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作。
4.如权利要求1所述的方法,其特征在于,所述二进制码为8421码或格雷码。
5.一种一位热码译码器,其特征在于,包括逻辑运算模块,用于根据一位热码对应的二进制矩阵将输入的一位热码分别与矩阵中各列的向量做“与”操作,或者按照矩阵各列中向量“1”所处的位置分别从输入的一位热码中提取相应位置的向量做“或”操作;排序模块,用于根据二进制矩阵的列排序情况拼接逻辑运算模块输出的操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列。
6.如权利要求5所述的一位热码译码器,其特征在于,所述逻辑运算模块中进一步包括若干个码字确定子模块,每个码字确定子模块与矩阵中的一列二进制码相对应,用于将输入的一位热码与该列二进制码的向量值做“与”操作,或者按照该列二进制中值为“1”的向量位置从输入的一位热码中提取相应位置的向量值做“或”操作。
7.如权利要求4或5所述的一位热码译码器,其特征在于,所述二进制码为8421码或格雷码。
全文摘要
本发明公开了一种将一位热码译码为二进制码的方法及一位热码译码器,所述方法包括建立一位热码对应的二进制码矩阵,将输入的一位热码分别与矩阵各列的向量做“与”操作,或者分别按照矩阵各列中向量“1”所处的位置从输入的一位热码中提取相应位置的向量做“或”操作,根据二进制矩阵的列排序情况拼接所述操作结果,得到的码字序列即为输入的一位热码对应的二进制码码字序列;所述一位热码译码器包括逻辑运算模块和排序模块。本发明使得一位热码译码器的产品结构得到了简化,降低了产品成本,同时提高了译码速度。
文档编号H03M7/04GK101079636SQ20071011906
公开日2007年11月28日 申请日期2007年6月19日 优先权日2007年6月19日
发明者邹杨 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1