软件版本:VIVADO2017.4
操作系统:WIN10 64bit
硬件平台:适用米联客 ZYNQ系列开发板
米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!!
4.1 概述
本章课程以大家熟悉的流水灯为例子,详细讲解了VIVADO软件的使用,包括创建FPGA工程,编写Verilog代码,添加管脚约束,最后编译,下载bit文件到开发板测试。对于初学XILINX FPGA的读者请注意,bit文件断电后就丢失了。如果实现上电能够启动程序,需要把BIT文件打包成bin或者MCS文件才可以。如果打包,固化到FLASH,在后面的章节中我们再说。
4.2 硬件原理图
| |
此图对应的是MZXA和MZ7XB开发板,其他开发板应阅读配套的硬件手册或者原理图查看pin脚。
4.3 新建VIVADO工程
Step1:启动VIVADO,单击Create Project
Step2:单击NEXT
Step3:创建名为Miz_sys的工程到对应的文件目录,文件路径自定义,不能有中文或非法字符,之后单击NEXT
Step4:选择RTL Project并且勾选复选框,之后单击NEXT
Step5:选择芯片的型号和封装速度等级:
MZ7XA-7010、MZ7XA-mini7010如下图所示设置:
MZ7XA-7020、MZ7XB如下图所示设置:
Step:6 单击Finish完成工程创建。
4.4 添加工程文件
Step1:打开VIVADO软件
Step2:单击 Add Sources
Step3:选择单击Add or Create Design Sources 然后单击NEXT
Step4:单击Create File 来创建文件
Step5:创建一个run_led的文件,并且文件类型选择Verilog
Step6:添加完成后如下图所示之后单击finish完成文件的创建
Step7:继续弹出的对话空中,可以设置一些端口,但是我们现在什么都不做。单击OK
Step8:创建完成后可以看到Design Sources文件夹中有了run_led.v这个文件,这个文件就是我们可以编写verilog程序的文件。
4.5 Verilog FPGA流水灯实验
Step1:双击Led.v打开流水程序源码。
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2018/04/30 21:36:36 // Design Name: // Module Name: run_led // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module run_led( ); endmodule |
|
可以看出这是一个空的工程,我们现在要添加代码同时也要添加工程信息。
Step2:编写程序并且添加工程信息
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2018/04/30 21:36:36 // Design Name: // Module Name: run_led // Project Name: // Target Devices: XC7Z020-CLG400-2 // Tool Versions: Vivadio2017.4 // Description: water led // Revision: V1.1 // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: //1) _i PIN input //2) _o PIN output //3) _n PIN active low //4) _dg debug signal //5) _r reg delay //6) _s state machine // //
module run_led( input CLK_i, input RSTn_i, output reg [3:0]LED_o ); reg [31:0]C0; always @(posedge CLK_i) if(!RSTn_i) begin LED_o <= 4'b1; C0 <= 32'h0; end else begin if(C0 == 32'd50_000_000) begin C0 <= 32'h0; if(LED_o == 4'b1000) LED_o <= 4'b1; else LED_o <= LED_o << 1; end else begin C0 <= C0 + 1'b1; LED_o <= LED_o; end end endmodule |
|
这样我们就编写好了代码下面还要添加管脚约束文件。
4.6 添加管脚约束文件
管脚约束文件,即.xdc文件,一般情况,生成后会放在Miz_sys.srcs\constrs_1文件夹中,这里的“Miz_sys”对应的是创建工程的名称。添加管脚约束有三种方法,分别是手动新建XDC PIN脚约束文件、直接加入已经写好的约束文件、综合后添加管脚约束,用户根据实际情况选择其中一种方法,可以提高工作效率。
4.6.1 方法一 手动新建XDC PIN脚约束文件
Step1:单击(和添加.v文件一样)
Step2:选择Add or create constraints 然后单击NEXT
Step3:点击Create File,创建一个新的.xdc文件。
Step4:打开提供例程,复制约束文件中的管脚约束,下图是打开配套的例子的工程截图。
下图是你创建的工程,新建的XDC文件,把上图配套例子的PIN脚约束,粘贴到新建工程中的xdc文件。
Step5:保存,XDC文件生成完成。
4.6.2 方法二 综合后,添加管脚约束
Step1:综合工程。
Step2:打开 Open Synthesized Design。
Step3:管脚配置。
点击I/O Ports,在Find Results 中进行管脚配置(图a)。Package Pin对应FPGA中的管脚,I/O Std对应电平标准(图b)。例如要配置RSTn_i信号连接到T19管脚,电平标准是LVCMOS33,在Package Pin中选择管脚P1,I/O Std选择LVCMOS33。其他管脚也做相应配置(图c)。
图a
图b
图c
Step4:保存,给XDC文件命名,生成.XDC文件,并保存到Miz_sys\Miz_sys.srcs\constrs_1。Constrs_1文件夹是自己创建的
Step5.XDC文件生成结束
4.6.3 方法三 直接加入已经写好的约束文件
Step1:单击(和添加.v文件一样)
Step2:选择Add or create constraints 然后单击NEXT
Step3:单击Add Files
Step5:将要添加的.xdc文件添加进来,然后点击OK。
注意:提供例程的.xdc文件放在.srcsàconstrs_1文件夹中。
Step6:点击Finish完成约束文件的添加
4.7 优化管脚约束文件
对于ZYNQ FPGA为了减少bit文件大小,提高加载速度,在管脚约束文件中添加如下代码:
#bit compress set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] set_property CFGBVS VCCO [current_design] set_property CONFIG_VOLTAGE 3.3 [current_design] |
4.8 编译并且产生bit文件
Step1:单击综合
Step2:单击执行
Step3:单击产生bit
4.9 下载程序
Step1:给开发板通电,并且连接下载器
Step2:单击OpenTarget 然后单击Auto Connect
Step3:连接成功后如下图所示:
MZ7XA-7010、MZ7XA-mini7010如下图所示:
MZ7XA-7020、MZ7XB如下图所示:
Step4:单击Program Device
Step5:单击Program Device(也可以从顶部单击Program device), 然后选择 XC7Z010_1或XC7Z020。
或者
MZ7XA-7010、MZ7XA-mini7010:
MZ7XA-7020、MZ7XB:
Step6:弹出的对话框中有我们要下载的Bit文件
Step7:下载过程
4.10 实验结果
下载过程下载完成后LED流水灯就运行起来了。