FPGA 学习小组
直播中

alexdos

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

【FPGA学习】Verilog HDL 是如何进行时序控制的

Verilog HDL 中进行时序控制分别通过下面两种方式进行:
• 延时控制;
• 事件控制。
延时控制的语法如下:
  1. #delay procedural_statement

延时控制定义为执行过程中首次遇到该语句与该语句的执行的时间间隔。延时控制表示在语句执行前的“等待时延”。下面是一个延时控制的例子:
  1. initial
  2. begin
  3. #3 Wave = 'b0111;//3 个时间单位后执行
  4. #6 Wave = 'b1100; //6 个时间单位后执行
  5. #7 Wave = 'b0000; //7 个时间单位后执行
  6. end

事件控制有两种方式:边沿触发事件控制和电平敏感事件控制。边沿触发事件是指指定信号的边沿发生跳变时发生指定的行为,下面是边沿触发事件控制的语法和实例:
  1. @ event procedural_statement
  2. //实例
  3. time RiseEdge, OnDelay;
  4. initial
  5. begin
  6. //等待,直到在时钟上发生正边沿:
  7. @ (posedge ClockA) ;
  8. RiseEdge = $time;
  9. //等待,直到在时钟上发生负边沿:
  10. @ (negedge ClockA) ;
  11. OnDelay = $time - RiseEdge;
  12. $display ("The on-period of clock is %t.", Delay) ;
  13. end

在电平敏感事件控制中,进程语句或进程中的过程语句一直延迟到条件变为真后才执行。
下面是电平敏感事件控制的语法和实例:
  1. wait (Condition)
  2. procedural_statement
  3. //实例
  4. wait (Sum > 22) //直到 Sum 大于 22 时发生
  5. Sum = 0;
  6. wait (DataReady) //直到 DataReady 为高时发生
  7. Data = Bus;
  8. wait (Preset) ; //直到 Preset 为高时才能执行后面的语句

更多回帖

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