我是靠谱客的博主 现代高山,最近开发中收集的这篇文章主要介绍Quartus 实现D触发器及时序仿真1 软件准备2 认识D触发器3 创建D触发器原理图并仿真3.4 仿真波形图4 调用库并仿真5 用Verilog语言实现D触发器及时序仿真总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 1 软件准备
  • 2 认识D触发器
  • 3 创建D触发器原理图并仿真
    • 3.1 创建工程
    • 3.2 新建原理图文件
    • 3.3 编译
  • 3.4 仿真波形图
  • 4 调用库并仿真
    • 4.1 创建工程
    • 4.2 新建原理图文件
    • 4.3 编译
    • 4.4 查看仿真波形
  • 5 用Verilog语言实现D触发器及时序仿真
    • 5.1 创建工程
    • 5.2 新建Verilog HDL 文件
    • 5.3 编译
    • 5.4 仿真波形
  • 总结

1 软件准备

Quartus与modelsim的安装与配置,见
Quartus、modelsim安装配置

2 认识D触发器

D触发器是CMOS数字集成电路单元中时序逻辑电路中的重要组成部分之一,学习D触发器具有十分重要的意义,可以帮助了解数字集成电路的单元。

D触发器属于时钟控制触发器,一般而言,时钟控制的触发器可以分成三大类:

第一类时钟控制触发器要求时钟信号的脉冲宽度小于触发器的传输延迟,即时钟信号先为高,接着必须在触发器的输出状态改变之前变为低。

第二类时钟控制触发器的特点是,时钟信号为高电平时触发器改变输出状态,通常称这种触发器为电平敏感触发器(锁存器Latch)。

第三类触发器的特点是边沿触发,时钟信号的上升/下降沿会使触发器改变输出状态(寄存器Register)。

D触发器(data flip-flop)也称为维持-阻塞边沿D触发器,由六个与非门组成,其电路图及其逻辑符号如下图所示。其中G1和G2构成基本的RS触发器,G3和G4构成时钟控制电路,G5和G6组成数据输入电路。由于 分别为复位端和置位端,在分析D触发器工作原理时均视为高电平,以保证不影响电路工作。

D触发器(data flip-flop)也称为维持-阻塞边沿D触发器,由六个与非门组成,其电路图及其逻辑符号如下图所示。其中G1和G2构成基本的RS触发器,G3和G4构成时钟控制电路,G5和G6组成数据输入电路。由于 分别为复位端和置位端,在分析D触发器工作原理时均视为高电平,以保证不影响电路工作。

在这里插入图片描述

D触发器的工作原理

边沿D 触发器:

负跳沿触发的主从触发器工作时,必须在正跳沿前加入输入信号。如果在CP 高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。而边沿触发器允许在CP 触发沿来到前一瞬间加入输入信号。这样,输入端受干扰的时间大大缩短,受干扰的可能性就降低了。边沿D触发器也称为维持-阻塞边沿D触发器。

电路结构: 该触发器由6个与非门组成,其中G1和G2构成基本RS触发器。

在这里插入图片描述
SD 和RD 接至基本RS 触发器的输入端,它们分别是预置和清零端,低电平有效。当SD=0且RD=1时,不论输入端D为何种状态,都会使Q=1,Q=0,即触发器置1;当SD=1且RD=0时,触发器的状态为0,SD和RD通常又称为直接置1和置0端。我们设它们均已加入了高电平,不影响电路的工作。工作过程如下:

  1. CP=0时,与非门G3和G4封锁,其输出Q3=Q4=1,触发器的状态不变。同时,由于Q3至Q5和Q4至Q6的反馈信号将这两个门打开,因此可接收输入信号D,Q5=D,Q6=Q5=D。

  2. 当CP由0变1时触发器翻转。这时G3和G4打开,它们的输入Q3和Q4的状态由G5和G6的输出状态决定。Q3=Q5=D,Q4=Q6=D。由基本RS触发器的逻辑功能可知,Q=D。

  3. 触发器翻转后,在CP=1时输入信号被封锁。这是因为G3和G4打开后,它们的输出Q3和Q4的状态是互补的,即必定有一个是0,若Q3为0,则经G3输出至G5输入的反馈线将G5封锁,即封锁了D通往基本RS 触发器的路径;该反馈线起到了使触发器维持在0状态和阻止触发器变为1状态的作用,故该反馈线称为置0维持线,置1阻塞线。Q4为0时,将G3和G6封锁,D端通往基本RS触发器的路径也被封锁。Q4输出端至G6反馈线起到使触发器维持在1状态的作用,称作置1维持线;Q4输出至G3输入的反馈线起到阻止触发器置0的作用,称为置0阻塞线。因此,该触发器常称为维持-阻塞触发器。总之,该触发器是在CP正跳沿前接受输入信号,正跳沿时触发翻转,正跳沿后输入即被封锁,三步都是在正跳沿后完成,所以有边沿触发器之称。与主从触发器相比,同工艺的边沿触发器有更强的抗干扰能力和更高的工作速度。

3 创建D触发器原理图并仿真

3.1 创建工程

点击 File->New Project Wizard,创建工程

在这里插入图片描述

点击 Next

在这里插入图片描述

设置工程的存储位置和项目名称

在这里插入图片描述

直接点击NEXT

在这里插入图片描述

按下图选择芯片

在这里插入图片描述

