CN110324045B - 一种格雷码的构造方法 - Google Patents

一种格雷码的构造方法 Download PDF

Info

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
Application number
CN201910629636.5A
Other languages
English (en)
Other versions
CN110324045A (zh
Inventor
耿志远
陈惕生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Benzheng Information Technology Suzhou Co ltd
Original Assignee
Benzheng Information Technology Suzhou Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Benzheng Information Technology Suzhou Co ltd filed Critical Benzheng Information Technology Suzhou Co ltd
Priority to CN201910629636.5A priority Critical patent/CN110324045B/zh
Publication of CN110324045A publication Critical patent/CN110324045A/zh
Application granted granted Critical
Publication of CN110324045B publication Critical patent/CN110324045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/14Conversion to or from non-weighted codes
    • H03M7/16Conversion to or from unit-distance codes, e.g. Gray code, reflected binary code
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

一种格雷码的构造方法
技术领域
本发明涉及编码领域,尤其涉及一种格雷码的构造方法。
背景技术
我们称二进制码码字中二进制位的个数为其位宽,称由相同位宽码字构成的序列为等位宽码字序列。本文中只讨论等位宽码字序列,下文中简称序列。我们称序列中码字的个数为序列的长度,称序列中码字的位宽为序列的位宽,称在序列中的所有码字前加若干个零称对序列的补零。对码字互不相等且位宽相同的两个序列
Figure GDA0004123623160000011
和/>
Figure GDA0004123623160000012
把/>
Figure GDA0004123623160000013
和/>
Figure GDA0004123623160000014
连接为序列/>
Figure GDA0004123623160000015
是指,/>
Figure GDA0004123623160000016
包含/>
Figure GDA0004123623160000017
和/>
Figure GDA0004123623160000018
中的所有码字,其中/>
Figure GDA0004123623160000019
的码字在/>
Figure GDA00041236231600000110
的码字之前,/>
Figure GDA00041236231600000111
和/>
Figure GDA00041236231600000112
中码字的原相对位置在/>
Figure GDA00041236231600000113
中不变。对两个序列,若一序列的最后一个码字等于另一序列的第一个码字,则称这两个序列具备单侧边界对称性;若任一序列的最后一个码字等于另一序列的第一个码字,则称这两个序列具备双侧边界对称性。
格雷码(Gray Code)是一种具有码字唯一性、单步特性和循环特性的等位宽二进制码序列。单步特性是指序列中相邻的两个码字之间仅有一个二进制位不同,即序列中相邻的两个码字间的汉明距离等于1。循环特性是指序列中最后一个码字与第一个码字间的汉明距离也等于1。正是由于这些特性,格雷码在位置编码、角度编码和可靠性编码方面有着广泛的应用。
显然,将一个格雷码中的所有码字与一常数相异或,或者交换全部码字中的特定位的位置,得到的序列依然为一格雷码。称这类操作为格雷码的位变换。
我们称具备单步特性但不一定具备循环特性的等位宽二进制码序列为单步码。显然,单步码为格雷码的超集。类似地,将一个单步码中的所有码字与一常数相异或,或者交换全部码字中的特定位的位置,得到的序列依然为一单步码。称这类操作为单步码的位变换。
1947年,Frank Gray首先提出了第一类格雷码,即二进制反射格雷码,详见第2632058号美国专利,“Pulse Code Communication”。二进制反射格雷码可通过一递归方法构造。1位二进制反射格雷码为:0和1。从n-1位二进制反射格雷码构造n位二进制反射格雷码的递归过程如下。
第1步:将n-1位二进制反射格雷码做反射变换。将原本的n-1位二进制反射格雷码记为
Figure GDA00041236231600000114
将反射变换后的n-1位二进制反射格雷码记为/>
Figure GDA00041236231600000115
显然/>
Figure GDA00041236231600000116
和/>
Figure GDA00041236231600000117
具备双侧边界对称性。
第2步:对
Figure GDA00041236231600000118
中的所有码字加前缀0,对/>
Figure GDA00041236231600000119
中的所有码字加前缀1,使全部码字各不相同,建立码字的唯一性。
第3步:连接
Figure GDA00041236231600000120
和/>
Figure GDA00041236231600000121
Figure GDA00041236231600000122
在前。边界处形成单步特性和循环特性。
显而易见,递归地执行上述步骤可以得到任意位宽的二进制反射格雷码。
二进制反射格雷码的长度是2的整数次幂,只能用于给2的整数幂个项目进行编号,这限制了二进制反射格雷码的适用范围。后来提出了很多序列长度为偶数的格雷码,比如:Glixon HarryRobert提出的Glixon码,详见H.R.Glixon,“Can you take advantage ofthe cyclic binary code?”,
表1:示例由2位二进制反射格雷码构造3位二进制反射格雷码
Figure GDA0004123623160000021
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的格雷码的构造方法的步骤可以是:
将序列长度平均分为两半;将序列长度的一半,
Figure GDA0004123623160000031
分解为多个互不相等的2的自然数次幂之和;创建长度分别为这些数的单步码;按照序列长度大小的升序依次合成各个单步码,记其结果为上半序列;对上半序列进行变换得到下半序列;对两序列中的码字加不同的前缀或后缀使其各不相等,连接上半序列和下半序列,得到一长度为N的格雷码。所得长度为N的格雷码与对应的自然二进制码值域相同,即0到N-1。
上述的合成格雷码的构造方法中,所述的合成两个序列包括以下步骤:
若两序列位宽不相等,对位宽较小序列补零;通过位变换构造两个序列的单侧边界对称性;对两序列中的码字加不同的前缀或后缀使其各不相等;连接两个序列。
上述的合成格雷码的构造方法中,所述的对上半序列进行变换得到下半序列可以指:对上半序列反射变换得到下半序列或对上半序列的每个码字异或边界对称性构造常数得到的码字组成下半序列,所述边界对称性构造常数为上半序列的第一个码字异或上半序列的最后一个码字。
本发明又一实施例提供一种长度为任意偶数N的SGC-I型合成格雷码的构造方法:
将序列长度的一半,
Figure GDA0004123623160000032
分解为/>
Figure GDA0004123623160000033
其中,/>
Figure GDA0004123623160000034
且ki<ki+1;创建长度分别为这些数的单步码;按照序列长度的升序以前述方法依次合成序列;用前述方法由值域相同的单步码构造值域相同的格雷码。所述单步码为位变换格雷码或单个码字0,所述位变换格雷码的参数为:w=ki,k=0,d=i mod 2。所述位变换格雷码指对w位二进制反射格雷码中每个码字的最高位异或二进制位d;交换序列每个码字右起第k+1位与最高位的位置。SGC-I型合成格雷码的码字的值域为0到N-1。
本发明又一实施例提供一种长度为任意偶数N的SGC-II型合成格雷码的构造方法:
将序列长度的一半,
Figure GDA0004123623160000035
分解为/>
Figure GDA0004123623160000036
其中,/>
Figure GDA0004123623160000037
且ki<ki+1;创建长度分别为这些数的单步码;按照序列长度的升序以前述方法合成序列得到上半序列;对序列的每个码字异或对称性构造常数得到下半序列;连接上半序列和下半序列。所述单步码为位变换格雷码或单个码字0,位变换格雷码的参数为:w=ki,k=0,d=i mod 2。所述对称性构造常数t为:/>
Figure GDA0004123623160000038
本发明又一实施例提供一种长度为任意偶数N的SGC-III型合成格雷码的构造方法:
将序列长度分解为
Figure GDA0004123623160000039
其中,/>
Figure GDA00041236231600000310
且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)。合成格雷码可以简单的实现对值域的控制。
所述构造方法包括以下技术方案:合成任意两个格雷码或单步码的方法;由单步码构造格雷码的方法;任意偶数长度的格雷码的构造方法;任意正整数长度的值域相同的格雷码或单步码的构造方法;一种由值域相同的单步码构造值域相同的格雷码的方法;位变换格雷码的构造方法和性质。所述值域相同指格雷码的值域与对应的自然二进制码的值域相同。
所述合成任意两个格雷码或单步码的方法具体如下。
与二进制反射格雷码的构造方法类似,两个长度分别为a和b的格雷码
Figure GDA0004123623160000041
和/>
Figure GDA0004123623160000042
可以合成为长度等于a+b的一个格雷码。不妨假设合成时/>
Figure GDA0004123623160000043
在/>
Figure GDA0004123623160000044
前。具体步骤如下:
第1步:若
Figure GDA0004123623160000051
和/>
Figure GDA0004123623160000052
两序列位宽不相等,对位宽较小的序列补零,使两个序列位宽相等。
第2步:对
Figure GDA0004123623160000053
进行位变换以构造/>
Figure GDA0004123623160000054
和/>
Figure GDA0004123623160000055
的双侧边界对称性。
第3步:对
Figure GDA0004123623160000056
中的码字加前缀0,对/>
Figure GDA0004123623160000057
中的码字加前缀1,以建立码字的唯一性。
第4步:连接
Figure GDA0004123623160000058
和/>
Figure GDA0004123623160000059
Figure GDA00041236231600000510
在前,得到一长度为a+b的序列。边界处形成单步特性和循环特性。
显然,合成后的序列仍为格雷码。故递归使用该方法可构造出任意正整数长度的格雷码。
表2:示例两个格雷码的合成
Figure GDA00041236231600000511
类似地,两个长度分别为任意正整数c和d的两个单步码
Figure GDA00041236231600000512
和/>
Figure GDA00041236231600000513
可以合成为一长度为c+d的单步码。不妨假设合成时/>
Figure GDA00041236231600000514
在/>
Figure GDA00041236231600000515
前。具体步骤如下:
第1步:若
Figure GDA00041236231600000516
和/>
Figure GDA00041236231600000517
两序列位宽不相等,对位宽较小的序列补零,使两个序列位宽相等。
第2步:对
Figure GDA00041236231600000518
进行位变换以构造/>
Figure GDA00041236231600000519
和/>
Figure GDA00041236231600000520
的单侧边界对称性。
第3步:对
Figure GDA00041236231600000521
中的码字加前缀0,对/>
Figure GDA00041236231600000522
中的码字加前缀1,以建立码字的唯一性。
第4步:连接
Figure GDA00041236231600000523
和/>
Figure GDA00041236231600000524
Figure GDA00041236231600000525
在前,边界处形成单步特性和循环特性。
显然,合成后的序列仍为单步码。故递归使用该方法可构造出任意正整数长度的单步码。
所述由单步码构造格雷码的一种方法具体如下。
第1步:对单步码
Figure GDA00041236231600000526
进行反射变换得到单步码/>
Figure GDA00041236231600000527
第2步:对
Figure GDA00041236231600000528
中的所有码字加前缀0,对/>
Figure GDA00041236231600000529
中的所有码字加前缀1,以建立码字的唯一性。/>
第3步:连接
Figure GDA00041236231600000530
和/>
Figure GDA00041236231600000531
Figure GDA00041236231600000532
在前,边界处形成单步特性和循环特性。
所述由单步码构造格雷码的另一种方法具体如下。
第1步:记原单步码为
Figure GDA00041236231600000533
对/>
Figure GDA00041236231600000534
的第一个码字和最后一个码字进行异或运算,记结果为边界对称性构造常数t。
第2步:对
Figure GDA00041236231600000535
中的所有码字分别和t进行异或运算,记运算结果形成的新序列为/>
Figure GDA00041236231600000536
第3步:对
Figure GDA00041236231600000537
中的所有码字加前缀0,对/>
Figure GDA00041236231600000538
中的所有码字加前缀1,以建立码字的唯一性。
第4步:连接
Figure GDA00041236231600000539
和/>
Figure GDA00041236231600000540
Figure GDA00041236231600000541
在前,边界处形成单步特性和循环特性。
表3:示例两个单步码的合成
Figure GDA0004123623160000061
表4:示例由单步码构造格雷码
Figure GDA0004123623160000062
所述长度为任意偶数的格雷码的构造方法具体如下。
第一种方法是通过合成格雷码得到任意偶数长度格雷码。
第1步:将所需格雷码长度分解为多个偶数之和,创建一个长度为这些偶数的格雷码组成的集合。
第2步:选择集合中的两个序列。若两序列位宽不相等,对位宽较小序列补零使两序列位宽相等,利用对其中一个序列进行位变换以建立双侧边界对称性,对两个序列中的码字加不同的前缀,以建立码字的唯一性。连接两个序列,边界处形成单步特性和循环特性。使用连接后的序列替代集合中的两个序列。
第3步:重复执行第2步操作直到集合中只有一个序列,该序列即所求序列。
第二种方法是通过首先合成长度为所求格雷码长度一半的单步码,再合成所求格雷码。第1步:将所需格雷码长度的一半分解为若干个正整数之和,创建一个长度为这些正整数的单步码的
表5:示例由单步码构造格雷码
Figure GDA0004123623160000071
集合。
第2步:选择集合中的两个序列。若两序列位宽不相等,对位宽较小序列补零使两序列位宽相等,利用对其中一个序列进行位变换以建立单侧边界对称性,对两个序列中的码字加不同的前缀,以建立码字的唯一性。连接两个序列,边界处形成单步特性。使用连接后的序列替代集合中的两个序列。
第3步:重复执行第2步操作直到集合中只有一个序列。记该序列为
Figure GDA0004123623160000072
第4步:对
Figure GDA0004123623160000073
进行反射变换操作得到序列/>
Figure GDA0004123623160000074
显然/>
Figure GDA0004123623160000075
与/>
Figure GDA0004123623160000076
具备双侧边界对称性,对/>
Figure GDA0004123623160000077
和序列/>
Figure GDA0004123623160000078
加不同的前缀以建立码字的唯一性并将其连接,边界处形成单步特性和循环特性。连接后的序列为所求序列。
所述值域相同的格雷码或单步码的构造方法具体如下。
若需要构造一个长度为N的序列,将N分解为:
Figure GDA0004123623160000079
其中,/>
Figure GDA00041236231600000710
且ki<ki+1。根据该分解形式,构造n个长度分别为/>
Figure GDA00041236231600000711
的格雷码或单步码,记为/>
Figure GDA00041236231600000712
为与其他的序列区分,称这n个序列为源序列。当ki≠0时,源序列/>
Figure GDA00041236231600000713
的位宽为ki。当ki=0时,对应的源序列仅由一个码字0组成。/>
首先,用上文介绍的方法合成最小的两个源序列,
Figure GDA00041236231600000714
和/>
Figure GDA00041236231600000715
第1步:对
Figure GDA00041236231600000716
补零使得两个源序列内的位宽相等。
第2步:对
Figure GDA00041236231600000717
进行位变换建立两个源序列的双侧或者单侧边界对称性。
第3步:对
Figure GDA00041236231600000718
中的码字加前缀1,对/>
Figure GDA00041236231600000719
中的码字加前缀0,以建立码字的唯一性。
第4步:连接两个源序列,
Figure GDA00041236231600000720
在前,边界处形成单步特性和循环特性或仅单步特性,记连接后的序列为/>
Figure GDA00041236231600000721
显然,此时
Figure GDA00041236231600000722
中值最大的码字是由/>
Figure GDA00041236231600000723
中值最大的码字补零并加上前缀1生成的。易知/>
Figure GDA00041236231600000731
中值最大的码字值为/>
Figure GDA00041236231600000724
补零并加上前缀1等价于加上/>
Figure GDA00041236231600000725
故/>
Figure GDA00041236231600000726
中值最大的码字的值为/>
Figure GDA00041236231600000727
由前文的说明可知,/>
Figure GDA00041236231600000728
为格雷码或单步码。
按照长度从小到大的顺序将各个源序列与H合成。由于
Figure GDA00041236231600000729
合成了j个源序列的/>
Figure GDA00041236231600000730
的长度和位宽仍不大于第j+1个源序列。故合成第j个源序列的过程为:
表6:示例长度为14的值域相同的格雷码的构造
Figure GDA0004123623160000081
第1步:对
Figure GDA0004123623160000082
补零使得两个源序列内的位宽相等。
第2步:对
Figure GDA0004123623160000083
进行位变换建立两个源序列的双侧或者单侧边界对称性。
第3步:对
Figure GDA0004123623160000084
中的码字加前缀1,对/>
Figure GDA0004123623160000085
中的码字加前缀0,以建立码字的唯一性。
第4步:连接两个序列,
Figure GDA0004123623160000086
在前,边界处形成单步特性和循环特性或仅单步特性,记连接后的序列为/>
Figure GDA00041236231600000825
显然,类似地,此时
Figure GDA0004123623160000087
中值最大的码字是由/>
Figure GDA0004123623160000088
中值最大的码字补零并加上前缀1生成的。设/>
Figure GDA00041236231600000826
中值最大的码字的值为g,补零并加上前缀1等价于加上/>
Figure GDA0004123623160000089
故/>
Figure GDA00041236231600000810
中最大的码字值为/>
Figure GDA00041236231600000811
由前文的说明可知,/>
Figure GDA00041236231600000812
为格雷码或单步码。
显然,合成所有的源序列后,
Figure GDA00041236231600000813
中值最大的码字的值g为:/>
Figure GDA00041236231600000814
当我们用长度为
Figure GDA00041236231600000815
的单步码构造长度为N的格雷码时,使用前文介绍的方法。
第1步:对长度为M的单步码进行反射变换,将原本的单步码和反射变换后的单步码分别记为
Figure GDA00041236231600000816
和/>
Figure GDA00041236231600000817
第2步:对
Figure GDA00041236231600000818
中的所有码字加后缀0,对/>
Figure GDA00041236231600000819
中的所有码字加后缀1,以建立码字的唯一性。
第3步:连接
Figure GDA00041236231600000820
和/>
Figure GDA00041236231600000821
Figure GDA00041236231600000822
在前,边界处形成单步特性和循环特性。
显然,对一个码字加后缀等价于将该码字的值变为原来的2倍并加上该后缀。合成后的序列中的值最大的码字是由
Figure GDA00041236231600000823
中值最大的码字加上后缀1得到的。由上文中的结论可知/>
Figure GDA00041236231600000824
中值最大的码字的值为M-1,则连接后的序列中值最大的码字的值为N-1。
所述位变换格雷码构造方法和性质具体如下。
为了方便地描述符合要求的序列的构造方法,我们先定义一种由对二进制反射格雷码进行
表7:示例长度为9的值域相同的单步码的构造
Figure GDA0004123623160000091
表8:示例由值域相同的单步码构造值域相同的格雷码
Figure GDA0004123623160000092
位变换而得到的特殊的格雷码,记为位变换格雷码。
将二进制反射格雷码和位变换格雷码分别表示为
Figure GDA0004123623160000093
和/>
Figure GDA0004123623160000094
将这些序列的第m+1个码字表示为/>
Figure GDA0004123623160000095
和/>
Figure GDA0004123623160000096
定义1.位交换操作指交换码字
Figure GDA0004123623160000097
右起第k1+1位和第k2+1位的位置,记作
Figure GDA0004123623160000098
把对码字
Figure GDA0004123623160000099
右移和左移x位分别记作/>
Figure GDA00041236231600000910
和/>
Figure GDA00041236231600000911
记对二进制位d的取反为/>
Figure GDA00041236231600000912
记对两个码字的异或运算的运算符为/>
Figure GDA00041236231600000913
显然,二进制反射格雷码与自然二进制码的关系为:
Figure GDA00041236231600000914
定义2.如图1,w位位变换格雷码码字可以通过w位二进制反射格雷码码字
Figure GDA00041236231600000915
和参数k和d来确定。k是一个介于0和w-1的整数,d是一个二进制位。将/>
Figure GDA00041236231600000916
的最高位异或d,将结果仍作为最高位。交换第k+1位和最高位的位置,得到w位位变换格雷码码字。
Figure GDA0004123623160000101
和/>
Figure GDA0004123623160000102
的关系为:/>
Figure GDA0004123623160000103
将/>
Figure GDA0004123623160000104
和/>
Figure GDA0004123623160000105
的关系记作:/>
Figure GDA0004123623160000106
引理1.位变换格雷码的第一个码字的值等于d×2k,最后一个码字的值等于
Figure GDA0004123623160000107
证明:
Figure GDA0004123623160000108
Figure GDA0004123623160000109
定义二进制反射格雷码的递推操作为:
Figure GDA00041236231600001010
利用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,该论文通过引入的方式并入本文本。
引理2.位变换格雷码码字
Figure GDA00041236231600001011
与下一个码字/>
Figure GDA00041236231600001012
的递推关系为:
Figure GDA00041236231600001013
证明:显然,我们可以先将位变换格雷码的码字变换为其二进制反射格雷码形式,进行递推操作后再变回位变换格雷码。二进制反射格雷码的递推操作是由多个位的条件取反构成的。每一位是否取反是由其右边的所有位决定的。最高位不会作为任何其他位是否取反的条件。故最高位的取反不影响递推操作的正确性,位变换格雷码的递推操作与d无关。
引理3.对位变换格雷码
Figure GDA00041236231600001014
反射变换得到/>
Figure GDA00041236231600001015
若/>
Figure GDA00041236231600001016
Figure GDA00041236231600001017
证明:根据上文中的二进制反射格雷码的构造方法,显然对所有码字的最高位取反与对序列做反射变换等价。故对位变换格雷码的第k+1位取反等价于对位变换格雷码做反射变换。对位变换格雷码的第k+1位取反等价于对d取反。则原命题可证。
本发明一实施例给出了一种合成格雷码的构造方法,转换方法和递推操作,具体如下。记所述合成格雷码为SGC-I。
SGC-I是一种用于给任意偶数N个项目编码的合成格雷码。SGC-I利用长度为N的格雷码给N个项目进行编码,第m个码字对应第m个项目。其值域为0到N-1。
如图2,SGC-I型合成格雷码的构造方法如下。
将序列长度的一半,
Figure GDA00041236231600001018
分解为如下形式:
Figure GDA00041236231600001019
其中,/>
Figure GDA0004123623160000111
且ki<ki+1。根据该分解公式,创建n个长度分别为/>
Figure GDA0004123623160000112
的源序列。记第i个源序列为/>
Figure GDA0004123623160000113
当ki=0时,该源序列仅由一个码字0组成。当ki≠0时,/>
Figure GDA0004123623160000114
是位宽为ki,长度为/>
Figure GDA0004123623160000115
的位变换格雷码,其位变换参数为:
w=ki,k=0,d=i mod 2. (2)
方便起见,根据分解公式1,定义SGC-I的数列B为:
Figure GDA0004123623160000116
其中0≤i≤n。
引理4.SGC-I的构造方法中创建的任意两个相邻的源序列具备单侧边界对称性。
证明:由引理1可知,当ki≠0时,
Figure GDA0004123623160000117
的最后一个码字等于/>
Figure GDA0004123623160000118
而/>
Figure GDA0004123623160000119
的第一个码字等于d′。
由公式2可知:
Figure GDA00041236231600001110
故当ki≠0时,/>
Figure GDA00041236231600001111
的最后一个码字等于/>
Figure GDA00041236231600001112
的第一个码字。
考虑ki=0的情况,显然,此时
Figure GDA00041236231600001113
是最小的源序列,即i=1。则对下一源序列i′=2,根据公式2:d′=0。故下一源序列的第一个码字等于0,而ki=0源序列中的唯一码字等于0。故当ki≠0时,Bi的最后一个码字等于/>
Figure GDA00041236231600001114
的第一个码字。
以i的升序,按以下方式递归地合成各个源序列:
第1步:对
Figure GDA00041236231600001115
补零使/>
Figure GDA00041236231600001116
和/>
Figure GDA00041236231600001117
位宽相等,分别对/>
Figure GDA00041236231600001118
和/>
Figure GDA00041236231600001119
中的码字加前缀1和前缀0,以建立码字的唯一性。连接/>
Figure GDA00041236231600001120
和/>
Figure GDA00041236231600001121
并把/>
Figure GDA00041236231600001122
置于前面,边界处形成单步特性。将连接后的序列记作/>
Figure GDA00041236231600001123
第2步:按照i的升序依次将
Figure GDA00041236231600001124
与/>
Figure GDA00041236231600001125
合成/>
Figure GDA00041236231600001126
和/>
Figure GDA00041236231600001127
时,明显有:/>
Figure GDA00041236231600001128
Figure GDA00041236231600001129
是较/>
Figure GDA00041236231600001130
短的序列。显然/>
Figure GDA00041236231600001131
的最后一个码字为/>
Figure GDA00041236231600001132
的最后一个码字,由引理4,该码字等于/>
Figure GDA00041236231600001133
的第一个码字,即/>
Figure GDA00041236231600001134
和/>
Figure GDA00041236231600001135
具有边界对称性。对/>
Figure GDA00041236231600001136
补零使得/>
Figure GDA00041236231600001137
和/>
Figure GDA00041236231600001138
位宽相等,分别对/>
Figure GDA00041236231600001139
和/>
Figure GDA00041236231600001140
中的码字加前缀1和前缀0,以建立码字的唯一性。连接/>
Figure GDA00041236231600001141
和/>
Figure GDA00041236231600001142
并把/>
Figure GDA00041236231600001143
置于前面,边界处形成单步特性和循环特性。将连接后的序列记作/>
Figure GDA00041236231600001144
递归地执行合成过程直到所有源序列都被合成。
第3步:对
Figure GDA00041236231600001145
反射变换,仍记反射变换后的序列为/>
Figure GDA00041236231600001146
显然,/>
Figure GDA00041236231600001147
是一个长度为M的单步码。
第4步:对
Figure GDA00041236231600001148
反射变换,记为/>
Figure GDA00041236231600001149
分别对/>
Figure GDA00041236231600001150
和序列/>
Figure GDA00041236231600001151
中的码字加后缀0和1以建立码字的唯一性。连接/>
Figure GDA00041236231600001152
和序列/>
Figure GDA00041236231600001153
在前。记连接后的序列为序列/>
Figure GDA00041236231600001154
边界处形成单步特性和循环特性。由上文可知,序列/>
Figure GDA00041236231600001155
是一种合成格雷码序列。
图3示例了长度为14的SGC-I型合成格雷码的构造过程。其中,左侧的变换指由序列上半部分到序列下半部分的生成关系,背景无图案的位是源序列中的位交换格雷码码字,背景为斜线的位是在第2步通过加前缀和补零所加的二进制位,背景为竖线的位是在第4步所加的前缀。
显然,序列
Figure GDA00041236231600001156
中的任一码字均由某个源序列中的某一码字通过该构造方法中的变换得到。称源序列中的码字为序列/>
Figure GDA00041236231600001157
中码字的源码字。若序列/>
Figure GDA00041236231600001158
的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>
Figure GDA00041236231600001159
的一个块。将与源序列/>
Figure GDA00041236231600001160
对应的块记为/>
Figure GDA00041236231600001161
显然,/>
Figure GDA00041236231600001162
是通过/>
Figure GDA00041236231600001163
经过变换得到的。
类似地,序列
Figure GDA00041236231600001164
中的码字也可由源序列中的码字通过该构造方法中的变换得到,称源序列中的码字为序列/>
Figure GDA00041236231600001165
中码字的源码字。若序列/>
Figure GDA00041236231600001166
的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>
Figure GDA00041236231600001167
的一个块。将/>
Figure GDA00041236231600001168
的上半部分和下半部分中与源序列/>
Figure GDA00041236231600001169
对应的块分别记为/>
Figure GDA00041236231600001170
和/>
Figure GDA00041236231600001171
下文中,关于格雷码码字的算术操作均指在码字的二进制值域中的算术操作,而非与之对应的自然二进制码或其序数的算术操作。方便起见,我们使用同一个符号表示一个格雷码的码字及其对应的二进制值。我们用乘以2和除以2分别表示对一个二进制码字的左移一位和右移一位的操作。
引理5.对
Figure GDA0004123623160000121
码字/>
Figure GDA0004123623160000122
的最终二进制值为:
Figure GDA0004123623160000123
比较m和数列B中的值来确定i,d,k,w的值由公式2确定。
证明:考虑ki>0的情况。块的长度等于
Figure GDA0004123623160000124
在第三步的反射变换操作之后,/>
Figure GDA0004123623160000125
包括按长度的降序排列的块。在/>
Figure GDA0004123623160000126
之前包括所有序数大于i的所有块。这些块中的所有码字的个数m0为:
Figure GDA0004123623160000127
显然
Figure GDA0004123623160000128
中的码字的序数m满足Bi≤m<Bi-1。显然不同块的码字的序数的值的范围是互斥的。若m不满足Bi≤m<Bi-1,/>
Figure GDA0004123623160000129
不是/>
Figure GDA00041236231600001210
中的码字。故Bi≤m<Bi-1等价于码字/>
Figure GDA00041236231600001211
在/>
Figure GDA00041236231600001212
中。
由公式3可知,
Figure GDA00041236231600001213
是/>
Figure GDA00041236231600001214
中的第m-Bi+1个码字。该码字的源码字为/>
Figure GDA00041236231600001215
的第m-Bi+1个码字。由定理3可知,码字/>
Figure GDA00041236231600001216
的加前缀前的初始值为/>
Figure GDA00041236231600001217
对在
Figure GDA00041236231600001218
中的码字/>
Figure GDA00041236231600001219
在合成/>
Figure GDA00041236231600001220
后,剩余源序列的序数大于i。在合成剩余源序列的过程中,合成/>
Figure GDA00041236231600001221
时,对码字/>
Figure GDA00041236231600001222
补零和加前缀1等价于将码字/>
Figure GDA00041236231600001223
异或/>
Figure GDA00041236231600001224
显然,合成所有的源序列后,/>
Figure GDA00041236231600001225
的值与其初始值的异或为:
Figure GDA00041236231600001226
其中0≤i≤n。因此,
Figure GDA00041236231600001227
考虑ki=0的情况,该源序列的唯一的码字的初值为0。类似地,合成所有的源序列后,/>
Figure GDA00041236231600001228
的值与其初始值的异或等于Bi。故/>
Figure GDA00041236231600001229
引理6.Ci包含码字
Figure GDA00041236231600001230
的充要条件是:/>
Figure GDA00041236231600001231
证明:由引理5和
Figure GDA00041236231600001232
是位变换格雷码可知,
Figure GDA00041236231600001233
所以/>
Figure GDA00041236231600001234
中的码字/>
Figure GDA00041236231600001235
的最终值满足/>
Figure GDA00041236231600001236
显然对不同的块,这个范围是互斥的。即若/>
Figure GDA00041236231600001247
不满足/>
Figure GDA00041236231600001237
Figure GDA00041236231600001238
便不是Ci中的码字。故
Figure GDA00041236231600001239
是/>
Figure GDA00041236231600001240
包含码字/>
Figure GDA00041236231600001241
的充要条件。
显然,
Figure GDA00041236231600001242
中的码字与Bi的高位相同,称Bi为块/>
Figure GDA00041236231600001243
的基值。
定理1.长度为N=2M的SGC-I型合成格雷码
Figure GDA00041236231600001244
中的码字/>
Figure GDA00041236231600001245
为:
Figure GDA00041236231600001246
其中,m′=2M-1-m,i的值通过比较m,m′和数列B中的值来确定,d、k和w的值由公式2确定。证明:考虑0≤m<M的情况,码字
Figure GDA0004123623160000131
在序列的上半部分,且由码字/>
Figure GDA0004123623160000132
生成。由第4步可知,/>
Figure GDA0004123623160000133
是由向/>
Figure GDA0004123623160000134
添加后缀0得到的,故/>
Figure GDA0004123623160000135
考虑M≤m<2M的情况,码字/>
Figure GDA0004123623160000136
在序列的下半部分,且由码字/>
Figure GDA0004123623160000137
生成。由第4步可知,/>
Figure GDA0004123623160000138
是由向/>
Figure GDA0004123623160000139
添加后缀1得到的,故:/>
Figure GDA00041236231600001310
/>
显然,
Figure GDA00041236231600001311
和/>
Figure GDA00041236231600001312
中的码字与Bi的高位相同,称Bi为它们的基值。
定理2.长度为N=2M的SGC-I型合成格雷码中码字
Figure GDA00041236231600001313
和码字/>
Figure GDA00041236231600001314
的递推关系为:
Figure GDA00041236231600001315
其中,
Figure GDA00041236231600001316
i的值由引理6确定,d,k,和w的值由公式2确定。
证明:考虑
Figure GDA00041236231600001317
或者/>
Figure GDA00041236231600001318
的情况。/>
Figure GDA00041236231600001319
和/>
Figure GDA00041236231600001320
是位于上半部分与下半部分边界的两个码字,这两个码字是由相同的/>
Figure GDA00041236231600001321
中的码字生成的。考虑第4步,/>
Figure GDA00041236231600001322
和/>
Figure GDA00041236231600001323
仅在最低位不同。
在讨论其他情况之前,判断某个码字是否是序列
Figure GDA00041236231600001345
中的块的最后一个码字的方法需要明确。显然,若该块仅有一个码字,即ki=0的情况,该码字就是该块的最后一个码字。当该块不仅有一个码字时,该块是由源序列位变换格雷码生成的,由于引理1和公式4,该块的最后一个码字等于/>
Figure GDA00041236231600001324
观察序列/>
Figure GDA00041236231600001325
易知,若码字位于序列的前半部分,码字的最低位l为0,若码字位于序列的后半部分,码字的最低为l为1。由第4步可知码字/>
Figure GDA00041236231600001326
对应的l和/>
Figure GDA00041236231600001327
的值为:/>
Figure GDA00041236231600001328
则序列/>
Figure GDA00041236231600001329
对应的/>
Figure GDA00041236231600001330
中的块的最后一个码字的值为
Figure GDA00041236231600001331
根据码字的唯一性,我们可以得出结论:码字的值为/>
Figure GDA00041236231600001332
等价于该码字为块中的最后一个码字。
考虑
Figure GDA00041236231600001333
且/>
Figure GDA00041236231600001334
的情况。此时对应该码字时块中的最后一个码字但不是半部分的最后一个码字。则下一个码字是同个半部分的下一块的第一个码字。若该块在序列的上半部分,下一个块的基值为Bi+1,若该块在序列的下半部分,下一块的基值为Bi-1。则对整个序列,下一块的基值为/>
Figure GDA00041236231600001346
下一块的第一个码字等于
Figure GDA00041236231600001335
码字/>
Figure GDA00041236231600001336
的值为/>
Figure GDA00041236231600001337
故两码字间的异或为:
Figure GDA00041236231600001338
其他情况下,该码字不是某一块的最后一个码字。则下一个码字是同一个块中的下一个码字,所在块的基值均为Bi。显然码字
Figure GDA00041236231600001339
是由值为/>
Figure GDA00041236231600001340
的码字变换而来。由于第3步的反射变换操作,根据引理3可知,下一个码字的初始值/>
Figure GDA00041236231600001341
Figure GDA00041236231600001342
故/>
Figure GDA00041236231600001343
Figure GDA00041236231600001344
本发明另一实施例给出了一种合成格雷码的构造方法,转换方法和递推操作,具体如下。记所述合成格雷码为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型合成格雷码的构造方法如下。
将序列长度的一半,
Figure GDA0004123623160000141
分解为如下形式:
Figure GDA0004123623160000142
其中,
Figure GDA0004123623160000143
且ki<ki+1。创建n个源序列,上述公式中的每一项都对应一个源序列,源序列的长度与该项的值相等。记第i个源序列为/>
Figure GDA0004123623160000144
当ki=0时,该源序列仅由一个码字0组成。当ki≠0时,/>
Figure GDA0004123623160000145
是位宽为ki,长度为/>
Figure GDA0004123623160000146
的位变换格雷码,其位变换参数为:
w=ki,k=0,d=i mod 2. (8)
方便起见,根据分解公式1,定义SGC-II的数列B为:
Figure GDA0004123623160000147
其中,0≤i≤n。
以i的升序,按以下方式递归地合成各个源序列:
第1步:对
Figure GDA0004123623160000148
补零使/>
Figure GDA0004123623160000149
和/>
Figure GDA00041236231600001410
位宽相等,分别对/>
Figure GDA00041236231600001411
和/>
Figure GDA00041236231600001412
中的码字加前缀1和前缀0,以建立码字的唯一性。连接/>
Figure GDA00041236231600001413
和/>
Figure GDA00041236231600001414
并把/>
Figure GDA00041236231600001415
置于前面,边界处形成单步特性。将连接后的序列记作
Figure GDA00041236231600001448
第2步:按照i的升序依次将
Figure GDA00041236231600001416
与/>
Figure GDA00041236231600001417
合成/>
Figure GDA00041236231600001418
和/>
Figure GDA00041236231600001419
时,明显有:/>
Figure GDA00041236231600001420
Figure GDA00041236231600001421
是较/>
Figure GDA00041236231600001422
短的序列。显然/>
Figure GDA00041236231600001423
的最后一个码字为/>
Figure GDA00041236231600001424
的最后一个码字,由引理4,该码字等于/>
Figure GDA00041236231600001425
的第一个码字,即/>
Figure GDA00041236231600001426
和/>
Figure GDA00041236231600001427
具有边界对称性。对/>
Figure GDA00041236231600001428
补零使得/>
Figure GDA00041236231600001429
和/>
Figure GDA00041236231600001430
位宽相等,分别对/>
Figure GDA00041236231600001431
和/>
Figure GDA00041236231600001432
中的码字加前缀1和前缀0,以建立码字的唯一性。连接/>
Figure GDA00041236231600001433
和/>
Figure GDA00041236231600001434
并把/>
Figure GDA00041236231600001435
置于前面,边界处形成单步特性和循环特性。将连接后的序列记作/>
Figure GDA00041236231600001436
递归地执行合成过程直到所有源序列都被合成。
第3步:对
Figure GDA00041236231600001437
做反射变换,仍记反射变换后的序列为/>
Figure GDA00041236231600001438
显然,/>
Figure GDA00041236231600001439
是一个长度为M的单步码。
第4步:将
Figure GDA00041236231600001440
作为序列/>
Figure GDA00041236231600001441
的前半部分。记/>
Figure GDA00041236231600001442
为对称性构造常数t。以下面的规则生成序列/>
Figure GDA00041236231600001449
的下半部分:/>
Figure GDA00041236231600001443
则,显而易见地:
Figure GDA00041236231600001444
则序列
Figure GDA00041236231600001445
的上半部分和下半部分具有了双侧的边界对称性。对上半部分的值加前缀0,对下半部分的值加前缀1,以建立码字的唯一性。加前缀后的序列/>
Figure GDA00041236231600001446
是一种单步循环码。由前文的内容可知,序列/>
Figure GDA00041236231600001447
是符合前文要求的序列。
序列上半部分的码字可以直接使用用于项目的计数,后半部分的码字异或t后可以用于对项目的计数。
图5示例了长度为14的SGC-II型合成格雷码的构造过程。其中,左侧的变换指由序列上半部分到序列下半部分的生成关系,背景无图案的位是源序列中的位交换格雷码码字,背景为斜线的位是在第2步通过加前缀和补零所加的二进制位,背景为竖线的位是在第4步所加的前缀。
显然,序列
Figure GDA0004123623160000151
中的任一码字均由某个源序列中的某一码字通过该构造方法中的变换得到,称源序列中的码字为序列/>
Figure GDA0004123623160000152
中码字的源码字。若序列/>
Figure GDA0004123623160000153
的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>
Figure GDA0004123623160000154
的一个块。
类似地,序列
Figure GDA0004123623160000155
中的码字也可由源序列中的码字通过该构造方法中的变换得到,称源序列中的码字为序列/>
Figure GDA0004123623160000156
中码字的源码字。若序列/>
Figure GDA00041236231600001539
的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>
Figure GDA0004123623160000157
的一个块。
定理3.长度为N=2M的SGC-II型合成格雷码
Figure GDA0004123623160000158
中的码字/>
Figure GDA0004123623160000159
为:
Figure GDA00041236231600001510
其中,m′=m-M,
Figure GDA00041236231600001511
i的值通过比较m、m′和数列B中的值来确定,d、k和w的值由公式8确定。
证明:考虑0≤m<M的情况,码字
Figure GDA00041236231600001512
在序列/>
Figure GDA00041236231600001513
的上半部分,且由码字/>
Figure GDA00041236231600001514
生成。由第4步可知,/>
Figure GDA00041236231600001515
等于/>
Figure GDA00041236231600001516
故/>
Figure GDA00041236231600001517
考虑M≤m<2M的情况,码字
Figure GDA00041236231600001518
在序列/>
Figure GDA00041236231600001540
的下半部分,且由码字/>
Figure GDA00041236231600001519
生成。由第4步可知,/>
Figure GDA00041236231600001520
是由向/>
Figure GDA00041236231600001521
异或t得到的,
Figure GDA00041236231600001522
故:
Figure GDA00041236231600001523
定理4.长度为N=2M的SGC-II型合成格雷码中码字
Figure GDA00041236231600001524
和码字/>
Figure GDA00041236231600001525
的递推关系为:
Figure GDA00041236231600001526
其中,l是码字
Figure GDA00041236231600001527
的最高位,
Figure GDA00041236231600001528
i的值根据引理6确定,d、k和w的值由公式2决定。这里,/>
Figure GDA00041236231600001529
与/>
Figure GDA00041236231600001530
的关系为:/>
Figure GDA00041236231600001531
证明:考虑
Figure GDA00041236231600001532
或者/>
Figure GDA00041236231600001533
的情况。/>
Figure GDA00041236231600001534
和/>
Figure GDA00041236231600001535
是位于上半部分与下半部分边界的两个码字,这两个码字是由相同的/>
Figure GDA00041236231600001536
中的码字生成的。考虑第4步,/>
Figure GDA00041236231600001537
Figure GDA00041236231600001538
仅在最高位不同。在讨论其他情况之前,判断某个码字是否是序列/>
Figure GDA0004123623160000161
中的块的最后一个码字的方法需要明确。显然,若该块仅有1个码字,即ki=0的情况,该码字就是该块的最后一个码字。当该块不止一个码字时,该块是由位变换格雷码生成的,由于引理1和公式4,
Figure GDA0004123623160000162
中该块的最后一个码字等于/>
Figure GDA0004123623160000163
若码字
Figure GDA0004123623160000164
在序列的上半部分,l的值为0,/>
Figure GDA0004123623160000165
若码字/>
Figure GDA0004123623160000166
在序列的下半部分,l的值为1,/>
Figure GDA0004123623160000167
根据序列构造方法的第4步,显然有公式12。考虑到码字的唯一性,/>
Figure GDA0004123623160000168
d或ki=0等价于对应的码字是SGC-II型合成格雷码中的块的最后一个码字。
考虑
Figure GDA0004123623160000169
且/>
Figure GDA00041236231600001610
的情况。此时,对应的码字是块中的最后一个码字,但不是半部分的最后一个码字。因此,下一个码字是同个半部分的下一块的第一个码字。下一个块的对应的/>
Figure GDA00041236231600001611
中的块的基值为/>
Figure GDA00041236231600001612
Figure GDA00041236231600001613
中下一块的第一个码字等于
Figure GDA00041236231600001614
当码字
Figure GDA00041236231600001615
在SGC-II型合成格雷码的上半部分时,l=0,码字/>
Figure GDA00041236231600001616
的值为/>
Figure GDA00041236231600001617
码字/>
Figure GDA00041236231600001618
的值为/>
Figure GDA00041236231600001619
故两码字间的异或为:
Figure GDA00041236231600001620
当码字/>
Figure GDA00041236231600001621
在SGC-II型合成格雷码的下半部分时,l=1,码字/>
Figure GDA00041236231600001622
的值为/>
Figure GDA00041236231600001623
码字/>
Figure GDA00041236231600001624
的值为/>
Figure GDA00041236231600001625
故两码字间的异或为:/>
Figure GDA00041236231600001626
Figure GDA00041236231600001627
其他情况下,该码字不是某一块的最后一个码字。则下一个码字是同一个块中的下一个码字,该块对应的
Figure GDA00041236231600001628
中的块的基值为Bi。显然码字/>
Figure GDA00041236231600001629
是由值为/>
Figure GDA00041236231600001630
的码字变换而来。由于第3步的反射变换操作,根据引理3可知,下一个码字的初始值/>
Figure GDA00041236231600001631
Figure GDA00041236231600001632
故/>
Figure GDA00041236231600001633
Figure GDA00041236231600001634
如果码字/>
Figure GDA00041236231600001635
在序列的上半部分,
Figure GDA00041236231600001636
如果码字Rm在序列的下半部分,/>
Figure GDA00041236231600001637
本发明另一实施例给出了一种合成格雷码的构造方法转换方法和递推操作,具体如下。记所述合成格雷码为SGC-III。
SGC-III是一种用于给任意偶数N个项目编码的合成格雷码。SGC-I利用长度为N的格雷码给N个项目进行编码,第m个码字对应第m个项目。其值域为0到N-1。
如图6,SGC-III型合成格雷码的构造方法如下。
将序列长度N分解为如下形式:
Figure GDA00041236231600001638
其中,
Figure GDA00041236231600001639
且ki<ki+1
方便起见,根据分解公式13,定义SGC-III的数列B为:
Figure GDA00041236231600001640
其中0≤i≤n.
创建n个源序列,上述公式中的每一项都对应一个源序列,源序列的长度与该项的值相等,记第i个源序列为
Figure GDA00041236231600001641
序列/>
Figure GDA00041236231600001642
都是ki位的位变换格雷码。/>
Figure GDA00041236231600001643
的位变换格雷码的参数为:
Figure GDA00041236231600001644
显然各源序列均为格雷码。
引理7.按照i的升序合成各源序列。在合成源序列与已合成的各源序列形成的序列时,对该源序列中的码字加前缀1,对已合成的各源序列组成的序列补零并加前缀0。此时已合成的序列与该源序列具有双侧的边界对称性。
证明:考虑i=1的情况。根据引理1,已合成的序列,即
Figure GDA0004123623160000171
的第一个码字等于0,最后一个码字,即/>
Figure GDA0004123623160000172
的最后一个码字等于/>
Figure GDA0004123623160000173
Figure GDA0004123623160000174
的第一个码字等于/>
Figure GDA0004123623160000175
最后一个码字等于0。显然i=1时,已合成的序列与该源序列具有双侧的边界对称性。
考虑i>1的情况。根据引理1,已合成的序列的第一个码字,即
Figure GDA0004123623160000176
的第一个码字等于0,最后一个码字,即/>
Figure GDA0004123623160000177
的最后一个码字等于/>
Figure GDA0004123623160000178
Figure GDA0004123623160000179
的第一个码字等于/>
Figure GDA00041236231600001710
最后一个码字等于0。显然i>1时,已合成的序列与该源序列具有双侧的边界对称性。
按照i的升序递归地合成各源序列:
第1步:对
Figure GDA00041236231600001711
补零使得/>
Figure GDA00041236231600001712
和/>
Figure GDA00041236231600001713
的位宽相同。对/>
Figure GDA00041236231600001714
中的码字加前缀0,对/>
Figure GDA00041236231600001715
中的码字加前缀1。连接/>
Figure GDA00041236231600001716
和/>
Figure GDA00041236231600001717
Figure GDA00041236231600001718
在前,边界处形成单步特性和循环特性。记连接后的序列为/>
Figure GDA00041236231600001751
第2步:按照i的升序递归地合成序列
Figure GDA00041236231600001719
和剩下的源序列。显然有:/>
Figure GDA00041236231600001720
故合成序列/>
Figure GDA00041236231600001721
和/>
Figure GDA00041236231600001722
的时候,序列/>
Figure GDA00041236231600001723
位宽比/>
Figure GDA00041236231600001724
位宽小。对序列/>
Figure GDA00041236231600001725
补零,使得序列/>
Figure GDA00041236231600001726
的位宽与/>
Figure GDA00041236231600001727
位宽相等;对/>
Figure GDA00041236231600001728
中的码字加前缀1,对序列/>
Figure GDA00041236231600001729
中的码字加前缀0,根据引理7,序列/>
Figure GDA00041236231600001730
和/>
Figure GDA00041236231600001731
具备双侧的边界对称性。
第3步:合成所有的源序列后,对序列
Figure GDA00041236231600001732
反射变换,将新的序列仍记为/>
Figure GDA00041236231600001733
第4步:对序列
Figure GDA00041236231600001734
中的所有的码字异或/>
Figure GDA00041236231600001735
记形成的新序列为序列/>
Figure GDA00041236231600001736
Figure GDA00041236231600001737
为值域校正常数。
图7示例了长度为14的SGC-III型合成格雷码的构造过程。其中,背景无图案的位是源序列中的位交换格雷码码字,背景为斜线的位是在第2步通过加前缀和补零所加的二进制位。
方便起见,根据公式13,定义数列:
Figure GDA00041236231600001738
其中,0≤i≤n。
显然,序列
Figure GDA00041236231600001739
中的任一码字均由某个源序列中的某一码字通过该构造方法中的变换得到,称源序列中的码字为序列/>
Figure GDA00041236231600001740
中码字的源码字。若序列/>
Figure GDA00041236231600001741
的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>
Figure GDA00041236231600001742
的一个块。
类似地,序列
Figure GDA00041236231600001743
中的码字也可由源序列中的码字通过该构造方法中的变换得到,称源序列中的码字为序列/>
Figure GDA00041236231600001744
中码字的源码字。若序列/>
Figure GDA00041236231600001745
的一个子序列中的所有码字与某一源序列中的码字按照该构造方法中的变换存在一一对应关系,那么称该子序列为序列/>
Figure GDA00041236231600001746
的一个块。
引理8.长度为偶数N的SGC-III型合成格雷码序列
Figure GDA00041236231600001747
中码字的值域为0到N-1。
证明:显然,对位宽为k的位变换格雷码,将其所有码字与一k位的常数相异或,不改变其值域。对Bi中的码字,异或值域校正常数t,相当于对其相应的块在上述构造方法中所加前缀取反,而位变换格雷码部分的范围不变。因此,与SGC-I型合成格雷码类似,其值域为0到N-1。
定理5.长度为偶数N的SGC-III型合成格雷码
Figure GDA00041236231600001748
中的码字/>
Figure GDA00041236231600001749
为:
Figure GDA00041236231600001750
当Bi≤m<Bi-1. (15)
其中,i的值通过比较m与数列B中的数来确定,d、k和w的值由公式14确定。
证明:易知
Figure GDA0004123623160000181
的长度等于/>
Figure GDA0004123623160000182
在第3步的反射变换操作之后,序列/>
Figure GDA0004123623160000183
是由按照块大小的降序排列的多个块组成的。在/>
Figure GDA0004123623160000184
的前面,块的序数均大于i。这些块的码字的总数m0为:
Figure GDA0004123623160000185
显然
Figure GDA0004123623160000186
中的码字的序数m满足Bi≤m<Bi-1。显然不同块的码字的序数的值的范围是互斥的。若m不满足Bi≤m<Bi-1,则/>
Figure GDA0004123623160000187
不是/>
Figure GDA0004123623160000188
中的码字。故Bi≤m<Bi-1是/>
Figure GDA0004123623160000189
包含/>
Figure GDA00041236231600001810
的充要条件。由公式3可知,/>
Figure GDA00041236231600001811
是/>
Figure GDA00041236231600001812
中的第m-Bi+1个码字。考虑到第3步的反射变换操作,该码字是由反射变换的/>
Figure GDA00041236231600001813
中的第m-Bi+1个码字生成的。该码字的初始状态为对应的ki位位变换格雷码的第m-Bi+1个码字。由定理3可知,码字/>
Figure GDA00041236231600001814
的加前缀前的初始值为/>
Figure GDA00041236231600001815
在合成
Figure GDA00041236231600001816
时,对/>
Figure GDA00041236231600001817
中的码字/>
Figure GDA00041236231600001818
补零和加前缀1等价于将码字/>
Figure GDA00041236231600001819
加上/>
Figure GDA00041236231600001820
显然其它时候所加的前缀均为0。合成所有的块后,/>
Figure GDA00041236231600001821
的值与其初始值的差等于/>
Figure GDA00041236231600001822
考虑到构造方法的第4步:
Figure GDA00041236231600001823
引理9.当且仅当码字
Figure GDA00041236231600001824
的值满足/>
Figure GDA00041236231600001825
时,/>
Figure GDA00041236231600001826
包含与/>
Figure GDA00041236231600001827
对应的码字
Figure GDA00041236231600001828
证明:对/>
Figure GDA00041236231600001829
中的码字,异或值域校正常数t,相当于对其相应的块在上述构造方法中所加前缀取反,而位变换格雷码部分的范围不变。因此,序列/>
Figure GDA00041236231600001830
具有引理6中类似的性质。
定理6.长度为偶数N的SGC-III型合成格雷码中码字
Figure GDA00041236231600001831
和码字/>
Figure GDA00041236231600001832
的递推关系为:
Figure GDA00041236231600001833
其中,
Figure GDA00041236231600001834
i的值根据引理g确定,d、k和w的值由公式14决定。
证明:当
Figure GDA00041236231600001835
时,/>
Figure GDA00041236231600001836
是序列中的最后一个码字。根据边界对称性和引理7,
Figure GDA00041236231600001837
和/>
Figure GDA00041236231600001838
仅有最高位不同。
在讨论其他两种情况前,需要确定码字
Figure GDA00041236231600001839
是序列/>
Figure GDA00041236231600001840
中的块最后一个码字的等价条件。显然码字/>
Figure GDA00041236231600001841
是由/>
Figure GDA00041236231600001842
变换而来的。当/>
Figure GDA00041236231600001843
是序列/>
Figure GDA00041236231600001844
的块中的最后一个码字时,/>
Figure GDA00041236231600001845
是序列
Figure GDA00041236231600001846
块中的最后一个码字。此时/>
Figure GDA00041236231600001847
考虑到序列/>
Figure GDA00041236231600001848
中码字的唯一性,
Figure GDA00041236231600001849
与码字/>
Figure GDA00041236231600001850
为序列/>
Figure GDA00041236231600001851
中块的最后一个码字等价。
考虑
Figure GDA00041236231600001852
且i≠n的情况。对应的码字/>
Figure GDA00041236231600001853
是序列/>
Figure GDA00041236231600001854
中块的最后一个码字而且对应的码字不是序列的最后一个码字。下一个码字是下一块的第一个码字。下一块的基值等于2i+1。下一块的第一个码字等于2i+1+2i。码字/>
Figure GDA00041236231600001855
等于2i。显然有:
Figure GDA00041236231600001856
在其他情况下,该码字
Figure GDA0004123623160000191
对应的/>
Figure GDA0004123623160000192
不是块的最后一个码字。则下一个码字为同一个块的下一个码字。/>
Figure GDA0004123623160000193
则码字/>
Figure GDA0004123623160000194
的初始值等于/>
Figure GDA0004123623160000195
由第3步和引理3,下一个码字的初始值/>
Figure GDA0004123623160000196
Figure GDA0004123623160000197
Figure GDA0004123623160000198
本申请又一实施例提供了一种使用这类编码的异步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中任一项所述的方法。
CN201910629636.5A 2019-07-12 2019-07-12 一种格雷码的构造方法 Active CN110324045B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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存储器设计

Patent Citations (2)

* Cited by examiner, † Cited by third party
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