Vivado里程序固化详细教程
编者注:初玩FPGA开发板,我们都会遇到这种情况,每次事先写好的程序编译成功后,下载到板子里,输出结果十分赏心悦目,随着掉电之后,程序也就随之消失,再次上电,又要重新编译下载程序,十分麻烦,不是我们想看到的结果。所以学会固化程序十分重要!下面就来说说如何固化程序。
目的简介:将FPGA的配置文件(固化用的配置文件是二进制文件,仅bin文件)烧写到板载Flash中,实现上电自启动,完成程序固化。
法1:烧录bin文件
过程步骤:
1)在Vivado软件里找到Settings设置选项,进入,点击Bitstream选项,将 bin_file 勾上,点击 OK![图片[1] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[1] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e39fcf4757feff33960775.jpg)
2)点击 generate bitstream (可以分步进行,Run Synthesis—Run implementation— genereate bitstream),生成 bit 文件和 bin 文件。![图片[2] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[2] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e39fef4757feff339635ff.jpg)
3)点击 open hardware manager,连接板子![图片[3] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[3] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a0c64757feff33979d35.jpg)
4)在Hardware面板中右击FPGA器件(xc7a35t_0),选择Add Configuration Memery Device。![图片[4] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[4] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a11e4757feff33983967.jpg)
5)在弹出的添加配置存储器的界面中,找到板载的Flash存储器型号,点击OK,完成添加。这里开发板flash型号是( n25q64 )选择3.3v。![图片[5] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[5] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a14f4757feff33988e8b.jpg)
6)添加完成后,Vivado会提示添加完成,是否立即配置存储器。点击OK,进入配置存储器的界面,开始将二进制bin文件烧写到外部配置flash存储器中。![图片[6] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[6] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a1734757feff3398c7ac.jpg)
提醒:如果配置存储器的界面突然找不到,可以右击flash存储器,点击Program Configuration Memory Device,会出现存储器的配置界面。![图片[7] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[7] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a1994757feff33990dca.jpg)
7)找到二进制bin文件,选中,进行代码烧写, 实现上电自启动,完成程序固化。![图片[8] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[8] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a1b04757feff3399334d.jpg)
选择好烧写的二进制文件,选中后点击 OK,将代码烧录到 flash,。其他设置可以保持默认
提醒:二进制文件路径为:project_name\project_name.runs\impl_1\xxx.bin。
或project_name \project_name.runs\impl_2\xxx.bin。
(project_name根据用户工程进行修改)。点击OK,烧写二进制文件。
由于需要擦除存储器原有数据,校验,以及烧写等几步,所以配置时间可能会稍微久一点。完成后,点击OK。
这样FPGA硬件程序就固化到外部配置存储器中了,下次上电就可以通过QSPI自启动。需要注意的是板载的配置跳线帽需要设置到QSPI模式。
法二烧mcs文件
第一步:先综合,然后打开综合设计![图片[9] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[9] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a27d4757feff339a8322.jpg)
第二步:点击Tools—Edit Device Properties(注意,必须按照第一步打开综合后的设计,才能找到这个选项),然后配置相应参数。![图片[10] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[10] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a2af4757feff339ad596.jpg)
可以选择压缩bit流,这样后面固化时会快一些。![图片[11] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[11] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a2eb4757feff339b3865.jpg)
选择合适的固化速率,可以适当设置高一些(默认是3MHZ),因为固化本身比较慢;设置SPI 的bus width,因为flash使用的是QSPI,也即SPI4x(后面还会设置此参数),所以这里要设置为4![图片[12] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[12] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a3304757feff339bab45.jpg)
选择编程模式,因为我们是将程序固化到flash中,以后上电自动从flash读取程序,所以这里要勾选上。JTAG是一直且默认勾选的。![图片[13] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[13] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a3664757feff339c0411.jpg)
点击OK进行下一步。
第三步:生成bit流
第四步:生成.mcs内存配置文件![图片[14] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[14] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a3a14757feff339c66ce.jpg)
![图片[15] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[15] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a3bb4757feff339c9749.jpg)
点击OK,即可在指定的路径下生成所需的.mcs文件
第五步:打开硬件管理器,连接开发板。![图片[16] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[16] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a3f24757feff339cfbf0.jpg)
第六步:往flash下载.mcs文件![图片[17] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[17] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a4704757feff339dc757.jpg)
![图片[18] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[18] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a4754757feff339dd05d.jpg)
点击OK,然后出现下面的界面,等待下载完成即可。![图片[19] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客 图片[19] - Vivado-FPGA Verilog烧写固化教程 - 我的学记|刘航宇的博客](https://pic.imgdb.cn/item/63e3a5024757feff339ec489.jpg)
第七步:断电重启
注意: 一定要注意将自己开发板上设置编程模式的跳线帽跳到QSPI模式。还有就是固化完成后,不会立即运行程序,需要断电重启,此时开发板会自动从flash读取程序并运行。这样以后每次上电都会自动加载并运行这段程序,除非再次固化别的程序!!!