Quartus使用基础——D触发器仿真与时序波形验证

本文详细介绍了在Quartus软件中设计D触发器的三种方法:门电路设计、直接调用以及使用Verilog语言实现。从新建工程到时序仿真的每个步骤都有详尽的说明,包括电路连接、代码编写和时序波形验证。同时,文章提供了可能遇到的错误解决方案和参考资料,适合初学者学习FPGA设计和Verilog编程。
摘要由CSDN通过智能技术生成

一、D触发器——门电路设计

1.1 新建文件夹

一般新建文件夹有doc、par、rtl、sim四个

doc:一般存放工程相关的文档,包括该项目用到的datasheet(数据手册)、设计方案等。
par:主要存放工程文件和使用到的一些IP文件
rtl:主要存放工程的rtl代码,这是工程的核心,文件名与module名称应当一致,建议按照模块的层次分开存放
sim:主要存放工程的仿真代码,复杂的工程里面,仿真也是不可或缺的部分,可以极大减少调试的工作量

1.2 创建工程

  1. File->New Project Wizard
    在这里插入图片描述
  2. Next
    在这里插入图片描述
  3. 选择芯片EP4CE10F17C8Next
    在这里插入图片描述
  4. Finish
    在这里插入图片描述

1.3 门电路设计D触发器

  1. File->New
    在这里插入图片描述
  2. 双击空白处,在Name处输入nand2,点击OK
    在这里插入图片描述
  3. 同理,一共需要四个与非门nand2,一个非门not
    在这里插入图片描述
  4. 连好电路图
    在这里插入图片描述
  5. 保存(我保存到sim文件夹下的)并编译
    在这里插入图片描述
    在这里插入图片描述
  6. 编译后,用Tools->Netlist->RTL Viewer,可以看到下面硬件电路图
    在这里插入图片描述

1.4 创建VWF文件:时序仿真

  1. 创建VWF文件
    在这里插入图片描述
  2. Edit->Insert->Insert Node or Bus,选择Node Finder
    在这里插入图片描述
  3. 插入Node 和 Bus
    在这里插入图片描述
  4. 点击OK后得到下面的波形图
    在这里插入图片描述
  5. 编辑输入Clk,产生时钟信号
    在这里插入图片描述
  6. 鼠标选择D,Q信号Q_n,,进行编辑
    在这里插入图片描述
  7. 点击仿真
    在这里插入图片描述
    在这里插入图片描述
  8. 可能会有如下错误
    在这里插入图片描述
    Tools->Launch Simulation Library Compiler
    在这里插入图片描述
    在这里插入图片描述

二、D触发器——直接调用

2.1 新建文件夹&同1.1

2.2 创建工程&同1.2

2.3 直接调用D触发器

  1. 新建Block Diagram,输入dff
    在这里插入图片描述
  2. 连好电路图
    在这里插入图片描述
  3. 保存编译
  4. Tools->Netlist->RTL Viewer
    在这里插入图片描述

2.4 创建VWF文件:时序仿真&同1.4

在这里插入图片描述
在这里插入图片描述

三、D触发器——Verilog语言

3.1 新建文件夹&同1.1

3.2 创建工程&同1.2

3.3 代码写入

  1. 第一步选择为File->New->Verilog HDL File,在空白区域写入如下代码
module flip_flop
(
input clk , // system clock 50Mhz on board
input rst_n, // system rst, low active
input a ,
output reg y // output signal
 );


always @ (posedge clk or negedge rst_n) begin
if (rst_n == 1'b0)
y <= 1'b0 ;
else
y <= a ;
end

endmodule
  1. 编译通过
    在这里插入图片描述
  2. Tools->Netlist->RTL Viewer综合电路
    在这里插入图片描述

3.4 创建VWF文件:时序仿真&同1.4

  1. File->New->Verilog HDL File编写一个 testbech 测试电路通过仿真来看下触发器的波形,代码如下
module TB();

reg sys_clk;
reg sys_rst_n;

reg a;
wire y;

initial begin
	sys_clk = 1'b0;
	sys_rst_n = 1'b0;
	// 初始化 a 为 0
	a = 1'b0;

	#200
	sys_rst_n = 1'b1;

	#100
	// 让 a 为 1
	a = 1'b1;
	#60
	// 让 a 为 0
	a = 1'b0;

end

always #10 sys_clk = ~sys_clk;

flow_flop u_flow_flop(
	.clk (sys_clk ),
	.rst_n (sys_rst_n),
	.a (a ) ,
	.y (y )

	);

endmodule
  1. 编译
  2. 创建VWF文件等
  3. 结果如下
    在这里插入图片描述
  4. 时序仿真
    在这里插入图片描述

四、参考资料

  1. FPGA学习笔记(二)——verilog代码规范化
  2. Quartus II-D触发器设计
  3. 触发器详解——(一)D触发器
  4. 数电实验入门-Quartus]|9.0基础教程
  5. 1.6 CMOS钟控触发器
  6. ModelSim6.5与quartus联合仿真的路径问题解决
  7. Modelsim SE版本的安装及使用方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值