Verilog HDL 中进行时序控制分别通过下面两种方式进行:
• 延时控制;
• 事件控制。
延时控制的语法如下:
- #delay procedural_statement
延时控制定义为执行过程中首次遇到该语句与该语句的执行的时间间隔。延时控制表示在语句执行前的“等待时延”。下面是一个延时控制的例子:
- initial
- begin
- #3 Wave = 'b0111;//3 个时间单位后执行
- #6 Wave = 'b1100; //6 个时间单位后执行
- #7 Wave = 'b0000; //7 个时间单位后执行
- end
事件控制有两种方式:边沿触发事件控制和电平敏感事件控制。边沿触发事件是指指定信号的边沿发生跳变时发生指定的行为,下面是边沿触发事件控制的语法和实例:
- @ event procedural_statement
- //实例
- time RiseEdge, OnDelay;
- initial
- begin
- //等待,直到在时钟上发生正边沿:
- @ (posedge ClockA) ;
- RiseEdge = $time;
- //等待,直到在时钟上发生负边沿:
- @ (negedge ClockA) ;
- OnDelay = $time - RiseEdge;
- $display ("The on-period of clock is %t.", Delay) ;
- end
在电平敏感事件控制中,进程语句或进程中的过程语句一直延迟到条件变为真后才执行。
下面是电平敏感事件控制的语法和实例:
- wait (Condition)
- procedural_statement
- //实例
- wait (Sum > 22) //直到 Sum 大于 22 时发生
- Sum = 0;
- wait (DataReady) //直到 DataReady 为高时发生
- Data = Bus;
- wait (Preset) ; //直到 Preset 为高时才能执行后面的语句