二、设计代码,仿真及测试 1、design sources `timescale 1ns/1ps module led_test( input clk, input rst, output reg[3:0]led ); reg [31:0] count; always @(posedge clk or negedge rst)begin if(!rst)begin count<=32'd0; led<=4'b1111; //led灯高电平灭,低电平亮 end else if(count==32'd49_999_999)begin led<=4'b0000; count<=32'd0; end else count<=count+32'd1; endendmodule
2、添加约束文件
这是刚才创建RTL工程的时候创建过的源文件和约束文件 约束文件两种方式 第一种:点击分析和约束解析的网表
点击OK,进入下边页面
设计文件代码生成的RTL网表点击工具栏中的windows下的I/Oport,可以查看管脚分配情况,并根据原理图进行管脚分配
分配情况如下
CTRL+S 保存 弹出窗口如下,因为之前已经添加过约束文件
打开约束文件led.XDC,空白的,点击 reload 重新加载,如下图所示管脚分配和电压情况
约束文件两种方式 第二种:编写约束管脚约束文件XDC 编写的语法,普通 IO 口只需约束引脚号和电压, 管脚约束 如下: set_property PACKAGE_PIN "引脚编号" [get_ports “端口名称”] 电平信号的约束如下: set_property IOSTANDARD "电平标准" [get_ports “端口名称”] 这里需要注意文字的大小写,端口名称是数组的话用{ }刮起来,端口名称必须和源代码中 的名字一致,且端口名字不能和关键字一样。 set_property PACKAGE_PIN M14 [get_ports {led[0]}]set_property PACKAGE_PIN M15 [get_ports {led[1]}]set_property PACKAGE_PIN K16 [get_ports {led[2]}]set_property PACKAGE_PIN J16 [get_ports {led[3]}]set_property PACKAGE_PIN U18 [get_ports clk]set_property PACKAGE_PIN N15 [get_ports rst]set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]set_property IOSTANDARD LVCMOS33 [get_ports clk]set_property IOSTANDARD LVCMOS33 [get_ports rst]
3、添加时序约束(对于led实验简单的一个时钟进行约束) 进行综合 (综合类似于编程中的编译),成功后,会提示综合成功,为了方便学习先不点击OK进行实现设计综合网表
点击open 下的constraints wizard (约束导向)
然后点击 next进入时钟设置,将时钟设置成50Mhz。点击“Skip to Finish”结束时序约束向导。下边一行时钟约束的代码,到XDC约束文件中点击reload 重新加载,便可添加到约束文件 ,如下图所示
4、生成bit文件 编译的过程可以细分为综合、布局布线、生成 bit 文件等,这里我们直接点击“Generate Bitstream”,直接生成 bit 文件。(仿真和约束文件编写顺序不做要求)
编译成功 点击OK 打开硬件管理
1) 连接好开发板的 JTAG 接口,给开发板上电 2) 在“HARDWARE MANAGER”界面点击“Auto Connect”,自动连接设备
3) 可以看到 JTAG 扫描到 arm 和 FPGA 内核
4) 选择 xc7z020_1,右键“Program Device...”
5) 在弹出窗口中点击“Program (如果不显示路径,一般bits文件在 RTL工程里面的runs文件中)
6) 等待下载 7) 下载完成以后,我们可以看到 4 颗 LED 开始每秒变化一次。到此为止 Vivado 简单流程体 验完成。后面的章节会介绍如果把程序烧录到 Flash,需要 PS 系统的配合才能完成,只有 PL 的工程不能直接烧写 Flash。
|