Quartus实现D触发器并进行仿真

一、任务目标

1.在 Quartus中自己用门电路设计一个D触发器,并进行仿真,时序波形验证。
2.在 Quartus 中直接调用一个D触发器电路,进行仿真,时序波形验证,与1做比较。
3.在 Quartus 中用Verilog语言写一个D触发器,进行仿真验证,与2做比较。

二、软件准备

Quartus 18.1,Modelsim SE-64 10.4

三、原理分析

D触发器

  • D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。
  • D触发器有集成触发器和门电路组成的触发器。触发方式有电平触发和边沿触发两种,前者在CP(时钟脉冲)=1时即可触发,后者多在CP的前沿(正跳变0→1)触发。
  • D触发器的次态取决于触发前D端的状态,即次态=D。因此,它具有置0、置1两种功能。
  • 对于边沿D触发器,由于在CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D端的数据状态变化,不会影响触发器的输出状态。

四、用门电路设计D触发器并仿真

1.创建一个工程

在这里插入图片描述
直接点击next
在这里插入图片描述
设置存储位置和名称
在这里插入图片描述
一路next到下面这个界面,选择芯片
在这里插入图片描述
配置EDA
在这里插入图片描述
确认项目信息
在这里插入图片描述
此时界面如下
在这里插入图片描述

2.创建原理图

在这里插入图片描述
选择Block Diagram/Schematic File
在这里插入图片描述
从symbol窗中选择需要的符号,可以直接输入名字进行查询
在这里插入图片描述
在这里插入图片描述

这里我们需要4个nand2与非门,1个not非门,2个输入管脚和2个输出管脚,选择的输入管脚和输出管脚我们可以自己命名,完成后如下图
在这里插入图片描述
保存即可。

3.编译

在这里插入图片描述
编译成功后界面如下,因为我这里以前做过,所以我打开的另一个项目,不过原理图的连接是相同的,所以结果也是相同的
在这里插入图片描述
查看硬件电路图
在这里插入图片描述
在这里插入图片描述

4.仿真波形图

如之前新建文件的方法,从“file”中选择“new”,然后从出现的对话框中选择“university program VWF”。
在这里插入图片描述
双击空白处,然后点击Node Finder
在这里插入图片描述
按下图进行操作就好
在这里插入图片描述在这里插入图片描述
此时会生成一个波形图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ctrl+鼠标滚轮可以对波形进行放大和缩小
在这里插入图片描述
把输入D设置几段高电平和低电平
在这里插入图片描述
保存文件
在这里插入图片描述
在这里插入图片描述
点击功能仿真按钮,它右边的是时序仿真按钮
在这里插入图片描述
直接仿真会报错,我们需要更改一下设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里就不会报错了,再点击功能仿真,可以看到,延时了半个时钟周期
在这里插入图片描述
然后我们点击时序仿真,第一次会报错,按如下方法解决
在这里插入图片描述
在这里插入图片描述
解决之后点击时序仿真就可以看到如下图结果,也就是延时了一个时钟周期
在这里插入图片描述

五、直接调用D触发器并仿真

1.创建工程

同前文操作,这里就不演示了。

2.选择D触发器

直接搜索dff就可以,可以省略掉我们配置电路的过程
在这里插入图片描述
这个时候在添加管脚,然后给管脚改个名,最后结果如下
在这里插入图片描述

3.编译

保存并编译,然后打开电路图如下
在这里插入图片描述

4.仿真波形图

仿真步骤和之前相同,这里直接看结果,以下是功能仿真的结果,同样延迟半个周期
在这里插入图片描述
以下是时序仿真的结果,同样延迟了一个周期
在这里插入图片描述

六、用Verilog语言实现D触发器和仿真

1.创建工程

方法同第四步,这里就不介绍了。

2.新建Verilog HDL文件

在这里插入图片描述

3.编写代码

module dwave(D,CLK,Q);
    input D;
	 input CLK;
	 output Q;
	 
	 reg Q;
	 always @ (posedge CLK)//正的时钟沿做敏感信号
	 begin
	 Q<=D;//上升沿有效时,把D捕获到Q
	 end
endmodule

4.编译

保存并编译,然后查看电路图如下
在这里插入图片描述
然后就是仿真,这里为了练习ModelSim的使用,我们进行单独仿真。
打开ModelSim,更改路径,选择我们新建的一个tb文件夹
在这里插入图片描述
在这里插入图片描述
创建一个project,输入文件名然后点击确定。
在这里插入图片描述
在这里插入图片描述
添加已有文件,这里添加quartus生成的.v文件,最后点ok就好。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后再创建一个.v文件
在这里插入图片描述
关闭窗口界面,打开刚才创建的wave1_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,开始仿真并按下图操作。
在这里插入图片描述
在这里插入图片描述
添加波形
在这里插入图片描述
设置运行时长,再点击运行,就可看到下图波形
在这里插入图片描述

七、总结

三种方法各有优点,设计原理图可以方便理解内部结构,直接调用D触发器则很方便,Verilog语言则更适合复杂电路。

八、参考资料

Quartus II实现D触发器及时序仿真

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值