Altera FPGA 使用JIC文件配置固化教程

2023-10-31 17:20

本文主要是介绍Altera FPGA 使用JIC文件配置固化教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部。即使MCU断电了再重新上电,程序也能继续运行。这是因为对MCU烧写固件 的实质就是将程序固件写入到MCU的片上程序存储器ROM中,而现代的大部分MCU这个ROM都是FLASH存储器。FLASH存储器能够掉电保持数据, 所以可以实现掉电程序不丢失。Altera或Xilinx的FPGA芯片,使用的是基于SRAM结构的查找表,而SRAM的一大特性就是掉电数据会丢失, 当我们使用JTAG将SRAM配置文件(.sof)配置到FPGA芯片中后,这些数据是直接存储在SRAM结构的查找表中的,因此,一旦芯片掉电,则 SRAM中的数据将丢失,再次上电后,SRAM中将不再有有效的数据。这也就是我们常见的,使用JTAG下载SOF固件到FPGA中后,板子重新上电,则 之前下载的固件又不在了的原因。当我们的系统做稳定后并量产时,当然希望能够永久保持电路固件,即让FPGA上电后其查找表中就被写入有效的数据。但是我 们又不能总是每次系统上电了就用JTAG去下载一次程序固件。因此,FPGA支持另外一种配置方式:主动串行配置。

   所谓主动串行配置,就是在FPGA芯片外部放置一片能够掉电数据不丢失的存储器,例如最常见的EPCS、QFLASH、并口FLASH,来存储设计好的电 路固件。而FPGA芯片内部,则设计了一个专用的硬件电路,在芯片刚上电的时刻就主动去读取存储在该存储器中的固件,并配置到FPGA芯片的每一个 SRAM中去。通过这样一种方式,即可在不改变FPGA芯片SRAM工艺的查找表结构前提下,让每次芯片上电后,都能获得有效的配置数据。外部存储电路配 置信息的芯片,我们称之为配置芯片。前些年,Altera的FPGA芯片指明只能使用其公司自己发售的EPCS芯片作为外部配置器件,该EPCS芯片实质 就是一个SPI接口的串行FLASH芯片,不过是经过了Altera的严格测试,性能优异。而近些年,随着芯片生产工艺的不断发展,很多其他厂家生产的 SPI接口的FLASH芯片也能够达到EPCS的技术标准,因此Altera就放开了该限制,并指出可以使用其他芯片厂家生产的SPI接口的FLASH芯 片代替EPCS。我们芯航线starter board上就使用了一片ST公司生产的16Mbit的串行FLASH芯片M25P16来作为配置芯片。该芯片性能优异,完全能够达到EPCS的性能标 准,而成本则只有相同容量的EPCS芯片的一半不到。

   当我们需要将设计好的配置固件固化到该器件中时,有两种方式,第一种方式,也就是传统的方式是使用专用AS接口(与JTAG 10针接口独立)来直接烧写该配置芯片,该种方式需要在电路板上设置一个独立的AS接口,占用PCB板面积。第二种方式,也是现在流行的方式则是通过 JTAG接口,经由FPGA芯片间接烧写该配置芯片。我们的开发板没有做独立的AS接口,因此只支持第二种烧写方式。以下对该种烧写方式以一个实际例子来 进行讲解说明。

1,打开希望固化的FPGA设计工程,这里我直接打开按键消抖这节课的工程。

2,在quartus ii软件中点击File—>Convert Programming Files,如下图所示:

3,在弹出的窗口中,Programming file type 选择JTAG Indirect Configuration File(.jic),Mode选择Active Serial,Configuration device选择EPCS16,File name默认是output_file.jic,这里,我们养成良好的习惯,将其改成工程名字:key_filter.jic。

4,在input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device选项,如下图所示:(温馨提示:点击图片可查看高清大图)

5,点击Add Device选项后在弹出的选项卡中,选择EP4CE10,然后点击OK,如下图所示:(温馨提示:点击图片可查看高清大图)

6,点击OK后会回到先前的配置页面,此时再次鼠标点击SOF Data,再点击右侧的Add File,如下图所示:(温馨提示:点击图片可查看高清大图)

7,在弹出的窗口中,在output files文件夹下找到“key_filter.sof”文件,点击open,即可添加进来,如下图所示:(温馨提示:点击图片可查看高清大图)

8,点击open后,回到配置页面,点击Generate按钮,如下图所示:(温馨提示:点击图片可查看高清大图)

9,点击Generate按钮后,则软件开始转换文件,转换成功后弹出成功提示窗口,如下图所示:(温馨提示:点击图片可查看高清大图)

10,点击OK即可,然后close窗口。

11,打开Quartus II中的下载工具programmer,将原有的sof文件移出,重新添加key_filter.jic文件进来,勾选programming/configuration,如下图所示:(温馨提示:点击图片可查看高清大图)

2,设置完成后,点击Start(前提是下载器与开发板已经正确连接),则软件开始烧录固件,整个烧录时间大约花费20秒钟左右。烧录完成后,此时固件 已经保存在了配置芯片中,但是此刻FPGA还不能运行该固件,因为当前的固件是存在配置芯片中的,并没有被配置到FPGA中,因此需要让FPGA执行一次 从配置芯片中主动配置固件的过程,方法很简单,给开发板断电后重新上电即可。此时,我们按下按键0或者按键1,就可以看到LED的状态发生变化了。断电再 上电,固件依旧保持,整个设计固化工作完成。

这篇关于Altera FPGA 使用JIC文件配置固化教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316928

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示