Verilog过程赋值语句提问

2019-03-25 07:22发布

在书上看到的,讲解阻塞型赋值语句时,举了一个例子

说的是,本想采用触发器的方式,
设计一个延时来使得dreg的输出比areg慢3个时钟节拍,
但是结果是dreg的输出只比areg慢一个时钟节拍输出

程序和逻辑电路图,在下图给出
在分析中(如上图),既然已经说了,是顺序执行,
那么每天语句执行时间为一个时钟周期,
三个语句执行完不就是延时3个周期了吗?
即使后一句的右边是前一句更新后的结果,
到程序执行完时,dreg还是变成了areg
这样不就是延时3个时钟周期了吗?为什么不是这样呢?

另外,
阻塞型赋值语句,规定是,顺序执行语句,每种状态一个接一个执行,
非阻塞型赋值语句,规定是,并行赋值语句,当执行语句时同事计算右边的表达式,
而不会立刻把值赋给左边的变量,过一段时间才会赋值

那在下图中,是把第一个例子中的功能用非阻塞语句实现了
这里说的过一段时间,是指的是CLK信号来到时,才会赋值到左边吗?如果可以把阻塞和非阻塞赋值语句简单化的讲解一下就更好了,谢!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
ienglgge
2019-03-25 19:39
对于非阻塞赋值。三条语句。同时计算右值。经过短暂的延时,同时更新左值。电路上。你就认为,时钟沿到来,三个触发器,同时得到各自当前的输入,经过短暂延时,同时更新输出端的状态。 这个过程清楚了。给一个初始状态。经过几次时钟触发。看看每次都有什么变化。列个表。

一周热门 更多>