这个东西一直记得乱乱的 格雷码转二进制只会铺开写 理一下

1、基本原理:

(1)二进制转格雷码:

格雷码最高位是二进制最高位,然后将二进制最高位和次高位做^

或者简单点 在二进制前补一个0,从左到右与二进制^

(2)格雷码转二进制:

二进制最高位是格雷码最高位,然后将二进制最高位和格雷码次高位做^

或者简单点 在二进制前补一个0,从左到右与格雷码^

2、代码:

(1)二进制转格雷码:

module bin2gray
#(parameter DW = 8
)(input  [DW - 1:0]  bin ,output [DW - 1:0]  gray);assign gray = (bin >> 1) ^ bin; endmodule

(2)格雷码转二进制:

module gray2bin
#(parameter DW = 8
)(input      [DW - 1:0]  gray ,output reg [DW - 1:0]  bin);integer i;
always@(*)beginfor(i = 0;i < DW ;i = i + 1)beginbin[k] = ^(gray >> k); end
endendmodule

放一段代码这,用于参考:

/*Logic to convert binary numbers into Gray coded binary numbers is implemented in the following Verilog Code.
*/
module binary2gray();
reg clk;
reg rstn;
reg [5:0] counter_binary, counter_binary_reg, counter_gray, counter_gray_reg;
integer count, file_wr;

/* Initial block to generate clock and reset */ 
initial  begin
    clk = 0; rstn = 0;  #100 rstn = 1;
    forever begin
        #10 clk = !clk; 
 end end

/* Synchronous Logic for registering the data and incrementing the counter for binary data */
always @ (posedge clk or negedge rstn)
begin
    if (!rstn) begin
        counter_binary_reg <= 'b0;
        counter_gray_reg <= 'b0;  end
    else begin 
        counter_binary_reg <= counter_binary + 1;
        counter_gray_reg <= counter_gray;
        $display("binary number= 6'b%b : gray en-coded binary number = 6'b%b", counter_binary_reg, counter_gray_reg);   end end

/* Logic is to get Gray code from Binary code */
function[5:0] binary2gray ;
    input[5:0] value;
    integer i;
    begin 
        binary2gray[5] = value[5];
        for (i=5; i>0; i = i - 1)
            binary2gray[i-1] = value[i] ^ value[i - 1];
    end
endfunction

/* Get gray encoded output */
always @(*)
begin 
  counter_gray = counter_gray_reg;
  counter_binary = counter_binary_reg;
  counter_gray = binary2gray(counter_binary_reg); end
endmodule

参考:

Verilog 中的 ^ 的用法_李锐博恩的博客-CSDN博客_^ verilog

进阶之路——二进制与格雷码的相互转换模块设计_尼德兰的喵的博客-CSDN博客_格雷码转二进制电路图

【异步FIFO】格雷码和二进制的相互转换相关推荐

  1. 异步FIFO格雷码及同步相关问题?

    零.前言 关于异步FIFO如何设计请参考之前的一篇文章:手写异步FIFO. 关于异步FIFO的空满现象可以参考:你真的理解异步FIFO读写中的空满现象吗? 一.格雷码的作用 格雷码的每两个相邻码字只有 ...

  2. [Verilog]格雷码与二进制码的相互转换

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

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

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

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

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

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

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

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

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

  7. 格雷码与二进制码的相互转换 (python代码实现)

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

  8. 74ls390设计任意进制计数器_异步FIFO:设计原理及Verliog源码

    1.  异步FIFO的概念 异步FIFO为读取与写入采用不同的时钟,使用异步FIFO用于在不同的时钟域传输数据,主要用于跨时钟域传输多bit数据. 2.  异步FIFO的设计难点 同步异步信号,避免亚 ...

  9. chisel格雷码二进制转换

    一.格雷码简介 格雷码是一个叫弗兰克*格雷的人在 1953 年发明的,最初用于通信.格雷码是一种循环二进制码或者叫作反射二进制码.格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于 ...

  10. 02【Verilog实战】异步FIFO设计(附源码RTL/TB)

    脚 本:makefile 工 具:vcs 和 verdi 文 章:1. 同步FIFO的设计和功能验证(附源码)     2. Verilog的亚稳态现象和跨时钟域处理方法 写在前面 这个专栏的内容记录 ...

最新文章

  1. 防止熊猫烧香的微软补丁
  2. Linux 用户管理命令id、su
  3. linux语言的说明顺序有哪些,(linux常用头文件详解.doc
  4. java分布式锁工具类_java 通过redis实现分布式锁
  5. 使用LXCFS实现容器资源的视图隔离
  6. 1.几大开发模型区别与联系
  7. 程序员面试时自称字节跳动工作两年,被发现学历造假,结果蒙了
  8. 关于Eclipse的常用快捷键
  9. 上海链家二手房交易数据分析
  10. centos7 ies4linux,Ubuntu 7.10中通过IEs4linux安装IE6
  11. win7计算机怎么初始化,win7怎么初始化电脑 win7初始化电脑步骤
  12. Word2010经常莫名其妙无法撤销
  13. B站风清扬-Java面试总结
  14. echarts 全国各省市地图切换展示
  15. JavaScript整理
  16. 罪恶黑名单第一季/全集The Blacklist迅雷下载
  17. 英语学习网站超级大全
  18. Oblique Frustum Clipping
  19. Vue 移动端项目创建
  20. 关于视频修改md5问题!

热门文章

  1. knockoutjs 读源码
  2. linux支持hd610显卡吗,HD610和UHD630区别大吗 UHD630对比HD610的区别
  3. amd opencl使用低版本驱动
  4. JAVA中文件下载和文件批量下载方法
  5. HCIP 3-4月考试战报
  6. Arcgis3_地图符号制作与地图数据符号化
  7. SSM框架原理以及流程简略
  8. 虚拟化服务器杀毒软件,虚拟机需要安装杀毒软件吗
  9. scratch3.0接苹果小游戏
  10. 虚幻引擎UE4源码编译安装(x86,arm64平台)