Quartus-ll 采用三种方法实现 D 触发器功能仿真及时序波形仿真详细步骤
目录
- 一、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触发器。
功能表:
D | CLK | Q | QN |
---|---|---|---|
0 | 时钟上升沿 | 0 | 1 |
1 | 时钟上升沿 | 1 | 0 |
× | 0 | last Q | last QN |
× | 1 | last Q | last 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】。
- 选择工程目录下的
...\simulation\qsim
文件夹,然后点击【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)//我们用正的时钟沿做它的敏感信号beginq <= d;//上升沿有效的时候,把d捕获到qend
endmodule
- 保存文件并编译。
4.3 使用Modelsim手动仿真
- 打开 Modelsim 软件。
- 具体步骤如下:
- 在Quartus创建的工程文件夹下新建一个 tb 文件夹;
- 点击【File】→【Change Directory】选择 tb 文件夹;
- 创建新项目:【File】→【New】→【Project…】,编写工程名及选择路径;
- 添加现有文件:Add Existing File。
- 找到刚刚 Quatrus 编译生成的 .v 文件,再点击【OK】。
- 再创建一个新的文件。
- 然后关闭添加文件窗口界面。
- 再双击刚刚新建的 wave_b.v 文件,添加如下代码:
//测试代码
`timescale 1ns / 1nsmodule dwave_tb;reg clk,d;wire q;dwave u1(.d(d),.clk(clk),.q(q));initialbeginclk = 1;d <= 0;foreverbegin#60 d <= 1;//人为生成毛刺 #22 d <= 0;#2 d <= 1;#2 d <= 0;#16 d <= 0;//维持16ns的低电平,然后让它做周期性的循环endendalways #20 clk <= ~clk;//半周期为20ns,全周期为40ns的一个信号
endmodule
- 然后保存。
- 点击【编译】按钮,编译所有文件。
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值时序仿真出错及解决
Quartus-ll 采用三种方法实现 D 触发器功能仿真及时序波形仿真详细步骤相关推荐
- Quartus II三种方式实现D触发器及时序仿真
Quartus II三种方式实现D触发器及时序仿真 一.准备工作 (一)软件下载 (二)D触发器原理 1.简介 2.D触发器的基本结构与信号输入输出关系 3.状态转移真值表以及状态转移图 二.实验要求 ...
- Linux检查点是做什么的,基于日志却采用三种方法来区别增量检查点和完全检查点...
增量检查点的作用是为了均衡负载,由fast_start_mttr_target这个参数触发,增量渐进写出.所以,CHECKPOINT_CHANGE#会有延迟,不会马上更新. 下面用三种方法证明: 法一 ...
- Android 手把手完美教你美团wally(瓦力)多渠道打包 3种方法(针对签名V1和V2都会有很详细的介绍)
APK的生成步骤: 大家从图中可以看出,大体分为以下 7 个大步: 1.打包资源文件,生成 R.java 文件 2.处理 aidl 文件,生成相应 java 文件 3.编译工程源代码,生成相应 cla ...
- 单片机跑马灯程序c语言,MCS-51单片机控制跑马灯的三种方法
描述 在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的.在并行端口的编程学习中,"跑马灯"是单片机并行端口输出控制的典型实例.所谓跑马灯,是 ...
- JDBC读取新插入Oracle数据库Sequence值的5种方法
Oracle的sequence实现非常灵活,所以也带来一些易用性问题,如何取到新插入记录生成的sequence值与其它数据库有较大差别,本文详国介绍了5种实现读取新插入记录sequence值的方法. ...
- python 命令-python解析命令行参数的三种方法详解
这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...
- python演示验证图像叠加过程_Python叠加矩形框图层2种方法及效果代码实例
本篇文章小编给大家分享一下Python叠加矩形框图层2种方法及效果代码实例,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 两种方式以及效果: 方式一,使用 ...
- 电脑一开机出rebootand_电脑一开机就有软件弹窗广告弹出怎么办?两种方法来解决...
不知道大家有没有跟小编一样的苦恼,就是每天早上电脑开机的时候就会有一堆弹窗广告,而且大部分弹窗广告的关闭按钮都不好找,真是烦死了.经过小编的多方打听,终于找到了屏蔽掉开机广告弹窗的方法.两种方法都 ...
- python图层合并_图层最新:Python叠加矩形框图层2种方法及效果_爱安网 LoveAn.com
关于"图层"的最新内容 聚合阅读 这篇文章主要介绍了Python叠加矩形框图层2种方法及效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...
- 无服务器–仅仅是构建现代应用程序的一种方法?
如果搜索"无服务器",则会发现无服务器是构建现代应用程序的一种新的流行方式. 无服务器真的是新的吗? 无服务器是指您无需担心服务器的概念–无需置备,部署和维护服务器. 显然有服务器 ...
最新文章
- 为什么vs数据库中文显示问号_在vs2008中注册页面中的中文字符写入数据库的后中文会变成问号...
- 实战SSM_O2O商铺_35【商品】商品编辑之View层的实现
- UVALive - 7270 Osu! Master
- 点石关键词排名优化软件_重庆关键词优化排名
- IIFE(立即执行函数表达式)
- 学习OpenCV——ORB简化版Location加速版
- C++ 虚函数表解析 继承
- Office 365 Sway-移动设备推送利器
- 关于VXLAN实验中CE设备的BUG问题
- 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置***帧以及动画创建!【二】...
- 判断在ios系统中打开微信浏览器
- python定时任务_Python定时任务(下)
- jre7或jre8或其他版本共存问题
- 集成隔离电源的隔离式RS-485/RS-422收发器
- 网卡添加VLAN TAG
- Spring Boot整合Redis---学习09
- Java流处理之高效读写的缓冲流
- 04_turtle画奥运五环
- “三高”即通常所说的高血压、高血脂(血脂异常)和高血糖三种病症的总称...
- 两种方法编写圆的周长和面积