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

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

3天内不再提示

为什么格雷码可以辅助解决多bit跨时钟域的问题​?求解

傅里叶的猫 来源:无界逻辑 2024-03-08 09:02 次阅读

为什么格雷码可以辅助解决多bit跨时钟域的问题?读完这篇文章,你就会进一步了解事情的本质。

重要的事情讲三遍,由前文可知:

单bit通过两级同步打拍可以有效的解决亚稳态问题。

单bit通过两级同步打拍可以有效的解决亚稳态问题。

单bit通过两级同步打拍可以有效的解决亚稳态问题。

格雷码是一种反射二进制码编码方式,它两个连续的值只相差一位(二进制数字)。它属于一种被称为最小变化码的代码,在这种代码中,相邻的两个码字中只有一个比特发生变化。这是一个未加权的代码,这意味着没有为位置分配特定的权重。

生成方式如下图所示

8b31f5d6-dce5-11ee-a297-92fbcf53809c.png

4位宽格雷码与十进制二进制的对应关系如下:

Decimal Binary Gray
0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0010
4 0100 0110
5 0101 0111
6 0110 0101
7 0111 0100
8 1000 1100
9 1001 1101
10 1010 1111
11 1011 1110
12 1100 1010
13 1101 1011
14 1110 1001
15 1111 1000

如4bit的格雷码一头一尾也是两个相邻码,一个是0000,一个是1000,它们的变换也是只有1bit。是不是很熟悉。对头,“如果是单bit变化的话,可以采用两级打拍的方式进行时钟域同步”。

按照这个思路,我们是不是可以将多bit数据转换为格雷码?然后采用两级打拍的方式同步呢?如果源数据是递增的方式,可以考虑这种处理方式的可能性。如果源数据也是变化无常的,则这种思路就只能嘎然而止了。

二进制转格雷码的方法:

GrayCode最高位G[N]等于二进制码最高位B[N],GrayCode第n位等于二进制码B[n+1]位异或二进制码B[n]位。

以4位宽码字为例,RTL图如下:

8b4eaca8-dce5-11ee-a297-92fbcf53809c.png

格雷码转二进制码的方法:

二进制码最高位B[N]等于格雷码最高位G[N],二进制码第n位B[n]等于二进制码B[n+1]位异或格雷码第n位G[n]。

以4位宽码字为例,RTL图如下:

8b56751e-dce5-11ee-a297-92fbcf53809c.png

那么,异步FIFO是如何通过格雷码,实现跨时钟域高效处理的呢?我们下期再讲。

你是否有所收获?你肯定可以参考上述原理和电路,写出二进制与格雷码之间的verilog转换代码。

module B2G #(
   parameter N = 4
(
input    [N-1:0]  B,
output  reg  [N-1:0]  G
);


integer i;
always @(*) begin
  G[N-1]  = B[N-1];
  for(i=N-2; i>=0; i=i-1) begin
    G[i] = B[i+1] ^ B[i];
  end
end


endmodule

module G2B #(
   parameter N = 4
(
input    [N-1:0]  G,
output  reg  [N-1:0]  B
);


integer i;
always @(*) begin
  B[N-1]  = G[N-1];
  for(i=N-2; i>=0; i=i-1) begin
    B[i] = B[i+1] ^ G[i];
  end
end


endmodule




审核编辑:刘清

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

    关注

    2

    文章

    795

    浏览量

    41643
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43648
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59761
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13185
  • 时钟域
    +关注

    关注

    0

    文章

    52

    浏览量

    9535

原文标题:为什么格雷码可以辅助解决多bit跨时钟域的问题​?

文章出处:【微信号:傅里叶的猫,微信公众号:傅里叶的猫】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于时钟信号的处理方法

    我在知乎看到了bit信号时钟的问题,于是整理了一下自己对于时钟
    的头像 发表于 10-09 10:44 6155次阅读

    异步FIFO设计之

    相邻的只有1bit的差异,因此常常用于异
    的头像 发表于 11-01 17:37 1407次阅读
    异步FIFO设计之<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来处理bit数据的时钟,相信大家还是可以理解的。当然,在能使用异步
    发表于 02-21 07:00

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

    。对于使用异步双口RAM来处理bit数据的时钟,相信大家还是可以理解的。当然,在能使用异步
    发表于 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>是如何判断读空写满呢?

    CDC单bit脉冲时钟的处理介绍

    ,基本原理就是把脉冲信号进行展宽。 脉冲同步器应用场景: 适用单bit脉冲信号时钟。慢到快,快到慢均可,源脉冲间隔至少要为2个目的时钟
    的头像 发表于 03-22 09:54 3509次阅读

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

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

    FPGA时钟处理方法(二)

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

    FPGAbit时钟(一)

    FPGAbit时钟适合将计数器信号转换为
    的头像 发表于 05-25 15:21 2752次阅读
    FPGA<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>(一)

    CDC时钟处理及相应的时序约束

    CDC(Clock Domain Conversion)时钟分单bitbit传输
    的头像 发表于 06-21 14:59 1825次阅读