本文共 7910 字,大约阅读时间需要 26 分钟。
SOPC介绍
SOC FPGA定义
SOC FPGA所用芯片
SOC FPGA用到的软件
SOC FPGA软硬件开发难点
Intel PSG(原ALTER)
常用文件含义
下面会用到
Quartus
软件,可参考开发板光盘下的<Quartus II 17.1 安装和许可指导书>,如下图所示。当然了,SoC EDS
也在这个文档中,这个也是以后要用到的软件,可以一并进行安装!
GHRD(黄金硬件参考设计)
Demos\SOC_FPGA\Quartus\AC501_SoC_GHRD
即为本开发板对应的GHRD工程,如下图所示。<注意>:工程不能在中文路径下!!!
可以点击该工程下对应的AC501_SoC_GHRD.qpf
文件,快速打开工程,如下图所示
在Quartus的左上方有个Project Navigator,双击其中的AC50_SoC_GHRD(v文件),即可打开Verilog代码,如下图所示。
在工程的工具栏右侧倒数第四个即为Platform Designer,单击即可打开,如下图所示 注意,会让选择要打开的文件,这里选择soc_system.qsys
文件,如下图所示 打开完成后界面,如下图所示 Platform Designer 菜单命令列表介绍
Qsys 界面介绍
在System Contents中可看到SOC FPGA总共有如下外设(IP):【选中某个外设在左侧通过按钮可以调节上下位置】
各个外设显示界面如下图所示(下图将总线进行了折叠,关闭再打开Platform Designer后,折叠即可恢复为原来的样子)
各个外设更详细介绍可参考教程中的以下章节:
接下来分析,各个IP核如何是与ARM(HPS)连接到一起的。
1、时钟信号
首先来分析时钟信号,筛选信号操作如下,在Platform Designer下的System Contents界面下的筛选按钮,如下图
然后选择Filter中的Clock and Reset Interfaces选项, 选择完毕后关闭Filter,在System Contents界面即可看到各个IP之间的时钟关系,如下图(当然了想把某个IP往上调,也可以按System Contents界面左侧的箭头) 可以看到,clk_0的clk表示主时钟,提供给每个IP核使用,如下图所示(看其中加粗的黑线) 当然了,还有一个时钟桥clock_bridge_0输入的时钟信号(66M),它专门是显示屏读取数据用的,如下图2、复位信号
再来看复位信号,clk_0的复位信号与所有IP核的复位信号进行了连接,如下图所示
3、Avalon Memory Mapped slave
先在信号筛选器中,将筛选类型选择为All Interfaces,如下图所示
在其中的HPS_0的IP核中,其中的h2f_lw_axi_master(AXI Master),出来的信号连接到了各个IP核Avalon Memory Mapped slave上,如下图所示
那么h2f_lw_axi_master(AXI Master)核Avalon Memory Mapped slave到底是什么意思呢,接下来一一介绍。首先来看h2f_lw_axi_master(AXI Master),在SOC FPGA中有三个桥,通过这三个桥,通过数据交换,三个桥分别是
H2F_LW_AXI_Master通过虚拟地址映射这个比较简单! 把F2H_AXI_Salve这个桥用起来是SoC FPGA这个架构的优势所在!注:其中的Master核Salve是站在HPS的角度来说的
如何添加一个IP外设,拿一个timer举例,步骤如下:
①、在IP Catalog中搜索timer,然后双击其中的Interval Timer
②、接着弹出如下配置窗口,这里这是为了举例如何添加,故先不修改配置,直接默认即可,如下图 添加完成后,在System Contens的最下面即可看到 ③、接下来便是连接timer这个IP核的信号了。首先是时钟信号,注意要与F2H_LW_AXI_Master的时钟信号保持一致!如下图
添加时钟的方法,先选中目标时钟,如上图。然后再单击本信号时钟与目标时钟的交汇点,如下图 接着连接复位信号,这里直接连到了clk_0这个IP核的clk_reset,如下图s1对应的Avalon Memory Mapped slave连接到hps_0的h2f_lw_axi_master即可,如下图
最后一个IRQ信号
在hps_0模块右键点击Edit,在FPGA Interfaces板块下的General先不用管,属于高级选项。
AXI Bridges是设置三个桥的宽度(当没有用到某个桥的时候,可以选择unused关闭【性能、功耗有所优化】)
针对FPGA需要用到SDRAM时配置(FPGA使用HPS部分的SDRAM接口),直接点击+号即可创建
复位,暂时高级用的不用管。 IO口复用,在其中的Peripheral Pins栏 以Ethernet Media Access Controller(太网控制器)为例将其中的EMAC0 pin选择为HPS I/O Set 0
但是会发现报错,如下图,可以大概知道是EMAC0其它功能公用管脚,造成冲突了!
往下滑动,可以看到具体的复用。红色部分表示以太网使用的的引脚,蓝色部分为USB使用引脚,紫色部分为GPIO0和GPIO9使用到的引脚,可以发现明显冲突了!
假若我现在硬要使用以太网控制器,如何办呢?选择FPGA,即分配到FPGA部分的管脚上,通过FPGA管脚引出!
可以发现没有错误提示了,点击右下角的Finish,回到Platform Desigener界面,可以看到hps_0下增加了相应的EMAC信号,如下图
接下来双击,将其导出
然后点击菜单栏的Generate->Show Instantiation Template…以上是千兆以太网分配到FPGA侧进行设计,I2C、UART等也是可以这样设计的!
SoC FPGA 设计包括以 ARM Cortex-A9 处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、 IDE 环境的软件设计、软件调试等。 SoC FPGA系统设计的基本软件工具包括:
SoC FPGA 的开发流程通常包括 2 个方面: 基于 Quartus II、 Platform Designer 的硬件设计, 基于 SoC EDS 和 DS-5 的软件设计。对于比较简单的SoC 应用系统,一个人便可执行所有设计;对于比较复杂的系统,硬件和软件设计可以分开进行。
硬件开发使用 Quartus Prime 和 Platform Designer。 硬件设计工作如下:
软件开发主要使用到两个工具, SoC EDS 和 Intel FPGA 部门深度定制的DS-5 软件。
SoC EDS 是 Intel 部门专门开发的 SoC EDS 软件,这是厂家针对 SoCFPGA 芯片专门开发定制的一个工具, 该工具类似一个 Linux 虚拟机,包含了很多通用或专用的工具, 支持 Linux 系统中常用的各种命令如 cd、 ls、 chmod、cat、 make, 也包含了一些专用的工具, 如用于生成 dts 文件的 spocdts 工具、 用于生成 Altera 专属的 preloader 头文件用的 mkpimage 工具,用以烧写 uboot 和preloader 文件到 sd 卡中用的 alt-boot-disk-util 工具等等。 使用 SoC EDS, 可以针对特定的硬件工程生成相应的 uboot 源码并编译得到 uboot 镜像文件,也可以实现对 Linux 应用程序、内核和驱动的编译。即在不安装 Linux 操作系统的情况下,就能完成 Linux 软件开发和调试。其主要特性包括:
由 Intel FPGA 部门深度定制的 DS-5 软件可以用来编写、 编译、 调试 SoC芯片不含操作系统的裸机程序, Linux 内核和驱动模块,该软件包含以下特性:
使用 SoC EDS 配合 DS-5 软件, 可完成基于 HPS 处理器系统的所有软件开发任务。使用 Platform Designer 生成系统后, 就可以使用 SoC EDS 来生成和编译 HPS 系统的 Bootloader 程序了,然后使用 DS-5 软件开始设计 HPS 裸机应用程序或基于 Linux 系统的 C/C+ +应用程序代码。 而且针对 Platform Designer 中提供的很多 IP 核, 如 PIO、 UART、 SPI、 DMA、 Frame Reader 等, Linux 系统中都提供了相应的驱动源码, 使用时仅需配置 Linux 内核以支持这些设备驱动,再编译得到内核镜像,使用该镜像启动,就能自动识别并添加这些设备到系统中了(需要对应的设备树文件的配合)。
SoC开发流程
什么时候修改dtb,什么时候修改uboot
编译配置保存内核
切换到root用户:su,然后输入密码
切花到普通用户:su ×××, 生效交叉编译器环境变量路径:source /home/xiaomeige/.profile 设置目标架构:export ARCH=arm 设置具体的编译工具链:export CROSS_COMPILE=arm-linux-gnueabihf- 开始编译内核:make 生成zImage(在内核源码的arch/arm/boot目录)转载地址:http://bbnaf.baihongyu.com/