您现在的位置:首页 > 技术支持技术支持

Verilog过程赋值语句提问

发布时间:2021-06-23 06:43:11  来源:大电流电感厂家   查看:
在书上看到的,讲解阻塞型赋值语句时,举了一个例子

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

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

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

那在下图中,是把第一个例子中的功能用非阻塞语句实现了

这里说的过一段时间,是指的是CLK信号来到时,才会赋值到左边吗?如果可以把阻塞和非阻塞赋值语句简单化的讲解一下就更好了,谢!




都忘了。

我用小脚丫官网仿真了一下,没什么问题啊。 阻塞式赋值特点就是在一个块语句中一旦执行完成当前的赋值语句,赋值目标变量即刻获得等号右边的表达式的值。 非阻塞赋值特点就是块语句执行结束时才能整体完成赋值。 always@(posedge clk)就是来了上升沿,就执行下面的块语句,里面是非阻塞赋值,全部计算完了才一次性赋值给等号左边。

针对第一个问题:从理论上将,阻塞赋值语句与其后面的语句只有概念上的先后,而无实质上的延迟。因此,一个时钟周期内,三条语句就执行完了;而如果使用非阻塞赋值,第一个clk,breg变为areg,第二个clk,creg变为areg,第三个clk,dreg变为areg,三个时钟周期完成。针对第二个问题: 1、无论是阻塞赋值还是非阻塞赋值,都不能决定并行或顺序执行,在verilog中,能够决定语句顺序执行的是begin....end,决定语句并行执行的是fork....join。 2、科普一下两种赋值的区别: a)阻塞赋值之所以称为阻塞赋值,是因为它在执行时,不允许任何别的语句干扰(同一个always块中),直到它完成赋值后(即将右侧值赋给左侧),才允许别的赋值语句执行。 b)非阻塞赋值则相反,它在执行时,其他语句也可执行,只不过右侧表达式计算完成之后,不会传递给左侧,而是等到赋值语句所在的块结束后,才传递给左侧。

先谢谢解答,有个追问 还是在第一个例子中, 无论有多少条阻塞语句进行赋值, 比如除了areg  breg  creg dreg 外 还有ereg freg  等等 把之前的程序写成 ereg=dreg freg=ereg 等等 只要在一个周期内, 最终的寄存器都是延时一个周期后才得到areg的值?

准确的说,当clk的上升沿出现时,freg就等于areg了,其中涉及到的延时只是硬件上的延时。 平面变压器厂家 | 平面电感厂家

[开关电源]关于tl494的问题,学生来求助如上图所示,我给2脚多少的电压,那么这个电路最大能输出多少的电流。 比如输入0.5v,那么最大能输出0.5A的电流,最后的vout我定的是8V。 但是,如果后面的负载使得最大的输出电流大于0.5A,老师说就是会变成恒流源,但是我的这个不行,当输出大于0.5A的时候,直接就会影响前面供电的电源。 电源不停地啪啪啪的响。 真心没能发现问题,求大家来

基于浮地电源的高输出电压-电流转换电路在恒流输出电路中,如负载电阻增大,使IO.R产生的电压超过电源电压,电路就不能在恒状态下工作。本电路采用浮地的正负15V和+250V电源,可以获得大于200V的负载电压。电路工作原理输入电压E1N为0

一体成型电感主要特征说明

一体成型贴片电感外观:



一体成型电感外观如上图所示

一体成型电感结构特点:电感线圈与磁芯构成绕组,混入合金粉一体浇铸成型。绕绕线头连在外接的金属电极上。密闭

CopyRight2014
大电流电感 | 大功率电感 | 扁平线圈电感 注塑加工厂