尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从近似0基础开始FPGA开发 -- part.4 FPGA-PS(MicroBlaze)

从近似0基础开始FPGA开发 -- part.4 FPGA-PS(MicroBlaze) 处理系统FPGA 分为 PL可编程逻辑和 PS处理系统本质上是将一个高性能的 ARM 处理器硬核与一个灵活的 FPGA 可编程逻辑集成在同一颗芯片上。这种设计的核心目的是让开发者能同时利用两者的优势处理复杂任务。简单来说PS (Processing System)是固定的、高能的“大脑”擅长复杂决策和系统控制PL (Programmable Logic)是灵活、并行的“巧手”擅长高速数据处理和硬件定制回到岗位职责来划分的话PL侧开发任务由掌握Verilog语言的逻辑工程师负责而PS侧则交给熟悉C语言的嵌入式工程师。MicroblazeXilinx的ZYNQ架构下系统集成了ARM处理器而对于没有集成硬核处理器的芯片Xilinx提供了用逻辑代码实现的软核处理器。这个软核是由 FPGA 内部的逻辑资源实现虽然性能上比不了 ZYNQ 的硬件但在一些控制的领域还是能做到游刃有余。同样的xilinx 也提供了软核的 IP这就是 MicroBlaze。现在手头的开发板是ku5p芯片就以MicroBlaze来进行具体展开。ZYNQ下引脚、接口、DDR这些资源都会情绪划分为PL和PS使用起来更加方便。MicroBlaze IP首页配置项如下Enable MicroBlaze Debug Module Interface(调试接口)使能调试功能。用 Xilinx Microprocessor Debugger 来下载、调试程序。推荐除非面积资源奇缺否则不要禁止这个功能。Use Instruction and Data Caches(指令和数据 cache当使用外置 DDR 的时候使用)当执行放在 LMB 之外的程序的时候可以使用指令缓存来改善性能。指令缓存有如下特点当使用外部存储时激活这个选项可以明显地改善性能即使这个缓存很小。后续工程中会演示外置DDR因此这里配置时可以勾上。Enable Exceptions(异常处理使能)当使用一个支持异常的操作系统时需要激活这个选项。或者在一个单独的程序中添加异常回调函数。Use Memory Management(内存管理)当使用一个支持虚拟内存保护的操作系统时如 Linux需要激活。当你使能面积优化或者堆栈保护功能时内存管理单元是不可见的自动禁止Enable Discrete Ports使能软核上的独立端口。右下角Next进入下一页配置这一页是关于移位器、浮点单元、整形乘法器整形除法器、模式比较器、其他机器状态寄存器指令、加载、存储和交换指令、额外的流指令、容错功能。MicroBlaze下的指令配置*使能桶型移位器Enable Barrel Shifter使能软核中的筒形移位器硬件。激活这个参数就可以使用如下指令bsrlbsra,...使能这个可以提高应用的性能但是会增大软核的尺寸。如果激活编译器会自动使用筒形移位器指令。使能浮点单元Enable Floating Point Unit使能一个单精度浮点单元FPU。使用 FPU 可以明显地提高应用的单精度浮点性能同时也会增大软核的尺寸。使能整形乘法器Enable Integer Multiplier使能一个整形乘法器硬件。若激活则可以在给 MUL32 赋值时使用 mul 和 muli 指令。当给 MUL64 赋值时使用 mulh,mulhu,mulhsu 指令。这个参数可以设置为 NONE可以把MUL 或者 DSP48 释放用作其他用途。这样做对软核的面积影响很小。当使用这个选项编译器自动使用 mul 指令。使能整形除法器Enable Integer Divider使能一个整形除法器硬件。若激活可以使用 idividuvu 指令。使能这个选项可以提高应用中的除法性能但是增大了软核的尺寸。当使用这个选项编译器自动使用 idiv 指令。使能额外机器状态寄存器指令Enable Additional Machine Status Register Instructions若激活则可以读写 MSR使用 msrset 和 msrclr 命令。可以提高访问 MSR 的性能。使能模式比较器Enable Pattern Comparator如激活则可以使用模式匹配指令 pcmpbfpcmpeqpcmpne。模式匹配字节查找指令pattern comparator byte find, pcmpbf返回找到的第一个字节的位置提高字符串和模式匹配操作的效率。若使能SDK 库会自动使用这个指令。pcmfeq 和 pcmpne 指令根据两个字是否相同返回 1 或者 0。这些指令会提高 setting flags 的效率编译器会自动使用它们。激活这个选项还可以 count leading zeros 指令clz。clz 指令能提高优先级编码的效率。使能保留的加载/保存和交换指令Enable Reserved Load/Store and Swap Instructions lbur,lhur,lwr,sbr,shr,swr,swapb,和 swaph。这些指令能够以相对的字节序来读写数据交换指令能交换字节或者半个字长。当用 little-endian 的 MicroBlaze 访问 big-endian 的网络时可以提高效率。使能额外的流命令Enable Additional Stream Instructions当使用 AXI4-Stream 链接时提供额外的功能。这包括动态访问指令 GETD 和 PUTD这两个指令用寄存器来选择接口。重要一定要激活流异常功能才能使用这些指令而且知道选择一个流链接这些配置选项本质上是FPGA软核处理器如MicroBlaze的“硬件加速器开关”。使能意味着在“软件运行速度”和“硬件面积开销”之间做取舍。在FPGA设计中这就是经典的“面积换性能”。桶形移位器、乘法器、除法器、FPU将这些操作从几十甚至上百个时钟周期缩短为1~2个时钟周期。模式比较器PCMPBF/CLZ将字符串查找、优先级编码如寻找第一个1从软件for循环查找变为硬件直接输出结果对操作系统调度和网络协议栈处理是巨大的提升。额外MSR指令msrset/msrclr让CPU能原子地修改机器状态寄存器无需“读-改-写”序列这对实时操作系统的关中断和任务切换至关重要能避免临界区的数据竞争风险。保留加载/交换指令Swap/LWR/SWR让CPU原生支持字节序翻转和大端/小端混访。这意味着CPU在读取网络报文大端时数据在加载进寄存器的瞬间就已经转换好了无需软件额外调用ntohl函数。额外流指令GETD/PUTD让CPU拥有“内存卸载”能力类似DMA。CPU可以直接通过寄存器指定通道将数据流推送到硬件外设或从外设拉取而无需经过内存缓冲极大降低CPU搬运数据的负荷。通过这些配置项的灵活设置可以针对特定应用场景的“定制化加速”根据实际工程设计达到性能与资源的平衡。例如纯控制逻辑如I2C/SPI管理只需勾选乘法器面积影响小关闭FPU和除法器以最小面积节省FPGA逻辑资源密集计算/AI推理必须开启FPU、乘法器和桶形移位器用面积换算力网络通信必开保留交换指令处理字节序和模式比较器处理报文头解析高速数据采集必开额外流指令实现数据直通CPU旁路。进入下一页配置。I-Cache 和 D-Cache配置在CPU包括FPGA中的MicroBlaze软核中指令缓存I-Cache 和 数据缓存D-Cache 是位于CPU核心与主存储器如DDR之间的两个独立的高速小容量存储器。它们的核心作用是缓解“内存墙”问题即CPU处理速度极快而DDR等主存访问速度较慢CPU如果直接读写DDR大部分时间都会浪费在等待上。现代FPGA中的MicroBlaze以及绝大多数高性能CPU其内部缓存都采用了 “哈佛架构Harvard Architecture”。如果不分开冯·诺依曼架构CPU取指令和读数据只能分时复用同一条总线。而分离后具备以下优势并行执行CPU可以在通过I-Cache取指令的同时通过D-Cache读写数据实现流水线的真正并行极大提高吞吐率。行为特性不同指令流是顺序的适合预取数据流是随机的适合快速随机访问。针对不同特性采用独立的硬件预测算法效率更高。一致性简化指令通常不会被修改除非自修改代码数据缓存则涉及复杂的写回操作。分离后它们各自的缓存一致性管理更简单。使能外部Cache后IP多出对应的DC及IC接口之前看到的 M_AXI_IP指令接口和 M_AXI_DP数据接口通常是关闭缓存或未命中时 使用的直接、非缓存访问路径。一旦在配置中启用了 Use Instruction Cache 和 Use Data CacheCPU会优先走带缓存的专用接口M_AXI_IC/DC性能会得到质的飞跃尤其是程序在DDR中运行时。缓存类型对应的 AXI 接口 (MicroBlaze)作用指令缓存 (I-Cache)M_AXI_IC(指令缓存接口)当缓存命中时CPU直接从缓存取指未命中时通过此接口突发读取DDR填充缓存行。数据缓存 (D-Cache)M_AXI_DC(数据缓存接口)当缓存命中时CPU直接读/写缓存未命中时通过此接口访问DDR。这一页的配置是 MicroBlaze 的缓存Cache与内存映射核心设置。与之前“算力单元乘法器/FPU”和“调试追踪”不同这一页直接决定了CPU访问外部内存DDR/Flash的速度和实时性确定性。1. 指令缓存Instruction Cache与数据缓存Data Cache大小Size in Bytes均为 8kB意义这是目前配置下最小的缓存容量。8kB 只能存放约 2000 条汇编指令。对于简单的状态机控制如I2C/SPI通信完全够用但如果跑 RTOS 或复杂算法缓存命中率会很低CPU会频繁去访问速度较慢的 DDR导致性能瓶颈。行长度Line Length均为 4意义指每次从内存搬运到缓存的“块大小”为 4 个字即 16 字节。这意味着即使CPU只读取 1 个字节硬件也会把相邻的16字节一起搬进缓存。影响Line Length 较短4适合随机访问代码跳跃大不会浪费总线带宽搬运没用的数据但如果处理大数组连续数据如视频流通常设为 8 或 16 会更高这里设为4本例程的应用场景更偏向于控制流而非海量数据流。2. 缓存地址范围Base Address High Address0x80000000 - 0xFFFFFFFF意义缓存只对 0x8000_0000 至 0xFFFF_FFFF即高 2GB 地址空间有效。如果程序代码段链接在 0x8000_0000 之后通常外部DDR挂载在此地址这些指令会被缓存运行速度极快。如果你的程序放在 0x0000_0000 - 0x7FFF_FFFF如片上本地存储器 BRAM 或 Flash则完全不会被缓存CPU必须直连该存储器虽然响应延迟固定高实时性但速度受限于BRAM/Flash的访问速度。用途这种设置常用于“双区隔离”——把实时性要求最高的关键中断服务函数ISR放在低地址非缓存区确保执行时间绝对固定把大量非关键业务代码放在高地址缓存区追求平均性能。3. Enable Writes Use Cache for All Memory AccessesEnable Writes在使能了Enable Writes时CPU写数据只写到高速缓存Cache里就结束了并不会立刻写入外部DDR。只有当该缓存行被新数据挤掉驱逐时硬件才会把修改过的“脏数据”一次性写回DDR。由于写数据并不会直接访问DDR空间频繁的变量赋值、堆栈操作Push/Pop现在几乎不占用外部总线带宽速度会比未勾选时快3~5倍。那么既然CPU写数据不立刻进DDR而FPGA里的其他主机如DMA控制器、硬件加速器、另一个MicroBlaze核是直接读DDR的它们永远读不到CPU刚更新的最新值只能读到陈旧数据。因此在启用回写缓存后如果CPU与DMA共享一块内存如网络包缓冲区、ADC采样数组则必须在启动DMA传输前在C代码中显式调用Xil_DCacheFlushRange(addr, len)将缓存里的脏数据强制刷回DDR。在DMA传输完成后CPU读取前必须调用Xil_DCacheInvalidateRange(addr, len)丢弃缓存中的旧副本强制CPU去DDR重新读入最新数据。这里涉及到了工程设计中的PL与PS的交互后面会另开文章展开。Use Cache for All Memory Accesses在该选项勾选后Cache的缓存范围从“区域地址限定”变为“全地址覆盖”MicroBlaze 会完全无视设置的Base Address和High Address0x80000000。缓存控制器将对 0x00000000 ~ 0xFFFFFFFF 整个4GB地址空间的所有访问进行缓存。由此引出风险在Xilinx默认的地址分配中AXI GPIO、UART、IIC、Timer、中断控制器的外设寄存器通常被分配在0x40000000~0x7FFFFFFF的低地址段。现在由于全缓存开启CPU访问这些寄存器时不会直接读写物理外设而是去读写缓存中的“副本”。写寄存器如UART发送数据只写进Cache就结束了物理UART根本没收到数据导致串口不发送。读寄存器如Timer计数值、GPIO电平CPU永远读取Cache里陈旧的备份值外设电平变化了CPU读到的还是老数据。中断控制器INTC如果中断挂起寄存器IPR被缓存CPU永远清不掉中断系统直接卡死。因此除非所有内存访问都指向纯RAM且无外设共享否则切勿开启全缓存。同时这一选项的配置会带来一个信号传输路径上的差异当 MicroBlaze 访问位于 Cacheable Range 内的外部存储器时访问到底走Cache 专用接口还是Peripheral AXI 接口。AMD 官方文档对这个选项的定义也是如此勾选时即使 Data Cache 本身没有启用位于可缓存地址范围内的访问也走 MicroBlaze 的 dedicated cache interface取消后则走 peripheral AXI。4. 其余配置参考配置项核心作用类型建议Use Distributed RAM for Tags用LUTRAM替代BRAM存储缓存标签节省BRAM资源资源优化为节省BRAM或提升频率可开启Enable Write-back Storage Policy采用“写回”策略提升数据访问速度性能优化追求高性能时建议开启但需软件配合维护缓存一致性Number of Streams指令预取减少CPU取指延迟性能优化代码含大量循环、追求高性能时建议启用Number of Victims缓存“避难所”减少数据被踢出后的重载开销性能优化数据访问模式复杂、追求高性能时建议启用进入下一页配置。MicroBlaze调试页面参数设置*该页面的参数配置与后续Vitis下的嵌入式调试息息相关是为嵌入式代码的调试所作的硬件资源准备。1. 调试接口Debug—— 使能调试能力配置为BASIC这意味着调试模块只保留最基础的JTAG连接功能。对CPU的意义BASIC模式占用的LUT和块内存BRAM极少适合量产发布或逻辑极其稳定的项目。但代价是它不支持复杂的硬件触发如条件中断如果程序跑飞你只能靠 printf 或者瞪眼看波形。如果正在开发阶段通常建议选 FULL全功能来获得更强大的在线调试体验。2. 硬件断点/观察点Hardware Breakpoints—— 定义嵌入式侧的debug工具参数配置为 1 个PC断点0 个读写观察点的最精简配置PC断点1个允许CPU在运行到某个特定地址函数入口时暂停。只有1个意味着你只能监控一处代码位置。读写观察点0个这意味着你无法在CPU读写某个特定内存变量比如全局变量被意外篡改时触发暂停。综合影响这种配置下调试能力非常有限。如果变量被野指针修改你没法用硬件抓到“是谁写的”只能靠软件模拟断点。这节省了大量比较器资源但建议仅在软件完全成熟后才这样设置。3. 性能监测Performance Monitoring—— Vitis侧的寄存器实时显示配置为 5 个事件计数器 1 个延迟计数器宽度 32 位。5个事件计数器可以同时统计5种硬件事件例如“指令缓存命中/缺失次数”、“流水线停顿周期数”、“外部总线等待周期数”等。1个延迟计数器通常用于统计某段特定代码如中断服务函数从进入到退出的总时钟周期。32位宽度如果CPU主频很高如300MHz32位计数器大约几十秒就会溢出。如果做长时间压力测试这里建议改为64位。实际作用开启后你可以在Vitis/SDK中运行程序时实时读取这些寄存器的数值。它能精确告诉你CPU的瓶颈到底在“计算”上还是在“等内存数据”上是优化软硬件划分的黄金数据来源。4. 跟踪与剖析Trace Profiling—— 嵌入式程序的运行记录外部跟踪External Trace勾选后CPU内部执行的指令流和程序计数器PC会通过专用引脚或AXI总线实时输出到外部逻辑分析仪或IP核。跟踪缓冲区Trace Buffer大小8kB这是芯片内部的专用BRAM用来暂存执行轨迹。8kB意味着它只能记录最后几千条指令的执行历史。剖析缓冲区Profile BufferNONE这是个关键信号——表示你关闭了片上硬件剖析功能。剖析通常涉及对函数执行时间的精确采样。系统内存与外设接口配置本地内存总线LMB接口首先Local Memory Bus为MicroBlaze标配信号勾选使能。Enable Local Memory Bus Instruction Interface (ILMB)作用启用指令侧的 LMB 接口。详解这是 MicroBlaze取指专用的高速本地总线。LMB 是专为连接片上高速存储器如 BRAM设计的简单、快速总线。启用后CPU 可以通过此接口从 BRAM 中高速读取指令这是保证系统实时性的基础。Enable Local Memory Bus Data Interface (DLMB)作用启用数据侧的 LMB 接口。详解这是 MicroBlaze读写数据专用的高速本地总线。它同样用于连接高速的片上 BRAM用于存放关键数据或堆栈Stack以提供确定性的低延迟访问。设计要点LMB 总线包括 ILMB 和 DLMB的地址范围不能与 AXI 等接口的地址范围重叠。AXI 和 ACE 接口这部分负责连接系统内存如 DDR和各种外设如 UART、GPIO。Select Bus Interface作用选择用于外设和缓存访问的总线协议。详解本次配置为AXI总线ACE是 AXI 的缓存一致性扩展主要用于多核系统中保持数据一致性。Enable Peripheral AXI Instruction Interface作用启用外设 AXI 指令接口。详解这是一个只读的 AXI4-Lite 接口M_AXI_IP。使能后MicroBlaze可以通过标准的 AXI 总线去读取位于 DDR 或其它 AXI 从设备中的指令。Enable Peripheral AXI Data Interface作用启用外设 AXI 数据接口。详解这是一个读写接口M_AXI_DP默认使用 AXI4-Lite 协议用于访问外设或内存。勾选后 MicroBlaze 可以通过 AXI 总线访问任何挂载在 AXI 总线上的外设如 UART、GPIO、定时器或内存如 DDR。AXI-Stream流接口Stream InterfacesNumber of Stream Links作用指定 AXI4-Stream 流接口的数量。详解标准AXi-Stream协议接口包含tdata、tvalid、tready及tlast。每个“Link”由一对主/从接口组成提供一个单向、点对点、低延迟的数据流通道。它允许硬件加速器或协处理器直接与 MicroBlaze 的寄存器文件进行高速数据交换。“使能额外的流命令GETD/PUTD”功能就需要在这里将Number of Stream Links设置为大于 0 才能生效。其他接口Other InterfacesEnable Trace Bus Interface作用启用跟踪Trace总线接口。详解这是一个强大的调试工具。启用后可以输出 CPU 执行的指令地址、数据等详细信息。连接到 ILA 后可以实现时钟周期级别的程序执行追踪这对于分析复杂的时序或性能问题非常有价值。Lockstep Interface作用配置锁步Lockstep模式。详解NONE表示禁用锁步功能。锁步模式用于高可靠性场景让两个 MicroBlaze 内核执行相同程序并比较输出以检测硬件错误。这通常会成倍增加资源消耗。至此MicroBlaze IP配置完毕最小SoC工程构建通过在Block Design界面直接运行Run Connection AutomationVivado会自动补全一些外设IP并做好基础接线连接添加UART IP在Soc工程中添加一个基础uart IP可以在调试过程中通过串口打印信息这里主要配置波特率、数据位数以及是否有校验位。配置供参考只要在Vitis侧的串口保持一致的配置就可以。设置完成后通过 AXI Interconnect 将 IP 挂载到AXI总线上。添加MIG IP*在前面的MicroBlaze配置时使能了I-Cache以及D-Cache那么现在需要给MicroBlaze挂载上DDR外部存储。如果只访问Bram那么这一步可以不做。添加了MIG IP后工程中先通过一个2*Slave 1*Master的AXI Interconnect将MIG IP挂载到AXI总线。MIG IP Core 参数配置第一页的参数最为重要Memory Device Interface Speed 以及Controller Options都取决于外围硬件所选用的DDR颗粒型号。如果Memory Part下的器件型号没有包含硬件选用的实际型号那么也可以通过Enable Custom Parts Data File来进行自定义器件的csv文件导入。所需的csv文件格式可在Vivado安装目录.../data/ip/xilinx/mem_v1_4/csv/下找到memparts.csv作为参考格式参考。对应的DDR颗粒参数信息则需要去查阅datasheet。进入下一页主要是配置AXI接口的数据位宽下一页Advanced Clocking可以例化IP提供多路不同频率的时钟。下一页为一些高级设置这里也给出配置项的说明描述。1. Debug Signals for controller (控制器调试信号)Disable/Enable默认选择 Disable。如果勾选 EnableMIG IP 内部会引出用于调试的额外信号例如 IDELAY 控制信号、校准状态等方便在 ILA (集成逻辑分析仪) 中抓取。注意开启会增加大量的逻辑资源消耗。在调试完成后建议关闭。2. Microblaze MCS ECC option (MicroBlaze MCS ECC 选项)复选框未勾选这是针对MicroBlaze 微控制器系统 (MCS)的特定选项。如果你使用的是纯 MicroBlaze 软核并且需要 ECC错误检查和纠正功能且 MIG 控制器以 ECC 模式运行可以勾选此项。普通 SoC 设计通常不勾选。3. Simulation Options (仿真选项)Simulation Mode (仿真模式)BFM (Bus Functional Model)总线功能模型。这是一种速度极快的仿真方式它不模拟真实的 DDR 物理层PHY时序而是用数学模型模拟读写。适合用来快速验证你的 SoC 逻辑是否正确通常比 RTL 级仿真快 10 倍以上。您当前选择的正是 BFM。其他可选模式RTL真实底层逻辑仿真速度慢但最精确或 SystemVerilog。Example Design Test Bench (示例设计测试平台)SIMPLE TG (Simple Test Generator)简单测试生成器。在仿真时MIG 自带一个示例测试平台会向内存发出简单的读写指令如固定的写入数据再读出验证用于快速验证 DDR 控制器通路是否正常。这也是最常用的仿真测试选项。4. Advance Memory Options (高级内存选项)Enable Self Refresh (开启自刷新)勾选后DDR4 在闲置时会自动进入低功耗的自刷新状态。用于降低系统功耗。如果系统对功耗不敏感或者在初始化阶段有特殊要求建议不勾选。Enable Save-Restore (开启保存恢复)允许在系统复位如按复位键时将 DDR4 内部的寄存器状态保存下来并在复位结束后恢复。常用于软核如 MicroBlaze热复位时不想丢失内存状态的设计。Disable OBLUF on reset_n (复位时禁用输出缓冲器锁存功能)DDR4 有防止输出缓冲器在复位信号无效前意外锁存的功能。勾选此项会使 MIG 控制器在复位拉低期间强制关闭 OBLUFOutput Buffer Latch-Up Feature。通常用于解决某些特定板卡在复位时由于 I/O 电平冲突导致的不稳定问题。一般保持默认不勾选。Enable Restore CRC (开启恢复 CRC)开启 CRC 校验的自动纠错与恢复机制。这能增强数据在传输过程中的安全性能检测并处理部分传输错误但同时会增加额外的延迟和逻辑资源。5. Migration Options (迁移选项)Enable Migration (开启迁移)如果勾选此项MIG 会生成兼容不同密度、不同速度等级 DDR4 颗粒的配置参数。这样当你未来想将板子上的 DDR4 芯片更换为更大容量或不同品牌的芯片时不需要重新生成 IP 核只需要修改部分参数即可。如果你确定未来的量产或改版不会更换 DDR 芯片建议不勾选节省资源BD design总图参考这里给出一张工程的BD design的总图参考外围接口可以根据实际资源调整。输入信号无非就是DDR的参考时钟输出则是DDR以及UART接口。可以看到工程下直接采用DDR MIG的输出时钟ui_clk作为逻辑全局时钟。MIG模块的sys_rst复位图方便直接给了常数0有条件的可以自行修改。Address Editor的总线地址分配在Block Design完成接线后还需要非常关键的一步那就是对AXI总线上的IP进行地址分配。在Address Editor下可以看到工程中的MicroBlaze所在的AXI总线上方菜单栏会提示有哪些IP处在Unassigned状态。通过下箭头进行自动地址全分配在自动分配后可以根据设计需求调整每个IP的及地址及对应的空间大小例如一个自研IP所包含的寄存器极少那么在总线上就无需分配大段的空间。总之按需分配多寄存器多得。同时可以看到DDR4的Memory Map分配在了0x80000000之后这里就对应到之前在MicroBlaze下缓存地址范围是从0x80000000之后开始。添加约束及工程编译这一步肯定少不了约束文件照例参考原理图设计综合、布局布线、生成比特。导出硬件平台.xsa文件这一步建议勾上Include bitstream方便嵌入式工程的独立迁移调试。最终可以在文件夹下看到这两个文件那么即具备了用Vitis搭建嵌入式工程的基础条件。这篇写的有点太长了Vitis的工程搭建就下一篇再写吧。下一篇会介绍Vitis下如何创建嵌入式工程以及基础的hello world运行PS与PL的GPIO接口操作。Fin
返回列表