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

开发板环境: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 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值