|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
越是看似简单、经常接触的。我们越是不知其所以然。
阻塞赋值“=”与非阻塞赋值“<=”的本质区别在于:非阻塞赋值语句右端表达式计算完后并不立即赋值给左端,而是同时启动下一条语句继续执行,我们 可以将其理解为所有的右端表达式RHS1、RHS2等在进程开始时同时计算,计算完后 ,等进程结束时同时分别赋给左端变量LHS1、LHS2等。
而阻塞赋值语句在每个右端表达式计算完后立即赋给左端变量,即赋值语句LHS1=RHS1执行完后LHS1是立即更新的,同时只有LHS1=RHS1执行 完后才可执行语句LHS1=RHS2,依次类推。前一条语句的执行结果直接影响到后面语句的执行结果。
非阻塞赋值不能用于“assign”持续赋值中。阻塞赋值则既能用于“assign”持续赋值,也能用于“initial”和“always”等过程块 中,阻塞赋值则即能用于“assign”持续赋值,也能用于“initial”和“always”等过程赋值中。对于时许逻辑描述和建模,应尽量使用非阻塞赋值方式。
当用“always”块来描述组合逻辑时,既可以用阻塞赋值,也可以采用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值,虽然同时使用这两种赋值方式在综合时并不一定会出错。
在向函数(function)的返回值赋值时,应使用阻塞赋值“=”。
不能在一个以上的“always”过程块中对同一个变量赋值,这样会引起冲突,在综合时会报错。
在一个模块中,严禁对同一个变量既进行阻塞赋值,又进行非阻塞赋值,这样在综合时会报错。
对时序逻辑描述和建模,应尽量使用非阻塞赋值方式,此外,若在同一个“always”过程块中描述时序和组合逻辑混合电路时,也最好使用非阻塞赋值方式。
请仔细阅读权威论文的讲解。 |
|