zoukankan      html  css  js  c++  java
  • 【第一季】CH07_FPGA_RunLED创建VIVADO工程实验

    第一季】CH07_FPGA_RunLED创建VIVADO工程实验

    7.1 硬件图片

    先来熟悉一下开发板的硬件:LED部分及按钮部分

    7.2 硬件原理图

    PIN脚定义(讲解以MIZ702讲解,MIZ701N只有4个LED 2个按钮):

    GCLK:Y9(PL输入时钟)

    LD0:T22

    LD1:T21

    LD2:U22

    LD3:U21

    LD4:V22

    LD5:W22

    LD6:U19

    LD7:U14

    BTNU:T18

    BTNC:P16

    BTNL:N15

    BTNR:R18

    BTND:R16

    7.3新建VIVADO工程

    Step1:创建工程

    Step2:欢迎界面直接单击NEXT

    Step3:工程名字命名为Led,并且设置保存的路径,单击NEXT

    Step4:新建一个RTL 工程,并且勾选不要添加源文件,单击NEXT

    Step5:由于MIZ702和ZEDBOARD是兼容的,因此直接选择ZEDBOARD硬件开发包作为我们MIZ702的开发包。这样可以省去很多麻烦,达到事半功倍的目的。单击NEXT

    Step6:最后单击Finish 完成工程的创建

    7.4创建工程文件

    Step1:打开VIVADO软件

    Step2:单击 Add Sources

    Step4:选择单击Add or Create Design Sources 然后单击NEXT

    Step5:单击Create File 来创建文件

    Step6:创建一个Led的文件,并且文件类型选择Verilog

    Step7:添加完成后如下图所示之后单击finish完成文件的创建

    Step8:继续弹出的对话空中,可以设置一些端口,但是我们现在什么都不做。单击OK

    Step9:创建完成后可以看到Design Sources文件夹中有了Led.v这个文件

    Step9:创建完成后可以看到Design Sources文件夹中有了Led.v这个文件,这个文件就是我们可以编写verilog程序的文件。

    7.5 Verilog FPGA流水灯实验

    Step1:双击Led.v打开流水程序源码如下

    `timescale 1ns / 1ps

    //////////////////////////////////////////////////////////////////////////////////

    // Company:

    // Engineer:

    // Create Date: 2016/03/22 15:05:39

    // Design Name:

    // Module Name: Led

    // Project Name:

    // Target Devices:

    // Tool Versions:

    // Description:

    // Dependencies:

    // Revision:

    // Revision 0.01 - File Created

    // Additional Comments:

    //////////////////////////////////////////////////////////////////////////////////

    module Led(

        );

    endmodule

    可以看出这是一个空的工程,我们现在要添加代码同时也要添加工程信息。

    Step2:编写程序并且添加工程信息

    // Target Devices: XC7Z020-FGG484

    // Tool versions:  VIVADO2015.4

    // Description: water led

    // Revision:  V1.1

    // Additional Comments:

    //1) _i PIN input  

    //2) _o PIN output

    //3) _n PIN active low

    //4) _dg debug signal

    //5) _r  reg delay

    //6) _s state machine

    //////////////////////////////////////////////////////////////////////////////

    module Led(

        input CLK_i,

        input RSTn_i,

        output reg [7:0]LED_o

        );

        reg [31:0]C0;

        always @(posedge CLK_i)

           if(!RSTn_i)

           begin

               LED_o <= 8'b0000_0001;

               C0 <= 32'h0;

           end

           else

           begin

               if(C0 == 32'd50_000_000)  

               begin

                    C0 <= 32'h0;  

                    if(LED_o == 8'b1000_0000)  

                    LED_o <= 8'b0000_0001;

                    else LED_o <= LED_o << 1;

               end

               else begin C0 <= C0 + 1'b1; LED_o <= LED_o; end

           end

    endmodule

    这样我们就编写好了代码下面还要添加管脚约束文件。

    7.6 添加管脚约束文件

    Step1:单击(和添加.v文件一样)

    Step2:选择Add or create constraints 然后单击NEXT

    Step3:单击Create File

    Step4:命名为led_pin 后单击OK

    Step5:可以看到产生了名为led_pin.adc的文件然后单击Finish

    Step6:打开led_pin.adc文件添加如下约束

    create_clock -name clk100MHZ -period 10.0 [get_ports {CLK_i}]

    set_property PACKAGE_PIN Y9 [get_ports {CLK_i}]

    set_property IOSTANDARD LVCMOS33 [get_ports {CLK_i}]

    set_property PACKAGE_PIN N15 [get_ports {RSTn_i}]

    set_property IOSTANDARD LVCMOS18 [get_ports {RSTn_i}]

    set_property PACKAGE_PIN T22 [get_ports {LED_o[0]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[0]}]

    set_property PACKAGE_PIN T21 [get_ports {LED_o[1]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[1]}]

    set_property PACKAGE_PIN U22 [get_ports {LED_o[2]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[2]}]

    set_property PACKAGE_PIN U21 [get_ports {LED_o[3]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[3]}]

    set_property PACKAGE_PIN V22 [get_ports {LED_o[4]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[4]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[5]}]

    set_property PACKAGE_PIN W22 [get_ports {LED_o[5]}]

    set_property PACKAGE_PIN U19 [get_ports {LED_o[6]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[6]}]

    set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[7]}]

    set_property PACKAGE_PIN U14 [get_ports {LED_o[7]}]

    7.7 编译并且产生bit文件

    Step1:单击综合

    Step2:单击执行

    Step3:单击产生bit

    7.8下载程序

    Step1:给开发板通电,并且连接下载器

    Step2:单击OpenTarget 然后单击Auto Connect

    Step3:连接成功后

    Step4:单击Program Device

    Step5:单击Program Device 然后选择 XC7Z020_1

    Step6:或者也可以从顶部单击Program device

    Step7:弹出的对话框中有我们要下载的Bit文件

    Step7:下载过程

    7.9实验结果

    下载过程下载完成后LED流水灯就运行起来了。


    7.10本章小结

    本章详细讲解了如何创建VIVADO工程以及在VIVADO工程环境下编写纯PL代码的程序,并且讲解了如何添加管脚约束,时钟约束,编译程序,下载程序。通过流水灯实现这个简单的实验抛砖引玉,让大家掌握了VIVADO软件的使用。

  • 相关阅读:
    代理模式
    装饰模式
    策略模式
    简单工厂模式
    linux下进程相关操作
    散列表(哈希表)
    转载:最小生成树-Prim算法和Kruskal算法
    二叉排序树和平衡二叉树
    堆排序
    快速排序
  • 原文地址:https://www.cnblogs.com/milinker/p/6383669.html
Copyright © 2011-2022 走看看