atom100 发表于 2014-12-30 16:32:11

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高电平?

chenchaoting 发表于 2014-12-30 16:40:25

你这属于异步电路,可以考虑在后面datavalid用时钟打两拍

far_infrared 发表于 2014-12-30 17:00:58

如果进多路器和出多路器的数据用的是同一个时钟,问题不大。综合后还得看时序报告,看有没有时序方面的严重警告。

全频阻塞干扰 发表于 2015-1-1 00:47:59

我感觉和你的num有关,如果num使用独热码,问题就不大

xieyudi 发表于 2015-1-1 01:02:04

这个输出没有用寄存器缓冲, 可能会有毛刺

我以前做VGA输出时, 侥幸直接异步输出, 结果屏幕上怎么调都有坏线. 后来整个输出都加了一级寄存器同步, 就解决了.

zxq6 发表于 2015-1-1 01:23:44

xieyudi 发表于 2015-1-1 01:02
这个输出没有用寄存器缓冲, 可能会有毛刺

我以前做VGA输出时, 侥幸直接异步输出, 结果屏幕上怎么调都有坏 ...

一直都听说通过寄存器缓冲,就是不知道怎么写代码,能不能麻烦写个样例看看,谢谢!

liandao 发表于 2015-1-1 09:44:14

单纯的case是组合逻辑,冒险和竞争会存在的,其后加一级时钟锁存就基本上能解决。 最近就发现一个案例:一个FPGA做地址译码,在上一个版本的PCB没发现有问题,后来改了一些布线后,发现了问题,FPGA译码输出端加示波器探头测试时就不出异常,但一旦去掉探头,就异常。 这么弄搞得就没法看到毛刺,也就似乎没法确认,想了个办法抓毛刺信号:改FPGA逻辑,把组合逻辑译码复制输出到一个FPGA空引脚,示波器抓这个引脚信号,确实就发现有毛刺,解决问题的方法是:输出补焊33pF电容,或者FPGA逻辑内部对组合逻辑加时钟锁存后再输出。

hantnt 发表于 2015-1-2 02:07:22

zxq6 发表于 2015-1-1 01:23
一直都听说通过寄存器缓冲,就是不知道怎么写代码,能不能麻烦写个样例看看,谢谢!
...

就是用同步时钟电路的意思,即用一个内部时钟沿采样输入信号

advantech 发表于 2015-1-14 13:15:59

这个问题以前还没有考虑过哦。
页: [1]
查看完整版本: verilog 的case多路数据通道切换,是否需要考虑信号稳定性?