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

2019-07-15 22:27发布

每当  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;这个也是不行的,因为脉冲宽度不可控。


我是采集输入信号的变化,最好用组合逻辑实现
如果用时序逻辑实现就会产生一个始终周期的误差。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
LQVSHQ
1楼-- · 2019-07-16 00:30
对dis_data进行边缘检测(上升或下降沿),检测到的话,拉高start,一个时钟后再拉低就行。这个用组合逻辑实现,我是不会
fly1986163
2楼-- · 2019-07-16 04:11
reg [7:0]count=0;
assign start = (count !=1'b0)?1'b1:1'b0;

always @(posage clk)
begin
     if(count==8'd10)count<=1'b0;
    else  if(dis_data||(count!=0))  count<=count+1'b1;
    else count<=count;
end
fly1986163
3楼-- · 2019-07-16 05:33
count的大小就是脉冲宽度。count=1时,就是一个时钟的脉冲宽度。
reallmy
4楼-- · 2019-07-16 09:16
 精彩回答 2  元偷偷看……
reallmy
5楼-- · 2019-07-16 09:22
采双沿 assign = (dis_data_dly != dis_data )

一周热门 更多>