FPGA基础入门篇(三) 程序的固化和下载

FPGA基础入门篇(三)——程序的固化和下载
本系列博客采用ZYNQ 7000系列的开发板。使用的是vivado 2017.4 Xinlinx的软件, 本章也可只使用其他开发板,后续主要以ZYNQ嵌入式SOC学习为主。
FPGA程序的固化和下载基于上次的流水灯实验进行固化和下载。

一、

原理图:
XC7020-2CLG400内部soc接口
FPGA基础入门篇(三) 程序的固化和下载_第1张图片
FPGA基础入门篇(三) 程序的固化和下载_第2张图片

  1. 固化流程
    FPGA基础入门篇(三) 程序的固化和下载_第3张图片
    SD固化:将镜像文件你拷贝至SD卡,设置拨码开关,使系统从SD模式启动。那么断电重启后,系统都会从SD模式启动。
    QSPI-FLASH 固化:将镜像文件你拷贝至FLASH,设置拨码开关,使系统从QSPI-FLASH 启动。那么断电重启后,系统都会从FLASH启动。
  2. 固化准备
    如果要固化ZYNQ的程序,需要为这个程序做一个镜像文件。
    a. PL部分需要bit文件。PS部分需要elf文件。还需要把这两个文件安置好,还需要FSBL.elf文件
    需要三个文件:
    FSBL.elf
    .bit
    .elf
    即:BOOT.bin = FSBL.elf + .bit + .elf 。
    关键是FSBL.elf的制作生成。我们可以SDK生成。

二、 BOOT.bin制作过程

  1. 创建工程
    打开之前的已经写好并且编译下载好的流水灯工程
    在此基础上添加 Block Design.
    按如下操作:
    FPGA基础入门篇(三) 程序的固化和下载_第4张图片
    输入ZYNQ并回车找到自己的芯片。等待创建IP,可以看到最后已经创建了ZYNQ CPU IP.
    FPGA基础入门篇(三) 程序的固化和下载_第5张图片
    双击ZYNQ,可以看到下面的配置界面。
    FPGA基础入门篇(三) 程序的固化和下载_第6张图片

  2. 修改MIO接口配置
    如果不是配套的开发板,请参考自己的原理图进行查看
    a. 首先修改bank电压。
    bank1电压为1.8V, 对应原理图中的bank501.
    bank0电压为3.3V, 对应原理图中的bank500.
    FPGA基础入门篇(三) 程序的固化和下载_第7张图片
    b. 配置QSPI Flash 接口
    FPGA基础入门篇(三) 程序的固化和下载_第8张图片
    c. 配置SDIO接口(TF卡)
    FPGA基础入门篇(三) 程序的固化和下载_第9张图片
    d. 配置串口
    FPGA基础入门篇(三) 程序的固化和下载_第10张图片
    e. 时钟配置
    CPU时钟,开发板为33.33333M,默认设置
    DDR 采用默认设置。
    CPU默认的主频为默认667M,对于不同速度的CPU,等级是不一样的。
    QSPI改到125M,否则无法加载到FLASH.
    FPGA基础入门篇(三) 程序的固化和下载_第11张图片
    f. 修改DDR
    根据不同型号来设置。
    FPGA基础入门篇(三) 程序的固化和下载_第12张图片
    g. 去掉默认的GP接口
    FPGA基础入门篇(三) 程序的固化和下载_第13张图片
    h. 操作完以上步骤即可以保存设置,并run block automation
    FPGA基础入门篇(三) 程序的固化和下载_第14张图片
    可以看到右图配置好接口后的ZYNQ.
    注:如果需要修改的地方,双击ZYNQ芯片会出现配置,设置完成后重新保存。即可。

  3. source窗口中可以看到已经创建好的bd文件,修改我们的flow_led的程序,增加ZYNQ IP接口调用部分来调用BD。
    FPGA基础入门篇(三) 程序的固化和下载_第15张图片
    a. 右键bd文件,创建一个顶层文件。
    FPGA基础入门篇(三) 程序的固化和下载_第16张图片
    b. 利用上面自动产生的system_wrapper.v文件。将其中的模块调用复制到我们的flow_led中实现调用。
    FPGA基础入门篇(三) 程序的固化和下载_第17张图片
    c. 赋值模块接口到我们的folw_led中的接口中,并修改为逗号。
    以下的io 定义是不需要自己定义的,都是ARM自带的功能,可以直接从顶层文件中复制过来。也不需要进行约束。
    FPGA基础入门篇(三) 程序的固化和下载_第18张图片
    d. 保存后可以看到flow-led下有bd文件。
    FPGA基础入门篇(三) 程序的固化和下载_第19张图片
    e. 然后删除顶层文件
    这个过程其实是将arm的部分添加到FPGA的部分中。只是arm的接口之类不需要我们自己定义。(arm的IO是固定的不需要重新分配管脚),也不需要修改管脚约束。
    FPGA基础入门篇(三) 程序的固化和下载_第20张图片
    f. 最后编译生成bit文件。
    右上角显示编译过程,需要等待几分钟。
    在这里插入图片描述

  4. 导入SDK中。
    上面生成了bit文件,需要导入到硬件。建立SDK工程。
    a. 在file工具栏中选择export hardware
    FPGA基础入门篇(三) 程序的固化和下载_第21张图片
    b. 勾选 include bitstream
    FPGA基础入门篇(三) 程序的固化和下载_第22张图片
    c. 然后在file的选择launch SDK
    FPGA基础入门篇(三) 程序的固化和下载_第23张图片
    d. 等待导入完成,如下图。
    FPGA基础入门篇(三) 程序的固化和下载_第24张图片
    e. 在SDK中的file中选择>new>application project
    FPGA基础入门篇(三) 程序的固化和下载_第25张图片
    f. 工程名命名为HelloWorld.
    FPGA基础入门篇(三) 程序的固化和下载_第26张图片
    g. 再新建一个应用工程
    FPGA基础入门篇(三) 程序的固化和下载_第27张图片
    h. 选中hellowworld工程(要做固化的工程)右键选择creat boot image
    FPGA基础入门篇(三) 程序的固化和下载_第28张图片
    窗口中出现上面三个文件。FSBL.elf, flow_led.bit, HelloWorld.elf 三个文件
    i. 直接creat image 即可完成boot.bin制作,此文件作为SD卡启动文件和SPI启动文件。
    FPGA基础入门篇(三) 程序的固化和下载_第29张图片可以看到生成BOOT.bin文件。

  5. QSPI-FLASH的启动。
    a. 系统时钟,用于配置dector的速度。
    在设备管理器中修改,新建系统环境变,修改后需要重启电脑,让环境变量生效。
    FPGA基础入门篇(三) 程序的固化和下载_第30张图片
    b. 修改FSBL中的main.c文件的内容,由于我们使用的vivado软件为2017.4版本。
    FPGA基础入门篇(三) 程序的固化和下载_第31张图片
    将开发板的开关模式调到QSPI启动模式,开发板通电。
    c. 打开program flash memory
    将镜像文件和FSBL文件找到,然后program。
    FPGA基础入门篇(三) 程序的固化和下载_第32张图片
    FPGA基础入门篇(三) 程序的固化和下载_第33张图片
    FPGA基础入门篇(三) 程序的固化和下载_第34张图片
    完成后,重新让开发板通电,可以看到流水灯正常运行。

你可能感兴趣的:(数字IC设计-FPGA)