假如在always语句里还要判断一个周期更大的信号边沿怎么办?
always @(posedge CLK10ns)
begin
//如果这里要判断边沿怎么办? 假如signal周期为1000ns
//如果有好几天这样的边沿要判断怎么办? 假如还有一个signal周期为2000ns
end
我知道可以用这种办法得到信号的边沿
assign sig_rx_rst = (~sig_rx_rst2) & (sig_rx_rst1) ;
always @(posedge CLK)
begin
if(RST)
begin
// sig_rx_rst <= 0 ;
sig_rx_rst1 <= 0 ;
sig_rx_rst2 <= 0 ;
end
else
begin
sig_rx_rst0 <= sig_rx_sys_cs ;
sig_rx_rst1 <= sig_rx_rst0 ;
sig_rx_rst2 <= sig_rx_rst1 ;
// sig_rx_rst <= (~sig_rx_rst2) & (sig_rx_rst1) ; //sig_rx_sys_cs的上升沿,sig_rx_rst=1
// sig_rx_rst <= (sig_rx_rst2) & (~sig_rx_rst1) ; //sig_rx_sys_cs的上升沿,sig_rx_rst=1
end
end
但如果需要判断边沿的信号很多,这样做是不是有点麻烦?有没有简单一点的办法?
当然可以直接用
always @(posedge signal)
但很多人都不推荐这种做法,请问这是为什么? |