图1 – 调用加速器示例
硬件接口需要用一种简单的方法将函数自变量映射到存储单元。图2是支持这一映射的存储器配置。寄存器中保存了有关矩阵的排列方式以及所需运算的信息。指令寄存器将指示执行何种运算。这样我便可以将一些简单的运算融合到一个硬件中。可以用状态寄存器来查看是否正在进行运算或是已经成功完成运算。此外,器件最好还能提供中断支持。图2 – 寄存器汇总表
回到硬件设计,我了解到Vivado HLS为阵列自变量留出空间以指定小容量内存。这样,图3所示函数便说明了这种函数性。图3 – 加速器函数API
假设能够综合AXI从接口,怎样将它用在软件上?我将正常编码环境假设为Linux。还好赛灵思提供PetaLinux,而且PetaLinux提供一种叫做用户I/O器件的机制。UIO可以用简单的方法将新硬件映射到用户内存空间,并具备中断等待能力。这意味着您可以省去编写器件驱动程序所耗费的的时间和流程。图4显示了这个系统。图4 – 系统框图
这种方式当然也有缺陷。例如,无法在DMA中使用UIO器件,因此您必须在器件内存中构建矩阵,并在构建完成后手动复制出来。如果需要,将来可以通过定制器件驱动程序解决这个问题。图5 – 设计流程图
Vivado IP Integrator让AXI从接口连接到Zynq SoC硬件变得轻而易举,并打消了对信号连接错误的顾虑。赛灵思甚至拥有我所使用的ZedBoard开发系统的系统概述,并用IP Integrator导出数据用于软件开发套件。欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |