0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于阻塞赋值和非阻塞赋值的多级触发器级联实例

电子工程师 来源:CSDN 作者:a14730497 2021-05-08 14:47 次阅读

下面给出一个基于阻塞赋值和非阻塞赋值的多级触发器级联实例,要求将输入数据延迟 3 个时钟周期再输出,并给出对应的 RTL 级结构图和仿真结果。

(1)基于 D触发器的阻塞赋值语句代码如下:

module pipeb1 (q3, d, clk);

output [7:0] q3;

input [7:0] d;

input clk;

reg [7:0] q3, q2, q1;

always @(posedge clk)

begin

q1 = d;

q2 = q1;

q3 = q2;

end

endmodule

上述代码综合后能得到所期望的逻辑电路吗? 答案是否定的, 根据阻塞赋值语句的执行过程可以得到执行后的结果是 q1 = d;q2 = d。实际只会综合出一个寄存器,如图 8-33 所示,并列出下面的警告信息,而不是所期望的三个。其中的主要原因就是采用了阻塞赋值,首先将 d 的值赋给 q1,再将q1 的值赋给q2,依次到q3,但是 q1、q2、q3 的值在赋值前其数值已经全部被修改为当前时刻的 d 值,因此上述语句等效于 q3=d,这和图 8-33 所示的 RTL 结构是一致的。

pIYBAGCWNI-AKXz-AADOG74i4Xg491.jpg

(2) 如何才能得到所需要的电路呢?如果把 always 块中的两个赋值语句的次序颠倒后再进行分析:先把 q2 的值赋于 q3、再把 q1 的值赋于 q2,最后把 d 赋于q1。这样在先赋值再修改,可以使得 q2,q3 的值都不再是 d 的当前值。修改后的代码如下所列。

module pipeb2 (q3, d, clk);

output [7:0] q3;

input [7:0] d;

input clk;

reg [7:0] q3, q2, q1;

always @(posedge clk)

begin

q3 = q2;

q2 = q1;

q1 = d;

end

endmodule

原文标题:FPGA学习:verilog中阻塞的理解与例子

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593271
  • 电路图
    +关注

    关注

    10217

    文章

    10645

    浏览量

    511250
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109312

原文标题:FPGA学习:verilog中阻塞的理解与例子

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    为什么指针之间不要随意赋值呢?

    指针之间也不能随意赋值
    的头像 发表于 03-28 17:13 206次阅读
    为什么指针之间不要随意<b class='flag-5'>赋值</b>呢?

    mapgis如何给区属性赋值

    MapGIS是一款功能强大的地理信息系统软件,它提供了丰富的功能和工具,使用户能够对地理数据进行快速、高效的管理和分析。其中一个重要的功能就是给区属性赋值,即对地图中的区域进行分类和标记,以便更好
    的头像 发表于 02-23 17:49 555次阅读

    verilog同步和异步的区别 verilog阻塞赋值和非阻塞赋值的区别

    Verilog是一种硬件描述语言,用于设计和模拟数字电路。在Verilog中,同步和异步是用来描述数据传输和信号处理的两种不同方式,而阻塞赋值和非阻塞赋值是两种不同的
    的头像 发表于 02-22 15:33 382次阅读

    什么是阻塞?怎么设计才能满足阻塞指标?

    阻塞就是外部有阻塞干扰信号的时候,设备还可以正常运行。一般分为带内阻塞和带外阻塞,由于直放站都是做宽带设备,一般只提带外阻塞
    的头像 发表于 10-10 11:22 670次阅读

    网络IO模型:阻塞与非阻塞

    阻塞 IO 模型 在Linux ,默认情况下所有的 socket 都是阻塞的,一个典型的读操作流程如图所示。 阻塞和非阻塞的概念描述的是用户线程调用内核 IO 操作的方式:
    的头像 发表于 10-08 17:16 491次阅读
    网络IO模型:<b class='flag-5'>阻塞</b>与非<b class='flag-5'>阻塞</b>

    阻塞赋值左式延时实验的设计资料

    阻塞赋值左式延时实验的设计,适合新手学习参考
    发表于 09-22 07:12

    阻塞赋值与非阻塞赋值

    ”=“阻塞赋值与”
    的头像 发表于 09-12 09:06 652次阅读
    <b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>与非<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>

    阻塞赋值左式延时实验的设计

    发表于 08-18 17:21 0次下载
    <b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>左式延时实验的设计

    在verilog语句中,阻塞赋值和小于等于均使用符号“<=”,如何区分<=所表示的含义?

    )中,\"<=\"作为阻塞赋值的一部分。 verilog中,一个语法结构不可能同时允许“表达式”和“语句”, 如果某处可以出现表达式,那么就不允许出现语句; 如果
    发表于 08-08 09:32

    一文了解阻塞赋值与非阻塞赋值

    今天给大家普及一下阻塞赋值和非阻塞赋值的相关知识
    的头像 发表于 07-07 14:15 1466次阅读
    一文了解<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>与非<b class='flag-5'>阻塞</b><b class='flag-5'>赋值</b>

    博途中SCL的赋值运算

    可通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。
    的头像 发表于 06-19 10:57 4252次阅读

    阻塞与非阻塞通信的区别 阻塞和非阻塞应用场景

    阻塞通信(Blocking Communication):当进行阻塞通信时,调用者在发起一个I/O操作后会被阻塞,直到该操作完成返回才能继续执行后续代码。
    的头像 发表于 06-15 17:32 4138次阅读

    聊聊使用Verdi去分析NBA Delay的问题

    NBA 就是 NonBlocking Assignment,非阻塞赋值 的缩写。它通常用来描述一个用时钟沿触发的寄存器。
    的头像 发表于 06-09 16:28 725次阅读
    聊聊使用Verdi去分析NBA Delay的问题

    Verilog中阻塞和非阻塞赋值金规

    对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值和非阻塞赋值。对于初学者,往往非常迷惑这两种
    的头像 发表于 06-01 09:21 573次阅读

    如何使用中断的快速/阻塞SPI?

    我正在寻找一种几乎连续发送 SPI 数据而不阻塞 CPU 的方法。我通常使用 PlatformIO / Arduino SDK 进行开发,其 SPI 类仅支持 SPI 的阻塞写入。我在 RTOS
    发表于 05-29 08:01