请大家帮忙啊

2019-07-16 02:17发布

我想让下面的程序输出一个单脉冲,但是为什么没有输出啊
/*将时钟分频后作为新的时钟*/
module wide_pulse(
input wire pulse,
input wire clk,
input wire clr,
//output  wire clk_in,
output  reg clk_out,
output  wire outpw
);

reg delay1;
reg delay2;
reg delay3;

always @(posedge clk)           //意在对时钟信号进行分频处理
           begin
              if(!clr)
                  clk_out=0;
              else
                  clk_out=~clk_out;
           end

always @ (posedge clk_out or posedge clr)
begin
   if(clr==1)
      begin
         delay1<=0;
         delay2<=0;
         delay3<=0;
      end
    else
      begin
         delay1<=pulse;
         delay2<=delay1;
         delay3<=delay2;  
      end
end
assign outpw=delay1 & delay2 & ~delay3;   

endmodule
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
panjm123
1楼-- · 2019-07-16 05:28
代码有问题 我帮你看看
ideabean
2楼-- · 2019-07-16 10:15
楼主初学?
这段代码问题比较多,出不来“单”脉冲问题有
1、逻辑问题, assign outpw=delay1 & delay2 & ~delay3;  改成 outpw=delay1 & ~delay2 即可。
2、复位问题,前一段always低电平复位,后一段高电平复位,也就是说clr不管是置高还是拉低,都有一个模块一直出于复位状态,结果就是。。。没结果。
对于复位还需提一点,楼主的两段always前一段用的是同步复位,后一段用异步复位。
在FPGA里的寄存器一般都带异步复位,所以建议在没有特殊需求的情况下统一用异步复位,可以节约资源。
北山老树
3楼-- · 2019-07-16 16:06
ideabean 发表于 2012-5-19 18:39
楼主初学?
这段代码问题比较多,出不来“单”脉冲问题有
1、逻辑问题, assign outpw=delay1 & delay2 & ~ ...

谢谢啦

一周热门 更多>