APP下载

格雷码的来源以及格雷码的应用

2017-03-14梅媛沈祖斌

科技视界 2016年27期
关键词:毛刺

梅媛 沈祖斌

【摘 要】简述了格雷码的来源和发展历史,介绍了格雷码的轴角编码器的输出原理,以及格雷码的两大特点,一是数与数之间都只发生一位跳变,二是在利用格雷码计数器时会降低功耗。另外介绍了格雷码与二进制之间的两种转换方法:公式法和查表法;以及格雷码计数器的应用中出现的毛刺状态和格雷码计数器的应用原理。

【关键词】格雷码;格雷码计数器;毛刺;轴角编码器

1 格雷码来源

格雷编码在被工程师所熟知之前一直应用于机械应用。1878年,法国工程师Emile Baudot在运用电报的过程中使用了格雷编码。他因此也获得了法国荣誉军团勋章。但是在当时格雷编码并不适用于所有地方,比如脉冲编码调制的原则就不符合格雷编码的原理。

Frank Gray ,贝尔实验室的研究员,发明了一种方法使用真空座装置将模拟信号转化为格雷编码。1953年,这个方法和装置被Frank Gray申请专利,于是这个编码被命名为格雷码[1]。其中利用了轴角编码器将格雷码输出,编码器是附接到旋转轴的圆盘,圆盘包含了对于二进制1是透明的区域和对于二进制0是不透明的区域,光源放置在圓盘的一侧,传感器在圆盘另一侧。当光源和传感器之间出现清晰的区域时,传感器以二进制1输出;出现不透明区域时,传感器以二进制0输出。

格雷码是一种无权码,其编码特点是任意两相邻代码间只有一位数码不同,这对数码的传输有很大的帮助,因为他大大减少了由一个状态到下一个状态时电路中的模糊状态,提高了电路的抗干扰能力,所以格雷码是一种错误最小化的编码。

格雷码的显著特点是所表示的数递增时不发生较大误差。例如,当十六进制数由7变为8时,若采取的是二进制码,则其编码将由0111变为1000。此时,四位二进制状态都发生变化,对于实现二进制码的具体设备而言,其四位设备状态不可能同时发生改变,于是有可能出现下列情况:7(0111),5(0101),4(0100),12(1100),8(1000)。尽管最终结果是从7(0111)变到8(1000),但出现错误的中间转换过程。若无措施禁止这些中间错误输出,则会发生较大误差。若采用格雷码,则不会产生这种误差。因当十六进制数由7变为8时,其对应的格雷码将从0100变为1100,只有一位二进制数发生改变,也无中间错误结果出现。

格雷码的另一个特点是在工作计数状态时,每次都只有一位发生跳变,跳变的次数远远少于二进制计数器,所以使用格雷码计数器可以大大降低系统的功耗。对于表1,我们很清楚的看出来,在从0-8的转变中,格雷码计数器发生了8位改变,而二进制计数器发生了14位的改变。因此,如果采用CMOS电路,功耗主要产生在电路状态的切换处,在格雷码的计数器输出端消耗的功率仅为二进制计数器输出消耗的功率的57%。

表1 二进制计数器和格雷码计数器的比较

2 格雷码与二进制码的转换

因为格雷码是一种无权码,并且在工程上有广泛的应用,这都要进行格雷码和二进制码的转换。通过软件转换则会降低运算速度,用硬件方法转换数据,使数据能得到即时转换,运算过程较为简捷,加快了处理速度。用异或逻辑门芯片及电阻网络组成转换电路很容易实现格雷码和二进制码的转换,但成本比较高。因此在对速度要求不是很高的地方一般都用软件方法来实现。

软件转换有多种方法:

2.1 公式法

格雷码转换为二进制码的算法则较为繁琐,如下:

Rn为n位的格雷码,Cn为转换后的二进制码

Cn = Rn

Cn-1 = Rn⊕Rn-1

Cn-2 =Rn⊕Rn-1⊕Rn-2

……

C1 = Rn⊕Rn-1⊕Rn-2⊕…⊕R2⊕R1,

C0 = Rn⊕Rn-1⊕Rn-2⊕…⊕R2⊕R1⊕R0

2.2 查表法

最简单的一种方法,根据传输位数,建立二进制码和格雷码一一对应的表格,例如列出一个长度为2048个码组的各类码表,每组码的长度为11位,为方便查表,每一码组占用两个字节,码表共占用4KB的程序空间。程序设计的核心是通过循环查表指令把格雷码转换为二进制码,再将二进制码转换成BCD码和显示码,但如果码组太多,系统的程序空间也会相应增大,单片机必须扩展外部程序存储器。同时查表指令的循环次数也相应增加,大大增加了译码的时间。

3 格雷码的应用

从广义上来说,寄存器是由一系列的触发器和组合门电路组成,用来执行数据处理任务。触发器保存数据,组合门电路是确定要传送到触发器中的新的或变换的数据。而计数器是在施加时钟脉冲时经过预定的状态序列的寄存器,他的门电路以产生规定的二进制状态序列的方式连接。

计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令;在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数。

在实际应用中,二进制计数器是最广泛应用的一种方法,它可以在电路设计中被调用来实现系统在一定时间间隔后完成动作,但是二进制计数器的进位过程会出现一些中间状态。在表一中我们很清楚的了解二进制在码值变化的时候位数的变化情况。在我们的逻辑思维里,如4位异步串行二进制计数器进位期间读数由0111变化到1000时,0->1、1->0、1->0、1->0这四位的变化是同时进行的,但是在实际的物理器件中,在信号变化的瞬间,组合逻辑的输出有先后顺序,这四位并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。电路低速运行的时候,这些毛刺不能被检测到,对后续电路不会有影响,但是电路高速运行的时候,这些毛刺就不能被忽视,这就有可能会得到0110、0100和0000三个错误数值。由此可以看出,用二进制计数器是有可能在数据变化中有较大的毛刺产生。

而计数器在整个系统被频繁的调用,所以对计数器的要求是要求非常准确的。正如前文所述,格雷码的特点就是相邻两个数值之间只有一位发生跳变,那么可以采用格雷码计数器代替二进制计数器,即利用格雷码计数时每次计数变化只有一位的输出电平发生翻转,这样就可以减少中间的转换过程,有效地避免了毛刺的产生。

此时可以采用格雷码计数器,尽管格雷码计数器的设计比较复杂,占用的FPGA的内部资源更多,但是现在半导体的成本越来越低,并且采用格雷码计数器可以大大增强系统的稳定性和可靠性。

根据格雷码计数的特点,格雷码计数器的设计大概思路就是:将相应的普通二进制码转换成对应的格雷码。在二进制计数过程中,通过异或关系将其转换成格雷码再输出,而二进制数并不输出,这样就得了格雷码计数器[2]。从而有效地避免了毛刺的产生,保证了计数的稳定和可靠。

4 总结

简单的叙述了格雷码产生的历史、格雷码和二进制的转换方法以及利用格雷码的错误最小化的特点运用于格雷码计数器。由于格雷码计数的时候只有一位码数发生变化,在计数时只有一位发生跳变,减少了毛刺的产生,所以相较于其他计数器更具有稳定性和可靠性。

关于格雷码不仅仅只有错误最小化和功耗低的特点,他还有很多其他的性质,对格雷碼有兴趣的学者可以更加深入的去研究格雷码。

【参考文献】

[1]Knuth, Donald E. “Generating all n-tuples.” The Art of Computer Programming, Volume 4A: Enumeration and Backtracking, pre-fascicle 2a, October 15, 2004.

[2]沙燕萍,皇甫伟, 曾烈光.异步FIFO的VHDL设计[J].电子技术应用,2001;(6):13-17.

[3]段波.格雷码及其转换的应用[J].国外建材科技,2005(8).

[4]李莉.基于FPGA的多位格雷码计数器[J].科学技术与工程,2009(12).

[5]M.Morris Mano,Charles R.Kime.逻辑与计算机设计基础(英文版·第四版)[M].机械工业出版社.

[责任编辑:张涛]

猜你喜欢

毛刺
航空液压系统零部件毛刺主动控制技术
复杂铝合金阀体零件毛刺的控制与去除
阀芯去毛刺工艺研究
一种铸铁钻孔新型去毛刺刀具的应用
两种去除齿部毛刺工装的研究
一种筒类零件孔口去毛刺工具
柴油机油道自动去毛刺专机的设计
关于机械加工中毛刺的影响分析及其控制探讨
可抑制毛刺的钻头结构
新型铜合金化学去毛刺剂的研制