【摘要】:行为级建模通常采用过程性赋值的方式,建立的通常为时序逻辑电路。行为级建模一般包括两种语句结构:initial语句和always语句。在仿真的0时刻开始执行。begin-end语句块是最经常使用的过程性语句。周期为20个时间单位。always语句经常会带一些事件控制,使用了always@,这样的例子我们前面遇到过。比如下面这段代码:由于initial语句和always语句都是顺序执行,上面这个模块里,先写initial语句还是先写always语句都是一样的。例5.3:D锁存器。例5.4:具有使能控制的D触发器。
行为级建模通常采用过程性赋值的方式,建立的通常为时序逻辑电路。
行为级建模一般包括两种语句结构:initial语句和always语句。
initial语句只执行一次。在仿真的0时刻开始执行。
begin-end语句块是最经常使用的过程性语句。上面这段代码在仿真的0时刻就开始执行。begin-end是顺序块,顺序块里的语句是按顺序执行的。
看下面这个例子:
上面这个initial语句由于使用了延迟,是在时刻3才执行对a赋值。
与initial语句不同,always语句是反复执行。always#10clk=~clk;
上面这种语句是最常用到的一种语句,它每隔10个时间单位就把clk取反,赋值给clk,也就是取反后赋值给它自己。周期为20个时间单位。我们经常使用这条语句来产生一个周期时钟。(www.xing528.com)
always语句经常会带一些事件控制(比如边沿触发事件或者电平触发事件),使用了always@,这样的例子我们前面遇到过。
也许有读者会问,如果一段代码里,既有initial语句,又有always语句,该如何执行呢?比如下面这段代码:
由于initial语句和always语句都是顺序执行,上面这个模块里,先写initial语句还是先写always语句都是一样的。
有时候,在过程赋值语句里也会用到fork-join并行语句。并行语句里的语句是每一条语句同时执行。看下面这个例子:
0时刻,语句1~5同时执行;时刻1,a=1;时刻2,a=0;时刻3,a=1;时刻4,a=0;时刻5,a=1。
例5.3:D锁存器。
例5.4:具有使能控制的D触发器。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。