此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。
此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。
本文首发于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)与二进制编码转换相关推荐

  1. gray code java_格雷码Gray Code详解

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

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

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

  3. LeetCode(89):格雷编码 Gray Code(Java)

    2019.7.19 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 智力题,本题的关键在于搞清楚格雷编码的生成过程, G(i) = i ^ (i/2). 如 n = 3: G( ...

  4. 格雷码与普通二进制码的相互转换——学习笔记

    文章目录 格雷码 普通二进制码转换成格雷码 格雷码转换成普通二进制码 进一步 Reference 文章中内容与图片大部分来自Reference,本文只是以方便自己理解的方式进行整理. 格雷码 在一组数 ...

  5. Gray Code(格雷码) C++多方法实现

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

  6. 【基础知识】~ 进制转换、补码、格雷码、BCD码、独热码

    1. 进制转换 1.1 十进制 to 二进制 正整数转二进制:除二取余,然后倒序排列,高位补零. 负整数转二进制:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一. 小数转二进制:对小 ...

  7. java 递归生成格雷码_格雷码的递归生成

    问题:产生n位元的全部格雷码.html 格雷码(Gray Code)是一个数列集合,每一个数使用二进位来表示,假设使用n位元来表示每一个数字,任两个数之间只有一个位元值不一样. 例如如下为3位元的格雷 ...

  8. 腾讯---生成格雷码

    腾讯-生成格雷码 文章目录 腾讯---生成格雷码 一.题目描述 二.分析 三.代码 一.题目描述 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code ...

  9. 腾讯2016校招试题----------格雷码的实现

    问题:产生n位元的所有格雷码. 格雷码(Gray Code)是一个数列集合,每个数使用二进位来表示,假设使用n位元来表示每个数字,任两个数之间只有一个位元值不同. 例如以下为3位元的格雷码: 000 ...

  10. 4位格雷码的顺序编码_能通俗地讲解一下格雷码的编码规则吗?

    展开全部 你先写好二进制的数,比如二进制的0110,对应的四位格雷码就是:右数第一62616964757a686964616fe4b893e5b19e31333365656562位的0和右数第二位的1 ...

最新文章

  1. SAP到SAP的升级 --- SAP行业新的金矿
  2. MemoryStream的一些问题
  3. 51nod 1272 最大距离 O(nlog(n)) , 快排 , 最大连续子串
  4. 微信团队分享:微信移动端的全文检索多音字问题解决方案
  5. Qt场景中图形项的删除
  6. c# 添加防火墙例外端口_C#添加删除防火墙例外(程序、端口)
  7. kubernetes视频教程笔记 (15)-RC、RS和Deployment的关联
  8. DIY手动定制一个属于自己的软件安装管理器工具盘[一]
  9. 旧手机物联网_为了能让你的智能手机用十年,他们给旧手机做了一个操作系统...
  10. redis获取哈希类型的值,hget、hmget、hgetall
  11. python输入某年某月某日是一年的第几天_Python小例子——输入某年某月某日,判断这一天是这一年的第几天...
  12. CES Asia:MR混合现实引发行业热议
  13. 【转】微信小程序日期时间选择器(年月日时分秒)
  14. 初涉网络,自己对服务器的一些基础理解
  15. 搞ERP的和搞低代码的别鸡同鸭讲,还是走着瞧吧
  16. 火狐和IE之间的区别
  17. [整理]几个好的嵌入式linux学习网站和博客
  18. 5G+AIoT,如何改变我们的智慧生活?
  19. gige 摄像头 linux,海康Gige摄像头搭建过程
  20. 如何用Python蹭WiFi密码,太刺激了!

热门文章

  1. 阿克曼函数的c语言,C语言,关于阿克曼函数非递归实现的一点拙见
  2. plsql developer 64位oracle,手把手教你Plsql developer连接64位Oracle
  3. 2020年美赛C题(数据分析题)O奖论文笔记 (2)
  4. 大数据入门介绍和学习路线
  5. Java练手项目-王者荣耀项目源码分享!
  6. 一个牛人给JAVA初学者的建议【转】
  7. oracle instant client 配置,oracle instantclient配置
  8. PHP输出100以内的质数(包括普通写法和数组形式输出)
  9. 联想电脑杜比音效--低音炮配置图
  10. qq空间相册查看器_python爬虫抓取QQ空间相册中的照片和视频