赞
踩
官方下载链接:
https://www.xilinx.com/support/download.html
选择对应的版本下载:
下载完成后解压文件夹,双击xsetup.exe
然后一路傻瓜式安装,注意安装路径不能有中文字符和空格。
此外还需要软件许可安装,以下是安装软件许可教程及文件。
https://www.bilibili.com/read/cv15414254/
点击Vivado 2018.3
在开发环境里点击 Create New Project
点击next
输入项目名称,选择存放路径,然后点击next
选择RTL Project ,然后点击next
这一步是添加 Source 文件,这里先不添加,点击 Next
这里是添加约束文件,同样暂时不添加,点击 Next
选择器件,可以根据开发板上的芯片型号来做选择,由于芯片型号比较多,
可以做一些筛选。
Z7-Lite7020的用户在Family栏里选择Zynq-7000,Package栏选择clg400,
速度等级为 2,然后在下面的类表里选择相应的器件。
话点击 Finish,完成项目创建
创建后的项目
其中,红色框为设计流程导航窗,从上到下是 FPGA 开发的各个环节。黄色
框为工程数据文件窗口,可以查看工程的层次结构,编辑工程文件属性。紫色框
为主工作窗,根据不同的 layout 有不同的显示内容。蓝色框为结果显示窗,显示
各个环节的执行结果。黑色框可在不同的 layout 之间切换。
在做程序设计前,我们需要先创建一个.v 的程序文件,左侧边栏 Project
Manager 下,点击 Add Source 图标
选择 Add or Create Design Source,然后点击 Next
用户可以添加已有的程序,这里我们还有程序,选择 Create File
弹出对话框,输入文件名 led,点击 OK
点击 Finish 完成
向导会提示您定义 I/O 的端口,这里不定义,后面程序中编写即可
此时在 Project Manager 界面下面的 Design Source 下有 led_flash.v 文件,并
且自动成为项目的 top 模块
接下来就是编写本次实验主要的部分,完成流水灯的部分。代码如下:
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2023/05/14 10:46:26 // Design Name: // Module Name: led_flash // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module led_flash( input wire clk, input wire rst_n, output reg [1:0] led ); reg [27:0] cnt; wire add_cnt; wire end_cnt; always@(posedge clk or negedge rst_n) begin if(!rst_n) begin cnt<=28'd0; end else if(add_cnt) begin if(end_cnt) cnt <= 28'd0; else cnt <= cnt+1'b1; end end assign add_cnt = 1; assign end_cnt = add_cnt && cnt== 10_000_000 - 1; //--------------------led-------------------- always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin led <= 2'b10;//reset state end else if(end_cnt)begin led <= {led[0], led[1]}; end else begin led <= led; //keep the state end end endmodule
就代码中的几个注意点做以下说明:12 行声明了一个计数器,用来计数时
间,通过该计数器来控制其他逻辑。18 到 31 行是计数器的实现代码,每个复位
时计数器保持为 0,复位计数后,每个时钟周期计数器加一,当计数到最大值时
清零计数器并且重新开始计数。
35 到 45 行是控制 led 灯流水的操作。在复位的时候,led 的最低位有效,每
当计数器计数到最大值的时候,led 完成移位,这里使用了位拼接的方式来完成
led 的移位操作。可以看到代码十分的简单。
和之前 ISE 软件不同, Vivado 使用的约束文件格式是 xdc 文件。xdc 文件里
主要是定义管脚约束,时钟约束, 以及其他时序约束。这里我们需要对 led.v 程序
中的输入输出端口分配到 FPGA 的管脚上, 这就需要将管脚分配的.xdc 文件添加
到工程中
我们需要先创建一个.xdc 的约束文件,左侧边栏 Project Manager 下,点击
Add Source 图标
选择 Add or create constraints,点击 Next
点击 Create File 按钮,在 file name 输入 top_pin 文件名,点击 OK
点击 Finish 按钮,完成约束文件的创建
打开 top_pin.xdc 文件,添加如下约束,约束文件如何写,可以参考 xilinx 的
相关文档,下面来介绍一下最基本的 XDC 编写的语法,普通 IO 口只需约束引脚
号和电压,管脚约束如下:
set_property PACKAGE_PIN “引脚编号” [get_ports “端口名称” ]
电平信号的约束如下:
set_property IOSTANDARD “电压” [get_ports “端口名称” ]
这里需要注意文字的大小写,端口名称是数组的话用{ }刮起来, 端口名称必须和源代码中的名字一致,且端口名字不能和关键字一样。以 led[0]的约束为例:
set_property PACKAGE_PIN G14 [get_ports {led[0]}]
是为了绑定 led[0]的管脚
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
是为了设置 led[0]的电平约束。
Z7-Lite 系列的约束文件如下:
create_clock -period 20.000 [get_ports clk]
set_property PACKAGE_PIN N18 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
############## key define##################
set_property PACKAGE_PIN P16 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
##############LED define##################
set_property PACKAGE_PIN P15 [get_ports {led[0]}]
set_property PACKAGE_PIN U12 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
依次点击 1 综合,2 实现,3 生成.bit 文件,或者直接双击 3,其效果是一样
的
生成完.bit 文件就可以下载到 FPGA 芯片中,看一下 LED 的运行结果。将下载
器连接到 JTAG 口,给板子上电。
点击 Open target
然后点击Auto Connect自动搜索开发板
连接成功后,在 Hardware 窗口下会显示当前扫描到的设备,如下图扫描到
的设备是 xc7z020 与我们在一开始的时候选择的器件型号相吻合。
点击 Program device,下载程序,弹出对话框,直接点 Program 按钮。
下载完成后可以看到 2 个 led 灯开始进行流水操作
Part1_Z7_Lite系列教程之逻辑篇
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。