- 论坛徽章:
- 3
|
我们再假设信号极其恶劣的情况下,怎么办?
人的想象力是无穷的,我们可以想到占空比的手段,这个多少有点搞笑,但它真的很安全!!!
- module catch_posedge(rst,clk,sig_posedge,sig);
- input rst,clk,sig;
- output sig_posedge;
- reg sig_posedge;
- parameter COUNT_WILDTH=5;
- parameter REG_WILDTH=2**(COUNT_WILDTH-1);
- reg [REG_WILDTH-1:0]sig_reg;
- reg [COUNT_WILDTH-1:0]count;
- reg [COUNT_WILDTH-1:0]count2;
- always@(posedge rst or posedge clk)
- if(rst)
- sig_reg<=-1;
- else
- sig_reg<={sig_reg[REG_WILDTH-2:0],sig};
- always@(posedge rst or posedge clk)
- if(rst)
- begin
- count <= REG_WILDTH;
- count2 <= REG_WILDTH;
- end
- else
- begin
- count2 <= count;
- count <= count +sig-sig_reg[REG_WILDTH-1];
- end
- always@(posedge rst or posedge clk)
- if(rst)
- sig_posedge <= 1'b0;
- else if(count2<= 3*(2**(COUNT_WILDTH-3))&& count > 3*(2**(COUNT_WILDTH-3)))
- sig_posedge <= 1'b1;
- else
- sig_posedge <= 1'b0;
- endmodule
复制代码 |
|