每当 dis_data有变化就产生一个 高脉冲该怎么写啊

2020-02-03 11:07发布

每当  dis_data有变化就产生一个 高脉冲该怎么写啊
我知道我这个写的是不对的,只是做个示范
always @(dis_data)
begin
        start <= 1'b0;
        start <= 1'b1;
        start <= 1'b0;
end


assign start = (dis data1 != dis_data)?1'b1:1'b0;这个也是不行的,因为脉冲宽度不可控。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
hqbenson
2020-02-04 05:27
如果非要用组合逻辑那只能用偶数个非门打一下延迟后输出再与原信号异或一下了:
(*sythesis,keep*)wire not1,not2,not3,not4;
assign not1=~dis_data;
assign not2=~not1;
assign not3=~not2;
assign not4=~not3;
assign pulse=dis_data^not4;
脉冲宽度取决于非门个数和走线延迟,不过也只有几个ns。你输出的信号要是想要给后面的电路捕捉的话那会很不好使,而且宽度要大的话是会消耗大量资源的。所以是建议用个寄存器更好更灵活。

一周热门 更多>