CN110324045B - 一种格雷码的构造方法 - Google Patents
一种格雷码的构造方法 Download PDFInfo
- Publication number
- CN110324045B CN110324045B CN201910629636.5A CN201910629636A CN110324045B CN 110324045 B CN110324045 B CN 110324045B CN 201910629636 A CN201910629636 A CN 201910629636A CN 110324045 B CN110324045 B CN 110324045B
- Authority
- CN
- China
- Prior art keywords
- sequence
- code
- gray
- codeword
- sequences
- 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.)
- Active
Links
Images
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/14—Conversion to or from non-weighted codes
- H03M7/16—Conversion to or from unit-distance codes, e.g. Gray code, reflected binary code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种序列长度为任意偶数的格雷码的构造方法。对于任意两个格雷码或单步码,通过补零变换,可使其位宽相等;通过位变换,可建立其边界对称性;进一步通过加不同前缀,可使其码字互不相同;从而可以将它们连接为一个新的格雷码或单步码。由一个单步码及其反射变换后的单步码,分别加不同前缀,并连接,可构造出一个格雷码。通过以上方式可以构造长度为任意偶数的格雷码。当选择合适的若干原始序列以及合适的合成方式时,构造出的长度为任意偶数N的格雷码,其值域为0到N‑1。
Description
技术领域
本发明涉及编码领域,尤其涉及一种格雷码的构造方法。
背景技术
我们称二进制码码字中二进制位的个数为其位宽,称由相同位宽码字构成的序列为等位宽码字序列。本文中只讨论等位宽码字序列,下文中简称序列。我们称序列中码字的个数为序列的长度,称序列中码字的位宽为序列的位宽,称在序列中的所有码字前加若干个零称对序列的补零。对码字互不相等且位宽相同的两个序列和/>把/>和/>连接为序列/>是指,/>包含/>和/>中的所有码字,其中/>的码字在/>的码字之前,/>和/>中码字的原相对位置在/>中不变。对两个序列,若一序列的最后一个码字等于另一序列的第一个码字,则称这两个序列具备单侧边界对称性;若任一序列的最后一个码字等于另一序列的第一个码字,则称这两个序列具备双侧边界对称性。
格雷码(Gray Code)是一种具有码字唯一性、单步特性和循环特性的等位宽二进制码序列。单步特性是指序列中相邻的两个码字之间仅有一个二进制位不同,即序列中相邻的两个码字间的汉明距离等于1。循环特性是指序列中最后一个码字与第一个码字间的汉明距离也等于1。正是由于这些特性,格雷码在位置编码、角度编码和可靠性编码方面有着广泛的应用。
显然,将一个格雷码中的所有码字与一常数相异或,或者交换全部码字中的特定位的位置,得到的序列依然为一格雷码。称这类操作为格雷码的位变换。
我们称具备单步特性但不一定具备循环特性的等位宽二进制码序列为单步码。显然,单步码为格雷码的超集。类似地,将一个单步码中的所有码字与一常数相异或,或者交换全部码字中的特定位的位置,得到的序列依然为一单步码。称这类操作为单步码的位变换。
1947年,Frank Gray首先提出了第一类格雷码,即二进制反射格雷码,详见第2632058号美国专利,“Pulse Code Communication”。二进制反射格雷码可通过一递归方法构造。1位二进制反射格雷码为:0和1。从n-1位二进制反射格雷码构造n位二进制反射格雷码的递归过程如下。
显而易见,递归地执行上述步骤可以得到任意位宽的二进制反射格雷码。
二进制反射格雷码的长度是2的整数次幂,只能用于给2的整数幂个项目进行编号,这限制了二进制反射格雷码的适用范围。后来提出了很多序列长度为偶数的格雷码,比如:Glixon HarryRobert提出的Glixon码,详见H.R.Glixon,“Can you take advantage ofthe cyclic binary code?”,
表1:示例由2位二进制反射格雷码构造3位二进制反射格雷码
Control Eng.,vol.4,PP.87-91,March 1957;O’Brien Joseph A.提出的O’Brien码,详见O’Brien,Joseph A.“Cyclic decimal codes for analogue to digitalconverters.”American Institute of Electrical Engineers Part I Communication&Electronics Transactions of the 75.2(1956):120-122;Tompkins Howard E.提出的Tompkins码,详见O’Brien,Joseph A.,“Unit-Distance Binary-Decimal CodeTranslators.”Electronic Computers Ire Transactions on EC-6.2(1957):122-123;和Timothy A.Pontius在第6314154号美国专利,“None-power-of-tow Gray-code Counterand Binary Incrementer Therefore”中提出的格雷码;Cheng Yi在第6703950号美国专利,“GRAY CODE SEQUENCES”中提出的格雷码。这些格雷码进一步扩大了适用范围。
但是,对上述序列长度为偶数的格雷码,其值域与自然二进制码的值域不同。例如,在序列长度等于10的情况下,自然二进制码序列中码字的最大值等于9,而上述格雷码码字的最大值大于9。在某些自然二进制码适用的情形下,可能无法使用上述格雷码替代自然二进制码。比如,由于值域越界,上述格雷码无法直接用作存储器(memory)的地址。
发明内容
针对现有技术中存在的问题,本发明实施例提供了一种新的格雷码的构造方法。该类格雷码长度是任意偶数,可由多个格雷码或单步码合成而成,称这类格雷码为合成格雷码(Synthesized Gray Code,SGC)。合成格雷码可以简单的实现对值域的控制。在本发明一些实施例中,合成格雷码的值域与对应的自然二进制码的值域存在如下对应关系:在可对任意偶数N个项目编号的合成格雷码中,其值域为0到N-1的整数,与对应的自然二进制码序列的值域相同;在可对任意奇数N个项目编号的合成格雷码中,该格雷码能简单地映射到一个与自然二进制码序列值域相同的序列。
本发明一实施例提供一种长度为任意偶数N的格雷码的构造方法,其特征在于,包括:将序列长度N分解为多个正整数之和;创建长度分别为这些数的单步码;适当合成上述的单步码,得到一长度为N的格雷码。
所述的长度为任意偶数N的格雷码的构造方法的步骤可以是:
分解序列长度N为多个互不相等的2的正整数次幂之和;创建长度分别为这些偶数的格雷码;按照序列长度大小的升序依次合成各个格雷码,得到一长度为N的格雷码。所得长度为N的格雷码与对应的自然二进制码的值域相同,即0到N-1。
上述的合成格雷码的构造方法中,所述的合成两个序列包括以下步骤:
若两序列位宽不相等,对位宽较小序列补零;通过位变换构造两个序列的双侧边界对称性;对两序列中的码字加不同的前缀或后缀使其各不相等;连接两个序列。
所述的长度为任意偶数N的格雷码的构造方法的步骤可以是:
将序列长度平均分为两半;将序列长度的一半,分解为多个互不相等的2的自然数次幂之和;创建长度分别为这些数的单步码;按照序列长度大小的升序依次合成各个单步码,记其结果为上半序列;对上半序列进行变换得到下半序列;对两序列中的码字加不同的前缀或后缀使其各不相等,连接上半序列和下半序列,得到一长度为N的格雷码。所得长度为N的格雷码与对应的自然二进制码值域相同,即0到N-1。
上述的合成格雷码的构造方法中,所述的合成两个序列包括以下步骤:
若两序列位宽不相等,对位宽较小序列补零;通过位变换构造两个序列的单侧边界对称性;对两序列中的码字加不同的前缀或后缀使其各不相等;连接两个序列。
上述的合成格雷码的构造方法中,所述的对上半序列进行变换得到下半序列可以指:对上半序列反射变换得到下半序列或对上半序列的每个码字异或边界对称性构造常数得到的码字组成下半序列,所述边界对称性构造常数为上半序列的第一个码字异或上半序列的最后一个码字。
本发明又一实施例提供一种长度为任意偶数N的SGC-I型合成格雷码的构造方法:
将序列长度的一半,分解为/>其中,/>且ki<ki+1;创建长度分别为这些数的单步码;按照序列长度的升序以前述方法依次合成序列;用前述方法由值域相同的单步码构造值域相同的格雷码。所述单步码为位变换格雷码或单个码字0,所述位变换格雷码的参数为:w=ki,k=0,d=i mod 2。所述位变换格雷码指对w位二进制反射格雷码中每个码字的最高位异或二进制位d;交换序列每个码字右起第k+1位与最高位的位置。SGC-I型合成格雷码的码字的值域为0到N-1。
本发明又一实施例提供一种长度为任意偶数N的SGC-II型合成格雷码的构造方法:
将序列长度的一半,分解为/>其中,/>且ki<ki+1;创建长度分别为这些数的单步码;按照序列长度的升序以前述方法合成序列得到上半序列;对序列的每个码字异或对称性构造常数得到下半序列;连接上半序列和下半序列。所述单步码为位变换格雷码或单个码字0,位变换格雷码的参数为:w=ki,k=0,d=i mod 2。所述对称性构造常数t为:/>
本发明又一实施例提供一种长度为任意偶数N的SGC-III型合成格雷码的构造方法:
将序列长度分解为其中,/>且ki<ki+1;创建长度分别为这些数的格雷码;按照序列大小的升序以前述方法合成序列。所述格雷码为位变换格雷码,位变换格雷码的参数为:当i=1时,w=k1,k=k1,d=0;当i>1时,w=ki,k=ki-1,d=1。SGC-III型合成格雷码的码字的值域为0到N-1。
本发明又一实施例提供了一种使用这类编码的异步FIFO的读写指针生成器。图8示例了一种适用于深度为偶数的异步FIFO的读写指针生成器。当异步FIFO的深度为偶数时,其读(写)指针信号可以采用SGC-I或SGC-III型合成格雷码的编码方案,并储存在寄存器中。由于SGC-I和SGC-III型合成格雷码的值域与对应的自然二进制码序列相同,寄存器中的指针既可以用作跨时钟域同步,也可以直接用作RAM地址。对于深度为奇数的情况,读(写)指针型号可以采用SGC-II型合成格雷码的编码方案。这时,寄存器中的指针不能直接用作RAM地址。当寄存器中指针的最高位为1时,即其在SGC-II型合成格雷码的下半部分时,需要与值域校正常数异或之后,才可以用作RAM地址。
本发明的有益效果是:提供了一类序列长度为任意偶数的格雷码,即合成格雷码,的构造方法。合成格雷码可由多个格雷码或者单步码合成。当选择合适的若干原始序列和合适的合成方式,可构造出的长度为任意偶数N,且值域为0到N-1的合成格雷码。这类值域与对应的自然二进制码相同的格雷码,其应用范围更广。比如,在设计深度不等于2的整数次幂的异步FIFO时,自然二进制码和现有的格雷码均无法同时用于跨时钟域同步和RAM地址。而使用这类格雷码有助于简化电路,并降低由RAM地址信号的翻转所引起的功耗。
附图说明
图1为位变换格雷码的构造方法的示例流程图。
图2为SGC-I型合成格雷码的构造方法的示例流程图。
图3为一个SGC-I型合成格雷码的构造过程的示例。
图4为SGC-II型合成格雷码的构造方法的示例流程图。
图5为一个SGC-II型合成格雷码的构造过程的示例。
图6为SGC-III型合成格雷码的构造方法的示例流程图。
图7为一个SGC-III型合成格雷码的构造过程的示例。
图8为异步FIFO中使用合成格雷码编码的读(写)指针生成器的框图。
具体实施方式
针对现有技术中存在的问题,本发明一实施例提供了一种新的格雷码的构造方法。该类格雷码的长度是任意偶数,可由多个格雷码或单步码合成,称这类格雷码为合成格雷码(Synthesized Gray Code,SGC)。合成格雷码可以简单的实现对值域的控制。
所述构造方法包括以下技术方案:合成任意两个格雷码或单步码的方法;由单步码构造格雷码的方法;任意偶数长度的格雷码的构造方法;任意正整数长度的值域相同的格雷码或单步码的构造方法;一种由值域相同的单步码构造值域相同的格雷码的方法;位变换格雷码的构造方法和性质。所述值域相同指格雷码的值域与对应的自然二进制码的值域相同。
所述合成任意两个格雷码或单步码的方法具体如下。
显然,合成后的序列仍为格雷码。故递归使用该方法可构造出任意正整数长度的格雷码。
表2:示例两个格雷码的合成
显然,合成后的序列仍为单步码。故递归使用该方法可构造出任意正整数长度的单步码。
所述由单步码构造格雷码的一种方法具体如下。
所述由单步码构造格雷码的另一种方法具体如下。
表3:示例两个单步码的合成
表4:示例由单步码构造格雷码
所述长度为任意偶数的格雷码的构造方法具体如下。
第一种方法是通过合成格雷码得到任意偶数长度格雷码。
第1步:将所需格雷码长度分解为多个偶数之和,创建一个长度为这些偶数的格雷码组成的集合。
第2步:选择集合中的两个序列。若两序列位宽不相等,对位宽较小序列补零使两序列位宽相等,利用对其中一个序列进行位变换以建立双侧边界对称性,对两个序列中的码字加不同的前缀,以建立码字的唯一性。连接两个序列,边界处形成单步特性和循环特性。使用连接后的序列替代集合中的两个序列。
第3步:重复执行第2步操作直到集合中只有一个序列,该序列即所求序列。
第二种方法是通过首先合成长度为所求格雷码长度一半的单步码,再合成所求格雷码。第1步:将所需格雷码长度的一半分解为若干个正整数之和,创建一个长度为这些正整数的单步码的
表5:示例由单步码构造格雷码
集合。
第2步:选择集合中的两个序列。若两序列位宽不相等,对位宽较小序列补零使两序列位宽相等,利用对其中一个序列进行位变换以建立单侧边界对称性,对两个序列中的码字加不同的前缀,以建立码字的唯一性。连接两个序列,边界处形成单步特性。使用连接后的序列替代集合中的两个序列。
所述值域相同的格雷码或单步码的构造方法具体如下。
若需要构造一个长度为N的序列,将N分解为:其中,/>且ki<ki+1。根据该分解形式,构造n个长度分别为/>的格雷码或单步码,记为/>为与其他的序列区分,称这n个序列为源序列。当ki≠0时,源序列/>的位宽为ki。当ki=0时,对应的源序列仅由一个码字0组成。/>
显然,此时中值最大的码字是由/>中值最大的码字补零并加上前缀1生成的。易知/>中值最大的码字值为/>补零并加上前缀1等价于加上/>故/>中值最大的码字的值为/>由前文的说明可知,/>为格雷码或单步码。
表6:示例长度为14的值域相同的格雷码的构造
显然,类似地,此时中值最大的码字是由/>中值最大的码字补零并加上前缀1生成的。设/>中值最大的码字的值为g,补零并加上前缀1等价于加上/>故/>中最大的码字值为/>由前文的说明可知,/>为格雷码或单步码。
显然,对一个码字加后缀等价于将该码字的值变为原来的2倍并加上该后缀。合成后的序列中的值最大的码字是由中值最大的码字加上后缀1得到的。由上文中的结论可知/>中值最大的码字的值为M-1,则连接后的序列中值最大的码字的值为N-1。
所述位变换格雷码构造方法和性质具体如下。
为了方便地描述符合要求的序列的构造方法,我们先定义一种由对二进制反射格雷码进行
表7:示例长度为9的值域相同的单步码的构造
表8:示例由值域相同的单步码构造值域相同的格雷码
位变换而得到的特殊的格雷码,记为位变换格雷码。
定义2.如图1,w位位变换格雷码码字可以通过w位二进制反射格雷码码字和参数k和d来确定。k是一个介于0和w-1的整数,d是一个二进制位。将/>的最高位异或d,将结果仍作为最高位。交换第k+1位和最高位的位置,得到w位位变换格雷码码字。
定义二进制反射格雷码的递推操作为:利用Lucal比特,可较简单地实现该操作。关于Lucal比特,可参考论文Harold M.Lucal,“ArithmeticOperations for Digital Computers Using a Modified Reflected Binary Code”,IRETransactions on Electronic Computers,1959,EC-8(4):449-458,该论文通过引入的方式并入本文本。
证明:显然,我们可以先将位变换格雷码的码字变换为其二进制反射格雷码形式,进行递推操作后再变回位变换格雷码。二进制反射格雷码的递推操作是由多个位的条件取反构成的。每一位是否取反是由其右边的所有位决定的。最高位不会作为任何其他位是否取反的条件。故最高位的取反不影响递推操作的正确性,位变换格雷码的递推操作与d无关。
证明:根据上文中的二进制反射格雷码的构造方法,显然对所有码字的最高位取反与对序列做反射变换等价。故对位变换格雷码的第k+1位取反等价于对位变换格雷码做反射变换。对位变换格雷码的第k+1位取反等价于对d取反。则原命题可证。
本发明一实施例给出了一种合成格雷码的构造方法,转换方法和递推操作,具体如下。记所述合成格雷码为SGC-I。
SGC-I是一种用于给任意偶数N个项目编码的合成格雷码。SGC-I利用长度为N的格雷码给N个项目进行编码,第m个码字对应第m个项目。其值域为0到N-1。
如图2,SGC-I型合成格雷码的构造方法如下。
其中,/>且ki<ki+1。根据该分解公式,创建n个长度分别为/>的源序列。记第i个源序列为/>当ki=0时,该源序列仅由一个码字0组成。当ki≠0时,/>是位宽为ki,长度为/>的位变换格雷码,其位变换参数为:
w=ki,k=0,d=i mod 2. (2)
引理4.SGC-I的构造方法中创建的任意两个相邻的源序列具备单侧边界对称性。
考虑ki=0的情况,显然,此时是最小的源序列,即i=1。则对下一源序列i′=2,根据公式2:d′=0。故下一源序列的第一个码字等于0,而ki=0源序列中的唯一码字等于0。故当ki≠0时,Bi的最后一个码字等于/>的第一个码字。
以i的升序,按以下方式递归地合成各个源序列:
第2步:按照i的升序依次将与/>合成/>和/>时,明显有:/> 是较/>短的序列。显然/>的最后一个码字为/>的最后一个码字,由引理4,该码字等于/>的第一个码字,即/>和/>具有边界对称性。对/>补零使得/>和/>位宽相等,分别对/>和/>中的码字加前缀1和前缀0,以建立码字的唯一性。连接/>和/>并把/>置于前面,边界处形成单步特性和循环特性。将连接后的序列记作/>递归地执行合成过程直到所有源序列都被合成。
第4步:对反射变换,记为/>分别对/>和序列/>中的码字加后缀0和1以建立码字的唯一性。连接/>和序列/>在前。记连接后的序列为序列/>边界处形成单步特性和循环特性。由上文可知,序列/>是一种合成格雷码序列。
图3示例了长度为14的SGC-I型合成格雷码的构造过程。其中,左侧的变换指由序列上半部分到序列下半部分的生成关系,背景无图案的位是源序列中的位交换格雷码码字,背景为斜线的位是在第2步通过加前缀和补零所加的二进制位,背景为竖线的位是在第4步所加的前缀。
显然,序列中的任一码字均由某个源序列中的某一码字通过该构造方法中的变换得到。称源序列中的码字为序列/>中码字的源码字。若序列/>的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>的一个块。将与源序列/>对应的块记为/>显然,/>是通过/>经过变换得到的。
类似地,序列中的码字也可由源序列中的码字通过该构造方法中的变换得到,称源序列中的码字为序列/>中码字的源码字。若序列/>的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>的一个块。将/>的上半部分和下半部分中与源序列/>对应的块分别记为/>和/>
下文中,关于格雷码码字的算术操作均指在码字的二进制值域中的算术操作,而非与之对应的自然二进制码或其序数的算术操作。方便起见,我们使用同一个符号表示一个格雷码的码字及其对应的二进制值。我们用乘以2和除以2分别表示对一个二进制码字的左移一位和右移一位的操作。
比较m和数列B中的值来确定i,d,k,w的值由公式2确定。
其中,m′=2M-1-m,i的值通过比较m,m′和数列B中的值来确定,d、k和w的值由公式2确定。证明:考虑0≤m<M的情况,码字在序列的上半部分,且由码字/>生成。由第4步可知,/>是由向/>添加后缀0得到的,故/>考虑M≤m<2M的情况,码字/>在序列的下半部分,且由码字/>生成。由第4步可知,/>是由向/>添加后缀1得到的,故:/>/>
在讨论其他情况之前,判断某个码字是否是序列中的块的最后一个码字的方法需要明确。显然,若该块仅有一个码字,即ki=0的情况,该码字就是该块的最后一个码字。当该块不仅有一个码字时,该块是由源序列位变换格雷码生成的,由于引理1和公式4,该块的最后一个码字等于/>观察序列/>易知,若码字位于序列的前半部分,码字的最低位l为0,若码字位于序列的后半部分,码字的最低为l为1。由第4步可知码字/>对应的l和/>的值为:/>则序列/>对应的/>中的块的最后一个码字的值为根据码字的唯一性,我们可以得出结论:码字的值为/>等价于该码字为块中的最后一个码字。
考虑且/>的情况。此时对应该码字时块中的最后一个码字但不是半部分的最后一个码字。则下一个码字是同个半部分的下一块的第一个码字。若该块在序列的上半部分,下一个块的基值为Bi+1,若该块在序列的下半部分,下一块的基值为Bi-1。则对整个序列,下一块的基值为/>下一块的第一个码字等于码字/>的值为/>故两码字间的异或为:
其他情况下,该码字不是某一块的最后一个码字。则下一个码字是同一个块中的下一个码字,所在块的基值均为Bi。显然码字是由值为/>的码字变换而来。由于第3步的反射变换操作,根据引理3可知,下一个码字的初始值/>为故/>
本发明另一实施例给出了一种合成格雷码的构造方法,转换方法和递推操作,具体如下。记所述合成格雷码为SGC-II。
SGC-II是一种用于对任意奇数M个项目进行编码的长度为N=2M的合成格雷码。SGC-II用2M个码字描述M个项目。当m≤M时,第m个码字对应第m个单位,当m>M时,第m个码字对应第m-M个项目。序列上半部分的码字的值域为0到M-1。序列下半部分的码字在与一常数异或后,值域也为0到M-1。
除第4步外,SGC-II的构造方法与SGC-I的构造方法一致。显然引理4,5和6对SGC-II的构造方法依然有效。
如图4,SGC-II型合成格雷码的构造方法如下。
其中,且ki<ki+1。创建n个源序列,上述公式中的每一项都对应一个源序列,源序列的长度与该项的值相等。记第i个源序列为/>当ki=0时,该源序列仅由一个码字0组成。当ki≠0时,/>是位宽为ki,长度为/>的位变换格雷码,其位变换参数为:
w=ki,k=0,d=i mod 2. (8)
以i的升序,按以下方式递归地合成各个源序列:
第2步:按照i的升序依次将与/>合成/>和/>时,明显有:/> 是较/>短的序列。显然/>的最后一个码字为/>的最后一个码字,由引理4,该码字等于/>的第一个码字,即/>和/>具有边界对称性。对/>补零使得/>和/>位宽相等,分别对/>和/>中的码字加前缀1和前缀0,以建立码字的唯一性。连接/>和/>并把/>置于前面,边界处形成单步特性和循环特性。将连接后的序列记作/>递归地执行合成过程直到所有源序列都被合成。
则序列的上半部分和下半部分具有了双侧的边界对称性。对上半部分的值加前缀0,对下半部分的值加前缀1,以建立码字的唯一性。加前缀后的序列/>是一种单步循环码。由前文的内容可知,序列/>是符合前文要求的序列。
序列上半部分的码字可以直接使用用于项目的计数,后半部分的码字异或t后可以用于对项目的计数。
图5示例了长度为14的SGC-II型合成格雷码的构造过程。其中,左侧的变换指由序列上半部分到序列下半部分的生成关系,背景无图案的位是源序列中的位交换格雷码码字,背景为斜线的位是在第2步通过加前缀和补零所加的二进制位,背景为竖线的位是在第4步所加的前缀。
显然,序列中的任一码字均由某个源序列中的某一码字通过该构造方法中的变换得到,称源序列中的码字为序列/>中码字的源码字。若序列/>的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>的一个块。
类似地,序列中的码字也可由源序列中的码字通过该构造方法中的变换得到,称源序列中的码字为序列/>中码字的源码字。若序列/>的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>的一个块。
证明:考虑0≤m<M的情况,码字在序列/>的上半部分,且由码字/>生成。由第4步可知,/>等于/>故/>考虑M≤m<2M的情况,码字在序列/>的下半部分,且由码字/>生成。由第4步可知,/>是由向/>异或t得到的,故:
证明:考虑或者/>的情况。/>和/>是位于上半部分与下半部分边界的两个码字,这两个码字是由相同的/>中的码字生成的。考虑第4步,/>和仅在最高位不同。在讨论其他情况之前,判断某个码字是否是序列/>中的块的最后一个码字的方法需要明确。显然,若该块仅有1个码字,即ki=0的情况,该码字就是该块的最后一个码字。当该块不止一个码字时,该块是由位变换格雷码生成的,由于引理1和公式4,中该块的最后一个码字等于/>
若码字在序列的上半部分,l的值为0,/>若码字/>在序列的下半部分,l的值为1,/>根据序列构造方法的第4步,显然有公式12。考虑到码字的唯一性,/>d或ki=0等价于对应的码字是SGC-II型合成格雷码中的块的最后一个码字。
当码字在SGC-II型合成格雷码的上半部分时,l=0,码字/>的值为/>码字/>的值为/>故两码字间的异或为:当码字/>在SGC-II型合成格雷码的下半部分时,l=1,码字/>的值为/>码字/>的值为/>故两码字间的异或为:/>
其他情况下,该码字不是某一块的最后一个码字。则下一个码字是同一个块中的下一个码字,该块对应的中的块的基值为Bi。显然码字/>是由值为/>的码字变换而来。由于第3步的反射变换操作,根据引理3可知,下一个码字的初始值/>为故/> 如果码字/>在序列的上半部分,如果码字Rm在序列的下半部分,/>
本发明另一实施例给出了一种合成格雷码的构造方法转换方法和递推操作,具体如下。记所述合成格雷码为SGC-III。
SGC-III是一种用于给任意偶数N个项目编码的合成格雷码。SGC-I利用长度为N的格雷码给N个项目进行编码,第m个码字对应第m个项目。其值域为0到N-1。
如图6,SGC-III型合成格雷码的构造方法如下。
将序列长度N分解为如下形式:
显然各源序列均为格雷码。
引理7.按照i的升序合成各源序列。在合成源序列与已合成的各源序列形成的序列时,对该源序列中的码字加前缀1,对已合成的各源序列组成的序列补零并加前缀0。此时已合成的序列与该源序列具有双侧的边界对称性。
证明:考虑i=1的情况。根据引理1,已合成的序列,即的第一个码字等于0,最后一个码字,即/>的最后一个码字等于/> 的第一个码字等于/>最后一个码字等于0。显然i=1时,已合成的序列与该源序列具有双侧的边界对称性。
考虑i>1的情况。根据引理1,已合成的序列的第一个码字,即的第一个码字等于0,最后一个码字,即/>的最后一个码字等于/> 的第一个码字等于/>最后一个码字等于0。显然i>1时,已合成的序列与该源序列具有双侧的边界对称性。
按照i的升序递归地合成各源序列:
第2步:按照i的升序递归地合成序列和剩下的源序列。显然有:/>故合成序列/>和/>的时候,序列/>位宽比/>位宽小。对序列/>补零,使得序列/>的位宽与/>位宽相等;对/>中的码字加前缀1,对序列/>中的码字加前缀0,根据引理7,序列/>和/>具备双侧的边界对称性。
图7示例了长度为14的SGC-III型合成格雷码的构造过程。其中,背景无图案的位是源序列中的位交换格雷码码字,背景为斜线的位是在第2步通过加前缀和补零所加的二进制位。
显然,序列中的任一码字均由某个源序列中的某一码字通过该构造方法中的变换得到,称源序列中的码字为序列/>中码字的源码字。若序列/>的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>的一个块。
类似地,序列中的码字也可由源序列中的码字通过该构造方法中的变换得到,称源序列中的码字为序列/>中码字的源码字。若序列/>的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>的一个块。
证明:显然,对位宽为k的位变换格雷码,将其所有码字与一k位的常数相异或,不改变其值域。对Bi中的码字,异或值域校正常数t,相当于对其相应的块在上述构造方法中所加前缀取反,而位变换格雷码部分的范围不变。因此,与SGC-I型合成格雷码类似,其值域为0到N-1。
其中,i的值通过比较m与数列B中的数来确定,d、k和w的值由公式14确定。
显然中的码字的序数m满足Bi≤m<Bi-1。显然不同块的码字的序数的值的范围是互斥的。若m不满足Bi≤m<Bi-1,则/>不是/>中的码字。故Bi≤m<Bi-1是/>包含/>的充要条件。由公式3可知,/>是/>中的第m-Bi+1个码字。考虑到第3步的反射变换操作,该码字是由反射变换的/>中的第m-Bi+1个码字生成的。该码字的初始状态为对应的ki位位变换格雷码的第m-Bi+1个码字。由定理3可知,码字/>的加前缀前的初始值为/>
引理9.当且仅当码字的值满足/>时,/>包含与/>对应的码字证明:对/>中的码字,异或值域校正常数t,相当于对其相应的块在上述构造方法中所加前缀取反,而位变换格雷码部分的范围不变。因此,序列/>具有引理6中类似的性质。
在讨论其他两种情况前,需要确定码字是序列/>中的块最后一个码字的等价条件。显然码字/>是由/>变换而来的。当/>是序列/>的块中的最后一个码字时,/>是序列块中的最后一个码字。此时/>考虑到序列/>中码字的唯一性,与码字/>为序列/>中块的最后一个码字等价。
考虑且i≠n的情况。对应的码字/>是序列/>中块的最后一个码字而且对应的码字不是序列的最后一个码字。下一个码字是下一块的第一个码字。下一块的基值等于2i+1。下一块的第一个码字等于2i+1+2i。码字/>等于2i。显然有:
本申请又一实施例提供了一种使用这类编码的异步FIFO的读写指针生成器。图8示例了一种适用于深度为偶数的异步FIFO的读写指针生成器。其中,读(写)指针信号采用SGC-I或SGC-III型合成格雷码的编码方案,并储存在寄存器中;当进行FIFO读(写)操作时,更新其值。由于SGC-I和SGC-III型合成格雷码的值域与对应的自然二进制码序列相同,寄存器中的指针既可以用作跨时钟域同步,也可以直接用作RAM地址。对于深度为奇数的情况,读(写)指针信号可以采用SGC-II型合成格雷码的编码方案。这时,寄存器中的指针不能直接用作RAM地址。当寄存器中指针的最高位为1时,即其在SGC-II型合成格雷码的下半部分时,需要与值域校正常数异或之后,才可以用作RAM地址。
对于深度不等于2的整数次幂的异步FIFO,自然二进制码和现有的格雷码均无法同时用于跨时钟域同步和RAM地址。显然,合成格雷码在这方面具有优势。
对于本领域的技术人员而言,阅读上述说明后,各种变化和修正无疑将显而易见。因此,所附的权利要求书应看作是涵盖本发明的真实意图和范围的全部变化和修正。在权利要求书范围内任何和所有等价的范围与内容,都应认为仍属本发明的意图和范围内。
Claims (7)
1.一种序列长度为任意偶数N的格雷码的构造方法,其特征在于,包括:
将所求格雷码的序列长度N分解为多个互不相等的正偶数之和;创建长度分别为这些偶数的格雷码;递归地进行格雷码的合成,直至得到一序列长度为N的格雷码,所述格雷码的合成是指,对于两个格雷码进行以下操作,若两序列位宽不相等,对位宽较小的序列补零,通过位变换构造两序列的双侧边界对称性,所述两序列的双侧边界对称性指任一序列的第一个码字均等于另一序列的最后一个码字,对两序列中的码字加不同的前缀或后缀使其各不相等,连接两序列。
2.根据权利要求1所述的方法,其特征在于,包括:
将所求格雷码的序列长度N分解为多个互不相等的2的正整数次幂之和;创建长度分别为这些偶数的格雷码;按照序列长度的升序依次递归地进行格雷码的合成,直至得到一序列长度为N的格雷码。
3.一种序列长度为任意偶数N的格雷码的构造方法,其特征在于,包括:将序列长度的一半M,分解为多个互不相等的正整数之和;创建长度分别为这些数的单步码,所述单步码是指拥有单步特性的二进制码序列;递归地进行单步码的合成,直至得到一序列长度为M的单步码,记其结果为上半序列,所述单步码的合成是指对两个单步码进行以下操作,若两序列位宽不相等,对位宽较小序列补零,通过位变换构造两序列的单侧边界对称性,所述两序列的单侧边界对称性是指连接时处于后方的序列的第一个码字等于连接时处于前方的序列的最后一个码字,对两序列中的码字加不同的前缀或后缀使其各不相等,连接两序列;对上半序列进行变换得到下半序列;对上半序列和下半序列进行单步码的合成,得到一序列长度为N的格雷码。
4.根据权利要求3所述的方法,其特征在于,包括:
将序列长度的一半M,分解为多个互不相等的2的自然数次幂之和;创建长度分别为这些整数的单步码;按照序列长度的升序依次递归地进行单步码的合成,直至得到一序列长度为M的单步码,记其结果为上半序列,对上半序列进行变换得到下半序列;对上半序列和下半序列进行单步码的合成,得到一序列长度为N的格雷码。
5.根据权利要求3所述的方法,其特征在于,所述的对上半序列进行变换得到下半序列是指,对上半序列进行反射变换得到下半序列,或由上半序列的全部码字与边界对称性构造常数相异或得到下半序列,所述边界对称性构造常数为上半序列的第一个码字与上半序列的最后一个码字的异或。
6.一种计算机可读存储介质,其特征在于,使用一种编码,所述编码的构造方法含有权利要求1至5中任一项所述的方法。
7.一种电子设备,其特征在于,使用一种编码,所述编码的构造方法含有权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910629636.5A CN110324045B (zh) | 2019-07-12 | 2019-07-12 | 一种格雷码的构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910629636.5A CN110324045B (zh) | 2019-07-12 | 2019-07-12 | 一种格雷码的构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110324045A CN110324045A (zh) | 2019-10-11 |
CN110324045B true CN110324045B (zh) | 2023-06-02 |
Family
ID=68122073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910629636.5A Active CN110324045B (zh) | 2019-07-12 | 2019-07-12 | 一种格雷码的构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110324045B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744443A (zh) * | 2004-08-30 | 2006-03-08 | 安捷伦科技有限公司 | 用于产生偶数精简格雷码的方法 |
CN102495713A (zh) * | 2011-12-09 | 2012-06-13 | 盛科网络(苏州)有限公司 | 实现任意深度异步fifo的方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003037504A (ja) * | 2001-07-24 | 2003-02-07 | Kyushu Ando Denki Kk | グレイコード発生装置 |
CA2357443A1 (en) * | 2001-09-13 | 2003-03-13 | Pmc-Sierra Ltd. | Gray code sequences |
EP1311073A1 (en) * | 2001-11-12 | 2003-05-14 | Texas Instruments Incorporated | Modulation system for complex spreading codes |
US6762701B2 (en) * | 2002-12-16 | 2004-07-13 | Broadcom | Scalable gray code counter and applications thereof |
US6876316B1 (en) * | 2003-01-31 | 2005-04-05 | Marvell International Ltd. | Separation enhanced gray codes |
CN100460823C (zh) * | 2005-04-22 | 2009-02-11 | 阿尔卑斯电气株式会社 | 绝对角检测装置 |
CN101930350A (zh) * | 2009-06-24 | 2010-12-29 | 合肥力杰半导体科技有限公司 | 深度不是2的幂的异步fifo存储器设计 |
-
2019
- 2019-07-12 CN CN201910629636.5A patent/CN110324045B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744443A (zh) * | 2004-08-30 | 2006-03-08 | 安捷伦科技有限公司 | 用于产生偶数精简格雷码的方法 |
CN102495713A (zh) * | 2011-12-09 | 2012-06-13 | 盛科网络(苏州)有限公司 | 实现任意深度异步fifo的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110324045A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kak et al. | On decimal sequences (Corresp.) | |
Feng et al. | Value distributions of exponential sums from perfect nonlinear functions and their applications | |
CN112214349B (zh) | 一种数据循环冗余校验装置和方法 | |
Wang et al. | The weight distributions of cyclic codes and elliptic curves | |
JPS62135045A (ja) | デ−タ伝送装置 | |
CN110324045B (zh) | 一种格雷码的构造方法 | |
Calderbank et al. | A 2-adic approach to the analysis of cyclic codes | |
US5289398A (en) | Small-sized low power consumption multiplication processing device with a rounding recording circuit for performing high speed iterative multiplication | |
CN112953878B (zh) | n维时幅调制信号置换阵列星座图的构建方法及调制器 | |
RU154062U1 (ru) | Устройство для перебора перестановок | |
Honold et al. | Linear codes over finite chain rings and projective Hjelmslev geometries | |
RU2690765C1 (ru) | Генератор периодических псевдослучайных двоичных последовательностей сложной структуры | |
CN105703783A (zh) | 一种准并行结构的ldpc编码器 | |
WO2015133095A1 (ja) | パリティ検査符号生成装置、符号化方法、符号化装置および記録媒体 | |
Nagata et al. | Some properties of binary gray code | |
Madore | A first introduction to p-adic numbers | |
CN117614458A (zh) | Rtl电路中有限状态机不同编码间的转换方法及转换电路 | |
Polikarovskykh et al. | New phase accumulator for direct digital frequency synthesizer | |
Ndjountche | Digital electronics 1: Combinational logic circuits | |
TW201404108A (zh) | 半心臟收縮型高斯正規基底乘法器 | |
Fedou et al. | Adjacencies in words | |
RU2327200C1 (ru) | Генератор производных последовательностей | |
KR100438456B1 (ko) | 유한필드상의 디지트 시리얼 시스톨릭 곱셈기 | |
Bradley | Counting the positive rationals: a brief survey | |
REDDY et al. | Implementation of High Performance Montgomery Multiplier |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211216 Address after: 215000, floor 3, room 101, building 1, No. 19, Yong'an Road, high tech Zone, Suzhou, Jiangsu Applicant after: Benzheng information technology (Suzhou) Co.,Ltd. Address before: 201203 room 206, building 2, no.1690, Cailun Road, Pudong New Area, Shanghai Applicant before: Intrinsic Information Technology (Shanghai) Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |