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
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS Flex 笔记

1. Flexbox 术语 Flex 容器可以是<div> 等&#xff0c;对其设置属性&#xff1a;display: flex, justify-content 是沿主轴方向调整元素&#xff0c;align-items 是沿交叉轴对齐元素。 2. Cheatsheet 2.1 设置 Flex 容器&#xff0c;加粗的属性为默认值 2.1.1 align-it…

1,复杂度和简单排序算法【p2-p3】

复杂度和简单排序算法 1&#xff0c;时间复杂度1.1选择排序1.2冒泡排序1.3异或运算1.3.1性质&#xff1a;1.3.2案例例1例2 1.4插入排序1.5二分法1.5.1在一个有序数组中&#xff0c;找某个数是否存在1.5.2在一个有序数组中&#xff0c;找>某个数最左侧的位置1.5.3局部最小值问…

Individual household electric power consumption个人家庭用电量数据挖掘与时序预测建模

今天接到一个任务就是需要基于给定的数据集来进行数据挖掘分析相关的计算&#xff0c;并完成对未来时段内数据的预测建模&#xff0c;话不多说直接看内容。 官方数据详情介绍在这里&#xff0c;如下所示&#xff1a; 数据集中一共包含9个不同的字段&#xff0c;详情如下&#…

手把手一起实现Visual Studio 2022本地工程提交(和克隆)Gitee

1、VS2022本地工程提交Gitee 登录Gitee&#xff0c;创建空仓库&#xff0c;如图&#xff1a; 新建仓库&#xff1a; 打开Visual Studio 2022创建的工程&#xff0c;点击创建Git存储库&#xff1a; 复制Gitee仓库URL&#xff1a; 将URL填入&#xff0c;点击创建并推送&#xff…

Windows 10 安装 PostgreSQL 12.x 报错 ‘psql‘ 不是内部或外部命令 由于找不到文件libintl-9.dll等问题

目录 序言一、问题总结问题 1 psql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。问题 2 “由于找不到文件libintl-9.dll&#xff0c;无法继续执行代码&#xff0c;重新安装程序可能会解决此问题。“1、卸载2、安装3、安装 Stack Builder &#xff08;这个可…

LeetCode.189(轮转数组)

对于轮转数组这个题&#xff0c;文章一共提供三种思路&#xff0c;对于每种思路均提供其对应代码的时间、空间复杂度。 目录 1. 创建变量来保存最后一个数&#xff0c;并将其余数组向前挪动一位 &#xff1a; 1.1 原理解析&#xff1a; 1.2 代码实现&#xff1a; 2.创建一个…

NFT和数字藏品的安全方案解析

一、NFT和数字藏品 01 NFT是什么&#xff1f; NFT 是Non-Fungible Tokens 的缩写&#xff0c;意思是不可互换的代币&#xff0c;它是相对于可互换的代币而言的。不可互换的代币也称为非同质代币。什么是可互换的代币&#xff1f;比如BTC&#xff08;比特币&#xff09;、ETH&…

前端,js , Error in created hook: TypeError ,有bug了

怎么兄弟&#xff0c;遇到bug了&#xff1f;&#xff1f;&#xff1f;你开心吗&#xff0c;哈哈哈哈

如何在MacBook上彻底删除mysql

好久以前安装过&#xff0c;但是现在配置mysql一直出错&#xff0c;索性全部删掉重新配置。 一、停止MySQL服务 首先&#xff0c;请确保 MySQL 服务器已经停止运行&#xff0c;以免影响后续的删除操作。 sudo /usr/local/mysql/support-files/mysql.server stop如果你输入之…

kotlin 编写一个简单的天气预报app(四)

编写界面来显示返回的数据 用户友好性&#xff1a;通过界面设计和用户体验优化&#xff0c;可以使天气信息更易读、易理解和易操作。有效的界面设计可以提高用户满意度并提供更好的交互体验。 增加城市名字的TextView <TextViewandroid:id"id/textViewCityName"…

Kyuubi入门简介

一、官方简介 HOME — Apache Kyuubi 二、概述 1、一个企业级数据湖探索平台 2、一个高性能的通用JDBC和SQL执行引擎 3、一个基于spark的查询引擎服务 三、优点 1、提供hiveserver2查询spark sql的能力&#xff0c;查询效率更为高效&#xff0c;首次构建连接时会持续保持连…

628. 三个数的最大乘积

628. 三个数的最大乘积 class Solution {public int maximumProduct(int[] nums) {Arrays.sort(nums); return Math.max(nums[nums.length-1]*nums[nums.length-2]*nums[nums.length-3],nums[0]*nums[1]*nums[nums.length-1]);} }

c语言位段知识详解

本篇文章带来位段相关知识详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力之源&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&#xff01;&#xff01;&#xff01; 目录 一.什么是…

聊聊这几年的科技风口

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 数数这几年的科技风口&#xff1a;AR&#xff08;包括什么MR、VR&#xff09;、区块链(包括后来的什么web3)、元宇宙到现在的AI&#xff0c;下面逐一谈谈…

在Ail Linux中手动配置IPv6

第一步&#xff0c;登录阿里云服务器控制台&#xff0c;在“概览”页面找到对应实例&#xff0c;然后单击实例ID。 第二步&#xff0c;在“实例详情”页面中的“网络信息”栏目中&#xff0c;可以发现“IPv6 地址”中没有数据&#xff0c;然后单击“专有网络”的专有网络ID。 第…

使用IDEA打jar包的详细图文教程

1. 点击intellij idea左上角的“File”菜单 -> Project Structure 2. 点击"Artifacts" -> 绿色的"" -> “JAR” -> Empty 3. Name栏填入自定义的名字&#xff0c;Output ditectory 选择 jar 包目标目录&#xff0c;Available Elements 里右击…

QTableWidget setSortingEnable 函数使用详解

Qt助手的解释 If enable is true, enables sorting for the table and immediately trigger a call to sortByColumn() with the current sort section and order Note: Setter function for property sortingEnabled. 如果将 enable 设置为 true 那么就会立即调用 sortByColum…

使用Appuploader工具将IPA上传到App Store的最新流程和步骤

​ 苹果官方提供的工具xcode上架ipa非常复杂麻烦。用appuploader 可以在 mac 和windows 上制作管理 证书 &#xff0c;无需钥匙串工具 条件&#xff1a;1.以Windows为例&#xff0c;创建app打包ios需要的证书和描述文件 2.准备好一个苹果开发者账号&#xff08;如果没有到苹果…

matlab使用教程(5)—矩阵定义和基本运算

本博客介绍如何在 MATLAB 中创建矩阵和执行基本矩阵计算。 MATLAB 环境使用矩阵来表示包含以二维网格排列的实数或复数的变量。更广泛而言&#xff0c;数组为向量、矩阵或更高维度的数值网格。MATLAB 中的所有数组都是矩形&#xff0c;在这种意义上沿任何维度的分量向量的长度…

C++ 类和对象篇(一) 类的引入

目录 一、类的概念 二、类的引入 三、类的定义 1.定义一个类 2.struct 和 class 的区别 3.类中成员函数的声明、实现分离 四、封装及类的访问限定符 1.封装 2.类的访问限定符 五、类的作用域和生命周期 六、类的实例化 七、类存储方法 八、计算类的大小 一、类的概念 1…