格雷码与二进制之间转换及VHDL实现
一、什么是格雷码?
格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。常用的二进制数与格雷码间的转换关系如下表:
十进制数 | 自然二进制数 | 格雷码 | 十进制数 | 自然二进制数 | 格雷码 |
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实现相关推荐
- 格雷码转换成二进制c语言程序,格雷码与二进制的转换程序
/* 格雷码与二进制的转换程序 * 本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位) * 推导方式如下(以三位格雷码为例): * 序号 格雷码 格雷码实值 二进制码 ...
- 汇编实验:格雷码转二进制(ASCII码)的实现和调试
实验说明 格雷码和二进制的转换 思路 为完成实验内容,可通过查表和格雷码计算两种方式完成,此处使用格雷码直接计算得出结果. SHL算术左移命令可将二进制数的高位存入CF,直接得出高位数据,通过异或操作 ...
- 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现
数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...
- 关于格雷码的规律、转换
发现数电书中对于格雷码并没有很好地解释,这里保留下来所理解的知识供自己日后查看.这里主要说明排列规律和转换. 格雷码特点: 任意两个相邻的代码只有一位二进制数不同.并且首尾相连,属于循环码(这里我发现 ...
- (132)FPGA面试题-Verilog实现格雷码转二进制
1.1 FPGA面试题-Verilog实现格雷码转二进制 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现格雷码转二进制: 5)结束语. ...
- 十进制与二进制之间转换详解
文章目录 十进制与二进制之间转换详解 (一)十进制数转二进制数 1.1 十进制正整数转二进制 1.2 十进制负整数转二进制 1.3 十进制小数转二进制数 (二) 二进制数转成十进制数 2.1 二进制整 ...
- 连环锁 POJ - 1832(格雷码与二进制)
传送门 题意:给出九连环的两种状态,问第一种状态转化到第二种状态时至少需要多少步? 题解:这道题是与格雷码有关的题目,定义以及转化规则看这儿传送门 还有个好的视频解说传送门 由于九连环仅限的两种操作( ...
- BCD码与二进制的转换
利用的数据结构:每列4bits 百位|十位|个位|二进制高4位|二进制低4位 二进制→BCD码 算法 从低到高依次判断个位.十位.百位这三列的数是否大于等于5,如果是则加3修正 左移整个数据结构1位 ...
- 自然二进制码与格雷码相互转换【CSDN】
自然二进制码与格雷码相互转换 一.格雷码简介 格雷码是由弗兰克·格雷于1953年发明,其主要特点是相邻编码值中间只有一个比特发生改变,又被称为循环码. 格雷码是一种无权码,采用绝对编码方式,典型格雷码 ...
- 格雷码、二进制码、BCD编码
格雷码 格雷码(12页).pdf 格雷码(12页).pdf-其它文档类资源-CSDN下载 奇偶校验码(25页).pdf 奇偶校验码(25页).pdf-其它文档类资源-CSDN下载 经验:如何快速地写出 ...
最新文章
- Mongodb-初步了解
- ML之多分类预测之PLiR:使用PLiR实现对六类label数据集进行多分类
- 刚copy试探发表了一篇文章文章,oschina感觉良好
- 使用volatile关键字的场景
- [转]static和final的区别
- 删除同样元素(线性表)
- 爱剪辑手机版 v51.0 至尊内购专业破解版的视频剪辑软件
- 打印机不弹出打印窗口_打印CAD图纸总是留白?做好这个操作,能打印出你想要的CAD图纸...
- 辞职后如何办理档案、户口、党组织关系、公积金
- 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。
- 家具行业APP定制开发需具备哪些功能
- 笨拙的手指(寒假每日一题 1)
- WHQL认证如何给驱动程序做数字签名
- 我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们
- C#爬虫,HttpClient请求,HtmlAgilityPack,HtmlDocument使用
- 给JS对象添加属性和方法
- 深度学习大模型训练--分布式 deepspeed PipeLine Parallelism 源码解析
- 433遥控收发模块使用介绍
- 青松资讯:李逵遇李鬼,浅谈Android上的“冒牌货”恶意软件
- Apache Flink