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

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

3天内不再提示

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

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

FPGA多bit跨时钟域适合将计数器信号转换为格雷码。

格雷码的特点:从一个数变为相邻的一个数时,只有一个数据位发生跳变,

这种特点,就可以将跨时钟域中的多bit跨时钟域转换为单bit跨时钟域,最大限度的提高系统稳定性。

格雷码常用于通信,FIFO 或者 RAM 地址寻址计数器中。

图片

格雷码编码

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

编码:g=b XOR bi+1,g[n]=b[n];

最高位不变,其它位和高1位信号做异或

图片

其代码如下:

//============================================================
// File Name: cm_bin2gray
// 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_bin2gray #(
    parameter                         C_DATA_WIDTH = 4 )
    (                  
    input wire                        I_sys_clk   , ///输入时钟
    input wire [C_DATA_WIDTH-1:0]     I_data_bin  , ///输入二进制数据
    output reg [C_DATA_WIDTH-1:0]     O_data_gray   ///输出二进制数据
    );


// ============================================================
// main code
// ============================================================


always @(posedge I_sys_clk)
    O_data_gray <= I_data_bin ^ (I_data_bin >> 1);




endmodule

代码综合结果如下:

图片

下一篇将介绍gray转二进制及其仿真

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

    关注

    1602

    文章

    21326

    浏览量

    593216
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43069
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13093
  • bit
    bit
    +关注

    关注

    0

    文章

    47

    浏览量

    31853
  • 时钟域
    +关注

    关注

    0

    文章

    49

    浏览量

    9455
收藏 人收藏

    评论

    相关推荐

    简介及格与二进制的转换程序

    于模拟-数字转换[3]和转角-数字转换中[4] 。  典型种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求
    发表于 04-22 09:00

    什么是BCD、8421、余三

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

    FPGA设计中有多个时钟时如何处理?

    FPGA设计中有多个时钟时如何处理?时钟的基本设计方法是:(1)对于单个信号,使用双D触发
    发表于 02-24 15:47

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

    任务第4部分:数据总线道口顺便说句,学习约metastablity(或为什么这么的辛勤工作是需要时钟),检查下面的链接 完整资料:[
    发表于 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时钟域之格雷码(二)

    上一篇文章我们讲了二进制转gray码,这次我们聊一下gray码转二进制码。
    的头像 发表于 05-25 15:22 1297次阅读
    <b class='flag-5'>FPGA</b>多<b class='flag-5'>bit</b>跨<b class='flag-5'>时钟</b>域之格雷码(二)