ZYBOZ7从入门到进阶-2 zyboz7纯PL开发之LED点灯

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/a646123070

上一节,我们进行了ZYBOZ7的拆箱(ps:感觉在介绍一下具体的参数,性能指标就可以像手机测评一样搞个开发板测评了,哈哈)。同时,我们也进行了开发工具的安装,下面,让我们用一个简单的例子来熟练一下开发工具的使用。

1、创建一个新的空工程

首先打开桌面上的 Vivado 20**.* 的图标(我使用的版本是vivado2018.2),在Quick Start窗口下选择Create Project 。

然后在弹出的页面选择Next。

之后会弹出创建工程名和选择工程所在位置的页面,填写好这两项信息,同时勾选Create project subdirectory,之后点击next进入下一步。

接着选择工程类型,我们一般选择RTL Project,同时勾选Do not specify sources at this time(这样可以跳过添加源文件的步骤,源文件可以后面再添加),之后点击两次next跳过添加源文件和约束的页面进入下一步。

这一步是根据自己的开发板选择器件型号,可以通过Parts直接通过型号进行搜索,例如zyboz7-20开发板上的芯片型号为xc7z020clg400-1。也可以通过Boards找到开发板名字进行添加,这种方法需要先在vivado中添加zyboz7开发板信息,具体操作请参考vivado添加开发板信息,需要的文件我也上传到了csdn。如果不了解或者暂时不写进开发板,可以随便选一个型号,后面需要的时候再修改。之后点击next,进入下一步。

在这一步会出现新建立的工程的摘要,大体浏览一下没有问题的话点击finish,这样一个新的工程就建好了。

新建好的工程如下图所示,主要包括 Flow Navigator和project Manager两大部分。Flow Navigator从上而下的流程就是我们实现某一工程的具体流程,project Manager包含source(源文件)和project summary(工程摘要)两部分。

2、往新工程中添加源文件和约束文件(两者无先后之分)

首先,在project Manager窗口的source子窗口的constraint文件夹右键点击,选择Add source

在弹出的页面选择Add or create constraint,然后点击next

在添加或创建约束文件的页面,点击Add file按钮,添加现有的约束文件

点击完Add file按钮后,会弹出添加约束文件页面,选择约束文件所在位置点击OK即可添加完成(本文所需要的约束文件zybo-z7-master.xdc我已上传到csdn,需要请下载)。

添加完约束文件后,会返回到上一页面,我们点击finish即可。

这样,在project Manager窗口的source子窗口的constraint文件夹下会出现我们添加的约束文件,只不过这是通用的约束文件,所有的约束都被注释掉了,我们需要做的就是针对我们自己的实验,把我们需要的被注释掉的管脚的注释取消掉。双击我们添加的约束文件就会打开,然后把约束文件中关于clock signal、switches、leds的注释取消掉(把相关程序前边的“#”号删除即可)。

接下来就是添加源文件,方法和添加约束文件的差不多,这里只大体说一下。
首先在project Manager窗口的source子窗口下的Design source文件夹右键点击选择Add or creat design source,之后点击create file(这里与添加约束文件不一样,约束文件是添加,这里是创建),在弹出的页面填写文档名字后点击OK,然后点击finish即可添加完成源文件。

之后在project Manager窗口的source子窗口下的Design source文件夹下面就有一个空的源文件,我们双击打开,把以下代码复制粘贴进去即可完成源文件的创建。

`timescale 1ns / 1ps
module led_2(
    input sysclk,
    input [3:0] sw,
    output reg[3:0] led
       );
    
    parameter LED_CNT1 = 25_000_000;       //每数0.5秒LED闪一次
    parameter LED_CNT2 = LED_CNT1 * 2;
    parameter LED_CNT3 = LED_CNT1 * 3;
    parameter LED_CNT4 = LED_CNT1 * 4; 
    
    reg [31:0] count;
    always @(posedge sysclk )  //计数器在0~LED_CNT4-1之间循环
    begin
      if(count == LED_CNT4 -1)
        count <= 0;
      else
        count <= count + 1;
    end
    
    always @(posedge sysclk )
    begin
    if (sw[0] == 1)
    begin
      if(count == LED_CNT1-1)
         led <= 4'b0001;
      else if(count == LED_CNT2-1)
         led <= 4'b0010;
      else if(count == LED_CNT3-1)
         led <= 4'b0100;
      else if(count == LED_CNT4-1)   
         led <= 4'b1000;   
    end
    
        else if (sw[1] == 1)
    begin
      if(count == LED_CNT1-1)
         led <= 4'b1000;
      else if(count == LED_CNT2-1)
         led <= 4'b0100;
      else if(count == LED_CNT3-1)
         led <= 4'b0010;
      else if(count == LED_CNT4-1)   
         led <= 4'b0001;   
    end
    
       else if (sw[2] == 1)
    begin
      if(count == LED_CNT1-1)
         led <= 4'b0001;
     // else if(count == LED_CNT2-1)
        // led <= 4'b0010;
      else if(count == LED_CNT3-1)
         led <= 4'b0100;
     // else if(count == LED_CNT4-1)   
       // led <= 4'b1000;   
    end
    
        else if (sw[3] == 1)
    begin
      if(count == LED_CNT1-1)
        // led <= 4'b0001;
     // else if(count == LED_CNT2-1)
         led <= 4'b0010;
     // else if(count == LED_CNT3-1)
       //  led <= 4'b0100;
      else if(count == LED_CNT4-1)   
         led <= 4'b1000;   
    end
    
     else if (sw[0] == 0 && sw[1] == 0 && sw[2] == 0 && sw[3] == 0)
       begin
         if(count == LED_CNT1-1)
            led <= 4'b0000;
         else if(count == LED_CNT2-1)
            led <= 4'b0000;
         else if(count == LED_CNT3-1)
            led <= 4'b0000;
         else if(count == LED_CNT4-1)   
            led <= 4'b0000;   
       end
    
    end
  
endmodule

添加仿真文件的操作和上一步添加Verilog设计文件基本一致,唯一的区别是选择Add or Create Simulation Sources。本文由于程序简单,不再进行仿真操作。

3、对工程进行RTL ANALYSIS(RTL分析)、SYNTHESIS(综合)、IMPLEMENTATION(实现)、PROGRAM AND DEBUG ->Generate Bitstream(生成比特流文件)

在Flow Navigator窗口下,首先进行RTL分析,分析完成后就行综合,接着就是实现,最后生成比特流文件。

4、下载到开发板

在Flow Navigator窗口下的PROGRAM AND DEBUG下的open hardware manager 中点击Open Target然后选择Auto Connect 即可自动连接开发板。

连接好开发板之后,在open hardware manager 中点击点击Program Device,之后选择我们的开发板,在新弹出的页面点击Programe就可以将比特流文件下载到开发板。

稍等片刻,便可以运行。(sw0控制往左的流水灯,sw1控制往右的流水灯,sw2控制led0和led2亮,sw3控制led1和led3亮)

至此,PL端的LED点灯就完成了。

文中使用到的资源、工程我已打包上传到csdn资源中心。
作者学生一枚,文中难免有错误,指教、改错请→[email protected]

猜你喜欢

转载自blog.csdn.net/a646123070/article/details/83793947