我开始知道我们可以在程序块中使用赋值语句(就像在always中一样),在always块内部和外部使用“赋值”有什么区别(与合成电路有关)。我的意思是,什么时候绝对有必要在always中使用分配?
小智 6
决不,assign关键字用于连续赋值,它会在综合时生成组合逻辑。事实上,您可以assign通过always块获得行为:
wire test;
//At all times, test equals input
assign test = input;
Run Code Online (Sandbox Code Playgroud)
相当于:
reg test;
//Each time input changes(with the always@*), test takes its value
always@*
test = input;
Run Code Online (Sandbox Code Playgroud)
在always块中,您应该只使用非阻塞赋值('<='),它们是过程赋值。使用阻塞分配是可能的,但是,您必须确保执行您想要的操作。
从这个线程:
据我所知,有两条生活规则,无一例外:
始终对组合或电平敏感代码使用阻塞分配以及时钟分配
对于在时钟边沿写入并在另一个进程中的同一时钟边沿读取的变量,始终使用非阻塞赋值。
| 归档时间: |
|
| 查看次数: |
11335 次 |
| 最近记录: |