Vivado系统生成器工具能方便地接入平台设计,从而可充分利用开发板接口和处理系统。
FPGA的应用不断拓展,同时FPGA设计流程也随之不断演进。我们不再将FPGA用作简单的胶合逻辑,甚至不再作为信号处理链的核心,用以将IP与专有后端接口集成。相反,FPGA正在转变为可编程片上系统,其中包含作为处理器外设的硬件以及在强大APU上运行的高级软件。这种架构就是我们所说的赛灵思全可编程SoC。
为了充分发挥这种全新流程的优势,我们需要将设计方法从FPGA早期的自上而下RTL转变为以IP开发和标准化连接(例如ARM®的高级可扩展接口 (AXI))为中心的自下而上流程。随着接口从定制接口发展为通用接口,我们就可以花更少的精力来验证数据路径与平台设计之间的交互。
赛灵思DSP系统生成器(System Generator for DSP)同样也得到了发展。该工具是Vivado®设计套件的一部分,其通过将DSP数据路径整合到用Vivado IP Integrator工具构建的平台设计中,打造出全新的自下而上设计方法。我们仔细看看系统生成器(System Generator)实现的设计自动化如何帮助高性能设计充分利用平台连接功能。
构建全可编程平台框架
通过定义用来存放数据路径的平台框架,我们可以启动全新的设计流程。Vivado工具套件能识别开发板;我们将利用开发板自动化功能构建新的平台设计。
如图1所示,平台设计或平台框架的基本组成包括:处理器级和开发板级接口,以及将其组合在一起的逻辑。我们将平台框架作为系统级设计的基础(即外壳),这给我们的数据路径提供了空间。模块和连接功能自动化通过IP外设将处理系统连接到板级接口。封装在IPCatalog中的DSP数据路径或软件加速器利用赛灵思Designer Assistance自动化功能方便地连接到我们的处理器平台框架中,进而连接到外部器件接口。
创建作为可输入IP的数据路径
我们的最终目标是让数据路径能进入全可编程平台框架。如果要从头开始,我们可以用标准化接口创建数据路径。如图2所示,只需将网关端口迅速标记为AXI4-Lite接口,或者对端口进行命名以匹配标准连接(如Simulink®图上的AXI4-Stream),这样,System Generator为Vivado IP Catalog打包设计时就会为设计添加额外逻辑并将通用信号收集到接口内。
不过,我们利用一种新设计方法,使用平台框架定制一个可集成到全可编程设计的插件。我们使用自动化功能确定平台设计中现有哪些接口,哪些接口与开发板关联,以及哪些接口可为DSP数据路径创建插件。既然我们的目标是将数据路径转换为可连接至平台框架的IP,因此我们不需要关注板级接口,而是关注标准化AXI接口。开发板上的每个不关联接口转变为SystemGenerator网关。这些网关在System Generator中充当简单信号,当我们将平台设计导出到IP Catalog时,这些网关会生成用以连接平台设计的AXI 接口。
图1 –将处理系统连接到板级接口的平台框架实例
如实例所示,AXI4-Lite接口创建独立的读/写信号,在导出到Vivado工具套件时共享通用的可寻址寄存器接口。简单的复制-粘贴使我们在地址偏移位置通过相同接口获得更多用于处理器的直接寄存器。同时,我们可自动生成软件驱动API以读/写寄存器。
图2 –自动将网关导入AXI4-Lite和AXI4-Stream接口
图3 –将DSP数据路径连接到平台框架的平台系统
如果平台设计中提供AXI4-Stream接口,SystemGenerator会向模型添加正确匹配的网关。AXI4-Stream接口极其灵活并包含很多信号。ACLK时钟源与该接口相关联,但该信号直接作为这部分数据路径的抽象系统时钟。TVALID信号表示接口有效。其他信号为可选信号。System Generator会将初始流接口中的信号添加到我们的模型,不过我们可以通过删除或添加信号来满足内部要求。
在图2所示的模型中,我们的数据路径只关心TDATA(经接口发送的数据)和S_AXIS接口上的TVALID。为删除不必要的信号,我们针对该模型对没用的网关添加注释,因为默认值将会驱动IP Integrator中的信号连接。
AXI4-Lite和AXI4-Stream信号能利用自下而上方法轻松进行仿真和验证。AXI4-Lite接口建模为用于访问大量Simulink模块的简单网关,实现网关一侧到另一侧数据传送的抽象。同样,AXI4-Stream接口只是一系列遵循简单握手规则的信号,以将数据从一个IP核传递到另一个。
仿真建模的唯一挑战在于接口上所用的可选端口。如果我们每个周期都接收数据并通过数据路径无中断地进行处理,我们就不需要TREADY握手信号。简化模型通过TDATA 网关将矢量的每个元素从Simulink的信号发送到Workspace令牌。当需要完整握手时,我们用AXI4-Stream FIFO进行建模以缓冲数据,如图2中的M_AXIS接口所示。
这种定制的自动化功能可作为创建连接平台框架的IP的起点。不过,SystemGenerator很灵活,允许我们添加或删除部分甚至整个AXI接口。最终可将数据路径转换为可在多个系统级设计中重用的IP。
添加逻辑后,最后一步是将使用DSP系统生成器构建的数据路径导出到Vivado IP Catalog。这种操作能实现接口的简单连接,无论使用RTL还是在IP Integrator中都是如此。此外,我们还生成在SDK中使用的驱动器,并将具有最佳测试向量数据的仿真模型连接到IP。由于我们在创建DSP数据路径时事先知道平台框架的情况,因此能自动组合模型和平台设计,如图3中的完整系统所示。
降低仿真风险
生成包含硬件加速器、DSP数据路径或定制逻辑的完整片上系统很具有挑战性。采用自下而上方式进行仿真以确定数据路径按预期工作,这种方法风险很大,而且维持可支持数据路径的平台接口带宽同样很困难。
我们通过使用标准化接口开发能降低仿真风险的IP。这是因为接口级的交互被抽象化,使我们专注于验证内部数据路径。最后,通过利用开发板、模块和连接的智能自动化功能,我们可生成基于平台的系统,从而满足我们的需求并集成自定义数据路径。