(1)

Grey码在FPGA实际应用中是实用的码,在8421BCD码累加计数器中,如果寄存器需要发生多位(两位或者以上)的跳变,会出现中间态,这样作为组合逻辑的输入是不稳妥的。

下面看两个中间态的例子

这是累加器的状态转换时序观察,存在中间不希望的状态。如果作为组合逻辑的输入,状态有可能跑飞。

左边0111 -> 0101 -> 1000,右边0101 -> 0111 -> 0110

(2)

采用格雷码可以避免中间态的出现,因为相邻两个状态之间只有1 bit差异。

下面是8421BCD码(自然计数码)和格雷码的对应关系,以3bit为例:

        自然码    0    1       2     3     4   5    6    7

     自然码二进制  000   001  010  011   100  100   101   111

  格雷码对应的十进制    0    1    3   2    6    7    5    4

        格雷码  000   001  011  010   110   111   101   100

在百度百科上面看到了这个图片,发现了规律

对于这个4 bit格雷码,我们发现最高位(g3)在组群前一半是0,后一半是1,非常整齐。而且非最高位(g2,g1,g0)组成的状态关于黄线对称,比如离黄线最近的g2g1g0都是100,再远一位是101,。。。最远一位是000。

按照这个规则,我们可以由n长度的格雷码生成n+1长度的格雷码。

- - 附录 - -

把这个图倒过来,看到白色蓝色的方块图案

我们发现格雷码的方块图案关于红线是轴对称的(除了最高位g3),

8421BCD码的方块图案关于红线是取反轴对称的(除了最高位d3)。

格雷码(Grey Code)生成规则的更多相关文章

  1. 格雷码Gray Code详解

    格雷码简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码.格 ...

  2. 二维码(QR Code)生成与解析

    二维码(QR Code)生成与解析 写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就 ...

  3. 格雷码(Gray code)仿真

    作者:桂. 时间:2018-05-12  16:25:02 链接:http://www.cnblogs.com/xingshansi/p/9029081.html 前言 FIFO中的计数用的是格雷码, ...

  4. LeetCode 格雷码序列的生成

    问题概述:在一组数的编码中,若随意两个相邻的代码仅仅有一位二进制数不同.则称这样的编码为格雷码. 2位数的格雷码序列:00 : 001 : 111 : 310 : 2找规律:假设要求n位的格雷码,先要 ...

  5. [C#]二维码(QR Code)生成与解析

    写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就扒了扒网络,发现关于解析二维码的类库 ...

  6. 解题(GeLeiMa -生成格雷码)

    题目描述 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码. 给定一个整数n,请返回n位的格雷码 ...

  7. 产生n位元的所有格雷码

    原文链接:http://blog.csdn.net/beiyeqingteng/article/details/7044471 问题:产生n位元的所有格雷码. 格雷码(Gray Code)是一个数列集 ...

  8. 构建n位元的格雷码

    二进制格雷码的生成 1.什么是格雷码 Gray Code是一个数列集合,每个数使用二进制来表示,假设使用n位元来表示每个数字,那么任两个数之间只有一个位元值不同.log2(16)=4 例如: 生成4位 ...

  9. 用硬件(Verilog)实现二进制码和格雷码的转换

    格雷码(Gray code)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环. ...

随机推荐

  1. 5-2 使用antDesign的Table 及 modal(对话情景框) 功能

    1,进入antDesign官网,粘贴table代码 2,看代码各个部分实现什么功能,根据需求改代码 表格类似如下: 代码如下: const columns = [ { title: 'Name', d ...

  2. jarvisoj fm

    使用指令 checksec 查看保护情况 Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PI ...

  3. android下创建文件夹和修改其权限的方法

    原文:http://www.cnblogs.com/wanqieddy/archive/2011/12/28/2304906.html 由于工作的需要,今天研究了在android下创建文件夹和修改其权 ...

  4. nopad++将制表符替换为换行符

    将制表符换位换行

  5. 用华为C8813调试LogCat不显示日志问题解决方法

    我用华为C8813调试代码时,Eclipse不输出LogCat日志,用其他Android Pad是正常输出的.找了几种解决方法都不行,最后发现如下的方法,问题解决!   华为Android手机打开Lo ...

  6. 在Centos下单机部署kubernetes

    官方安装手册 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ ...

  7. H5中input输入框tppe为date时赋值(回显)

    1.当时间为2013-09-05时正常显示 <input class="form-control" name="applytime" type=" ...

  8. JS实现复制信息到剪贴板

    copy 当用户通过浏览器UI启动复制操作并响应允许的document.execCommand('copy')调用时触发copy事件. copy事件可作用于任何可被选中或可编辑的元素,如body.di ...

  9. TP-Link TL-WR841N v14 CVE-2019-17147 缓冲区溢出漏洞分析笔记v2018.12.31

    0x00 背景 Httpd服务中的缓冲区溢出漏洞 复现参考文章https://www.4hou.com/posts/gQG9 Binwalk -Me 解压缩 File ./bin/busybox文件类 ...

  10. 在cnblog中试用Markdown

    参考: http://www.cnblogs.com/cmt/p/markdown.html https://www.cnblogs.com/cmt/p/markdown-latex.html htt ...