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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602998
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43648
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13185
  • bit
    bit
    +关注

    关注

    0

    文章

    48

    浏览量

    32011
  • 时钟域
    +关注

    关注

    0

    文章

    52

    浏览量

    9535
收藏 人收藏

    评论

    相关推荐

    FPGA设计中解决时钟的三大方案

    介绍3种时钟处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单bit
    的头像 发表于 11-21 11:13 3865次阅读
    <b class='flag-5'>FPGA</b>设计中解决<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的三大方案

    异步FIFO设计

    相邻的只有1bit的差异,因此常常用于异
    的头像 发表于 11-01 17:37 1407次阅读
    异步FIFO设计<b class='flag-5'>之</b><b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>

    如何处理好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界最常用也最实用的3种时钟处理的方法

    介绍3种时钟处理的方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单bit
    发表于 11-15 20:08 1.4w次阅读

    如何把二进制转换为是如何判断读空写满呢?

    在传递读写时钟的指针使用来传递,如何把二进制转换为
    的头像 发表于 09-15 09:38 8325次阅读
    如何把二进制转换为<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>?<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>码</b>是如何判断读空写满呢?

    揭秘FPGA时钟处理的三大方法

    时钟处理的方法,这三种方法可以说是 FPGA 界最常用也最实用的方法,这三种方法包含了单 bit
    的头像 发表于 12-05 16:41 1643次阅读

    如何解决单bitbit时钟处理问题?

    、简要概述: 在芯片设计过程中,个系统通常是同步电路和异步电路并存,这里经常会遇到CDC也就是时钟处理的问题,常见的处理方法,可能大
    的头像 发表于 03-22 10:28 6804次阅读

    FPGA时钟处理方法()

    时钟FPGA设计中最容易出错的设计模块,而且时钟
    的头像 发表于 05-25 15:06 1986次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(<b class='flag-5'>一</b>)

    FPGA时钟处理方法(二)

    篇文章已经讲过了单bit时钟的处理方法,这次解说
    的头像 发表于 05-25 15:07 1021次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(二)

    FPGAbit时钟(二)

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