0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA多bit跨时钟域之格雷码(二)

CHANBAEK 来源:FPGA自学笔记分享 作者:FPGA自学笔记分享 2023-05-25 15:22 次阅读

上一篇文章我们讲了二进制转gray码,这次我们聊一下gray码转二进制码。

格雷码解码:

原码:b[0~n]; 格雷码:g0~n; 解码:b=F(g);

??:b[n]=g[n],b=g XOR bI+1.

图片图片

代码如下:

//============================================================
// File Name: cm_gray2bin
// VERSION  : V1.0
// DATA     : 2022/10/2
// Author   : FPGA干货分享
// ============================================================
// 功能:二级制编码转格雷码
// 
// 原码:b[0~n];格雷码:g[0~n](n∈N);编码:g=G(b);解码:b=F(g);
// 编码:g=b XOR b[i+1](i∈N,0≤i≤n-1),g[n]=b[n];
// 解码:b[n]=g[n],b=g XOR b[i+1](i∈N,0≤i≤n-1).
// 
// ============================================================
`timescale 1ns/1ps
module cm_gray2bin #(
    parameter                         C_DATA_WIDTH = 4 )
    (                  
    input wire                        I_sys_clk    , ///输入时钟
    input wire [C_DATA_WIDTH-1:0]     I_data_gray  , ///输入gray码
    output reg [C_DATA_WIDTH-1:0]     O_data_bin     ///输出二进制数据
    );

// ============================================================
// wire reg
// ============================================================
wire [C_DATA_WIDTH-1:0]     S_data_bin  ;
// ============================================================
// main code
// ============================================================
assign S_data_bin[C_DATA_WIDTH-1]     = I_data_gray[C_DATA_WIDTH-1];
assign S_data_bin[C_DATA_WIDTH-2:0] = I_data_gray[C_DATA_WIDTH-2:0]^S_data_bin[C_DATA_WIDTH-1:1];






always @(posedge I_sys_clk)
    O_data_bin <= S_data_bin;




endmodule

代码综合结果如下:

图片

仿真如下:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593199
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13093
  • bit
    bit
    +关注

    关注

    0

    文章

    47

    浏览量

    31853
  • 时钟域
    +关注

    关注

    0

    文章

    49

    浏览量

    9455
  • 二进制码
    +关注

    关注

    0

    文章

    3

    浏览量

    6085
收藏 人收藏

    评论

    相关推荐

    进制与自然二进制码的互换

    。而绝对式编码器是直接输出数字量的传感器,它是利用自然进制或循环进制()方式进行光电转换的,编码的设计一般是采用自然
    发表于 03-08 14:16

    简介及格进制的转换程序

    简介及格进制的转换程序
    发表于 04-22 09:00

    什么是BCD、8421、余三

    !!余三是在8421BCD的基础上,把每个数的代码加上0011(对应十进制数3)后得到的。的编码规则是相邻的两代码之间只有一位
    发表于 11-03 17:36

    FPGA设计实例】FPGA跨越多时钟

    任务第4部分:数据总线道口顺便说一句,学习约metastablity(或为什么这么的辛勤工作是需要时钟),检查下面的链接 完整资料:[hide][/hide]
    发表于 03-19 15:16

    介绍

    介绍
    发表于 08-14 09:44

    的规则和应用问题?

    今天看到一个计数的程序,搜了下定义,觉得还是云里雾里,定义写的是若任意两个相邻的代码只有一位进制数不同,则这种编码为
    发表于 08-20 14:41

    如何处理好FPGA设计中时钟问题?

    以手到擒来。这里介绍的三种方法时钟处理方法如下:打两拍;异步双口 RAM;转换。01方
    发表于 09-22 10:24

    探寻FPGA中三种时钟处理方法

    以手到擒来。这里介绍的三种方法时钟处理方法如下:打两拍;异步双口 RAM;转换。01方
    发表于 10-20 09:27

    三种时钟处理的方法

    的三种方法时钟处理方法如下:  1. 打两拍;  2. 异步双口RAM;  3. 转换
    发表于 01-08 16:55

    三种FPGA界最常用的时钟处理法式

    时钟处理方法如下:打两拍;异步双口RAM;转换。01方法一:打两拍大家很清楚,处理
    发表于 02-21 07:00

    FPGA初学者的必修课:FPGA时钟处理3大方法

    时钟处理方法如下:打两拍;异步双口RAM;转换。01方法一:打两拍大家很清楚,处理
    发表于 03-04 09:22

    如何处理好FPGA设计中时钟间的数据

    介绍3种时钟处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单bit
    发表于 07-29 06:19

    FPGA时钟处理简介

    (10)FPGA时钟处理1.1 目录1)目录2)FPGA简介3)Verilog HDL简介4)FPG
    发表于 02-23 07:47

    看看Stream信号里是如何做时钟握手的

    popArea里stream.m2sPipe,这个版本效率相较于前者,略低一些:StreamFifoCC这个就没有什么好说的了,通过fifo来实现stream信号的时钟,效率最高,资源相对也会
    发表于 07-07 17:25

    FPGAbit时钟域之格雷码(一)

    FPGAbit时钟域适合将计数器信号转换为格雷码。
    的头像 发表于 05-25 15:21 2037次阅读
    <b class='flag-5'>FPGA</b>多<b class='flag-5'>bit</b>跨<b class='flag-5'>时钟</b>域之格雷码(一)