atom100 发表于 2014-11-2 13:04:15

时序逻辑里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 后的变量表里 ??

kerenyang 发表于 2014-11-2 19:55:38

时序逻辑不要 ,组合逻辑要写的

far_infrared 发表于 2014-11-3 11:14:39

你要搞清楚同步和异步的区别,你上面的rst_n相对于CLK来说是异步的,而其他变量是需要CLK来才能采样,也就是说只要rst_n为低,不管有没有CLK,data_cnt都是等于0,这个相对于触发器的异步复位信号。

tangkuan660 发表于 2014-11-5 10:21:37

楼上说的很有道理,如果不加,对于sig1key1key2为与clk同步的采样,如果加了,则为异步的采样,用逻辑来实现了。
页: [1]
查看完整版本: 时序逻辑里always后的变量表问题 ?