开发板环境:vivado 2017.1 ,开发板型号xc7z020clg400-1,这里用的这个工程是“从新建工程到下载bit”这个工程里的流水灯,
这个工程没有用z-turn 板提供的时钟而且用ZYNQ核提供的时钟给到FPGA点亮LED灯。
Step1 这里是已经新建好的FPGA流水灯如下图所示
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2017/08/28 17:53:04
// Design Name:
// Module Name: user_led
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module user_led
(
i_rst_n,
led
);
input i_rst_n;
output [2:0] led;
wire i_clk;
reg [25:0]cnt;
reg flag;
design_1_wrapper u1 //将PS部分50M的时钟例化到PL中
(
.FCLK_CLK0(i_clk)
);
always@(posedge i_clk or negedge i_rst_n)
if(i_rst_n==1'b0)
cnt <= 26'd0;
else if(cnt==26'd49999999)
cnt <= 26'd0;
else
cnt <= cnt + 1'b1;
always@(posedge i_clk or negedge i_rst_n)
if(i_rst_n==1'b0)
flag <= 1'b0;
else if(cnt==26'd49999999)
flag <= ~flag;
assign led[0] = flag;
assign led[1] = flag;
assign led[2] = flag;
endmodule
Step2 点击Flow Navigator 下的Create Block Desion新建一个Block Desion
点击OK
Step 3 点击工作区的Add IP添加IP核,在搜索栏中输入zynq 双击搜索到的ZYNQ核添加工作区内
已经添加好的ZYNQ IP核如下图所示
双击ZYNQ 将我提供的工程里的tcl文件添加进来(添加方法这里不再详细说明如不明白请参考前面基础教程)
ZYNQ核配置完成后如下图所示,然后点击Run Block Automation进行自动布线
点击OK
自动布线后如下图所示
再在FCLK_CLK0上右击-->Make Ecternal将FCLK管脚引出来
所有管脚添加完成如下图所示
Step4 右击 design_1->Generate Ouput Products 生成综合文件
在弹出的对话框中点击Generate
Step5 右击 design_1->Create HDL Wrapper 生成顶层文件
在弹出的对话框中点击OK
顶层文件生成后如下图所示
生成的顶层.v文件
//Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.
//--------------------------------------------------------------------------------
//Tool Version: Vivado v.2017.1 (win64) Build 1846317 Fri Apr 14 18:55:03 MDT 2017
//Date : Wed Aug 30 19:32:29 2017
//Host : tw-PC running 64-bit Service Pack 1 (build 7601)
//Command : generate_target design_1_wrapper.bd
//Design : design_1_wrapper
//Purpose : IP block netlist
//--------------------------------------------------------------------------------
`timescale 1 ps / 1 ps
module design_1_wrapper
(DDR_addr,
DDR_ba,
DDR_cas_n,
DDR_ck_n,
DDR_ck_p,
DDR_cke,
DDR_cs_n,
DDR_dm,
DDR_dq,
DDR_dqs_n,
DDR_dqs_p,
DDR_odt,
DDR_ras_n,
DDR_reset_n,
DDR_we_n,
FCLK_CLK0,
FIXED_IO_ddr_vrn,
FIXED_IO_ddr_vrp,
FIXED_IO_mio,
FIXED_IO_ps_clk,
FIXED_IO_ps_porb,
FIXED_IO_ps_srstb);
inout [14:0]DDR_addr;
inout [2:0]DDR_ba;
inout DDR_cas_n;
inout DDR_ck_n;
inout DDR_ck_p;
inout DDR_cke;
inout DDR_cs_n;
inout [3:0]DDR_dm;
inout [31:0]DDR_dq;
inout [3:0]DDR_dqs_n;
inout [3:0]DDR_dqs_p;
inout DDR_odt;
inout DDR_ras_n;
inout DDR_reset_n;
inout DDR_we_n;
output FCLK_CLK0;
inout FIXED_IO_ddr_vrn;
inout FIXED_IO_ddr_vrp;
inout [53:0]FIXED_IO_mio;
inout FIXED_IO_ps_clk;
inout FIXED_IO_ps_porb;
inout FIXED_IO_ps_srstb;
wire [14:0]DDR_addr;
wire [2:0]DDR_ba;
wire DDR_cas_n;
wire DDR_ck_n;
wire DDR_ck_p;
wire DDR_cke;
wire DDR_cs_n;
wire [3:0]DDR_dm;
wire [31:0]DDR_dq;
wire [3:0]DDR_dqs_n;
wire [3:0]DDR_dqs_p;
wire DDR_odt;
wire DDR_ras_n;
wire DDR_reset_n;
wire DDR_we_n;
wire FCLK_CLK0;
wire FIXED_IO_ddr_vrn;
wire FIXED_IO_ddr_vrp;
wire [53:0]FIXED_IO_mio;
wire FIXED_IO_ps_clk;
wire FIXED_IO_ps_porb;
wire FIXED_IO_ps_srstb;
design_1 design_1_i
(.DDR_addr(DDR_addr),
.DDR_ba(DDR_ba),
.DDR_cas_n(DDR_cas_n),
.DDR_ck_n(DDR_ck_n),
.DDR_ck_p(DDR_ck_p),
.DDR_cke(DDR_cke),
.DDR_cs_n(DDR_cs_n),
.DDR_dm(DDR_dm),
.DDR_dq(DDR_dq),
.DDR_dqs_n(DDR_dqs_n),
.DDR_dqs_p(DDR_dqs_p),
.DDR_odt(DDR_odt),
.DDR_ras_n(DDR_ras_n),
.DDR_reset_n(DDR_reset_n),
.DDR_we_n(DDR_we_n),
.FCLK_CLK0(FCLK_CLK0),
.FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn),
.FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp),
.FIXED_IO_mio(FIXED_IO_mio),
.FIXED_IO_ps_clk(FIXED_IO_ps_clk),
.FIXED_IO_ps_porb(FIXED_IO_ps_porb),
.FIXED_IO_ps_srstb(FIXED_IO_ps_srstb));
endmodule
将我们生成的ZYNQ核的顶层文件里的时钟FCLK例化到FPGA中如下图所示
Step6 新建一个XDC文件将我提供的工程里面的xdc文件复制到这个工程里
set_property PACKAGE_PIN R14 [get_ports {led[0]}]
set_property PACKAGE_PIN Y16 [get_ports {led[1]}]
set_property PACKAGE_PIN Y17 [get_ports {led[2]}]
set_property PACKAGE_PIN T11 [get_ports i_rst_n]
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 i_rst_n]
Step7点击Generate Bitstream产生bit文件
点击save
点击Yes
点击OK
在弹出的对话框中可以看出bit文件生成成功 ,点击Cancel关闭对话框
Step8 点击菜单栏上的 File->Export->Export Hardware 导出硬件配置文件
在弹出的对话框中勾选Include bitstream ,然后点击OK
Step9 点击菜单栏上的 File->Launch SDK->OK启动SDK
Step10 在打开的SDK点击菜单栏上的 File->New->Application Project新建一个fsbl
在弹出的对话框中填写fsbl
在工程模板中选择Zynq FSBL
新建好的fsbl如下图所示
step11 右击 fsbl->Create boot Image, 生成BOOT.bin启动文件
在弹出的对话框中点击Create Image 生成BOOT.bin文件,将这个生成的BOOT.bin复制到SD卡然后将开发板打到SD卡
启动就可以看到开发板上的LED灯运行。
链接:http://pan.baidu.com/s/1hsQovli 密码:mply