1概述
以一个基础的实验——二选一选择器,来介绍完整的 FPGA 设计开发流程。
首先要建立如下模板
prj 为工程文件存放目录;rtl 为 verilog 可综合代码存放目录;testbench 为测试文件存放目录;img 为设计相关图片存放目录;doc 为设计相关文档存放目录;prj 文件夹下还建立了子文件夹 ip,用于存放 Quartus Prime 中生成的 IP 核文件。
2建立工程
打开安装好的 Quartus Prime 软件,软件启动界面及启动后的主界面如图,新建文件
2第二步,选择新建工程所在路径、设置工程命名以及顶层设计实体名称。在输入顶层设
计实体时默认与工程名称一致,此处可根据具体情况来自行修改
工程实体名称
3添加代码,目前没有直接next
4跟据自己板子选芯片,针,速度等级,选出器件名称为EP4CE10F17C8,这些芯片相同封装相同速度等级,只是逻辑容量不同。
这两个芯片逻辑容量分别是6k和10k
5选择EDA工具
6finish完成创建
3设计输入
工程建立完成后,需要为工程添加新的设计文件,单击 File→New→Verilog HDL File,或者工具栏中的 New
新的文件建立完成后,输入程序清单所示代码,并以 led_test.v 命名保存到工程对应
的 rtl 文件夹下
module mux2(
//端口列表
a,
b,
sel,
out);
//端口类型定义
input a;//输入端口 A
input b;//输入端口 B
input sel; //按键输入,实现输入通道的选择
output out; //led 控制端口
//当 sel == 0 :led_out = a
assign out = (sel == 0)? a : b;
endmodule
4分析和综合
单击工具栏中的 Start Analysis & Synthesis 来进行分析和综合
如在设计过程有错误的地方,在分析和综合后会提示 Error 或者 Warning,需针对不同情况进行修改。我们汇总了分析和综合过程中常见的问题以及解决方式
全编译后可以通过RTL Viewer来查看硬件逻辑电路
5仿真
5.1矢量波形进行仿真
添加激励进行仿真后结果正确
加周期效果相同
5.2modelsim进行仿真
1首先确认是否安装modelsim
2设置quartus软件和modelsim关联路径
3设置仿真脚本或仿真激励testbench
4设置nativelink
5运行仿真
关联路径
设置激励编写测试脚本
新建一个.v文件以mux_tb保存在testbench文件夹内
列编辑按住alt 拖动即可
`timescale 1ns/1ps
module mux2_tb;
//激励信号
reg s1;// a
reg s2;// b
reg s3;//sel
wire Light1;
mux2 mux2_inst0(
//端口列表
.a(s1),
.b(s2),
.sel(s3),
.out(Light1)
);
//产生激励
initial begin
//仿真开始
s1=0;s2=0;s3=0;
//#代表延时步进是单位
#100;
s1=1;s2=0;s3=0;
#100;
s1=0;s2=1;s3=0;
#100;
s1=1;s2=1;s3=0;
s1=0;s2=0;s3=1;
#100;
s1=1;s2=0;s3=1;
#100;
s1=0;s2=1;s3=1;
#100;
s1=1;s2=1;s3=1;
#100;
//验证覆盖率,全验证
//停下来
$stop;
end
endmodule
完成后ctrl+k运行,结果报告
设置nativelink,设置仿真脚本
单击标题栏的 Assignments→Settings→Simulation,查看仿真工具以及语言是否与之前的设置一致,否则根据实际使用情况进行相应的修改
点击add ok
5.2.1RTL
运行仿真
第一个理想化仿真模型,第二个实际的,打开后会自己运行出现如下图效果。
独立波形窗口
点下图点可以打开完整的图
只有testbench中的信号,如果要看mux2中的信号
此时新加进来数据没有保存,要restart然后run all 重新运行
此时状态是一致的
右击可以分组管理
5.2.2Gate level simulation
在这里门级电路仿真可以预判线路延时,所以要全编译后才可进行仿真
有一个延时
6目标板运行
配置到AC620
pin planer分配管脚
先把电压标准改为3.3LVTTL
将out改为PIN_A2
再进行全编译
点击programmer按钮,然后
点击硬件设置
将主板通过usb进行连接,打开电,选择驱动
添加编译生成文件
点击start开始转换