MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED

 

开发板环境:vivado 2017.1 ,开发板型号xc7z020clg400-1,这里用的这个工程是“从新建工程到下载bit”这个工程里的流水灯,

这个工程没有用z-turn 板提供的时钟而且用ZYNQ核提供的时钟给到FPGA点亮LED灯。

 

Step1  这里是已经新建好的FPGA流水灯如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第1张图片

`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

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第2张图片

点击OK

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第3张图片

Step 3 点击工作区的Add IP添加IP核,在搜索栏中输入zynq 双击搜索到的ZYNQ核添加工作区内

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第4张图片

已经添加好的ZYNQ  IP核如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第5张图片

双击ZYNQ  将我提供的工程里的tcl文件添加进来(添加方法这里不再详细说明如不明白请参考前面基础教程)

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第6张图片

ZYNQ核配置完成后如下图所示,然后点击Run Block Automation进行自动布线

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第7张图片

点击OK

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第8张图片

自动布线后如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第9张图片

再在FCLK_CLK0上右击-->Make Ecternal将FCLK管脚引出来

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第10张图片

所有管脚添加完成如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第11张图片

Step4  右击 design_1->Generate Ouput Products   生成综合文件

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第12张图片

在弹出的对话框中点击Generate

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第13张图片

Step5 右击 design_1->Create HDL Wrapper  生成顶层文件

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第14张图片

在弹出的对话框中点击OK

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第15张图片

顶层文件生成后如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第16张图片

生成的顶层.v文件

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第17张图片

//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中如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第18张图片

Step6  新建一个XDC文件将我提供的工程里面的xdc文件复制到这个工程里

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第19张图片

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文件

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第20张图片

点击save

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第21张图片

点击Yes

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第22张图片

点击OK

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第23张图片

在弹出的对话框中可以看出bit文件生成成功 ,点击Cancel关闭对话框

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第24张图片

Step8 点击菜单栏上的 File->Export->Export Hardware 导出硬件配置文件

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第25张图片

在弹出的对话框中勾选Include bitstream ,然后点击OK

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第26张图片

Step9 点击菜单栏上的 File->Launch SDK->OK启动SDK

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第27张图片

Step10   在打开的SDK点击菜单栏上的 File->New->Application Project新建一个fsbl

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第28张图片

在弹出的对话框中填写fsbl

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第29张图片

在工程模板中选择Zynq FSBL

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第30张图片

新建好的fsbl如下图所示

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第31张图片

step11  右击 fsbl->Create boot Image, 生成BOOT.bin启动文件

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第32张图片

在弹出的对话框中点击Create Image 生成BOOT.bin文件,将这个生成的BOOT.bin复制到SD卡然后将开发板打到SD卡

启动就可以看到开发板上的LED灯运行。

MYIR-ZYNQ7000系列-zturn教程(8)-PS给PL时钟点亮LED_第33张图片

 

 链接:http://pan.baidu.com/s/1hsQovli 密码:mply 

 

 

 

 

你可能感兴趣的:(ZYNQ7000)