当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]本项目演示了如何在Vivado中创建一个简单的PL设计来控制KR260载波板上的用户定义LED (DS7和DS8)。该设计使用了一个通过AXI SmartConnect连接到Zynq UltraScale+处理系统(PS)的AXI GPIO IP核,实现了在APU上运行的Linux对led的软件控制。

本项目演示了如何在Vivado中创建一个简单的PL设计来控制KR260载波板上的用户定义LED (DS7和DS8)。该设计使用了一个通过AXI SmartConnect连接到Zynq UltraScale+处理系统(PS)的AXI GPIO IP核,实现了在APU上运行的Linux对led的软件控制。

这是针对Xilinx KR260的自定义Yocto Linux和网络启动的后续项目,该文章提供了具有PYNQ、XRT和网络启动功能的基础Linux环境。

问题陈述

在KR260上开发FPGA应用时,通常需要:

•创建与PS交互的定制PL设计

•快速原型和测试硬件设计,没有冗长的编译周期

•在与更复杂的应用程序集成之前验证硬件功能

•准备与RPU固件或自定义Linux驱动程序集成的硬件设计

传统FPGA开发工作流程要求:

•编写HDL代码或使用IP积分器

•综合和实现设计

•生成比特流

•闪烁SD卡或手动加载比特流

•编写C/ c++应用程序与硬件交互

这个项目通过以下方式简化了这个工作流程:

•使用Vivado的IP Integrator进行视觉设计

•利用PYNQ进行基于python的硬件交互

•通过网络引导和动态比特流加载实现快速迭代

系统架构

硬件体系结构

PL设计包括:

软件架构

设计组件

Zynq UltraScale+ PS: ARM Cortex-A53内核的处理系统

•M_AXI_HPM0_LPD: PL访问的低功率域主端口

•PL_CLK0: 100mhz时钟输出到PL

•PL_RESETN0:复位信号到PL

AXI SmartConnect:用于AXI总线路由的互连IP

•连接PS主站到PL从站

•处理协议转换和地址映射

axis GPIO:通用I/O IP核

•2位输出通道(GPIO[1:0])

•AXI4-Lite从接口

•基址:由Vivado分配(通常在LPD地址空间0x80000000-0x9FFFFFFF中)

Processor System Reset:复位控制器

•同步复位信号

•提供重置到PL逻辑

先决条件

以前的项目设置

本项目假设您已经完成了Custom Yocto Linux & Network Boot项目,该项目提供:

•可网络引导的Yocto Linux镜像

•PYNQ 3.1.2 runtime

•XRT和ZOCL支持

•在端口9090上的Jupyter Notebook服务器

•挂载在/nfsroot的NFS根文件系统

循序渐进的指导

步骤1:创建Vivado项目

•启动Vivado并选择Create Project

•项目设置:项目名称:gpio_led

•项目位置:选择您的工作空间目录项目类型:RTL项目(默认)

•添加源:单击Next(我们将使用IP Integrator创建设计)

•添加约束:单击Next(稍后我们将添加约束)

•默认部件:选择“KR260”的“Boards”选项卡,选择“KR260 Robotics Starter kit”,单击“Next”,完成

步骤2:创建块设计

•在流程导航器中,单击创建块设计名称:gpio_led

•单击OK

•添加Zynq UltraScale+ PS:单击图中的“+”按钮搜索Zynq UltraScale+ ps双击添加“zynq_ultra_pse_0”

•配置PS:双击PS块在PS配置窗口,导航到PS- pl配置→GeneralEnable M_AXI_HPM0_LPD(低功耗域主端口)单击运行块自动化这将启用M_AXI_HPM0_LPD, PL_CLK0和pl_resetn0单击确定

步骤3:添加AXI GPIO IP

•添加AXI GPIO:点击+按钮搜索AXI GPIO双击添加ax_gpio_0

•配置AXI GPIO:双击GPIO blockGPIO:Check All OutputsGPIO Width: 2单击OK

•运行连接自动化:

•单击“运行连接自动化”

•选择全部自动化

•这将:连接PS M_AXI_HPM0_LPD到AXI smartconnect连接AXI SmartConnect到AXI GPIOConnect时钟和复位信号

•单击OK

步骤4:使GPIO外部

