fpga中“=”和“<=”有什么区别6
发布网友
发布时间:2023-10-10 17:29
我来回答
共1个回答
热心网友
时间:2024-12-03 16:05
阻塞型赋值的操作符是等号“=”,阻塞型赋值的名称由来是因为阻塞型赋值使赋值过程不会被其他语句所打断,阻塞了其他赋值操作直到当前的赋值过程结束。等号右端表达式立刻赋值给等号左端变量。不过当等号右端表达式有时延时是例外的,例如:
a = #5 b;
当延迟5个时间单位后b给a(这种写法只能用来写测试激励)。
在一个always块中,阻塞型赋值语句操作完后才允许其他语句执行,这样容易产生一个问题:当等号“=”右端操作符在另一个always块中是左端变量时,两个赋值操作就是同时进行的!
非阻塞型赋值的操作符是小于等于号“<=”,非阻塞型赋值语句的名称由来是因为非阻塞型赋值的操作在一个时刻开始时被赋予左端表达式,而在这一时刻结束时左端表达式才更新。在此过程中不影响其他赋值语句的操作。例如:
阻塞型赋值可以当做一步操作;而非阻塞型赋值可以当做两步操作:在某一时刻开始赋值;在赋值过程结束后更新。
非阻塞型赋值只能用于寄存器型变量,所以只能用在块操作中,例如“initial”和“always”,非阻塞型赋值不能被assign赋值。