初识vivado-第一个工程-led闪烁

第一个工程

led闪烁

1.创建工程

注:工程文件主要包括三大部分:

  • 设计文件
    • 即设计源码,是程序实际运行时的执行代码。
  • 仿真文件(也称测试文件)
    • 用于验证测试设计文件逻辑是否正确,用户可通过仿真结果来验证设计文件的正确性。
  • 约束文件
    • 是设计文件与实体芯片交互的桥梁,将设计文件与实体芯片管脚相对应,实现具体的功能。

创建工程的步骤如下:

(1)Create Project;
创建工程
(2)设置工程名称以及工程保存路径;
设置工程名以及工程保存路径
(3)选择工程类型 ;选择工程类型
(4)创建源文件 ;创建源文件
(5)创建约束文件 ;创建约束文件
(6)选择FPGA型号 ;在这里插入图片描述

(7)确认工程信息;

在这里插入图片描述

  • (8)设置模块名称。
    设置模块名称

2.创建仿真文件

  • (1)添加仿真文件;
    添加仿真文件
  • (2)创建仿真文件并为其命名;
    创建仿真文件并为其命名
  • (3)确认仿真文件信息 。确认仿真文件信息

3.设置vivado文件打开方式为Notepad++

  • (1)选择Tools-》Settings;
    Tools-》Setting
  • (2)在Settings界面,首先,选择Text Editor,然后,在Current Editor中,选择Custom Editor…;
    在这里插入图片描述
  • (3) 在Custom Editor Definition界面,Editor一栏中输入本地Notepad++.exe的路径,笔者本地Notepad++.exe的安装路径为
    F:/Program Files (x86)/Notepad++/notepad++.exe,最终设置如下图所示;
    设置文件默认打开方式为notepad++
  • (4)双击打开文件,文件自动调出notepad++窗口。
    文件打开方式为notepad++

4.编写设计代码

在Sources-》Design Sources中,找到设计文件“ex01”,然后双击打开文件,编辑设计代码如下:

module ex01(
	input sys_clk_i,	//时钟为100MHz
	output reg led		//led输出信号
    );
	
reg[31:0] cnt = 32'd0;	//定义20位计数器
reg flag = 1'd0;		//标记led状态,用于led初始化

//初始化led状态	
always @(posedge sys_clk_i)
	if(!flag) led = 1'b0;
	else ;
	
//设置计数器峰值为ffffff,当cnt到达峰值时,led切换当前状态(闪烁)
always @(posedge sys_clk_i)	
	if(cnt == 32'hffffff) begin
		led <= ~led;
		flag <= 1'b1;	
		cnt <= 32'd0;	//cnt计数器循环计数,当cnt达到峰值时,重新计数,led状态翻转
		end		
	else cnt <= cnt + 32'd1;	//cnt计数器累加
	
endmodule

5.编写仿真测试代码

  • (1)在Sources-》Simulation Sources中,找到仿真文件“sim_ex01”,然后双击打开文件进行编辑; 在这里插入图片描述
  • (2)编写仿真代码:
module sim_ex01();

reg sys_clk_i;
wire led;

ex01 uut_ex01(
   .sys_clk_i(sys_clk_i),
   .led(led)
);

initial begin
   sys_clk_i = 0;
   #1000;
   @(posedge sys_clk_i) #2;
   
   repeat(4);
   #900_000_000;
   $finish;	
end

always #10 sys_clk_i = ~sys_clk_i;	//产生时钟 

endmodule

6.功能仿真

  • (1)选择Project Manage-》SIMULATION,然后点击右键,在弹出的菜单中选择“Simulation Settings”进入仿真设置Settings界面;
    在这里插入图片描述

  • (2)在Settings界面,选择“General”,
    首先,确认FPGA设备名称信息,如有修改,可点击后面的选项框进行修改;
    接着,确认目标语言,选择为Verilog;
    然后,确认Top Module name(顶层模块名称)信息;在这里插入图片描述

  • (3)在Settings界面,选择“Simulation”,
    首先,确认Simulation set,如有修改,可点击后面的倒三角进行修改;
    接着,确认Simulation top module name(模拟顶层模块名称)信息。
    在这里插入图片描述

运行仿真

  • (1)选择Project Manage-》SIMULATION-》Run Simulation,在弹出的菜单栏中选择“Run Behavioral Simulation”,随后等待进入仿真界面;
    在这里插入图片描述
  • (2)选择SIMULATION-》Run Simulation,然后右键点击Run Simulation,然后在弹出菜单中选择Run Behavioral Simulation,等待进入simulation窗口;
    在这里插入图片描述
    在这里插入图片描述
  • (3)在simulation窗口,点击“Run All”图标,或者在菜单栏选择Run-》Run All,运行仿真,在此窗口可查看设计代码中各变量的变化值情况,来验证设计代码的准确性。
    在这里插入图片描述
    在这里插入图片描述

7.代码综合

  • (1)选择Project Manage-》SYNTHESIS-》Run Synthesis,执行综合;
    在这里插入图片描述

  • (2)综合结束后,在弹出的对话框中选择“Open Synthesized Design”,进入综合设计界面;
    在这里插入图片描述

  • (3)在Device窗口可以查看FPGA内部逻辑框图(此步无需实际操作,仅供了解信息)
    在这里插入图片描述

8.设置约束文件

(1)选择Project Manage-》SYNTHESIS-》Schematic,随后在Schematic窗口中,选择“2 I/O Ports”,进入I/O管脚配置界面;
在这里插入图片描述

  • (2)在I/O管脚配置界面,可以查看当前端口的名字,端口类型以及端口电平信息(此部分信息默认即可);用户需要操作的信息为Package Pin,需要根据用户手册找到设计文件中使用的信号所对应的FPGA接口实际管脚进行设置,设置后点击保存;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)此时,打开constr1.xdc可以看到当前端口设置已被写入文件;
