时间:2025-03-07 来源:FPGA_UCY 关于我们 0
FPGA的 的 介绍与使用
可编程片上系统(SOPC)的设计
在进行系统设计时,倘若系统非常复杂,采用传统 FPGA 单独用 /VHDL 语言进行开发的方式,工作量无疑是巨大的,这时调用 软核嵌入式处理器 IP 核,将会大大减少开发人员的工作量,从而对于提升工作效率,节约项目成本具有重大意义。采用 FPGA 和 进行嵌入式系统设计,可实现多片专用芯片的功能,有利于系统实现小型化、集成化。由于使用 软核进行系统搭建时需要利用 FPGA 内部通用资源和相关 IP 核,会占用一定的资源,因此当所要实现的功能较为简单时,则没有必要使用 来实现,传统的 FPGA 设计更具有优势;而当实现的功能较为复杂时(如 GUI 界面的实现),则使用 更具有优势,可以大大提升工作效率。
使用 的设计流程
使用 进行嵌入式设计包括两部分,分别是硬件设计和软件设计。硬件设计使用到的工具是 提供的 套件,软件设计使用 Xilix 提供的 Vitis 统一软件平台。在 中我们可以在 Block 中搭建 处理系统,然后生成包含硬件信息的 xsa( Shell )文件。利用 xsa 文件在 Vitis 软件中搭建硬件平台,进行软件设计和调试。
第一步:配置 核、其他需要的 IP 核以及外围设备。
第二步:硬件设计执行综合、布局布线等。
第三步:生成 BIT 流文件。
第四步:导出包含硬件信息的 xsa 文件。
第五步:启动 Vitis,创建硬件平台工程和应用工程。
第六步:设计软件并调试。
第七步:编译工程生成 ELF 文件。
第八步:将 bit 和 ELF 文件合并为 .bit 文件并固化。
软核的嵌入式开发流程
如上图所示,开发流程大体可以分为 6 步。其中 step1 至 step4 为硬件设计部分,在 软件中实现;step5 为软件设计部分,在 Vitis 软件中实现;step6 为功能的验证。复杂的程序还涉及 Debug,这个也是在Vitis 软件中实施,具体每一步的操作我们会在后面详细介绍。在简单了解嵌入式系统的开发流程后,接下来我们来看一下什么是嵌入式最小系统。嵌入式最小系统的概念包括以下两个方面:一、它是使系统正常工作的最小条件;二、它是其他系统建立的基础。
以 为核心、(片上存储)为内存,加上传输信息使用的 UART串口就构成了嵌入式最小系统。
当程序比较简单时,Local 可以作为程序的运行空间以及存储空间,空间大小可以根据需要设置最小 8KB 到最大 128KB;当程序比较复杂的时候,我们也可以使用片上搭载的外部存储器(如 DDR3)作为程序的运行空间以及存储空间。
AXI IP 核用于将一个(或多个)AXI 存储器映射的主器件与一个(或多个)存储器映射互联。在这里我们解释一下这个术语——互联():互联实际上是一个开关,它管理并指挥所连接的 AXI 接口之间的通信。
实验任务
本章的实验任务是在达芬奇 Pro 开发板上搭建基于 BRAM 的 嵌入式最小系统,并使用串口打印“Hello World”信息。
创建 IP核
对于 debug 的 调配
Run Block
然后点击 OK 接下来会多产生几个不同的Block
我们现在要用串口打印信息,因此还需添加 Axi IP 核
下面是得出的hello world 的 Block
在自动连接之后 添加了 AXI
我们观察整个系统 会发现 有这样的连接
橙色高亮的两组信号线表明,在这个设计中,AXI 互联实现了由主器件()到从器件(AXI )一对一的连接。它也可以实现一对多、多对一以及多对多的 AXI 接口连接。本次实验中,AXI IP 就实现了 与 AXI 的互联, 中产生的数据能够通过 AXI 协议传输到 AXI 模块,AXI 模块接收的数据也可以通过 AXI 协议传输到。
一个很大的注意点 :
我们会观察到 为什么在纯 FPGA端 点击之后 我们会需要添加 管脚约束 而在 之前的 zynq 上并没有 很强烈的这种要求
因为 zynq 是 带有 ARM核 的 结构 在底板上 已经把很多 东西接上去 相当于 之前已经配置好了 所以我们并不需要 额外的操作
但是对于软核而言 我们利用了 FPGA的全能性 用内部的机能 构建出了 一个假的但是很正的 CPU 这就是 软核的本质
所以我们 在使用中 我们 需要编排 添加一下 管脚约束
BSP 的 板级验证包在这里
我们点击进入src文件夹 对.c文件进行分析