首页 最新 热门 推荐

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

Quartus-ll 采用三种方法实现 D 触发器功能仿真及时序波形仿真详细步骤

  • 23-10-05 03:22
  • 3792
  • 9033
blog.csdn.net

目录

  • 一、D触发器简介
  • 二、创建D触发器原理图并仿真
    • 2.1 新建工程
    • 2.2 创建原理图文件
    • 2.3 编译原理图文件
    • 2.4 创建 VWF 文件
    • 2.5 波形仿真
  • 三、调用D触发器并仿真
    • 3.1 新建工程
    • 3.2 创建原理图文件
    • 3.3 编译原理图文件
    • 3.4 创建 VWF 文件
    • 3.5 波形仿真
  • 四、用Verilog语言实现D触发器并仿真
    • 4.1 新建工程
    • 4.2 编写Verilog文件
    • 4.3 使用Modelsim手动仿真
    • 4.4 波形仿真
  • 五、总结
  • 六、参考资料

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

一、D触发器简介

  • D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。
    在这里插入图片描述
  • D触发器(data flip-flop或delay flip-flop)由4个与非门组成,其中G1和G2构成基本RS触发器。

功能表:

DCLKQQN
0时钟上升沿01
1时钟上升沿10
×0last Qlast QN
×1last Qlast QN

时序图:
在这里插入图片描述

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

2.1 新建工程

  • 【File】→【New Project Wizard…】。
    在这里插入图片描述
  • 点击【Next >】。
    在这里插入图片描述
  • 选择工程保存路径及工程名,然后点击【Next >】。
    在这里插入图片描述
  • 这里是添加已有的工程设计文件,不需要添加,点击【Next >】。
    在这里插入图片描述
  • 根据使用的 FPGA,进行选择芯片系列及类型,然后点击【Next >】。
    在这里插入图片描述
  • 保持 Simulation 为 < None >,然后点击【Next >】。
    在这里插入图片描述
  • 配置信息,点击【Finish】。
    在这里插入图片描述

2.2 创建原理图文件

  • 【File】→【New…】。
    在这里插入图片描述
  • 选择【Block Diagram/Schematic File】,点击【OK】。
    在这里插入图片描述
  • 点击【插头图标】弹出工具窗口,搜索元件,然后在图纸上摆放:
    • 4 个 nand2 与非门;
    • 1 个 not 非门。
  • 如下图所示(Ctrl + 滚轮,可放大缩小):
    在这里插入图片描述
  • 添加两个输入管脚和两个输出管脚,双击 Pin Name 即可修改管脚名。
    在这里插入图片描述
  • 鼠标左键按住连接管脚即可,完整图如下:
    在这里插入图片描述
  • 保存电路图。
    在这里插入图片描述

2.3 编译原理图文件

  • 启动分析与综合(全编译)。
    在这里插入图片描述
    在这里插入图片描述
  • 查看硬件电路图:点击【Tools】→【Netlist Viewers】→【RTL Viewer】。
    在这里插入图片描述
  • 结果如下:
    在这里插入图片描述

2.4 创建 VWF 文件

  • 点击【File】→【New】,选择【University Program VWF】。
    在这里插入图片描述
  • 选择【Edit】→【Insert】→【Insert Node or Bus…】。
    在这里插入图片描述
  • 点击【Node Finder…】,然后点击【List】会罗列出四个管脚,点击【>>】选择全部,然后点击【OK】,自动补全了【Name】,然后点击【OK】。
    在这里插入图片描述
    在这里插入图片描述
  • 编辑输入 CLK,产生时钟信号。
    在这里插入图片描述
  • 选中要修改的区域,然后双击,修改为 1 ,再点击【OK】即可。
    在这里插入图片描述
  • 保存文件:【File】→【Save】。
    在这里插入图片描述
    在这里插入图片描述

2.5 波形仿真

功能仿真:

  • 点击【功能仿真按钮——Run Functional Simulation】。
    在这里插入图片描述
  • 出现以下错误:
    在这里插入图片描述

