时序逻辑与之相对应的便是组合逻辑了,那么怎么区分组合逻辑和时序逻辑呢?
(1)组合逻辑:组合逻辑的输出仅仅只与当前的输入有关;组合逻辑的描述方法一般有两种描述方法,一种是assign直接复制语句进行描述;另一种则是用always块进行描述;
(2)时序逻辑:时序逻辑的输出不仅仅只于当前的输入有关,而且还跟上移状态有关;在verilog中时序逻辑的描述方法都用always块进行描述;
(3)always块都可以描述组合逻辑和时序逻辑,他们之间有什么相同点和不同点吗?
不同点(1):在功能描述中always@(敏感列表),看敏感列表中是什么类型是触发,如果是时钟边沿触发always@(posedge clk or negedge res_n),则一定是时序逻辑,如果是电平触发always@( * )或always@(a or b or ...),则是时序逻辑,这个( * )表示敏感列表中应该包含的所有电平触发信号,一般这样表示,防止漏写信号!
不同点(2):always块描述组合逻辑时候,赋值语句一般应该使用“=”(阻塞赋值语句)进行赋值;always块描述时序逻辑时候,赋值语句一般应该使用“<=” or ">="(非阻塞赋值语句)进行赋值;