求助:模块输出问题
时间:10-02
整理:3721RD
点击:
我写了一个模块,输出延迟9个时钟,测试在第一个有效时钟沿时灌一组数据进去,延迟9个时钟后输出是正确的,但若同时在第一个有效时钟沿和第二个有效时钟沿灌两组数据进去,分别在第9和第10个时钟后输出数据,问题是:第一组的数据输出就完全变了,第二组数据的输出也只有部分是正确的,请教大家,这是什么原因呢?求解!谢谢!
很明显的竞争冒险啊,一般在输出稳定之前输入不允许变化,不知你为什么非得灌两组数据进去?
因为别的模块给的输入,就是一个时钟给一组,那这个冒险竞争该怎么改正呢?
你把这两个输入分开试试,要么输入时差大于9个时钟,要么把9改为0.
嗯,好的,我试试
是异步时钟
我两个输入之间隔了9个时钟周期后,输出是对的了,但是隔2个时钟周期还是不对。我只用了一个时钟啊?楼上能解释一下吗?谢了~
顶下,等热心人解答!今天测试了一天,结果是只能输入相隔9个时钟才会输出正确结果,但是这样的话输出时延太大了
期待有高人来啊
八成是你的电路设计有问题
看看你的输出是否与当前输入有关系
电路整成pipeline。
我测试的结果是,输入相隔3个时钟的时候,输出才是对的
应该是锁存使能逻辑出了问题,存在数据覆盖或者锁存时机不对的问题。建议1:自己仿真,看波形就很清楚了;建议2:把代码贴上来,这个代码应该不复杂。
代码有点多,四百行,不好贴,谢谢楼上的建议;
我怀疑是最后一个模块出了问题:这个模块有两个输入,比如分别叫A和B,其中B是A产生后3个时钟才产生的,同时A又是逻辑的,是不是这里的问题呢?我正在把A变成时序的,再测
