组合逻辑实现的两种方法
第一种方法:
always @(电平敏感信号列表)
首先,模块内部可以使用if、case等语句,一般建议使用阻塞赋值语句且赋值操作使用符号"="
再者,always模块中信号必须定义成 reg 类型,但这也仅仅是语法要求,在实际实现中仍然是 wire 类型
第二种方法:
assign描述的赋值语句,但这只能是wire类型
时序逻辑的实现方法
always @(posedge/negedge 信号) begin
...
end
1.时序逻辑中的always定义的 reg 型信号都被综合成 reg (寄存器),一般建议使用非阻塞赋值操作 “<=”,但是要注意并行执行的语句可能会带来的delay_cycle的问题
举个例子:
always @* ...begin a <= b; end always @* ...begin c <= a; end
上面语句在执行的过程中一般是认为b的值赋给了a,a原来的值赋给了c,但是在验证的操作的时候就会有时间差的问题,如果上面执行的快一点那么c的值就可能是b了,在对不同的环境下执行可能也有不同的执行结果
2.敏感变量表中只要有时钟沿的变化即可,即每次触发输出变化都是时钟沿引起的