首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Quartus-II13.1三种方式实现D触发器及时序仿真

  • 23-10-05 03:02
  • 4181
  • 7940
blog.csdn.net

文章目录

  • 一、认识D触发器
    • (一)D触发器结构
    • (二)D触发器的波形图
  • 二、Quartus-II输入原理图及时序仿真
    • (一)创建工程
    • (二)创建方框文件
    • (三)编译原理图文件
    • (四)创建vwm格式波形文件
    • (五)时序波形仿真
  • 三、Quartus-II调用D触发器及时序仿真
    • (一)创建工程
    • (二)创建方框文件
    • (三)编译原理图文件
    • (四)创建vwm格式波形文件及时序仿真
  • 四、Quartus-II用Verilog语言实现D触发器及时序仿真
    • (一)创建工程
    • (二)编写Verilog文件
    • (三)查看生成的电路图
    • (四)利用Verilog语言编写测试代码实现时序仿真
  • 参考资料

一、认识D触发器

D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。

(一)D触发器结构

在这里插入图片描述
从图中可以发现D触发器有四个管脚,分别是输入信号D,输出信号Q,时钟信号CLK以及复位信号RESET。
其功能是当RESET为低电平(0),Q处于低电平状态;当RESET为高电平(1),通过观察CLK状态,当CLK信号由0变1(上升沿)的时候,若D为低电平,Q就为低电平,若D为高电平,Q就为高电平。

(二)D触发器的波形图

理想状态
在这里插入图片描述
初始状态:
设置复位信号(rst_n)为1,d为0,q为1
变化过程:
rst_n为0的时候,q的值始终为0;rst_n为1的时候,当clk由0变为1,q的值根据d值而发生变化(值同)
实际状态
在这里插入图片描述
q值发生变化的时候,存在一定的延时(上升沿的时候q的值为变化之前的值)

二、Quartus-II输入原理图及时序仿真

(一)创建工程

File->New Project Wizard
在这里插入图片描述
填写工程名称
在这里插入图片描述
根据使用的FPGA,进行选择芯片系列及类型
在这里插入图片描述
直接Next
在这里插入图片描述
完成工程创建,点击Finish
在这里插入图片描述

(二)创建方框文件

选择New
在这里插入图片描述
选择Block Diagram/Schematic File
在这里插入图片描述
选择nand2,二个输入的与非门,依次添加四个and2和一个非门not
在这里插入图片描述
添加完成
在这里插入图片描述
选择连线工具
在这里插入图片描述
连线效果
在这里插入图片描述
保存电路图
在这里插入图片描述

(三)编译原理图文件

启动分析与综合(全编译)
rtl viewer,查看硬件电路图
在这里插入图片描述
硬件电路图
在这里插入图片描述

(四)创建vwm格式波形文件

选择VWF
在这里插入图片描述
选择Edit->Insert->Insert Node or Bus
在这里插入图片描述
添加Node or Bus
在这里插入图片描述
添加效果
在这里插入图片描述
编辑输入Clk,产生时钟信号
在这里插入图片描述
鼠标选择D,Q信号Q_n,,进行编辑
在这里插入图片描述

(五)时序波形仿真

功能仿真后的波形,满足D latch的时序(全编译后,也可以运行时序仿真)
出现下图错误
在这里插入图片描述
解决方法
选择tools->Launch Simulation Library Compiler
在这里插入图片描述
在这里插入图片描述
返回vwm文件中,点击时序仿真,仿真结果如下
在这里插入图片描述

三、Quartus-II调用D触发器及时序仿真

(一)创建工程

方法同上

(二)创建方框文件

调用D触发器
在这里插入图片描述
添加完成效果
在这里插入图片描述

(三)编译原理图文件

启动分析与综合(全编译),使用rtl viewer查看硬件电路图
硬件电路图
在这里插入图片描述

(四)创建vwm格式波形文件及时序仿真

创建文件方法同上
编辑好的波形
在这里插入图片描述
功能仿真结果
在这里插入图片描述
时序仿真结果
在这里插入图片描述
通过功能仿真和时序仿真的结果对比可以发现,时序仿真存在时延,更加和实际结果相匹配。

