当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]当然,我们可以尝试通过遵循良好的FPGA开发过程来减少这种情况,从而实现结构化方法。这样的方法可以完成高质量的设计。通常,该开发过程将包含几个不同的阶段、过程和审查,以执行结构化方法

最有趣的行业统计数据之一是,84%的FPGA设计至少存在一个错误。

当然,我们可以尝试通过遵循良好的FPGA开发过程来减少这种情况,从而实现结构化方法。这样的方法可以完成高质量的设计。通常,该开发过程将包含几个不同的阶段、过程和审查,以执行结构化方法,包括:

•系统需求评审——评审系统需求和验证方法,以及符合/不符合矩阵。

•初步设计评审——根据要求对建筑设计进行评审,以确保满足要求。审查架构的可行性和技术风险。

•关键设计评审——根据需求和体系结构评审已实现的设计及其验证包、仿真和定时关闭/实现报告。

遵循这个过程,当然,需要审查阶段的检查表和与供应商规则一致的优秀编码/设计指南,例如超快编码方法。

一旦FPGA设计完成,项目离完成还有很长的路要走。

设计必须集成到硬件中,与现实世界的传感器、执行器、驱动器和应用软件接口。

在此阶段,在产品发布之前,有几个技术挑战/风险可能导致需要在硬件上执行调试。

在硬件上进行调试需要能够理解逻辑设计、应用软件和现实世界之间的交互——不幸的是,有时现实世界与验证设计的方式是不同的——例如,不同的时序、操作模式或意想不到的硬件/软件交互。

当这种情况发生时,我们需要能够找到问题的根本原因并采取纠正措施。在集成过程中发现的任何东西都应该反馈到模拟中,以确保未来的产品更新/回归测试不会忘记实验室的惨痛教训。

为了做到这一点,作为工程师,我们有几个工具-从简单的万用表测量电压和电流,到逻辑分析仪/模式发生器和示波器。

然而,有时我们想要内部查看我们的SoC/FPGA,以了解IP核或嵌入式硬核和软核处理器之间的交互。

AMD ChipScope是集成到Vivado设计套件中的片上调试和验证工具包。它使开发人员能够实时观察,捕获FPGA或SoC设计的内部信号并与之交互,而无需外部探针或逻辑分析仪。

ChipScope工具包的关键要素之一是集成逻辑分析仪。

什么是ILA

集成逻辑分析仪(ILA)是嵌入在AMD fpga和soc中的硬件调试工具,允许工程师捕获和分析内部数字信号。

ILA提供实时硬件调试功能,允许用户设置触发条件并直接在FPGA结构上捕获信号数据。ILA能够捕获具有一系列接口定义的信号,从简单的逻辑信号和矢量到AXI和AXI流接口。

System ILA是一个增强版本,可以跨多个接口和时钟域进行更全面的系统级调试。它提供监视AXI接口、内存控制器和其他系统互连的功能。

与基本ILA相比,系统ILA可以捕获更长的跟踪缓冲区,支持更复杂的触发条件,并同时监视更多数量的信号。这使得它对于调试复杂的片上系统(SoC)设计特别有价值,其中多个组件通过不同的接口和协议相互交互。

调试方法

在调试应用程序时,我们需要采用逻辑方法。因此,在使用System ILA或ILA时,我们应该理解FPGA设计是一个迭代过程,如果我们从逻辑上解决问题,这是最成功的。

最好的方法是:

•把问题分解成更小的部分

•通过减少变量和变化来简化

•做一个预测,然后验证结果

•在设计周期的早期计划如何以及在哪里进行调试

插装方法

当在实际设计中使用集成逻辑分析仪(ILA)时,重要的是要有策略地使用仪器来平衡调试可见性和FPGA资源使用。

ILAs消耗逻辑和块RAM,这在已经接近容量的设备中成为一个关键问题。

捕获深度和被监测信号的宽度直接影响BRAM的使用——更宽的探针和更长的捕获窗口会迅速耗尽可用内存。

