时序逻辑里always后的变量表问题 ?
reg data_cnt;always @(posedge CLK or negedge rst_n)
if(!rst_n)
data_cnt <= 5'd0
else if( sig1 &&( key1 || key2 ))
data_cnt <= data_cnt + 5'd4;
如上面代码所示: 当rst_n信号来的 时候,data_cnt 置为0,当sig1信号和 key1key2信号来的时候,开始 累加,
rst_n 写到 后面变量表里了, sig1key1key2 是不是也应该写到always 后的变量表里 ?? 时序逻辑不要 ,组合逻辑要写的 你要搞清楚同步和异步的区别,你上面的rst_n相对于CLK来说是异步的,而其他变量是需要CLK来才能采样,也就是说只要rst_n为低,不管有没有CLK,data_cnt都是等于0,这个相对于触发器的异步复位信号。 楼上说的很有道理,如果不加,对于sig1key1key2为与clk同步的采样,如果加了,则为异步的采样,用逻辑来实现了。
页:
[1]