1.串行延迟控制
(1)串行延迟控制是最为常见的信号延迟控制,它是由 begin-end 过程块加上延迟赋值语句构成
(2)对上图进行描述
2. 并行延迟控制
(1)并行延迟控制方式是通过 fork-join 过程块加上延迟赋值语句构成的(对于 fork-join ,不管采用阻塞还是非阻塞赋值,所有语句都是并行的)
(2)对上图进行描述
3.阻塞式延迟控制
(1)阻塞式延迟控制是在阻寨式过程赋值基础上带有延迟控制的情况
(2)控制结果
(3)解释:相当于把值给了temp,然后延迟结束temp给a,一开始a=0,然后temp=1,5s后,a=temp=1,temp=0。!!如果用阻塞,延迟就是相对延迟
4.非阻塞式延迟控制
(1)非阻塞式延迟控制是在非阻塞式过程赋值基础上带有延迟控制的情况
(2)控制结果
(3)!!如果用非阻塞,前面的延迟就变成绝对的延迟
形式1:
举例:
!!选了一个计数器的例子,是为了告诉大家,这种边沿触发的信号,更多的是用于电路,而之前的那些信号更多用于测试和仿真
!!所有的语句都可以用在仿真,但是不是所有语句都能用在可综合电路设计
形式2:
比如组合电路,只有信号电平发生变化
举例
这个例子是测量信号仿真中时钟的周期或占空比
形式3:
形式4:
举例:
在a的上升沿和b的下降沿到达的时候打印,之前讲过,屏幕打印要找寻特定的时刻,实际上这个就是一种特定的时刻
电平敏感事件语法格式有两种
在边沿敏感的时候@的信号列表,并没有做一个判定
电平敏感的第一种形式:
!!这个例子在传统的数字电路中,把它归为时序电路,这个东西叫做latch
!!现在用的触发器叫Flip Flop,还有一种电路叫latch,它是靠电平进行锁定的。在latch中你工作在高电平或者低电平,这时输入信号发生变化,输出信号也要发生变化,它的延迟由latch整个的延迟决定,这时一个不可控延迟,latch是一个可控延迟,但是不一定工作过程中输入不变化,这时候的延迟是不可控的
这种latch电路在早期是存在的,但是随着技术发展,会发现latch信号非常不稳定。见到latch通常称为异步时序电路,而我们要求的是同步时序电路设计,正是因为异步时序的延迟没办法控制
!!一个是电路设计,一个是怎么让时钟在全局网络都变得一致,这两个东西都做的很好,所以同步时序电路在数字电路硬件设计中间占据了绝对的重要地位
!!但是异步时序电路也不是没有了,在DSP,单片机中都没有异步,在FPGA中也基本都是同步时序,只有在一个厂家Actel的一个系列的很小一部分有电平敏感
!!!我们现在做的东西都是工地的,但是做到航空,导弹上都是隔离的,没有一个共同的地,这时候如果用边沿触发就会带来很多问题,所以电平敏感主要面向于军工
电平敏感的第二种形式: