VHDL中<=和:=之间有什么区别?

Jiv*_*van 10 embedded logic vhdl colon-equals

目前,我正在学习一些使用VHDL的FPGA设计技术,我的问题是我们是否可以在VHDL中使用:=和<=可互换,尽管我已经看到在常量声明中使用:=和<=在赋值中?提前致谢!

wjl*_*wjl 14

规则比这复杂一点,但基本上:你<=用来做信号分配,它会在下一个增量循环中生效.您:=用来执行变量赋值,它会立即发生.所以如果你有信号,你总是使用<=.如果你有一个变量,你总是使用:=.

在某些地方,这种情况并不常见,例如初始化,:=甚至用于信号.

所以:

signal some_signal : std_logic := '0'; -- 0 initial value
...
variable some_variable : std_logic := '0'; -- 0 initial value
...
some_signal <= '1'; -- will assign 1 at the next time step (delta cycle)
...
some_variable := '1'; -- assigns 1 immediately
Run Code Online (Sandbox Code Playgroud)

  • `&lt;=` 用于信号,`:=` 用于变量,除了初始值都使用 `:=` (2认同)