使用的是正点原子的领航者开发板。
一般这种教程都是各种截图,本文则主要用文字描述。图片的好处是信息量大,坏处是占用篇幅也大,一口气看十几页教程,很容易就看不下去了。
【1】 创建工程
- 1.1 打开Vivado软件->点击【Quick Start】下的【Create Project】->【Next】
- 1.2 输入项目名称【Project Name】;项目路径【Projection Location】,勾选【Create projected subdirectory】->【Next】
- 其中我的项目名称是【led】,路径在【E:/work/Proj/led】
- 1.3 【Project Type】只勾选【RTL Project】->【Next】
- 1.4 【Add Sources】窗口
- 【Target language】选择Verilog
- 【Simulator language】选择Mixed
- 点击【Create File】->文件类型verilog,文件名led.v->【OK】
- 【Next】
- 1.5 【Add Constraints】窗口,直接【Next】,等到创建完工程后再创建约束文件。
- 1.6 【Default Part】选择开发板型号,我用的是ZYNQ-7020核心板,在【search】中输入【xc7z020clg400-2】->选中搜索结果->【Next】
- 1.7 【Finish】完成工程创建,进入Vivado工程主界面。对于弹出的【Define Module】,在下一节介绍。
其中,工程类型含义如下
- 【RTL Project】即正常设计流程。
- 【Do not specify sources at this time】若勾选,则不创建或者添加设计文件,由于后续需要添加设计文件,所以不勾选。
- 【Project is an extensible Vitis platform】创建的工程是否需要扩展 Vitis 开发平台,本入门示例不需要,所以不勾选。
- 【Post-synthesis Project】在导入第三方工具所产生的综合后网表时才选择;
- 【I/O Planning Project】一般用于在开始 RTL 设计之前,创建一个用于早期 IO 规划和器件开发的空工程;
- 【Imported Project】 用于从 ISE、XST 或 Synopsys Synplify 导入现有的工程源文件;
- 【Example Project】是指创建一个 Vivado 提供的工程模板。
Xilinx命名规则,以【xc7z020clg400-2】为例
- 【xc】即Xilinx 公司
- 【7】7 系列
- 【z】zynq
- 【020】价值索引,数值越大资源越多
- 【clg】芯片制造工艺信息
- 【400】芯片封装引脚计数
- 【-2】速度等级
【2】 定义模块
- 2.1 【Define Module】设置,其【Module name】默认led,即此前创建的文件名。点击【➕】,创建端口
- 【Port Name】key;【Direction】input,不需勾选bus
- 【Port Name】led;【Direction】output,不需勾选bus
- 【OK】
- 2.2 进入vivado主界面,在其Sources子窗口中,双击Design Sources下的led.v文件,可以看到Vivado自动创建了代码,其中大部分都写在【//】,这在verilog中表示注释。
- 2.3 再添加几笔,让其变为如下形式,注意改完之后按下Ctrl+S保存
module led(
input key ,
output led
);
assign led = ~key;
endmodule
其中,输入和输出是刚刚在Define Module窗口设置的;【assign】赋值语句,将【key】取反后赋值给led。功能非常简单,就是点亮LED。
【3】 分析
-
3.1 找到左侧【Flow Navigator侧栏\RTL_ANALYSIS下拉框\Open Elaborated Design】,点击后弹出提示框->【OK】
- 此时Vivado会编译源文件把那个进行语法检查,点击底部【Messages】窗口可以看到其编译过程
- 编译完成后,右侧led.v旁边会弹出【Project Summary】选项卡
- 点击【RTL_ANALYSIS】下的【Schematic】,可查看其原理图
-
3.2 分配I/O引脚,点击右上角的布局下拉框,将【Default Layout】更改为【I/O Planning】,即可编辑IO->选中底部【IO Ports】选项卡,打开【All pors\Scalar ports】下拉框,将key和led的【I/O Std】均设为【LVCMOS 33】;将Package Pin分别设为【L14】和【H15】
-
3.3 引脚约束完成后,点击Ctrl+S保存设置,弹出约束保存对话框->将文件名设为【led】->点击【OK】
- 保存完成后,可在【Sources\Constrints\constrs_1\led.xdc】中查看其文件内容
其中,key和led引脚设置需要在开发板的文档中寻找。【led.xdc】内容如下
set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property IOSTANDARD LVCMOS33 [get_ports key]
set_property PACKAGE_PIN L14 [get_ports key]
set_property PACKAGE_PIN H15 [get_ports led]
【4】 综合与实现
- 4.1 点击【Flow Navigator\SYNTHESIS\Run Synthesis】->弹出对话框直接点【OK】
- 这一步需要一点时间,综合过程中,右上角【I/O Planning】上方一直在转圆圈,需要等待
- 4.2 综合完成后,弹出完成窗口->选择【Run Implemented】->【OK】->新弹出窗口也点【OK】,
- 实现过程同样需要时间,右上角转圈。
- 4.3 实现完成后,弹出完成窗口->选择【Open Implemented Design】->【OK】->新弹出窗口也点【Yes】
- 这一步完成之后,下方【Design Runs】选项卡的Status列会有完成提示
- 4.4 点击【Flow Navigator\PROGRAM AND DEBUG\Generate Bitstrem】->弹出对话框点击【OK】
- 这一步需要时间,右上角转圈。
- 4.5 比特流生成完成后,弹出窗口点击【Cancel】->点击左下角【Open Hardware Manager】,弹出硬件管理窗口
至此,我们便生成了用于FPGA的硬件程序。
【5】 下载验证
-
5.1 将开发板调整为JTAG模式,我所使用的开发板,需将两个BOOT开关均调制ON状态
-
5.2 连接JTAG下载口:开发板->ATK-USB转接器->USB线->电脑
-
5.3 连接开发板电源,并开机,ATK-USB转接器的指示灯变蓝
-
5.3 点击vivado【Hardware】子窗口中的自动连接按钮,连接成功如下图所示,红框中标出的是自动连接按钮。
-
5.4 点击【Hardware】子窗口上方的【Program device】->弹出窗口点击【Program】
至此,Vivado的入门开发即宣告成功,点击开发板上相应的按钮,LED灯就会亮。