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的集成邏輯分析儀,進行軟硬件協同分析。分析測試結果是否滿足設計需求,如果不滿足還需要返回之前的步驟重新設計規划。