四、Quartus-II用Verilog语言实现D触发器及时序仿真

(一)创建工程

方法同上

(二)编写Verilog文件

创建Verilog文件
点击File->New,选中Verilog
在这里插入图片描述
代码如下

//dwave是文件名
module dwave(d,clk,q);
    input d;
    input clk;
    output q;

    reg q;

    always @ (posedge clk)//我们用正的时钟沿做它的敏感信号
    begin
        q <= d;//上升沿有效的时候,把d捕获到q
    end
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

保存文件并编译

(三)查看生成的电路图

使用rtl viewer查看硬件电路图
硬件电路图
在这里插入图片描述

(四)利用Verilog语言编写测试代码实现时序仿真

具体仿真过程,参考链接:
http://iyenn.com/rec/349400.html
测试代码

//测试代码
`timescale 1ns / 1ns

module dwave_tb;
    reg clk,d;
    wire q;

    dwave u1(.d(d),.clk(clk),.q(q));

    initial
    begin
        clk = 1;
        d <= 0;
        forever
        begin
            #60 d <= 1;//人为生成毛刺 
            #22 d <= 0;
            #2  d <= 1;
            #2  d <= 0;
            #16 d <= 0;//维持16ns的低电平,然后让它做周期性的循环
        end
    end

    always #20 clk <= ~clk;//半周期为20ns,全周期为40ns的一个信号
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

仿真效果
在这里插入图片描述
通过三种方式实现D触发器及时序仿真的过程,可以发现D触发器的基本功能是在复位信号为1的时候,CLK的上升沿会引起Q值的变化。由此,可以得出次态方程为 Q n + 1 = D color{red}{Q_{n+1}=D} Qn+1​=D。三种方式来说对于输入原理图可以更加清楚D触发器的结构,直接调用实际上就是不用自己了解D触发器的组成,Verilog语言实现会要求对语言有所掌握。三种方式来说,要想对结构有所了解,输入原理图会更好,对于元件比较多的来说,采用Verilog语言编程会更好。

参考资料

Quartus II自带仿真工具的使用
Quartus-II输入原理图及仿真步骤.docx
通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)

文章目录

  • 一、认识D触发器
    • (一)D触发器结构
    • (二)D触发器的波形图
  • 二、Quartus-II输入原理图及时序仿真
    • (一)创建工程
    • (二)创建方框文件
    • (三)编译原理图文件
    • (四)创建vwm格式波形文件
    • (五)时序波形仿真
  • 三、Quartus-II调用D触发器及时序仿真
    • (一)创建工程
    • (二)创建方框文件
    • (三)编译原理图文件
    • (四)创建vwm格式波形文件及时序仿真
  • 四、Quartus-II用Verilog语言实现D触发器及时序仿真
    • (一)创建工程
    • (二)编写Verilog文件
    • (三)查看生成的电路图
    • (四)利用Verilog语言编写测试代码实现时序仿真
  • 参考资料

一、认识D触发器

D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。

(一)D触发器结构

在这里插入图片描述
从图中可以发现D触发器有四个管脚,分别是输入信号D,输出信号Q,时钟信号CLK以及复位信号RESET。
其功能是当RESET为低电平(0),Q处于低电平状态;当RESET为高电平(1),通过观察CLK状态,当CLK信号由0变1(上升沿)的时候,若D为低电平,Q就为低电平,若D为高电平,Q就为高电平。

(二)D触发器的波形图

理想状态
在这里插入图片描述
初始状态:
设置复位信号(rst_n)为1,d为0,q为1
变化过程:
rst_n为0的时候,q的值始终为0;rst_n为1的时候,当clk由0变为1,q的值根据d值而发生变化(值同)
实际状态
在这里插入图片描述
q值发生变化的时候,存在一定的延时(上升沿的时候q的值为变化之前的值)

二、Quartus-II输入原理图及时序仿真

(一)创建工程

File->New Project Wizard
在这里插入图片描述
填写工程名称
在这里插入图片描述
根据使用的FPGA,进行选择芯片系列及类型
在这里插入图片描述
直接Next
在这里插入图片描述
完成工程创建,点击Finish
在这里插入图片描述

(二)创建方框文件

选择New
在这里插入图片描述
选择Block Diagram/Schematic File
在这里插入图片描述
选择nand2,二个输入的与非门,依次添加四个and2和一个非门not
在这里插入图片描述
添加完成
在这里插入图片描述
选择连线工具
在这里插入图片描述
连线效果
在这里插入图片描述
保存电路图
在这里插入图片描述

(三)编译原理图文件

启动分析与综合(全编译)
rtl viewer,查看硬件电路图
在这里插入图片描述
硬件电路图
在这里插入图片描述

(四)创建vwm格式波形文件

选择VWF
在这里插入图片描述
选择Edit->Insert->Insert Node or Bus
在这里插入图片描述
添加Node or Bus
在这里插入图片描述
添加效果
在这里插入图片描述
编辑输入Clk,产生时钟信号
在这里插入图片描述
鼠标选择D,Q信号Q_n,,进行编辑
在这里插入图片描述

(五)时序波形仿真

功能仿真后的波形,满足D latch的时序(全编译后,也可以运行时序仿真)
出现下图错误
在这里插入图片描述
解决方法
选择tools->Launch Simulation Library Compiler
在这里插入图片描述
在这里插入图片描述
返回vwm文件中,点击时序仿真,仿真结果如下
在这里插入图片描述

三、Quartus-II调用D触发器及时序仿真

(一)创建工程

方法同上

(二)创建方框文件

调用D触发器
在这里插入图片描述
添加完成效果
在这里插入图片描述

(三)编译原理图文件

启动分析与综合(全编译),使用rtl viewer查看硬件电路图
硬件电路图
在这里插入图片描述

(四)创建vwm格式波形文件及时序仿真

创建文件方法同上
编辑好的波形
在这里插入图片描述
功能仿真结果
在这里插入图片描述
时序仿真结果
在这里插入图片描述
通过功能仿真和时序仿真的结果对比可以发现,时序仿真存在时延,更加和实际结果相匹配。

四、Quartus-II用Verilog语言实现D触发器及时序仿真

(一)创建工程

方法同上

(二)编写Verilog文件

创建Verilog文件
点击File->New,选中Verilog
在这里插入图片描述
代码如下

//dwave是文件名
module dwave(d,clk,q);
    input d;
    input clk;
    output q;

    reg q;

    always @ (posedge clk)//我们用正的时钟沿做它的敏感信号
    begin
        q <= d;//上升沿有效的时候,把d捕获到q
    end
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

保存文件并编译

(三)查看生成的电路图

使用rtl viewer查看硬件电路图
硬件电路图
在这里插入图片描述

(四)利用Verilog语言编写测试代码实现时序仿真

具体仿真过程,参考链接:
http://iyenn.com/rec/349400.html
测试代码

//测试代码
`timescale 1ns / 1ns