检查项目信息,点击finish
在这里插入图片描述

此时界面上会出现顶层文件和项目名
在这里插入图片描述

3.2 新建原理图文件

打开Quartus,选菜单“File”一“New”,在弹出的“New-”对话框中选择“ Design Files” 的原理图文件编辑输入项“Block block diagram/schematic File"按"OK"后将打开原理图编辑窗。

在这里插入图片描述

点击按纽“ Symbol Tool”或直接双击原理图空白处,从“ Symbol”窗中选择
需要的符号,或者直接在“name”文本框中键入元件名
在这里插入图片描述
在这里插入图片描述

D触发器由一个非门、两个输出、两个输入、四个与非门共同构成,最终效果图如下
在这里插入图片描述

之后保存该文件

3.3 编译

进行编译,若无错误则可进行下一步,若有错进行原理图修改。
在这里插入图片描述

查看硬件电路图:点击【Tools】→【Netlist Viewers】→【RTL Viewer】。
在这里插入图片描述

在这里插入图片描述

3.4 仿真波形图

新建波形文件。如上面新建图形文件的方法,从“file”中选择“new”,然后从出现的对话框中选择“university program VWF”。
点击“OK”

在这里插入图片描述

输入波形文件。在波形文件编辑器左端大片空白处双击,出现“insert node or bus”对话框,点击“node finder”按钮。如图。

在这里插入图片描述

然后在随后出现的“node finder”对话框中点击“list”按钮,则半加器中所有的输入输出引脚全部出现在对话框左边。再在该界面上点击“>>”,则把左边所有的端口都选择到右边,进入波形,如图。
在这里插入图片描述

之后点击OK,出现如图的文件
在这里插入图片描述

编辑输入CLK,产生时钟信号
在这里插入图片描述

设置D几个低电平和高电平
在这里插入图片描述

之后保存文件,点击功能仿真编译按钮

在这里插入图片描述

运行结果为:

在这里插入图片描述
可以看到,在上升沿到来,Q的值跟随D的值进行变化,Q与Q1互为相反

4 调用库并仿真

4.1 创建工程

步骤与3中相同,这里不再做介绍

4.2 新建原理图文件

新建文件方法,与上述步骤相同
这里我们直接调用库里面的D触发器,元件名:dff
在这里插入图片描述

再次添加输入和输出,原理图如下:
在这里插入图片描述

4.3 编译

保存后编译,查看原理图如下:
在这里插入图片描述

4.4 查看仿真波形

同上一步骤中设置D的高低电平
在这里插入图片描述

最终仿真效果如图:
在这里插入图片描述

可以看到Q也是在上升沿随着D的值发送变化

5 用Verilog语言实现D触发器及时序仿真

5.1 创建工程

与3步骤相同

5.2 新建Verilog HDL 文件

【File】→【New】→【Verilog HDL File】
在这里插入图片描述

代码内容如下:

//dwave是文件名
module dwave(D,CLK,Q);
    input D;
    input CLK;
    output Q;

    reg Q;

    always @ (posedge CLK)//我们用正的时钟沿做它的敏感信号
    begin
        Q <= D;//上升沿有效的时候,把d捕获到q
    end
endmodule

5.3 编译

保存文件并编译,查看电路图如下:

在这里插入图片描述

5.4 仿真波形

与上述步骤相同,可以观察到波形如下:

在这里插入图片描述
可以看到波形也是一样的情况,在上升沿处Q随着D的值发发生变化

这里再介绍一种方法,使用modelsim SE进行手动仿真

在Quartus创建的工程文件夹下新建一个 tb 文件夹;
点击【File】→【Change Directory】选择 tb 文件夹;

创建新项目:【File】→【New】→【Project…】,编写工程名及选择路径;
在这里插入图片描述

添加现有文件:
在这里插入图片描述

找到刚刚 Quatrus 编译生成的 .v 文件,再点击【OK】
在这里插入图片描述

再创建一个新的文件,命名为wave_d
在这里插入图片描述

然后关闭添加文件窗口界面
再双击刚刚新建的 wave_d.v 文件,添加如下代码:


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

保存后,编译所有文件
在这里插入图片描述

点击【Simulate】→【Start Simulation…】
在这里插入图片描述

右键点击工程名,再点击【Add Wave】

在这里插入图片描述

设置运行时长,再点击旁边的运行按钮,即可出现仿真效果图
在这里插入图片描述
在这里插入图片描述

总结

初次使用Quartus,输入原理图能更清楚的了解D触发器的内部结构,也可以直接调用库中D触发器进行实验,但对其内部结构不太清楚。同时,使用Verilog语言在遇到比较复杂的电路图时会更容易。


参考:
https://blog.csdn.net/weixin_46129506/article/details/123443865
https://blog.csdn.net/qq_47281915/article/details/123425407

最后

以上就是现代高山为你收集整理的Quartus 实现D触发器及时序仿真1 软件准备2 认识D触发器3 创建D触发器原理图并仿真3.4 仿真波形图4 调用库并仿真5 用Verilog语言实现D触发器及时序仿真总结的全部内容,希望文章能够帮你解决Quartus 实现D触发器及时序仿真1 软件准备2 认识D触发器3 创建D触发器原理图并仿真3.4 仿真波形图4 调用库并仿真5 用Verilog语言实现D触发器及时序仿真总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部