Xlinx_ZYNQ7Z020——2. Led工程

2. LED工程

Add Sources

  1. 打开Vivado,点击QuickStart,创建新工程
  2. 命名工程名字,以及文件路径等
  3. 选择RTL Project(寄存器传输级工程)
    Xlinx_ZYNQ7Z020——2. Led工程
  4. 无需添加约束,点击下一步
  5. 选择芯片型号等
    Xlinx_ZYNQ7Z020——2. Led工程
  6. 点击Finish创建完毕
  • 新建工程文件,右键Design Source
  • Add design source
  • Create File,命名,点击OK,点击Finish完成即可
  • 会弹出提示,定义模块,可以选择Cancel取消,从代码中定义

编写代码

Led工程

`timescale  1ns  /  1ps  //1是数据1 ,不是字母l; 前面1ns表示时间单位,1ps表示时间精度;

module led  //模块名是led
(
   input wire sys_clk,  //inut默认类型是wire型
   output reg[3:0] led
);
   reg [31:0] timer_cnt; //计数器32位
   initial //代表了程序开始, 
   begin
   //<=表示同时执行,同时赋值,称为非阻塞赋值;=赋值为阻塞赋值
       led<= 4'b1111;  //4'b1111 表示4位二进制11114’hf1111表示416进制 
       timer_cnt <=32'd0;//32位10进制0;b、o、d、h表示二进制、八进制、十进制、十六进制代表
   end
   [email protected](posedge sys_clk) //表示始终执行[email protected](条件);posedge表示上升沿,negegde表示下降沿 ;
   begin
       if(timer_cnt>=32'd49_999_999)//49_999_999阅读方便;板载晶振50MHz,一秒钟50M下,因此0到49_999_999正好是1秒钟;
       begin
           led<=~led;
           timer_cnt<=32'd0;
       end
       else
       begin
           led<=led;
           timer_cnt <=timer_cnt+32'd1;
       end
   end
endmodule
  • 保存之后led.v工程文件会自动变成顶层模块,表示所有程序都从这个地方开始执行,相当于main.c
    Xlinx_ZYNQ7Z020——2. Led工程

SIMULATION

  • 添加仿真源文件
    Xlinx_ZYNQ7Z020——2. Led工程
  • 添加文件

Xlinx_ZYNQ7Z020——2. Led工程

  • 取消模块定义
    Xlinx_ZYNQ7Z020——2. Led工程
  • 编辑led_test.v文件
`timescale  1ns  /  1ns  //1是数据1 ,不是字母l; 前面1ns表示时间单位,后面的1ns表示时间精度;
//默认是1ps,但是仿真的进度越高,那么仿真的速度越慢,在这里没有必要;

module led_test  //模块名是led_test
(
   
);
    
    reg sys_clk;
    wire [3:0]led;
    initial
    begin
         sys_clk=0;
    end
    
    always #10 sys_clk<=~sys_clk;//50MHz,时间为20ns;always # 10 表示延时10个时间单位,及最上方的timescale的1ns时间单位;
    //因此表示10ns翻转一次;一个周期翻转2次,及20ns,因此是50MHz;
    
    
    led led_test
    (
        .sys_clk(sys_clk),
        .led(led)
    );
endmodule
  • 点击SIMULATION 的Run Simulation即可

RTL ANALYSIS

  • 点击RTL ANALYSIS进行约束设置(设置对应引脚)
    Xlinx_ZYNQ7Z020——2. Led工程
    Xlinx_ZYNQ7Z020——2. Led工程
  • 接着打开菜单栏上方的Windows,选择I/O Ports
    Xlinx_ZYNQ7Z020——2. Led工程
  • 电平标准改为LVCMOS33即对应3.3V
  • 接着去板子原理图或者开发板用户手册查找时钟源管脚,以及Led管脚
  • Package Pin改为实际板子上的对应管脚即可
    Xlinx_ZYNQ7Z020——2. Led工程
  • 保存xdc文件即可

SYNTHESIS

  • 点击SYNTHESIS,启动综合,启动多线程综合
  • 综合完毕之后,打开Open Synthesized Design可以看到资源信息
  • 接着创建时钟约束,点击Constraints Wizard约束向导
    Xlinx_ZYNQ7Z020——2. Led工程
  • 输入50MHz,点击Skip to Finish即可
  • 之所以创建时钟约束,是因为可以在Project Summary中Power功耗部分是利用时钟来进行估计的
  • 但是不设置时钟约束,程序也是可以运行的
  • 设置完时钟约束之后,要重新进行综合,因为out of date过期了

IMPLEMENTATION

  • 点击Run Implementation 即可实现,并且可以在Projcet Summary中可以看到所有的摘要等
  • 功耗、资源利用情况等

PROGRAM AND DEBUG

  • 点击Generate Bitstream创建比特流文件
  • 接着打开Open HardWare Manager
    Xlinx_ZYNQ7Z020——2. Led工程
  • 将板子上电,连接J-TAG接口,点击工程上方的Open target
    Xlinx_ZYNQ7Z020——2. Led工程
  • 检测到设备之后点击Program device
    Xlinx_ZYNQ7Z020——2. Led工程
  • 即可看到板子上灯的闪烁