module dwave_tb;
    reg clk,d;
    wire q;

    dwave u1(.d(d),.clk(clk),.q(q));

    initial
    begin
        clk = 1;
        d <= 0;
        forever
        begin
            #60 d <= 1;//人为生成毛刺 
            #22 d <= 0;
            #2  d <= 1;
            #2  d <= 0;
            #16 d <= 0;//维持16ns的低电平,然后让它做周期性的循环
        end
    end

    always #20 clk <= ~clk;//半周期为20ns,全周期为40ns的一个信号
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

仿真效果
在这里插入图片描述
通过三种方式实现D触发器及时序仿真的过程,可以发现D触发器的基本功能是在复位信号为1的时候,CLK的上升沿会引起Q值的变化。由此,可以得出次态方程为 Q n + 1 = D \color{red}{Q_{n+1}=D} Qn+1​=D。三种方式来说对于输入原理图可以更加清楚D触发器的结构,直接调用实际上就是不用自己了解D触发器的组成,Verilog语言实现会要求对语言有所掌握。三种方式来说,要想对结构有所了解,输入原理图会更好,对于元件比较多的来说,采用Verilog语言编程会更好。

参考资料

Quartus II自带仿真工具的使用
Quartus-II输入原理图及仿真步骤.docx
通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)

注:本文转载自blog.csdn.net的HarrietLH的文章"https://blog.csdn.net/qq_43279579/article/details/115286467"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top