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

一、认识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

保存文件并编译

(三)查看生成的电路图

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

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

具体仿真过程,参考链接:
https://blog.csdn.net/qq_43279579/article/details/115176423
测试代码

//测试代码
`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

仿真效果
在这里插入图片描述
通过三种方式实现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触发器)

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值