在早期的版本中,遵循上面概述的方法,重点关注关键控制信号、重置线和状态或错误指示器,因为这些通常提供对系统行为的直接洞察,并帮助在调试周期的早期识别问题。

系统内的关键AXI总线,特别是那些最接近处理系统接口的总线,如Zynq UltraScale+ mpsoc上的M_AXI_HPM_FPD(高性能主)和S_AXI_HP_FPD(高性能从),也应该考虑用于仪器仪表。

虽然这些宽总线是资源密集型的,但它们承载着可编程逻辑和处理系统之间的基本流量,并且可以揭示数据处理和系统集成中的微妙问题。

从精心选择的控制、复位、状态/错误和这些关键AXI接口的混合开始,在适当的捕获深度提供了对系统级行为的有价值的可见性,同时为迭代调试改进保留了空间。

演示项目

为了演示如何在FPGA设计中利用ila提供的功能,我们将创建一个简单的演示项目。

该项目将针对安富利ZU板,并连接到Digilent ZMod AWG以生成简单的模拟输出。

在这个项目中,我将使用两种不同的ILA来帮助确保正确的操作。

•ILA -用于监控时钟向导锁定信号、DAC初始化信号和DAC错误信号

•系统ILA -监控系统中的AXI和AXI流数据

第一步是创建一个新项目。如果未安装ZU板,则使用Vivado中的Boards选项卡下载。

一旦创建了项目,下一步就是创建Vivado设计。要做到这一点,第一步是创建一个块设计。

随着块设计的开放,添加Zynq UltraScale+ MPSoC处理系统。

运行块自动化配置处理系统为ZU板定义。

在配置了处理系统之后,我们可以从Vivado库中添加ZMod AWG控制器。

双击IP并选择“将IP添加到块设计”。

ZMod AWG需要一个轴流输入,而处理系统有一个AXI4输出。然而,Vivado能够实现必要的内存映射到流转换架构。连接ZMod AWG输入数据流端口到处理系统的h0 - fpd端口。

这将打开一个连接自动化对话框。对于时钟,从处理系统中选择100 MHz输出时钟。

这将生成如下图所示的图表。将系统时钟连接到与DAC I/O时钟相同的时钟,因为两者都将处于100 MHz。

重新定义轴流FIFO并取消启用传输控制选项。

添加一个新的时钟向导并按如下所示进行配置;我们想要一个100 MHz的输出偏移距输入90度。

如图所示,将时钟连接到ZMod AWG的DAC CLK输入端。

连接复位。

增加一个常数块设置为DAC使能的逻辑高。

添加一个常数块设置为逻辑低禁用测试模式。

除了ZMod AWG块上的顶部两个端口,并将它们标记为外部。

添加系统ILA;我们将使用它来监视系统中的AXI和axis - stream数据。

按如下方式配置System ILA属性;启用其触发输入和输出端口。这将使我们能够与Vitis Unified的软件开发进行交叉探索。

0号槽位保持当前配置不变。

改变槽1的属性来监控轴流。

如下所示连接System ILA插槽0和插槽1,以及时钟和复位。

重新定制处理系统以禁用HPM1,并启用PS到PL和PL到PS的交叉触发。这种交叉触发允许ILA和Vitis Unified环境相互触发。

输出触发是指在Vitis中遇到断点时,也可以同时触发所连接的ILA,以观察断点触发时硬件的行为。

输入触发是指当ILA到达它的触发器时,处理器上的软件执行也停止,使得软件的状态也可以被观察到。

如图所示连接Trigger端口。

添加一个ILA;我们将用它来监测设计中的一些简单的逻辑信号。

用三个输入探针配置ILA,如下所示。

如下所示连接ILA;我们将监视时钟向导锁定信号,DAC初始化信号和DAC错误信号。

最终的设计应该如下所示。

验证设计,创建包装器,并使用下面提供的XDC文件构建比特流。

HW设置

确保硬件设置如下所示,将ZU板通过PL HSIO端口连接到ZMod DAC。DAC通道1 SMA的输出应使用SMA- bnc电缆连接到示波器。

