一、什么是格雷码?

格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。常用的二进制数与格雷码间的转换关系如下表:

十进制数 自然二进制数 格雷码 十进制数 自然二进制数 格雷码
0 0000 0000 8 1000 1100
1 0001 0001 9 1001 1101
2 0010 0011 10 1010 1111
3 0011 0010 11 1011 1110
4 0100 0110 12 1100 1010
5 0101 0111 13 1101 1011
6 0110 0101 14 1110 1001
7 0111 0100 15 1111 1000

二、二进制与格雷码之间的转换及VHDL实现

2.1 二进制码转化成格雷码

二进制码转换成二进制格雷码,其法则是保留二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。

VHDL实现:

function bin_to_gray_conv (binary    : in std_logic_vector(DATA_WIDTH - 1 downto 0)) return std_logic_vector isvariable bin_to_gray_conv    : std_logic_vector(DATA_WIDTH - 1 downto 0);beginbin_to_gray_conv := '0' & binary(DATA_WIDTH - 1 downto 1) xor binary;return (bin_to_gray_conv);
end function bin_to_gray_conv;

2.2 格雷码转换成二进制码

二进制格雷码转换成二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。

VHDL实现:

function gray_to_bin_conv (gray  : in std_logic_vector(DATA_WIDTH - 1 downto 0)) return std_logic_vector isvariable i                    :  integer;   variable gray_to_bin_conv     : std_logic_vector(DATA_WIDTH - 1 downto 0);begingray_to_bin_conv(DATA_WIDTH - 1) := gray(DATA_WIDTH - 1); i := DATA_WIDTH - 2;while (i >= 0) loopgray_to_bin_conv(i) := gray_to_bin_conv(i + 1) xor gray(i);    i := i - 1;end loop;return (gray_to_bin_conv);
end function gray_to_bin_conv;

格雷码与二进制之间转换及VHDL实现相关推荐

  1. 格雷码转换成二进制c语言程序,格雷码与二进制的转换程序

    /* 格雷码与二进制的转换程序 * 本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位) * 推导方式如下(以三位格雷码为例): * 序号 格雷码 格雷码实值 二进制码 ...

  2. 汇编实验:格雷码转二进制(ASCII码)的实现和调试

    实验说明 格雷码和二进制的转换 思路 为完成实验内容,可通过查表和格雷码计算两种方式完成,此处使用格雷码直接计算得出结果. SHL算术左移命令可将二进制数的高位存入CF,直接得出高位数据,通过异或操作 ...

  3. 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现

    数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...

  4. 关于格雷码的规律、转换

    发现数电书中对于格雷码并没有很好地解释,这里保留下来所理解的知识供自己日后查看.这里主要说明排列规律和转换. 格雷码特点: 任意两个相邻的代码只有一位二进制数不同.并且首尾相连,属于循环码(这里我发现 ...

  5. (132)FPGA面试题-Verilog实现格雷码转二进制

    1.1 FPGA面试题-Verilog实现格雷码转二进制 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现格雷码转二进制: 5)结束语. ...

  6. 十进制与二进制之间转换详解

    文章目录 十进制与二进制之间转换详解 (一)十进制数转二进制数 1.1 十进制正整数转二进制 1.2 十进制负整数转二进制 1.3 十进制小数转二进制数 (二) 二进制数转成十进制数 2.1 二进制整 ...

  7. 连环锁 POJ - 1832(格雷码与二进制)

    传送门 题意:给出九连环的两种状态,问第一种状态转化到第二种状态时至少需要多少步? 题解:这道题是与格雷码有关的题目,定义以及转化规则看这儿传送门 还有个好的视频解说传送门 由于九连环仅限的两种操作( ...

  8. BCD码与二进制的转换

    利用的数据结构:每列4bits 百位|十位|个位|二进制高4位|二进制低4位 二进制→BCD码 算法 从低到高依次判断个位.十位.百位这三列的数是否大于等于5,如果是则加3修正 左移整个数据结构1位 ...

  9. 自然二进制码与格雷码相互转换【CSDN】

    自然二进制码与格雷码相互转换 一.格雷码简介 格雷码是由弗兰克·格雷于1953年发明,其主要特点是相邻编码值中间只有一个比特发生改变,又被称为循环码. 格雷码是一种无权码,采用绝对编码方式,典型格雷码 ...

  10. 格雷码、二进制码、BCD编码

    格雷码 格雷码(12页).pdf 格雷码(12页).pdf-其它文档类资源-CSDN下载 奇偶校验码(25页).pdf 奇偶校验码(25页).pdf-其它文档类资源-CSDN下载 经验:如何快速地写出 ...

最新文章

  1. Mongodb-初步了解
  2. ML之多分类预测之PLiR:使用PLiR实现对六类label数据集进行多分类
  3. 刚copy试探发表了一篇文章文章,oschina感觉良好
  4. 使用volatile关键字的场景
  5. [转]static和final的区别
  6. 删除同样元素(线性表)
  7. 爱剪辑手机版 v51.0 至尊内购专业破解版的视频剪辑软件
  8. 打印机不弹出打印窗口_打印CAD图纸总是留白?做好这个操作,能打印出你想要的CAD图纸...
  9. 辞职后如何办理档案、户口、党组织关系、公积金
  10. 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。
  11. 家具行业APP定制开发需具备哪些功能
  12. 笨拙的手指(寒假每日一题 1)
  13. WHQL认证如何给驱动程序做数字签名
  14. 我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们
  15. C#爬虫,HttpClient请求,HtmlAgilityPack,HtmlDocument使用
  16. 给JS对象添加属性和方法
  17. 深度学习大模型训练--分布式 deepspeed PipeLine Parallelism 源码解析
  18. 433遥控收发模块使用介绍
  19. 青松资讯:李逵遇李鬼,浅谈Android上的“冒牌货”恶意软件
  20. Apache Flink

热门文章

  1. 规范JavaScript注释
  2. 关于我国高等数学教材的版权发财户
  3. 施工员简历英语计算机水平,土建施工员电子版英文简历模板
  4. wps下一步快捷键_WPS快捷键大全(最常用138个办公快捷键)
  5. 当年发明“熊猫烧香”病毒的天才,如今怎么样了?
  6. AI智能电子名片开发
  7. Python爬取《你是我的荣耀》——词云图
  8. opencv 安装及配置
  9. 基于模块化多电平换流器(MMC)的柔性直流输电系统simulink仿真模型开发
  10. GB50052-2009供配电系统设计规范1