verilog 的case多路数据通道切换,是否需要考虑信号稳定性?
verilog 的case多路数据通道切换,是否需要考虑信号稳定性 ?out reg data_valid;
out reg data_bus;
case(num)
1:
data_valid= channel1_data_valid;
data_bus = channel1_data_bus;
2:
data_valid= channel2_data_valid;
data_bus = channel2_data_bus;
3:
data_valid= channel1_data_valid;
data_bus = channel1_data_bus;
endcase
data_valid 为高电平的时候,表示data_bus数据有效;
case选择逻辑在各通道之间切换 的时候,data_valid是否会产生毛刺或扰动,造成误发出data_valid高电平? 你这属于异步电路,可以考虑在后面datavalid用时钟打两拍 如果进多路器和出多路器的数据用的是同一个时钟,问题不大。综合后还得看时序报告,看有没有时序方面的严重警告。 我感觉和你的num有关,如果num使用独热码,问题就不大 这个输出没有用寄存器缓冲, 可能会有毛刺
我以前做VGA输出时, 侥幸直接异步输出, 结果屏幕上怎么调都有坏线. 后来整个输出都加了一级寄存器同步, 就解决了. xieyudi 发表于 2015-1-1 01:02
这个输出没有用寄存器缓冲, 可能会有毛刺
我以前做VGA输出时, 侥幸直接异步输出, 结果屏幕上怎么调都有坏 ...
一直都听说通过寄存器缓冲,就是不知道怎么写代码,能不能麻烦写个样例看看,谢谢!
单纯的case是组合逻辑,冒险和竞争会存在的,其后加一级时钟锁存就基本上能解决。 最近就发现一个案例:一个FPGA做地址译码,在上一个版本的PCB没发现有问题,后来改了一些布线后,发现了问题,FPGA译码输出端加示波器探头测试时就不出异常,但一旦去掉探头,就异常。 这么弄搞得就没法看到毛刺,也就似乎没法确认,想了个办法抓毛刺信号:改FPGA逻辑,把组合逻辑译码复制输出到一个FPGA空引脚,示波器抓这个引脚信号,确实就发现有毛刺,解决问题的方法是:输出补焊33pF电容,或者FPGA逻辑内部对组合逻辑加时钟锁存后再输出。 zxq6 发表于 2015-1-1 01:23
一直都听说通过寄存器缓冲,就是不知道怎么写代码,能不能麻烦写个样例看看,谢谢!
...
就是用同步时钟电路的意思,即用一个内部时钟沿采样输入信号 这个问题以前还没有考虑过哦。
页:
[1]