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
    +关注

    关注

    1630

    文章

    21759

    浏览量

    604353
  • 电路图
    +关注

    关注

    10350

    文章

    10721

    浏览量

    531448
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110162

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

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

收藏 人收藏

    评论

    相关推荐

    socket编程中的阻塞阻塞

    在网络编程中, socket 是一个非常重要的概念,它提供了一个抽象层,使得开发者可以不必关心底层的网络通信细节。 socket 编程中的阻塞阻塞模式是两种不同的操作方式,它们对程序的响应性
    的头像 发表于 11-01 16:13 233次阅读

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞阻塞、循环语句、同步与异步、函数与任务语法知识。
    的头像 发表于 10-24 15:00 502次阅读
    Verilog HDL的基础知识

    怎么用jk触发器变成t触发器

    将JK触发器变成T触发器,主要涉及到对JK触发器的输入端口进行适当的连接和配置,以实现T触发器的逻辑功能。以下是将JK触发器转换为T
    的头像 发表于 08-28 09:41 3071次阅读

    d触发器和jk触发器的区别是什么

    引言 数字电路是现代电子技术的基础,广泛应用于计算机、通信、控制等领域。触发器是数字电路中的一种基本逻辑元件,具有存储和传递信息的功能。 触发器的基本概念 触发器是一种具有记忆功能的数字电路元件
    的头像 发表于 08-22 10:37 2210次阅读

    t触发器变为d触发器的条件

    在数字电路设计中,触发器是一种非常重要的存储元件,用于存储一位二进制信息。触发器的种类很多,其中最为常见的有JK触发器、D触发器和T触发器
    的头像 发表于 08-22 10:33 1654次阅读

    socket阻塞阻塞的区别是什么

    在计算机编程中,socket 是一种通信端点,用于在网络中进行数据传输。Socket 可以是阻塞的或阻塞的,这两种模式在处理数据传输时有不同的行为。 阻塞模式(Blocking Mo
    的头像 发表于 08-16 11:13 731次阅读

    t触发器与d触发器的区别和联系

    在数字电路设计中,触发器是一种非常重要的存储元件,用于存储一位二进制信息。触发器的种类很多,其中最为常见的是T触发器(Toggle Flip-Flop)和D触发器(Data Flip-
    的头像 发表于 08-11 09:37 3298次阅读

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

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

    什么是阻塞阻塞

    什么是阻塞阻塞?我们就用管道的读写来举例子。
    的头像 发表于 03-25 10:04 517次阅读

    mapgis如何给区属性赋值

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

    proteus属性赋值工具怎么用

    Proteus是一种电路设计和仿真软件,在进行电路设计和仿真时,属性赋值是非常重要的步骤。属性赋值工具可以帮助用户快速有效地配置电路元件的属性,从而实现电路的准确仿真。下面是关于Proteus属性
    的头像 发表于 02-23 17:19 4753次阅读

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

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

    如何用jk触发器构成t触发器?t触发器逻辑功能有哪些

    如何用JK触发器构成T触发器 JK触发器是一种基本的触发器电路,由两个输入端J和K控制,以及两个输出端Q和Q'组成。JK触发器的输出可以持续
    的头像 发表于 02-06 14:11 9177次阅读

    t触发器和jk触发器的区别和联系

    触发器是数字电路中常用的组合逻辑电路,在现代电子系统中有着广泛的应用。其中,最常用的两种触发器是T触发器和JK触发器。本文将详细介绍T触发器
    的头像 发表于 02-06 14:04 6325次阅读

    触发器触发顺序是什么

    不同类型的触发器可能有不同的执行顺序。例如,对于同一个表上的多个触发器,插入触发器(INSERT trigger)可能先于更新触发器(UPDATE trigger)执行。
    的头像 发表于 02-05 10:09 1172次阅读
    <b class='flag-5'>触发器</b>的<b class='flag-5'>触发</b>顺序是什么