在这里插入图片描述

  • (4)设置系统时钟
    在SYNTHESIS中选择Edit Timing Constraints,进入Timing Constraints界面,在此界面选择添加图标,随后进入时钟设置界面,对时钟进行设定;在这里插入图片描述 在这里插入图片描述
    在这里插入图片描述

  • (5) 设置系统工作电压,在菜单栏中选择Tools-》Edit Device Properties …,进入配置界面,在配置界面选择Configuration,随后对Configuration Voltage和Configuration Bank Voltage Selection进行配置;
    在这里插入图片描述
    在这里插入图片描述

  • (6)此时,打开constr1.xdc可以看到时钟和电压信息已被写入文件;

在这里插入图片描述

9.代码执行

  • (1)选择PROJECT MANAGE-》IMPLEMENTATION-》Run Implementation;
    在这里插入图片描述

10.生成bitstream文件(此文件用于FPGA在线编程)

  • (1)选择PROJECT MANAGE-》PROGRAM AND DEBUG-》Generate Bitstream(右键)-》Bitstream Settings,进入Settings设置界面;
    在这里插入图片描述
  • (2)在Settings界面,选择Project Settings-》Bitstream-》Configure additional bitstream settings,进入设备属性界面,在该界面,设置SPI Bus Width为4;
    在这里插入图片描述
  • (3)确认执行生成bitstream文件操作;
    在这里插入图片描述
    在这里插入图片描述

11.FPGA在线编程

注:执行此操作之前,需将开发板使用jtag调试器连接至电脑,并给开发板上电,如果开发板没有自动连接,需要选择PROGRAM AND DEBUG-》Open Hardware Manager-》Open Target(右键)-》Auto Connect,先将开发板与vivado建立连接。
在这里插入图片描述

  • (1)选择PROJECT MANAGE-》PROGRAM AND DEBUG-》Program Device(右键)-》选择弹出的FPGA型号;

在这里插入图片描述

  • (2)在Program Device界面中,选择Bitstream file文件,然后执行Program操作,即可完成bitstream文件的编程(注此文件掉电即丢失,如若希望程序固化,需要将程序编程至SPI FLASH芯片内部)。
    在这里插入图片描述
    在这里插入图片描述
    FPGA程序下载成功后,可以看到LED灯闪烁。
    在这里插入图片描述

12.生成memory配置文件(用于将程序固化至SPI FLASH芯片内部)

  • (1)在菜单栏中,选择Tools-》Generate Memory Configuration File…;
    在这里插入图片描述()
  • (2)在配置界面,首先在Memory Part选择硬件使用的SPI FLASH型号,接着在Filename中输入要保存的mcs文件路径和名称;
    在这里插入图片描述
    在这里插入图片描述
  • (3)在Options中,设置SPI端口类型,然后勾选Load bitstream files,并选择Bitfile的文件路径(Bitfile文件的默认路径为./xxxx.runs/impl_1/xxxx.bit,如若执行多次implementation,将会存在多个impl_x文件,此时根据自己设定选择最新生成的bit文件即可);
    在这里插入图片描述
    在这里插入图片描述

13 程序固化至SPI FLASH

  • (1)在HARDWARE模块中找到FPGA型号,然后右键,选择Add Configuration Memory Device,进入设备选择界面,选择开发板上SPI FLASH芯片型号,至此完成SPI FLASH芯片的配置。
    在这里插入图片描述
    在这里插入图片描述

  • (2)在Hardware模块中中,选择spi flash芯片型号(右键),然后选择Program Configuration Memory Device…;进入memory配置界面;
    在这里插入图片描述

  • (2)在memory配置界面,选择Configuration file以及PRM file文件(此两个文件位于同一路径下),并选择Program Operations选项,随后点击“ok”,等待文件自动烧写完成,即完成SPI FLASH文件的固化,随后开发板断电,然后在上电,即可自动从SPI FLASH芯片内部加载已下载的代码并自动运行。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • (3)待程序固化至SPI FLASH成功之后,给开发板断电,然后再次上电,可以看到开发板的led灯开始闪烁,至此表明led闪烁的设计代码验证成功。

tips

  • (1)创建工程之前,务必确定好FPGA型号以及SPI FLASH型号;
    若FPGA型号错误,会导致生成Bitstream文件失败。
    若SPI FLASH 的BUS WIDTH设置错误,亦会导致生成Bitstream文件失败。
  • (2)工程出现警告信息时,仔细查看Tcl Console的提示信息,这个很重要。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值