精华内容
下载资源
问答
  • ZYNQ FPGA程序固化主要分3个步骤: 1创建BOOT.bin 2将bit文件导入SDK 3QSPI-FLASH启动
  • ZYNQ FPGA程序固化流程

    2021-06-09 16:06:36
    5程序固化 固化的流程:ZYNQ的固化是让arm先运行,然后让arm加载FPGA的程序。(1)建立Vivado工程 (2)创建Block Design同时配置ZYNQ IP;(3)导出bit文件到SDK并且launch SDK; (4)创建FSBL文件;(5)把应用程序...

        1 建立工程,添加源文件.v
        2 建立约束文件.xdc
        3 编译产生bit文件(综合、执行、生成bit文件)
        4下载程序
        5程序固化
        固化的流程:ZYNQ的固化是让arm先运行,然后让arm加载FPGA的程序。(1)建立Vivado工程 (2)创建Block Design同时配置ZYNQ IP;(3)导出bit文件到SDK并且launch SDK;(4)创建FSBL文件;(5)把应用程序创建一个UBOOT.bin,之后可以放在SD卡或者是QSPI FLASH中运行。

    展开全文
  • 在学习FPGA时,自己画并焊接了一块板子(cyclone IV),结果在程序固化卡了两天,遇到的问题是FPGA程序固化后重新上电几分钟后才运行程序。 现象: 1.烧写sof文件能立马正常运行。 2.烧写jic文件,软件显示烧写...

    在学习FPGA时,自己画并焊接了一块板子(cyclone IV),结果在程序固化卡了两天,遇到的问题是FPGA程序固化后重新上电几分钟后才运行程序。

    现象:

    1.烧写sof文件能立马正常运行。

    2.烧写jic文件,软件显示烧写成功,CONFIG_DONE引脚高电平。

    3.重新上电后,程序不运行,CONFIG_DONE引脚一直处于低电平。几分钟后,程序运行,CONFIG_DOWN引脚处于高电平。期间程序加载几分钟属实不正常(还用秒表掐了时间,4分半,笑死)。

    随后,我在网上查阅各种资料以及浏览各种问答,都找不到原因。因此,选择去了解FPGA上电的流程,自己用示波器抓波形。

    FPGA上电流程:

    1.FPGA正常上电后,nCONFIG、nSTATUS和CONFIG_DONE处于低电平。

    2.nCONFIG引脚电平由低变高后,配置开始,芯片检测MSEL引脚的电平信号,决定配置模式。

    3.nSTATUS引脚电平由低变高后,FPGA接受配置数据。

    4.配置数据全部载入FPGA后,CONFIG_DONE管脚电平由低变高。

    5.初始化,初始化完成后INIT_DONE引脚被拉高(INIT_DONE引脚通过Quartus II软件设置是否使用)。

    按照上电顺序一步一步抓波形时发现,nSTATUS引脚的上拉电阻位置焊的是电容。(我哭了)

    更换后,上电立马就运行程序了。

    希望这个上电流程也能够为你解决问题。

    展开全文
  • FPGA 程序固化

    2021-05-12 14:20:13
    但是掉电后程序会丢失,那么如何固化代码到FLASH呢?就是本节的目的了。一、ZYNQ的启动流程ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本节介绍程序 FLASH 启动的方法。Zynq7000 SOC 芯片上电后,...

    上一节我们只使用ZYNQ的PL端资源,单独控制PL端的LED实现流水灯:blog.csdn.net/fengyuwuzu0…。但是掉电后程序会丢失,那么如何固化代码到FLASH呢?就是本节的目的了。

    一、ZYNQ的启动流程

    ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本节介绍程序 FLASH 启动的方法。Zynq7000 SOC 芯片上电后,最先运行的是ARM端系统(PS)。然后再通过ARM系统软件部分加载FPGA的比特流文件.bit至FPGA(PL),配置FPGA PL端的逻辑功能。ZYNQ 系统的启劢流程如下:

    1.1 ZYNQ启动分为两个阶段

    第一阶段是 BOOT ROM(ZYNQ厂家固化代码)

    第二阶段是 FSBL (First Stage Bootloader)SDK工具来制作。

    经过以上两个阶段,PL端配置程序及应用程序才开始运行。

    1.1 第一阶段 (BOOT ROM)上电后,Zynq7000 SOC 会首先执行片内 Boot ROM 代码,Boot ROM 代码读取 Boot mode 寄存器来判断是哪一种启动方式(SD card/QSPI Flash/JTAG)。

    确定好哪种启劢方式后,Boot ROM 从相应的启动设备(SD Card/QSPI Flash)加载 First Stage Bootloader (FSBL) 到On Chip Memory(OCM) RAM,并且将执行权交付给 FSBL。

    1.2 第二阶段 FSBL (First Stage Bootloader)

    使用SDK 工具一步步生成 FSBL 代码和可执行文件,结合代码可知 FSBL 主要做了如下工作:

    初始化 CPU,初始化串口;

    Processor System (PS) 一些控制器的初始化,如 MIO, PLL, CLK and DDR;

    禁止 L1 Data Cache;

    注册 ARM 中断向量;

    通过 Boot mode 寄存器,判断是哪种启动方式。

    1.2.1 QSPI Flash 启动方式:初始化 QSPI Flash 控刢器;

    从 Flash 拷贝 system.bit 到 FPGA (如果 Flash 中存有 system.bit);

    从 QSPI Flash 拷贝应用程序的代码到DDR3;

    调转到应用程序执行;

    1.2.2 SD Card 启动方式:初始化 SD 控刢器;

    从 SD Card 拷贝 system.bit 到 FPGA (如果 BOOT.BIN 中存有 system.bit);

    从 SD card 拷贝应用程序的代码到 DDR3;

    跳转到应用程序执行;

    1.2.3 JTAG 启动方式,直接退出。

    2 制作BOOT.bin

    2.1 新建项目

    2.2 配置PS端资源、启动SDK、生成BOOT.bin

    (1)ZYNQ 的PS开发一般有原理框图的形式来设计,这样硬件的连接看起来会更加直观。点击 Create Block Design 按钮来添加原理图设计文件。

    0e1ecbbc3f8f7808dbd7da3ee7f7fb12.png

    在弹出的对话框里输入原理图设计文件的名字,返里我们取名为"system"。

    b04de33cdfffaae3c3eae2aa9c501974.png

    (2)出现 Diagram 的空白对话框,点击 图标+添加 ARM 处理器内核到这个空白的原理图里。

    3fefc5b0501afde3f9065407b32c8a7f.png

    返里有很多 Xilinx 提供的 IP,我们找到 ZYNQ7 Processing System 双击添加,不要选择后面带 BFM(总线功能模型),带 BFM 的 IP 为早期IP 处理器版本。

    e82f68d39d2361731742c56798beaada.png

    30c1d5d61bf68a5387080d23a066db61.png

    (3)双击 Diagram 界面里的 ZYNQ Processing System,打开 ZYNQ 系统的配置界面。

    aa0d03fa254dbb26d243318ffbbc5e5b.png

    其中 Page Navigator 界面下有 8 个子项,分别为 Zynq Block Design, PS-PL Configuration,Peripheral I/O Pins, MIO Configration, Clock Configuration, DDR Configuration, SMC Timing Calculation, Interrupts。这些页面选项是针对 ZYNQ 的不同硬件模块的配置,其中

    PS_PL 页面提供了 PS 到 PL 的相关接口配置信息以及 PS 部分一些配置信息;

    Peripheral I/O Pins 页面主要是对一些通用外设接口的配置;

    MIO Configruation 页面主要是对 MIO 已经EMIO 的分配控制;

    Clock Configruation 页面主要是对 PS 端时钟资源的配置和管理;

    DDR Configration 页面主要是对 DDR控制器一些参数的配置;

    Interrupts 页面主要是对中断进行配置管理。

    (4)点击 Peripheral I/O Pins ,会出现以下的 IO 配置界面。

    因为 ZYNQ 的MIO 管脚可以配置成多种功能,比如 MIO48 和 MIO49, 既可以配置成 SD1引脚,也可以是 UART1 引脚,或者是 I2C1 引脚,也可以配置成 CAN1 引脚。具体如何配置需要跟硬件电路板的原理图对应。我们 MIO48 和 MIO49 是连接到 UART 芯片上,是作为串口通信使用。使能SD、 Quad SPI Flash。

    c749d8810a90070f9b85029d89e8fd85.png

    1963e42dc7ca83012144a8644875b5f9.png

    c55ee3191a151c06692426ade45e907c.png

    (5)点击 PS-PL Configuration ,在 Gemeral 目录下,我们可以看到UART1 波特率是115200,这个波特率用户可以自己选择,我们返里就保留默认设置就可以了。

    41f21d58b7ffd8aac235cbef5e2587e5.png

    (6)点击 Clock Configuration ,返个界面会显示 ZYNQ 系统的一些时钟,比如输入时钟是33.33333Mhz, 这个时钟跟我们开发板上的 PS 的系统时钟是一样的。另外我们可以看到 CPU工作时钟是 666.666666Mhz(767Mhz), DDR 的工作时钟是533.333333Mhz,还有些是外设的工作时钟。这些时钟频率我们目前不需要修改。

    9ac19b3e01af15f1feee40ebebf12803.png

    (7) 再打开 DDR Configration,在这个界面上是选择 DDR 芯片的名称和一些参数。我们再 Memory Part 中需要选择跟开发板上 DDR3 型号一样的名称(MT41J256M16 RE-125)。

    6caf47dd0b963e636f78ff24acfce6e6.png

    (8) 在 MIO Configuration 顷,把 Quad SPI Flash 的 MIO1~MIO6 Speed 配置成 fast 模式。

    d5f42e5c53f740d2598a9183f3988e51.png

    在 SD_0 项,选择 CD 前面的钩,IO 选择 MIO47(需要跟开发板一致),SD_0 的 IO 速度配置成 fast 模式。再配置 Bank1 I/O Voltage 的电压为 1.8V。

    31533066ffcca00c474412d1a429953a.png

    (9)在 Clock Configuration中,我们可以修改 QSPI 癿时钟频率,默认是 200Mhz。这里不做修改。

    80fbde0cb22daf7ad5b291929f22631a.png

    (10)在 Diagram 界面里点击"Run Block Automation"完成对 ZYNQ7 Processing System IP核的配置,生成外部 ZYNQ 系统的外部链接 IO 管脚。

    13bd94142214e9b7dcef7f19fe5fa1d6.png

    cfa17bd75a5352fe5f935f5071d2d698.png

    生成后的 ZYNQ 系统外部管脚如下,一个是 DDR 的接口,一个是 FIXED_IO。

    17253ed4a2d156d1247c324ca7d9d44a.png

    (11)在 Source 窗口中选中 system.bd,右键并先后选择Generate Output Projects 和 Create HDL Wrapper 选顷迕行操作。生成后如下图所示:

    d6e29355657f536850056e55acfc0693.png

    (12)在system_wrapper.v中例化LED程序,并添加相应的管教约束文件。具体可参考PL端的流水灯实验。

    (13)重新编译一下工程,生成 bit 文件。

    (14)再导出硬件,选择菜单 File->Export->Export Hardware...导出,包含bitstram 文件。

    (15)硬件导出后,选择菜单 File->Launch SDK,启动 SDK 开发环境, 会出现1 个 hardware platform:sytem_wrapper_hw_platform_0。

    8825c0fc4922120c5423abc11a931853.png

    (16)进入SDK 开发环境后,点击菜单 File -> New -> Application Project。

    b7b4f783bcdeba032eeecc37c716cb9b.png

    (17)仅在 Project name: 输入 fsbl,Hardware Platform 需要选择system_wrapper_hw_platform_0。

    424834bd9d8e65a1109f3bfbce4bd5fa.png

    next,选择 Zynq FSBL 模板

    d6500350cd5da77aaecc86f5b7e97d80.png

    (18)软件会自动编译生成 fsbl.elf 文件。

    (19)为了能够让串口打印出 Bootloader 癿信息,我们返里需要在 fsbl_debug.h 文件里添加一条语句,定义一下“FSBL_DEBUG_INFO”常量。修改后保存,重新编译一下 fsbl 项目。

    f12ebbc7c84092461f8b6e2749e36223.png

    (20)接下去我们要把 FSBL 可执行文件,FPGA PL的bit比特流文件和PS应用程序结合成一个 Bin 文件。

    选择菜单 Xilinx Tools->Create Boot Image:

    ae062d3aae8ae24742ac1a56e07f8405.png

    点击 Browse 选择选择 Zynq Boot Image 文件.bif 的存放地址。

    33cf22e22f57ac5b54d5f33c29d530fc.png

    (21)点击 Add按钮, 在弹出的Add new boot image partition 对话框中, 点击 Browse 选择我们刚生成的 FSBL 可执行文件 fsbl.elf。返里 Partition type 为 bootloader,fsbl.elf 作为bootloader 程序。

    581022218fd63bf599349f5eb6698697.png

    (22)点击 Add 按钮,在弹出的 Add new boot image partition 对话框中, 点击 Browse 按钮找到 FPGA PL的比特流文件 system_wrapper.bit, 这里 Partition type 为 datafile。

    4f42ff6d18c9309777519dbb9fce13db.png

    (23)同样的方法添加应用程序文件如uboot。 返里 Partition type 也是 datafile。3 个文件添加后如下所示:

    bcca486ffe9408aa6dfafcdfdc4e09b3.png

    (24)点击 Create Image 按钮,生成 BOOT.bin。BOOT.bin 文件生成成功。

    1039fd64e544835611e5f220d0ba792f.png

    3、烧写 FLASH 并启动

    把生成癿 BOOT.bin 文件烧写到 QSPI FLASH 中

    (1)开发板需要连接 JTAG 线到电脑,把开发板的上电启动配置跳线帽选择至 QSPI Flash 启劢,并上电。

    (2)在 SDK开发环境里,选择菜单 Xilinx Tools->Program Flash。

    cd9f2ee5c76ada14d851ef377f0d6d24.png

    (3)在 Program Flash Memory 里, Hardware Platform 中选择 system_wrapper_hw_platform_0, 烧写癿 Image File 选择刚生成的 BOOT.bin 文件,Flash Type 选择 qspi_single。

    41f678f4ab2f4e320e28e33834e5b8e2.png

    (4)点击 Program 按钮下载,程序会开始下载 BOOT.bin 文件到开发板的 QSPI FLASH 中。

    423465b765b9cba1699e05ffab8779e3.png

    Console 窗口显示 Flash Operation Successful 信息,说明烧写成功。

    d2ce46370da21fc4150bf4933f2c5fdb.png

    (5)断电重新上电,如果开发板连接串口,我们可以在串口工具里看到 bootloader 的启动信息。

    f0bfcdd3e3c877c491b10ddabc0804a7.png

    展开全文
  • 如何将FPGA程序固化到外部Flash存储器 大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊如何将FPGA程序固化到外部Flash存储器。 在我们刚开始学习FPGA的时候,我们一般都是将编译后生成的.sof文件(针对于...

    如何将FPGA程序固化到外部Flash存储器

    大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊如何将FPGA程序固化到外部Flash存储器。

    在我们刚开始学习FPGA的时候,我们一般都是将编译后生成的.sof文件(针对于Altera器件)通过JTAG方式下载到FPGA内部,但是我们会发现,给FPGA重新上电之后,我们之前给它下载的程序已经丢失了,如果我们还想让FPGA跑上次的功能就必须再下载一次程序。出现这个问题,是因为我们的程序并没有存到FPGA外接的配置芯片中,只是存在FPGA内部的SRAM。

    为了解决这个问题,使我们的FPGA重新上电后不丢失之前下载的程序,我们可以把.sof文件转成.jic文件,然后通过JTAG方式下载到FPGA中去,就可以解决这个问题了。

    下面我们说一下把.sof文件转成.jic文件的步骤:

    1、打开编译过并产生了.sof文件的工程;

    2、点击File菜单下的Convert Programming Files…命令,出现如下界面;

    3、参考下图修改配置,修改后点击生成;

    4、生成之后,在下载的时候,加入刚才生成的.jic文件就可以了。

    后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

    江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!

     

    【QQ交流群】

    群号:173560979,进群暗语:FPGA技术江湖粉丝。

    多年的FPGA企业开发、培训经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,QQ群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,FPGA技术江湖打造最纯净最专业的技术交流学习平台。

     

    【微信交流群】

    现微信交流群已建立08群,人数已达数千人,欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式。

     

    欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式,更多精彩内容等你发现

    展开全文
  • Altera FPGA程序固化(软件+硬件)

    万次阅读 2017-07-17 22:48:23
    Altera FPGA程序固化 对MCU进行烧写程序,程序固件被写入MCU的片上存储器ROM中,现代大部分MCU的片上存储器ROM为FLASH存储器,可以实现掉电保持数据,所以可以掉电程序不丢失。 而对于FPGA芯片而言,FPGA芯片是...
  • 项目马上就要结题,FPGA程序不能像之前调试时那样掉电就丢失了,需要固化在板子上,所以小学霸就恶补了一通FPGA程序固化的方法。小学霸用的是DE10-Nano ALTERA Cyclone V 5CSEBA6U23I7的板子,EPCS为EPCS128.在FPGA...
  • fpga程序固化

    2021-05-12 23:38:19
    程序固化就是将生成的文件保存到Flash芯片中,达到掉电不丢失的情况。 Quartus:首先需要工程生成.SOF文件,才能进行下面的操作。 ①quartus-->File-->conver program-->Pro File type:选取.jic-->...
  • FPGA 程序固化的问题

    千次阅读 2015-02-04 19:52:23
    主动配置方式(AS)和被动配置方式(PS)和最常用的...AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EPCS4配置器件专供AS模式,目前只支持 Cyclone系列。使用Altera串行配置器
  • ALTERA FPGA程序固化:程序烧写到flash

    千次阅读 2020-08-16 11:27:04
    实验平台:正点原子开拓者开发板 1点击如下图 2我们编译完的文件是sof文件,sof文件掉电会丢失 所以要转换成jic文件 点击generate生成jic文件 3打开烧写界面添加jic文件
  • FPGA固化程序

    千次阅读 2018-10-31 10:05:43
    初玩FPGA开发板,我们都会遇到这种情况,每次事先写好的程序编译成功后,下载到板子里,输出...原文链接:FPGA固化程序 一、准备工作:设计好的工程,且已经编译通过,管脚分配好可下载到板子,看到输出结果;(如...
  • 注意:开始固化程序成功后,必须要断电重启 这里下载的程序是.sof文件格式,开发板断电后程序将会丢失。如果我们想要程序断电不 丢失的话,就必须将程序保存在开发板的片外Flash中,Flash的引脚是和FPGA固定的...
  • ZYNQ 芯片 ROM 里面固化了一段不可修改的程序,只要 ZYNQ 一上电 ,这段程序就会执行。 它将对 ZYNQ 的 NAND 、 NOR 、 SD 等基本外设控制器进行初始化。 把 SD 卡这类易失的存储器件初始化后,就会把其中的程序拷贝...
  • FPGA程序加载与固化

    2020-09-25 09:39:09
    FPGA程序加载与固化 将开发板通过Xilinx FPGA JTAG下载器连接到PC机,打开Windows的设备管理器查看下载器是否已正常连接: 图 1 开发板上电,在Windows下点击“开始菜单 ->Xilinx Design Tools -> ...
  • 什么是FPGA程序固化? 通常对FPGA下载程序时,会采用JTAG口下载,完成好HDL设计,并且验证无误后,对设计文件进行综合,布局布线以及生成比特流文件,而FPGA开发板要想工作,需要将该文件烧写进FPGA芯片中。但是...
  • Altera FPGA程序固化

    2019-01-08 09:39:00
    Altera FPGA程序固化 对MCU进行烧写程序,程序固件被写入MCU的片上存储器ROM中,现代大部分MCU的片上存储器ROM为FLASH存储器,可以实现掉电保持数据,所以可以掉电程序不丢失。 而对于Altera和Xi...
  • FPGA代码固化

    2020-06-30 12:05:18
    由于笔者在学习fpga的过程中,一直都是下载配置代码,比较方便,很少用到固化。长时间不用就不太熟悉,所以专门说一下固化方法。在对MCU进行烧写程序程序固件被写入MCU的片上存储器ROM中,并且现代大部分MCU的片上...
  • 关于仿真时工作正常程序固化后却不能运行的几种情况
  • 可以将程序加载进去,这样的话,下次上电后可以直接从该存储器中加载程序,这就是固化的过程。 一般的会采用Jtag口下载程序(Vivado): 完成好HDL设计,并且验证无误后,对设计文件进行综合,布局布线以及生...
  • FPGA固化MCS文件失败

    2021-01-01 00:11:58
    2.01 FPGA固化MCS文件失败 2.1.1 本节目录 第一,章节目录; 第二,前言; 第三,FPGA简介; 第四,FPGA固化MCS文件失败; 第五,结束语; 2.1.2 本节引言 给FPGA一个支点,它可以撬动整个数字逻辑。““给...
  • xilinx FPGA 固化代码流程

    万次阅读 2018-09-05 19:03:44
    Xilinx VIVADO固化流程 纯verilog工程,不涉及SDK代码的固化流程: 综合,实现,生成比特流后,点击Tools—Generate Memory Cinfiguration File… 如图,选择所用FLASH的类型,设置生成mcs文件名,选择生成的...
  • 基于FPGA的flash板卡程序擦除与固化

    千次阅读 2018-10-29 13:18:41
    擦除已经固化好的程序需要对flash芯片(M25P94)的时序进行描述。时序原理如图所示:  这里主要是对flash的前8个扇区进行擦除,为了产生擦除标志,所以多家了一个wait_3s的标识,8个扇区...
  • 固化FPGA程序,使用QuartusⅡ 15

    千次阅读 2017-07-07 17:49:38
    固化FPGA程序,使用QuartusⅡ 15
  • FPGA程序固化和下载基于上次的流水灯实验进行固化和下载。 一、 原理图: 固化流程 固化准备 二、 BOOT.bin制作过程 创建工程 打开之前的已经写好并且编译下载好的流水灯工程 在此基础上添加 Block ...
  • 因为PL端的FPGA程序固话,必须要PS端的配合,生成BIN文件。 2、如果你就是想吧zynq当做FPGA用的话,生成的执行文件比较小的话,可以下载到FPGA的自己偏上的flash里面。(该方法没有试过) 接下来介绍一下正常的程序...
  • FPGA固化方法

    千次阅读 2017-05-06 16:51:55
    用Quartus 生成的output_files有两种文件,其中之一为sof文件,另一个为pof文件,前者下载到FPGA后,开始运行,掉电消除。后者不会消除,所以下载时一般下载pof文件,但是下载pof文件需要在硬件上设计AS接口,所以...
  • FPGA固化流程

    2018-11-02 10:54:00
    使用vivado工具生成mcs文件,把生成的mcs文件固化到flash中,然后重新上电,不需要烧写bit文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,519
精华内容 607
关键字:

fpga程序固化