多bit数据传输中出现的不定态问题及格雷码编解码电路的Verilog实现

本文探讨了多Bit数据传输中出现的不定态问题,其原因是时钟信号不同步导致的。通过时钟树综合可以减少这种现象,而格雷码编码则能有效避免不定态,因为它确保每次数据变化只有一位发生变化。提供了Verilog实现的格雷码编解码代码。
摘要由CSDN通过智能技术生成

不定态

多Bit数据传输过程中出现的不定态

在实际的仿真过程中,当寄存器的输出由X变到Y时,中间会有一小段的毛刺状态。下图便展示了当8位寄存器的输出由“0111_1111”变化到“1000_0000”时,过渡部分出现的不稳定状态。如果将不稳定态部分放大,可以看到这些看似毛刺的部分实际上也有着确定的取值。
亚稳态
我们将变化过程中出现的不定态的数值转化为二进制,例如0x7e、0x76对应的二进制表示分别为8’b0111_1110、8’b0111_0110. 这样,我们便可以写出数据自初始的8’b0111_1111开始的变化过程:

0111_1111 -> 0111_1110 -> 0111_0110

经过观察,我们发现:在这个过程中,每次只有1 bit 的数据发生了变化!

再观察变化过程中的数据按位展开的波形图,结果佐证了我们的发现。

展开

那么,为什么会出现这种现象呢?

实际上,电路中的存储多Bit数据的寄存器也是由多个单bit寄存器组合起来构成的。例如,一个8位的数据就需要8个单bit寄存器的组合进行储存。一个单bit寄存器,实际上就是一个DFF,它在时钟的上升沿更新内部的数据并进行储存,直到下一个时钟上升沿的到来。在理想的电路中,时钟信号源到每个DFF的时钟端的时刻应该是相同的,这样就可以保证电路中的所有DFF可以在同一时刻更新数据。然而,实际电路中并非如此。

下图展示了一个实际电路中的时钟信号连接情况。可以看到,时钟源到每个DFF之间的连线距离并非是严格等长的。这就会产生一个问题:时钟信号到每个DFF的时钟端的时间有先有后,DFF中数据的变化也有先有后。由此,便产生了我们在上文中发现的现象:由于线延迟导致多bit寄存器中每个bit的数据并非严格同时刻发生变化,也就产生了不定态。
时钟

如何消除不定态

时钟树综合

上文已经提到,这种亚稳态的产生是由于时钟信号源到每个DFF的连线并非严格等长造成的。那么,我们就可以通过人工手段进行干预

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值