Zynq7000中PS和PL进行协同工作,其性能架构需要更好的开发工具和手段。为提高设计效率,简化设计流程,Xilinx推出了以知识产权((Intellectual Property,IP)和系统为中心的Vivado设计套件[25-27]。该套件包括硬件平台设计和开发工具Vivado IDE(Vivado Itegrated Development),嵌入式开发工具Xilinx SDK(Software Development Kit)以及高层次综合Vivado HLS(High-Level Synthesis)。为更好的理解基于Zynq7000的软硬件协同设计流程,首先对上述开发工具进行介绍:

(1)Vivado IDE:Vivado IDE将寄存器传输级(Register-Transfer Level,RTL)的电路设计和基于IP核的系统级设计集成在一个设计环境中,并且提供了IP集成器和IP封装器等高效的设计工具,用户可以直接调用套件提供的IP核,也可以根据自身需求编写RTL代码,利用IP封装器封装后直接例化使用。为方便用户设计,Vivado IDE支持MicroBlaze软处理器的总线接口和IP端口自动连接,编译综合后可直接生成PS配置文件和PL比特流文件。

(2)Xilinx SDK:SDK是基于Eclipse平台开发的软件设计工具,支持Zynq7000系列器件。SDK支持C或C++语言,为所有IP核提供驱动程序。并且SDK内部配备各种软件调试工具,支持断点设置、单步调试以及内存监控等功能,可以与Vivado IDE内部的集成逻辑分析仪(Integrated Logic Analyzer,ILA)协同调试,提高了软硬件协同处理系统的设计效率。

(3)Vivado HLS:Vivado HLS是一种算法级的设计工具,支持C或C++等高级编程语言。该工具可将实现算法的高级编程语言转化为RTL级硬件电路。本文中主要使用前两个工具,对HLS没有涉及。

 

(1)从一系列需求中创建正确的需求规格,作为后续开发系统设计的基础。

(2)根据系统总体性能需求,把期望的功能恰当地划分成硬件和软件,并定义两个部分之间的接口。顺序执行或控制类的任务一般交由PS端执行,而偏向于大量数据流并行计算的任务则更加适合于在PL 端实现。

(3)划分到硬件的部分需转化为RTL硬件语言的描述,这部分交由Vivado IDE工具完成。Vivado IDE内集成了一整套FPGA开发工具,包括功能仿真、设计综合、布局布线和板级调试等。开发者可以根据需求自行编写RTL代码、调用套件提供的IP核,或者使用Vivado HLS直接将C/C++语言编写的算法综合成硬件描述语言(Hardware Description Language,HDL)。

(4)划分到软件的部分转化为C/C++语言描述,这部分交由Xilinx SDK工具完成。当硬件设计完成后,硬件设计生成的PS配置文件和比特流文件就会被导出到SDK进行软件开发。SDK为Xilinx所有的IP核提供驱动程序。

(5)完成软硬件模块的设计和系统集成后,需要进行联合仿真与调试。这部分由SDK和Vivado IDE共同完成。SDK内集成软件调试器,可设置断点、单步调试和查看程序中的变量等。并且可以同Vivado IDE的集成逻辑分析仪,进行软硬件协同分析。分析测试结果是否满足设计需求,如果不满足还需要返回之前的步骤重新设计规划。