Verilog中的过程赋值是指在initial或always语句块中对寄存器、整数、实数等变量进行的赋值操作,它包含阻塞赋值与非阻塞赋值两种类型。
1. 阻塞赋值: 定义:阻塞赋值属于顺序执行,确保在下一条语句执行前当前语句已经完成。 符号:使用等号作为赋值符号。 应用场景:适用于initial语句块中的赋值操作,或在需要顺序执行的逻辑中使用。 特点:在执行完当前语句后,才会继续执行下一条语句,因此可能会阻塞后续操作。
2. 非阻塞赋值: 定义:非阻塞赋值是并行执行的,不会阻塞后续操作,所有非阻塞赋值语句会在同一仿真时刻同时完成。 符号:使用小于等于号作为赋值符。 应用场景:主要用于always语句块中,特别是在描述硬件电路中的时序逻辑时。 特点:能够避免竞争冒险问题,使得在多个always块中描述复杂时序逻辑时更加直观和简单。
注意事项: 在实际的Verilog代码设计中,应避免在同一过程结构中混合使用阻塞赋值和非阻塞赋值,以避免复杂的时序控制问题和意外结果。 一般情况下,总是逻辑块中使用阻塞赋值,组合逻辑块中使用非阻塞赋值。 在仿真时,initial块中多用阻塞赋值。