我是靠谱客的博主 跳跃冬瓜,最近开发中收集的这篇文章主要介绍Quartus-ll 采用三种方法实现 D 触发器功能仿真及时序波形仿真详细步骤一、D触发器简介二、创建D触发器原理图并仿真三、调用D触发器并仿真四、用Verilog语言实现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】。
- 选择工程目录下的
...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
- 保存文件并编译。
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
- 然后保存。
- 点击【编译】按钮,编译所有文件。
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 触发器功能仿真及时序波形仿真详细步骤一、D触发器简介二、创建D触发器原理图并仿真三、调用D触发器并仿真四、用Verilog语言实现D触发器并仿真五、总结六、参考资料的全部内容,希望文章能够帮你解决Quartus-ll 采用三种方法实现 D 触发器功能仿真及时序波形仿真详细步骤一、D触发器简介二、创建D触发器原理图并仿真三、调用D触发器并仿真四、用Verilog语言实现D触发器并仿真五、总结六、参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复