此外,确保ZU板通过USB- c连接供电,并通过USB JTAG连接到开发机器。

SW设计

为了开始软件设计,我们首先需要确保ZU板上的启动模式设置为JTAG。我们将使用JTAG端口访问ILAs。如果您正在使用PetaLinux,您也可以通过以太网进行访问,如本项目所示;然而,这超出了本项目的范围。

在Vitis Unified中,基于刚刚导出的XSA创建一个新的硬件平台。

选择刚刚从Vivado导出的XSA。

选择一个独立的操作系统和第一个A53处理器。

完成平台的创建。

下一步是创建应用程序项目。对于这个项目,我们将使用Hello World模板,并将其命名为AWG_Example。

选择刚刚创建的平台。

按照指示离开域。

完成应用程序的创建。

下一步是构建应用程序并使用应用程序的启动配置交叉探测。json文件。

要添加交叉探测(我们需要添加两个,每个方向一个),选择add Item选项。

我们将设置的第一个交叉探针使触发器能够使用FTM从A53-0处理器转到可编程逻辑,从而转到系统ILA。

一旦设置了第一个交叉探测,我们需要添加另一个从可编程逻辑到A53处理器的交叉探测。

现在,我们可以调试标准的Hello World应用程序,以确保该流程按预期工作,并提前查看ZMod AWG状态。

我们将在终端中看到输出;这有助于证明我们有一个具有基本功能的构建。

在开发主应用软件之前,下一步是确认ZMod AWG已被正确配置和初始化。这里的任何错误都表明时钟或控制信号映射有问题。

在Vivado中,打开硬件管理器,并在ILA1上,仔细检查时钟向导是否被锁定并且DAC已初始化。由于这些是静态信号,我们可以立即触发ILA。

如果我们看到一个配置错误,我们将需要进一步研究ZMod AWG的接口和时钟。

下一步是在系统ILA上启用触发器并武装它。

然后我们可以开发主应用软件,对于本例,它将向DAC中写入一个斜坡计数。这是一种通常在集成早期执行的测试,以确保DAC没有丢失的位或卡住的代码。

应用程序代码如下:

下一步是使用System ILA检查数据是否正确地传输到轴流FIFO。

在for循环中添加一个断点来执行写操作。

当遇到断点时,ILA也将触发,并且可以观察到AXI写入。

这证明数据正在写入轴流FIFO。现在我们需要检查数据是否从FIFO输出。

在Vivado中,更改System ILA触发器,并将其设置为在axis - stream上有效的数据上升沿触发,然后武装ILA。

重新启动应用程序软件,ILA将随着软件的停止而触发,就像在断点处一样。我们可以看到数百个数据包正在输出。

放大后,您可以看到斜坡的值和值按预期增加。

在Vitis中,您还将看到该软件已被停止。

当我们将输出驱动到DAC时,这应该会导致DAC输出端出现模拟输出。然而,在连接到硬件的示波器上,没有观察到任何信号。

我们知道处理系统正在生成数据,我们知道它正在被发送到ZMod DAC驱动程序,我们知道ZMod被正确初始化-但是作用域中没有出现任何东西。

让我们看看ZMod AWG用户指南,看看我们是否遗漏了什么。该指南的链接在这里。

阅读文档,我们看到了这个问题:目前,测试波形被放置在较低的位,但ZMod AWG期望它在较高的位。

纠正这个错误(很有帮助,这是一个软件修复)可以再次在ILA中验证;但是,我们现在可以在作用域输出中看到结果。

由于DAC代码是有签名的,因此将计数器从0调到最大刻度将导致作用域显示一个正斜坡,然后在设置MSB后显示一个负斜坡。

总结

本项目展示了我们如何使用AMD ChipScope调试解决方案、ILAs和System ILAs在实时项目中发现问题并快速识别它们。该项目还概述了如何通过使用交叉探测功能来调试硬件和软件交互,从而可以轻松地分析集成问题。

ChipScope, ILA和System ILA是开发人员可以用来快速轻松地调试应用程序的重要元素。

本文编译自hackster.io

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