Quartus使用基础——D触发器仿真与时序波形验证
一、D触发器——门电路设计
1.1 新建文件夹
一般新建文件夹有doc、par、rtl、sim四个
doc:一般存放工程相关的文档,包括该项目用到的datasheet(数据手册)、设计方案等。
par:主要存放工程文件和使用到的一些IP文件
rtl:主要存放工程的rtl代码,这是工程的核心,文件名与module名称应当一致,建议按照模块的层次分开存放
sim:主要存放工程的仿真代码,复杂的工程里面,仿真也是不可或缺的部分,可以极大减少调试的工作量
1.2 创建工程
File->New Project Wizard
Next
- 选择芯片
EP4CE10F17C8
,Next
Finish
1.3 门电路设计D触发器
File->New
- 双击空白处,在Name处输入
nand2
,点击OK
- 同理,一共需要四个与非门
nand2
,一个非门not
- 连好电路图
- 保存(我保存到sim文件夹下的)并编译
- 编译后,用
Tools->Netlist->RTL Viewer
,可以看到下面硬件电路图
1.4 创建VWF文件:时序仿真
- 创建VWF文件
Edit->Insert->Insert Node or Bus
,选择Node Finder
- 插入Node 和 Bus
- 点击
OK
后得到下面的波形图
- 编辑输入Clk,产生时钟信号
- 鼠标选择D,Q信号Q_n,,进行编辑
- 点击仿真
- 可能会有如下错误
Tools->Launch Simulation Library Compiler
二、D触发器——直接调用
2.1 新建文件夹&同1.1
2.2 创建工程&同1.2
2.3 直接调用D触发器
- 新建
Block Diagram
,输入dff
- 连好电路图
- 保存编译
Tools->Netlist->RTL Viewer
2.4 创建VWF文件:时序仿真&同1.4
三、D触发器——Verilog语言
3.1 新建文件夹&同1.1
3.2 创建工程&同1.2
3.3 代码写入
- 第一步选择为
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
- 编译通过
Tools->Netlist->RTL Viewer
综合电路
3.4 创建VWF文件:时序仿真&同1.4
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
- 编译
- 创建VWF文件等
- 结果如下
- 时序仿真