•创建外部端口:右键单击ax_gpio_0 GPIO端口选择Make ExternalRename the Port to led_output

•验证设计:单击验证设计(F6)确保没有错误或严重警告

•创建HDL包装器:右键单击源代码中的gpio_led块设计,选择创建HDL包装器,选择让Vivado管理包装器并自动更新,单击OK

步骤5:添加引脚约束

•创建约束文件:在“源”中,右键单击“约束”→“约束”,选择“添加源”→“添加或创建约束”,单击“创建文件”,文件名:gpio_led.xdc

•单击OK并完成

添加引脚约束:打开gpio_led。XDC并添加:

•保存约束文件

步骤6:综合设计

•运行合成:在Flow Navigator中单击Run Synthesis等待合成完成(5-10分钟取决于PC)

•评审综合结果:检查是否有错误或严重警告,验证资源利用是否合理

步骤7:执行设计

•运行实现:点击运行实现等待实现完成(10-20分钟,取决于PC)

•检查实现结果:检查定时关闭验证无严重警告

步骤8:生成比特流

•生成比特流:单击“生成比特流”,等待比特流生成(PC机不同,需要5-10分钟)。

•校验输出文件:生成比特流后,校验这些文件是否存在:gpio_led.runs/impl_1/gpio_led_wrapper.bit - bitstream filegpio_led.gen/sources_1/bd/gpio_led/ hw_handdoff /gpio_led. gen/hwh -硬件描述

步骤9:导出硬件

•导出硬件:在Flow Navigator中,进入File→Export→Export HardwareSelect Include bitstreamClick NextExport位置:Default(项目目录)文件名:gpio_led.xsa

•单击“完成”。xsa文件将在下一个项目中用于RPU与Vitis的集成。

步骤10:将文件复制到NFS共享

•定位生成文件:Bitstream: gpio_led_runs /impl_1/gpio_led_wrapper.bit

•硬件描述:gpio_led.gen/sources_1/bd/gpio_led/hw_handoff/gpio_led.hwh

•拷贝到NFS根目录:在你的NFS服务器上(/nfsroot挂载的地方):

步骤11:创建PYNQ笔记本

•创建笔记本文件:创建led_blink_pynq。“/nfsroot/home/xilinx/Notebook/”目录下的ipynb

•或者将其创建为Python脚本并进行转换,或者使用Jupyter的web界面。

步骤12:在KR260上验证

•运行Notebook:执行第一个cell以重置pl_execute第二个cell以加载比特流并运行KR260板上的LED patternObserve LEDs DS7和DS8

预期的行为:

•预期行为:LED0 (DS8)和LED1 (DS7)将以行走模式闪烁:模式1:LED0 ON, LED1 OFF (0x1)模式2:LED0 OFF, LED1 ON (0x2)模式3:Both LEDs ON (0x3)模式4:LED0 OFF, LED1 ON (0x2)重复5次,循环之间暂停0.5s

了解守则

PYNQ叠加加载

PYNQ的Overlay类:

•将比特流加载到FPGA中

•解析。了解HWH文件的硬件结构

•为每个IP核创建Python对象(例如,overlay.axi_gpio_0)

AXI GPIO访问

•axi_gpio_0是来自于Vivado块设计的实例名

•channel1是GPIO通道(channel1是第一个通道)

•GPIO对象提供read()和write()方法

LED控制

•pattern:要写的值(0x0到0x3为2位)

•mask:表示要影响哪位的位掩码(0x3 =两个位)

设计注意事项

PS-PL接口选择

•使用M_AXI_HPM0_LPD(低功率域)代替FPD(全功率域)

•原理:GPIO控制需要低带宽,使LPD理想的功率效率

•LPD为GPIO操作提供了足够的性能,同时功耗更低

•FPD端口更适合高带宽应用(视频处理、DMA等)。

时钟域

•PL时钟:100 MHz(来自PS PL_CLK0)

•AXI总线时钟:100mhz(与PL时钟同步)

•GPIO更新速率:受Python循环速度限制(本例中为~ 4hz)

GPIO配置

•所有输出:GPIO配置为仅输出(无输入能力)

•宽度:2位(匹配两个led)

•I/O标准:LVCMOS18(兼容KR260 HP bank)

