SOC FPGA介绍及开发设计流程
目录
一、SoC FPGA简介
二、SoC FPGA开发流程
2.1 硬件开发
2.2 软件开发
一、SoC FPGA简介
SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS),包括处理器、外设和存储器控制器。相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片,SOC FPGA既拥有ARM处理器灵活高效的数据运算和事务处理能力,又拥有FPGA的高速并行数据处理优势。同时,基于两者独特的片上互联结构,在使用时可以将 FPGA 上的通用逻辑资源经过配置,映射为ARM处理器的一个或多个具有特定功能的外设,并通过高达128位位宽的AXI高速总线进行通信以完成控制命令和高速数据的交互。

HPS中的MPU子系统包括了两个Cortex-A9处理器核、二级(L2)高速缓存(Cache)和缓存器子系统、侦测控制单元(SCU)、一致性加速端口(ACP)以及调试功能模块。Cortex-A9处理器核中包括浮点单元(FPU)用于支持浮点运算,可以极大的提升依赖于浮点运算应用系统的性能,如高级控制算法、成像(缩放、三维变换)、快速傅里叶变换以及图像中的滤波等。每个Cortex-A9处理器核都包含一个ARM NEON媒体处理引擎(Media Processing Engine,MEP),该引擎支持多数据的同时运算,而可以加速多媒体等信号处理运算的速度。
HPS其他部分位于MPU子系统之外,处理器通过一组64位的ABMA(Advanced Microcontroller Bus Architecture)高级扩展接口(Advanced eXtensible Interface, AXI)主机访问HPS的其他部分。
SOC FPGA集成芯片的HPS和FPGA能够独立工作,通过高性能ARM AMBA AXI总线连接。FPGA架构中的IP总线能够通过FPGA至HPS互连访问HPS总线从机,HPS总线主机能够通过HPS至FPGA桥接访问FPGA架构中的总线从机,ARMBA AXI接口均可配置为32/64/128位。

二、SoC FPGA开发流程
2.1 硬件开发
硬件开发使用Quartus Prime和Platfom Designer。

硬件设计工作流程:
(1) 在Platform Designer中添加HPS组件以及各外围器件(如片内存储器、PIO、定时器、UART、片外存储器、DMA 等),并定制和配置它们的功能;分配外设地址及中断号;设定复位地址:;最后生成系统。
(2) 使用Platform Designer生成含HPS的系统后,会得到一个.qsys 后缀的文件,将其集成到整个Quartus Prime工程中。可以在Quartus Prime工程中加入 qsys 系统以外的逻辑。用户可以将HPS高性能处理器和具有强大并行处理能力的FPGA高度整合,以得到最佳的性能。
(3) 使用Quartus Prime选取具体的SOC FPGA器件型号;然后为系统分配引脚,对于 HPS,主要是设置 SDRAM的引脚电平和IO Bank电平。另外还要根据要求进行硬件编译选项或时序约束的设置;最后编译工程,在编译过程中Quartus Prime将对Qsys生成系统的HDL设计文件进行布局布线从HDL源文件综合生成一个适合目标器件的网表,生成FPGA配置文件(.sof)。
(4)使用Quartus Prime编程器和IntelFPGA下载电缆(如 USB Blaster),将配置文件(用户定制的含 HPS 系统的硬件设计)下载到目标板上。当校验完当前硬件设计后,可将新的配置文件下载到目标板上的非易失存储器里(如EPCS器件)。下载完硬件配置文件后,软件开发者就可以将此目标板作为软件开发的初期硬件平台进行软件功能的开发验证了。
2.2 软件开发
软件开发主要使用到两个工具,SOC EDS和Intel FPGA 部门深度定制的DS-5软件。
SOC EDS:类似一个Linux虚拟机,支持 Linux 系统中常用的各种命令如cd、ls、chmod、cat、make,也包含了一些专用的工具,如用于生成dts文件的spocdts工具、用于生成Altera专属的 Preloader头文件用的mkpimage工具,用以烧写U-Boot和 Preloader文件到sd卡中用的alt-boot-disk-util工具等等。使用SOC EDS,可以针对特定的硬件工程生成相应的U-Boot 源码并编译得到 U-Boot镜像文件,也可以实现对Linux 应用程序、内核和驱动的编译。在不安装 Linux 操作系统的情况下,就能完成基于HPS系统的软件开发和调试。
DS-5可以用来编写、编译、调试 SoC 片不含操作系统的裸机程序,Linux 内核和驱动模块,该软件包含以下特性:基于易用的Eclipse编辑器、支持GCC编译器编译和调试Linux应用程序、支持调试Linux内核和驱动模块、支持使用USB Blaster调试ARM处理器、支持FPGA和ARM交叉触发联合调试、支持优化软件的profile特性
硬件设计经过Quartus编译后会产生三个文件:
Handoff文件夹:包括HPS元件配置信息,例如使能的HPS外设、复用引脚的选择和IOSCR设置、存储器参数设置等;
SVD文件:包括HPS寄存器描述以及FPGA部分的软核IP寄存器描述;
SOPCINFO文件:包括整个系统的描述信息。

Handoff文件夹用于SOC EDS软件的Preloader Generator创建Preloader,Preloader根据Handoff文件夹中的信息配置HPS元件,初始化SDRAM,将下一阶段的引导过程(boot process)加载到SDRAM中并向它传递控制信息。
通过SVD文件可以在DS-5调试器中对HPS外设及FPGA外设寄存器进行检查和修改。
SOPCINFO文件用于设备树产生器(Device Tree Generator)创建Linux内核所需的设备树。设备树是描述硬件到操作系统的标准方式,主要应用于Linux系统中,它制定了开发板硬件和FPGA的配置,使内核启动时回家再相应的驱动程序。
参考文献:
SoC FPGA 设计和开发教程
基于FPGA的嵌入式系统设计—Altera Soc FPGA
Cyclone V Hard Processor System Technical Reference Manual
相关文章:
SOC FPGA介绍及开发设计流程
目录 一、SoC FPGA简介 二、SoC FPGA开发流程 2.1 硬件开发 2.2 软件开发 一、SoC FPGA简介 SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS),包括处理器、外设和存储器控制器。相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片,SOC FPGA既…...
MySQL vs. Oracle: 函数比较与联系
引言 MySQL和Oracle是两个广泛使用的关系型数据库管理系统(RDBMS),它们提供了丰富的函数库来处理和操作数据。本文将详细介绍MySQL和Oracle的所有函数,并逐一介绍它们的相同和不同之处,以帮助读者更好地理解和使用这两…...
【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权
一、API接口文档平台 使用API接口文档不经可以很好的的维护接口数据,还给测试人员的接口测试工作带来了便利; 我们可以在全局配置文件中添加路由路径生成接口文档 1、使用docs接口文档维护接口 1.1在全局配置文件里指定用于支持coreapi的Schema # 指…...
经营简报及考核360表格
文章目录 经营简报效果图代码tableObjectSpanMethod.js 考核360委员会效果图 经营简报效果图不需要合并单元格且有汇总表头的 懒得封装了,所以整体没有封装 经营简报 效果图 代码 <template><el-tableref"tableRef":data"tableData.lengt…...
Spring Security 构建基于 JWT 的登录认证
一言以蔽之,JWT 可以携带非敏感信息,并具有不可篡改性。可以通过验证是否被篡改,以及读取信息内容,完成网络认证的三个问题:“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全,使用它需要采用 …...
PyTorch从零开始实现Transformer
文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码(可直接运行) 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…...
运动蓝牙耳机什么牌子的好用、最好用的运动蓝牙耳机推荐
音乐是运动的灵魂,而一款优秀的运动耳机则是让音乐与我们的身体完美融合的关键。今天,我推荐五款备受运动爱好者喜爱的耳机,它们以卓越的音质、舒适的佩戴和出色的稳定性能脱颖而出,助你在运动中创造最佳状态。 1、NANK南卡Runne…...
HTTP、HTTPS协议详解
文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后,浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法:get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…...
【算法与数据结构】222、LeetCode完全二叉树的节点个数
文章目录 一、题目二、一般遍历解法三、利用完全二叉树性质四、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、一般遍历解法 思路分析:利用层序遍历,然后用num记录节点数量。其他的例如…...
登录和注册表单的11个HTML最佳实践
原文:11 HTML best practices for login & sign-up forms 原作者:Andrey Sitnik 翻译已获原文作者许可,禁止转载和商用 大多数网站都有登录或注册表单;它们是业务转换的关键部分。然而,即使是流行的站点也没有实现本文中提到的…...
Mysql删除历史数据
Mysql定时删除历史数据 实现 1.创建存储过程(函数) SQL DROP PROCEDURE IF EXISTS KeepDatasWith30Days CREATE PROCEDURE KeepDatasWith30Days() BEGINSELECT maxId:max(Id) FROM tableName WHERE CreateTime<DATE(DATE_SUB(NOW(),INTERVAL 31 D…...
Python—数据结构(一)
先放一张自己学习和整理归纳的思维导图,以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥,但坚持下来一定有很大的收获!加油💪🏻! 数据结构 数据的概念数据元素: 若干基本…...
离线环境安装flask依赖包
找到当前版本需要的所有依赖包,生产flask项目生成项目依赖包文件requirements.txt 1)在当前项目目录下 生成requirements文件:pip freeze >requirements.txt 执行requirements文件,安装依赖包:pip install -r requirements.t…...
ChatGPT与Claude对比分析
一 简介 1、ChatGPT: 访问地址:https://chat.openai.com/ 由OpenAI研发,2022年11月发布。基于 transformer 结构的大规模语言模型,包含1750亿参数。训练数据集主要是网页文本,聚焦于流畅的对话交互。对话风格友好,回复通顺灵活,富有创造性。存在一定的安全性问题,可…...
登录和注册页面 - 验证码功能的实现
目录 1. 生成验证码 2. 将本地验证码发布成 URL 3. 后端返回验证码的 URL 给前端 4. 前端将用户输入的验证码传给后端 5. 后端验证验证码 1. 生成验证码 使用hutool 工具生成验证码. 1.1 添加 hutool 验证码依赖 <!-- 验证码 --> <dependency><groupId…...
HDFS的文件块大小(重点)
HDFS 中的文件在物理上是分块存储 (Block ) , 块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。 如果一个文件文件小于128M,该文件会占…...
深度学习(二)
目录 一、神经网络 整体架构: 架构细节: 神经元个数的影响: 神经网络过拟合解决: 卷积网络 整体架构: 卷积层 边缘填充 特征尺寸计算 池化层 特征图变化 递归神经网络 一、神经网络 整体架构: 图中分别为输入层、隐层1、隐层2、输出层 通过输入层输入某数值…...
无涯教程-jQuery - wrapInner( html )方法函数
wrapInner(html)方法使用HTML结构包装每个匹配元素(包括文本节点)的内部子内容。 wrapInner( html ) - 语法 selector.wrapInner( html ) 这是此方法使用的所有参数的描述- html - 将动态创建并环绕目标的HTML字符串。 wrapInner( html ) - 示例 以下是一个简单的示例…...
【unity之IMGUI实践】单例模式管理数据存储【二】
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...
【C++】开源:Linux端ALSA音频处理库
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端ALSA音频处理库。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...
JavaWeb Listener 监听器详解:三大域对象监听 + 在线人数统计实战
前言Listener(监听器)是 JavaWeb 三大组件最后一个,专门用于监听 Web 域对象的创建、销毁、属性变化,在事件触发时自动执行逻辑。它是基于观察者模式实现,常用于:服务器初始化、在线用户统计、Session 监听…...
光场相机入门:Macro Pixel与SAI如何让你的照片秒变3D(附Python代码示例)
光场相机实战指南:用Macro Pixel与SAI技术打造沉浸式3D影像 当你第一次看到光场相机拍摄的照片能在屏幕上自由切换焦点时,那种震撼感就像发现了摄影的新维度。这背后是Macro Pixel和SAI两项核心技术的完美配合——它们让静态图像拥有了动态的视角选择能力…...
League-Toolkit:英雄联盟智能助手的全方位解决方案
League-Toolkit:英雄联盟智能助手的全方位解决方案 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的英雄联盟…...
3个关键步骤掌握BetaFlight黑匣子日志分析:从新手到专家
3个关键步骤掌握BetaFlight黑匣子日志分析:从新手到专家 【免费下载链接】blackbox-log-viewer Interactive log viewer for flight logs recorded with blackbox 项目地址: https://gitcode.com/gh_mirrors/bl/blackbox-log-viewer BetaFlight Blackbox Log…...
自学C#的第三天
今天自学了c#,并看了相关的unity课程视频,加油,争取找到一份好的实习,简历投递效果不是很成功,打算给我的qt项目重新完善一下...
Java 面试八股文(全网最全20w字)
一、Java 基础知识 1、Object 类相关方法 getClass 获取当前运行时对象的 Class 对象。hashCode 返回对象的 hash 码。clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行…...
Windows下MySQL 8.0数据库存储路径迁移实战:释放C盘空间
Windows下MySQL 8.0存储路径迁移全指南:彻底解放C盘空间 对于长期在本地开发环境中使用MySQL的开发者来说,系统盘空间被数据库文件逐渐蚕食是常见痛点。默认安装的MySQL 8.0会将数据目录存放在C盘的隐蔽位置,随着业务数据增长,不仅…...
解锁毕业论文新姿势:书匠策AI,你的学术超级英雄!
在学术征途上,每一位即将毕业的大学生都怀揣着梦想与挑战,而毕业论文则是那座必须跨越的巍峨大山。面对这座大山,你是否曾感到迷茫、无助,甚至有些力不从心?别怕,今天,就让我带你认识一位学术界…...
web.py终极指南:开发者最关心的20个常见问题与解决方案
web.py终极指南:开发者最关心的20个常见问题与解决方案 【免费下载链接】webpy web.py is a web framework for python that is as simple as it is powerful. 项目地址: https://gitcode.com/gh_mirrors/we/webpy web.py是一个简单而强大的Python Web框架&…...
Elk优雅错误处理:10个用户友好提示与降级机制详解
Elk优雅错误处理:10个用户友好提示与降级机制详解 【免费下载链接】elk A nimble Mastodon web client 项目地址: https://gitcode.com/gh_mirrors/el/elk Elk作为一款轻量级的Mastodon网页客户端,以其流畅的用户体验和高效的错误处理机制备受用户…...
