verilog实现格雷码(Gray Code)与二进制编码转换
此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。
此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。
本文首发于CSDN,版权所有,禁止转载。
如需转载,请在评论区留言或私信申请,经同意后可转载,否则属于侵权行为。
原博客链接:https://blog.csdn.net/qq_38305370
原博主昵称:城外南风起
————————————————
目录
- 二进制码转格雷码
- 格雷码转二进制码
- testbench
- 仿真波形
- 参考文献
格雷码(Gray Code)相邻的2个数值之间只会有一位发生变化,其余各位都相同。在异步FIFO中,跨时钟域传输读写指针会使用格雷码,从而大幅降低亚稳态概率,具体原因可以参考我的文章《跨时钟域传输的黄金搭档:异步FIFO与格雷码》。
格雷码的原理和编码方式可参考[1]。
本文以3bit数据为例。
二进制码转格雷码
代码:
module bin2gray(input [2:0] bin,output [2:0] gray);reg[2:0] gray,temp;always @(*) begintemp = (bin >> 1);gray[2] = bin[2];gray[1:0] = temp[1:0] ^ bin[1:0];endendmodule
格雷码转二进制码
代码:
module gray2bin(input [2:0] gray,output [2:0] bin);assign bin[2] = gray[2];generategenvar i;for(i=0;i<2;i=i+1) begin:g2bassign bin[i] = gray[i]^bin[i+1];endendgenerateendmodule
testbench
代码:
`timescale 1ns / 1psmodule bin2gray_tb();reg [2:0] bin_data;wire [2:0] gray_data;wire [2:0] out;initialbeginbin_data = 0;#200 $stop;endalways #10 bin_data = bin_data + 1;bin2gray bin2gray0(.bin(bin_data),.gray(gray_data)); gray2bin gray2bin0(.bin(out),.gray(gray_data)); endmodule
仿真波形
参考文献
[1]梅媛,沈祖斌.格雷码的来源以及格雷码的应用[J].科技视界,2016(27):204+200.
————————————————
感谢您的阅读,如果您有收获,请给我一个三连吧!
如果您觉得这还不够,可以点击 打赏 按钮,告诉我: 你币有了!
我是城外南风起,欢迎关注我的公众号【木叶芯】。
木叶飞舞之处,火亦生生不息。
verilog实现格雷码(Gray Code)与二进制编码转换相关推荐
- gray code java_格雷码Gray Code详解
格雷码简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连",因此又 ...
- (132)FPGA面试题-Verilog实现格雷码转二进制
1.1 FPGA面试题-Verilog实现格雷码转二进制 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现格雷码转二进制: 5)结束语. ...
- LeetCode(89):格雷编码 Gray Code(Java)
2019.7.19 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 智力题,本题的关键在于搞清楚格雷编码的生成过程, G(i) = i ^ (i/2). 如 n = 3: G( ...
- 格雷码与普通二进制码的相互转换——学习笔记
文章目录 格雷码 普通二进制码转换成格雷码 格雷码转换成普通二进制码 进一步 Reference 文章中内容与图片大部分来自Reference,本文只是以方便自己理解的方式进行整理. 格雷码 在一组数 ...
- Gray Code(格雷码) C++多方法实现
简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连",因此又称循环 ...
- 【基础知识】~ 进制转换、补码、格雷码、BCD码、独热码
1. 进制转换 1.1 十进制 to 二进制 正整数转二进制:除二取余,然后倒序排列,高位补零. 负整数转二进制:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一. 小数转二进制:对小 ...
- java 递归生成格雷码_格雷码的递归生成
问题:产生n位元的全部格雷码.html 格雷码(Gray Code)是一个数列集合,每一个数使用二进位来表示,假设使用n位元来表示每一个数字,任两个数之间只有一个位元值不一样. 例如如下为3位元的格雷 ...
- 腾讯---生成格雷码
腾讯-生成格雷码 文章目录 腾讯---生成格雷码 一.题目描述 二.分析 三.代码 一.题目描述 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code ...
- 腾讯2016校招试题----------格雷码的实现
问题:产生n位元的所有格雷码. 格雷码(Gray Code)是一个数列集合,每个数使用二进位来表示,假设使用n位元来表示每个数字,任两个数之间只有一个位元值不同. 例如以下为3位元的格雷码: 000 ...
- 4位格雷码的顺序编码_能通俗地讲解一下格雷码的编码规则吗?
展开全部 你先写好二进制的数,比如二进制的0110,对应的四位格雷码就是:右数第一62616964757a686964616fe4b893e5b19e31333365656562位的0和右数第二位的1 ...
最新文章
- SAP到SAP的升级 --- SAP行业新的金矿
- MemoryStream的一些问题
- 51nod 1272 最大距离 O(nlog(n)) , 快排 , 最大连续子串
- 微信团队分享:微信移动端的全文检索多音字问题解决方案
- Qt场景中图形项的删除
- c# 添加防火墙例外端口_C#添加删除防火墙例外(程序、端口)
- kubernetes视频教程笔记 (15)-RC、RS和Deployment的关联
- DIY手动定制一个属于自己的软件安装管理器工具盘[一]
- 旧手机物联网_为了能让你的智能手机用十年,他们给旧手机做了一个操作系统...
- redis获取哈希类型的值,hget、hmget、hgetall
- python输入某年某月某日是一年的第几天_Python小例子——输入某年某月某日,判断这一天是这一年的第几天...
- CES Asia:MR混合现实引发行业热议
- 【转】微信小程序日期时间选择器(年月日时分秒)
- 初涉网络,自己对服务器的一些基础理解
- 搞ERP的和搞低代码的别鸡同鸭讲,还是走着瞧吧
- 火狐和IE之间的区别
- [整理]几个好的嵌入式linux学习网站和博客
- 5G+AIoT,如何改变我们的智慧生活?
- gige 摄像头 linux,海康Gige摄像头搭建过程
- 如何用Python蹭WiFi密码,太刺激了!
热门文章
- 阿克曼函数的c语言,C语言,关于阿克曼函数非递归实现的一点拙见
- plsql developer 64位oracle,手把手教你Plsql developer连接64位Oracle
- 2020年美赛C题(数据分析题)O奖论文笔记 (2)
- 大数据入门介绍和学习路线
- Java练手项目-王者荣耀项目源码分享!
- 一个牛人给JAVA初学者的建议【转】
- oracle instant client 配置,oracle instantclient配置
- PHP输出100以内的质数(包括普通写法和数组形式输出)
- 联想电脑杜比音效--低音炮配置图
- qq空间相册查看器_python爬虫抓取QQ空间相册中的照片和视频