FPGA 学习小组
直播中

alexdos

6年用户 804经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术 模拟技术
私信 关注

【FPGA学习】Verilog HDL的过程性赋值如何写

过程性赋值是在 initial 语句或 always 语句内的赋值,它只能对寄存器数据类型的变量赋值。过程性赋值如下两类:
• 阻塞性过程赋值:赋值在其后所有语句执行前执行,即在下一语句执行前该赋值语句完成执行;
• 非阻塞性过程赋值:对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间发生。
阻塞性过程赋值用操作符“=”完成,例如下面的实例:
  1. always
  2. @ (A or B or Cin)
  3. begin: CARRY_OUT
  4. reg T1,T2 , T3;
  5. T1 = A & B;
  6. T2 = B & Ci n;
  7. T3 = A & Ci n;
  8. Cout = T1|T2|T3;
  9. end

T1 赋值首先发生,计算 T1;接着执行第二条语句,T2 被赋值;然后执行第三条语句, T3被赋值,依此类推直到最后。
非阻塞性过程赋值用操作符“<=”完成,例如下面的实例:
  1. initial
  2. begin
  3. Clr <= #5 1;
  4. Clr <= #4 0;
  5. Clr <= #10 0;
  6. End

第一条语句的执行使 Clr 在第 5 个时间单位被赋于值 1;第二条语句的执行使 Clr 第 4 个时间单位被赋值为 0(从 0 时刻开始的第 4 个时间单位);最终第 3 条语句的执行使 Clr 在第10 个时间单位被赋值为 0(从 0 时刻开始的第 1 0 个时间单位)。这 3 条语句都是在 0 时刻执行的。

更多回帖

发帖
×
20
完善资料,
赚取积分