地址空间

•AXI GPIO基址:0x80000000 (LPD地址空间)

•地址范围:64 KB(标准的AXI4-Lite slave)

•可以通过PYNQ从Linux用户空间访问

注:LPD (Low Power Domain)使用0x80000000地址范围,适用于GPIO和其他低带宽外设

下一个步骤

该项目为更高级的PL开发提供了基础:

•增加更多的GPIO:扩展到控制额外的led或读开关

•自定义IP集成:在设计中添加自定义AXI IP内核

•中断支持:为事件驱动控制配置GPIO中断

•RPU集成:将LED控制逻辑移动到RPU(见下一个项目)

•下一步:RPU与FreeRTOS集成

本系列的下一个项目将演示:

•使用赛灵思Vitis Unified IDE为RPU构建FreeRTOS应用程序

•使用XRT从APU加载PL位流

•使用remoteproc框架加载RPU固件

•通过libmetal和OpenAMP实现APU-RPU通信

•APU、RPU和PL之间的共享内存

•实时LED控制从RPU,而APU处理高级任务

这将展示KR260的完整异构计算能力,结合:

APU:用于高级控制和网络的Linux

•RPU:用于实时、确定性任务的FreeRTOS

•PL:定制硬件加速器和I/O

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

March 4, 2026 ---- 根据TrendForce集邦咨询最新调查,随着生成式AI兴起,数据中心对高速传输的需求持续提升,原先应用在机柜内(Intra-Rack)短距传输的铜缆方案,将在传输密度与节能上面临严...

关键字: 数据中心 生成式AI LED

奥地利Premstätten /德国慕尼黑(2026年2月24日)——艾迈斯欧司朗(SIX: AMS)与深圳市美志光电技术有限公司(以下简称“美志光电”)就其在美国与德国市场未决的LED专利纠纷达成和解。

关键字: LED 发射器

Feb. 24, 2026 ---- 根据TrendForce集邦咨询最新UV LED市场趋势与产品分析,由于贵金属、原物料与人工费用调涨,2026年第一季UV LED价格获得支撑,客制化产品甚至有机会季增5%。在全球光...

关键字: LED 太阳光源模拟器

光耦合器对开关电源(SMPS)设计至关重要,它使得信号能够安全、可靠地跨越电气隔离边界传输。而光耦合器的性能取决于适当的偏置及在反馈控制环路内的正确集成;配置错误会导致不稳定、瞬态响应不佳和调节性能下降。本文分为两部分,...

关键字: 光耦合器 开关电源 LED

随着汽车向移动智能终端演进,车内座舱体验成为竞争焦点。动态流水氛围灯作为提升科技感与个性化体验的关键配置,正从中高端车型快速渗透至更广泛的车型市场。在这一趋势下,如何在强化视觉交互的同时控制成本,成为产业链共同面对的核心...

关键字: 动态氛围灯 驱动芯片 LED

这个项目是为我物理计算课程中的数据可视化项目而设计的。其核心理念是通过 LED 灯带来展示飞机在天空中的位置,每盏 LED 灯都代表着一个位置。这些灯光会随着飞机的活动而移动并改变颜色。

关键字: LED REST API 树莓派 继电器

该项目展示了在基于 FreeRTOS 的系统(运行于 Arduino Uno 上)中实现安全的数据共享访问的实现方式。

关键字: LED ADC 数据 Arduino

Bourns® 1202-P 系列硬接线式 Type 1 浪涌保护器 (SPD) 专为满足日益扩增之交流电力基础设施应用所需的严格防护要求而设计

关键字: 浪涌保护器 LED 断路器

Dec. 31, 2025 ---- TCL CSOT(TCL华星)近日成功竞得兆元光电80%股权和相关债权,TrendForce集邦咨询表示,此次收购标志着TCL CSOT正式进入LED芯片领域,完成从上游芯片到下游M...

关键字: LED 面板 供应链

中国 上海,2025年12月24日——照明与传感创新的全球领导者艾迈斯欧司朗(SIX:AMS)今日宣布,推出一款专为LCoS与DMD投影系统优化的超紧凑RGGB(红、绿、绿、蓝) LED解决方案——VEGALED™,适用...

关键字: LED 智能眼镜 机器视觉
关闭