verilog实现格雷码(Gray Code)与二进制编码转换

此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。
此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。
本文首发于CSDN,版权所有,禁止转载。
如需转载,请在评论区留言或私信申请,经同意后可转载,否则属于侵权行为

原博客链接:https://blog.csdn.net/qq_38305370
原博主昵称:城外南风起
————————————————

格雷码(Gray Code)相邻的2个数值之间只会有一位发生变化,其余各位都相同。在异步FIFO中,跨时钟域传输读写指针会使用格雷码,从而大幅降低亚稳态概率,具体原因可以参考我的文章《跨时钟域传输的黄金搭档:异步FIFO与格雷码》

格雷码的原理和编码方式可参考[1]。

本文以3bit数据为例。

二进制码转格雷码

代码:

module bin2gray(
	input [2:0] bin,
	output [2:0] gray
	);

    reg[2:0] gray,temp;
    
    always @(*) begin
        temp = (bin >> 1);
        gray[2] = bin[2];
        gray[1:0] = temp[1:0] ^ bin[1:0];
    end
    	
endmodule

格雷码转二进制码

代码:

module gray2bin(
	input [2:0] gray,
	output [2:0] bin
	);
        assign  bin[2] = gray[2];
         
    generate
    genvar i;
        for(i=0;i<2;i=i+1) begin:g2b
            assign bin[i] = gray[i]^bin[i+1];
        end
    endgenerate
	
endmodule

testbench

代码:

`timescale 1ns / 1ps

module bin2gray_tb();
  reg [2:0] bin_data;
  wire [2:0] gray_data;
  wire [2:0] out;

  initial
	  begin
	      bin_data = 0;
	      
	      #200 $stop;
	  end
	  
  always #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.

————————————————
感谢您的阅读,如果您有收获,请给我一个三连吧!
如果您觉得这还不够,可以点击 打赏 按钮,告诉我: 你币有了!

我是城外南风起,欢迎关注我的公众号【木叶芯】。

在这里插入图片描述

木叶飞舞之处,火亦生生不息。

  • 1
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城外南风起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值