格雷码计数器
用于在异步时钟域之间传递计数结果而用到的设备
格雷码计数器是为了在异步时钟域之间传递计数结果而用到的计数器
简介
格雷码计数器(Gray counter)是为了在异步时钟域之间传递计数结果而用到的计数器,因为格雷码计数器计数时相邻的数之间只有一个bit发生了变化,例如:000-001-011-010-110-111-101-100。
用途
一般的,普通二进制码与格雷码可以按以下方法互相转换:
二进制码-运动项目不一致格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR)(http://bk.7tmusic.com/lemma-php/dispose/view.php/379209.htm),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);
格雷码-〉二进制码解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变).
数学(计算机)描述:
原码:p[0~n];格雷码:c[0~n](n∈N);编码:c=G(p);解码:p=F(c);书写时从左向右标号依次减小.
编码:c=p XOR p[i+1](i∈N,0≤i≤n-1),c[n]=p[n];
解码:p[n]=c[n],p=c XOR p[i+1](i∈N,0≤i≤n-1).
Gray Code是由贝尔实验室的Frank Gray在20世纪40年代提出的(是1880年由法国工程师Jean-Maurice-EmlleBaudot发明的),用来在使用PCM(Pusle Code Modulation)方法传送讯号时避免出错,并于1953年3月17日取得美国专利。由定义可知,Gray Code的编码方式不是仅有的,这里讨论的是最常用的一种。 (引用自百度https://baike.baidu.com/view/358724.htm)
所以,在设计格雷码计数器的时候可以使用状态机,给每个码设定一个状态然后用时钟来控制它在状态间转换,这样就完成了我们需要的功能,但是若是状态比较多,如n=6,这时就会有64个状态,显然再用状态机非常不方便,当然理论上是可以的。
限制
用karnaugh化简也是限制在位数比较少的情况。
所以我们需要的是一种通用的计数方式,最笨办法就是设计一个二进制计数器binary counter,通过它来计数,然后利用binary -gray的编码就可以得到对应的格雷码计数器,在如今fpga资源那么充裕的情况下,我们学习这样完全可以了,相信二进制计数器大家都会设计,那么接下来的编码器也不是问题,这样就解决了。
参考资料
最新修订时间:2023-10-08 17:22
目录
概述
简介
用途
参考资料