解决方法:

  • 点击【Tools】→【Lauch Simulation Library Compiler】。
    在这里插入图片描述
  • 选择工程目录下的 ...simulationqsim 文件夹,然后点击【Start Compilation】。
    在这里插入图片描述
  • 无错误,然后点击【Close】关闭窗口。
    在这里插入图片描述
  • 点击【功能仿真按钮——Run Functional Simulation】。
    在这里插入图片描述
  • 仿真结果如下(延迟了半个时钟周期):
    在这里插入图片描述

时序仿真:

  • 主界面【Processing】→【Start】→【Start Fitter】。
    在这里插入图片描述
  • 点击【Start TimeQuest Timing Analyzer】。
    在这里插入图片描述
  • 返回 VMF 文件界面:点击【时序仿真按钮——Run Timing Simulation】。在这里插入图片描述
  • 仿真结果(延迟一个时钟周期):
    在这里插入图片描述

三、调用D触发器并仿真

3.1 新建工程

  • 同第二部分一样。

3.2 创建原理图文件

  • 同第二部分一样。
  • 这时,不再画D触发器的内部结构了,而是直接调用D触发器,元件名:dff。
    在这里插入图片描述
  • 再添加输入和输出管脚。
    在这里插入图片描述

3.3 编译原理图文件

  • 同第二部分方法一样。
  • 先编译,再查看硬件电路图。
    在这里插入图片描述

3.4 创建 VWF 文件

  • 方法同第二部分一样,

3.5 波形仿真

  • 方法同第二部分一样,先编译一下,让它报错,再用解决方法。
  • 功能仿真(只有半个时钟周期的延迟):
    在这里插入图片描述
  • 时序仿真(有一个时钟周期的延迟):
    在这里插入图片描述
  • 相较于第二部分,来说,使用现有的D触发器会更加方便,绘图少,但是对于D触发器的内部结构来说不太清楚,最后仿真出来的结果也是一样的。

四、用Verilog语言实现D触发器并仿真

4.1 新建工程

  • 方法同上。

4.2 编写Verilog文件

  • 【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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 保存文件并编译。
    在这里插入图片描述

4.3 使用Modelsim手动仿真

  • 打开 Modelsim 软件。
  • 具体步骤如下:
  • 在Quartus创建的工程文件夹下新建一个 tb 文件夹;
  • 点击【File】→【Change Directory】选择 tb 文件夹;
  • 创建新项目:【File】→【New】→【Project…】,编写工程名及选择路径;
    在这里插入图片描述
  • 添加现有文件:Add Existing File。
    在这里插入图片描述
  • 找到刚刚 Quatrus 编译生成的 .v 文件,再点击【OK】。
    在这里插入图片描述
  • 再创建一个新的文件。
    在这里插入图片描述
  • 然后关闭添加文件窗口界面。
  • 再双击刚刚新建的 wave_b.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
  • 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
  • 然后保存。
  • 点击【编译】按钮,编译所有文件。
    在这里插入图片描述

4.4 波形仿真

  • 点击【Simulate】→【Start Simulation…】。
    在这里插入图片描述
  • 找到 wave_b.v 文件所在的工程(看路径),取消勾选,点击【OK】。
    在这里插入图片描述
  • 右键点击工程名,再点击【Add Wave】。
    在这里插入图片描述
  • 设置运行时长,再点击旁边的运行按钮,即可出现仿真效果图。
    在这里插入图片描述
  • 相较于第三部分的步骤,这个部分用到了 Modelsim 软件,我个人觉得吧,这个软件略微麻烦了一点点,但也还好,最后出来的仿真效果也是和前面两个部分的相差无几。

五、总结

  • 就我个人来说,使用 Quartus 与 Modelsim 软件来仿真电路,确实挺方便的,但是对于一窍不懂 Verilog 语言的人来说,使用原理图仿真会方便得多,如果对 Verilog 语言较懂的人来说,当遇到复杂繁杂的电路图时,会更加的方便。

六、参考资料

[1] Quartus-II13.1三种方式实现D触发器及时序仿真
[2] D触发器_百度baike
[3] quartus值时序仿真出错及解决

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

/ 登录

评论记录:

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

分类栏目

后端 (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