本文基於Xilinx的ZYNQ7020平臺,實現ARM系統如何調用底層FFT IP核實現相應演算法。ZYNQ平臺內部包括兩部分,即PL和PS。PL為FPGA邏輯部分,PS為雙核ARM9 。FPGA與ARM9之間的通信採用高性能的AXI匯流排,PS為PL提供系統時鐘,複位等基本信號。本文是在ARM9系統外圍掛載AXI介面的DMA來控制FFT IP核的數據輸入輸出。

下面詳細介紹具體搭建步驟。

第一步:創建新工程,晶元型號為zynq7020:xc7z020clg484-2,創建好後,點擊右側IP Integrator,創建系統——zynq_7020_fft_system。

點擊OK,跳轉到系統構建區。

第二步:在系統構建區,點擊Add IP,搜索zynq processing system,點擊後加到區域內

zynq系統添加構建後如下圖所示。

第三步:配置zynq系統,添加系統外設,內存,配置時鐘,中斷系統。

配置系統完畢後,創建DDR3埠,時鐘和複位輸出,及其他IO埠。

第四步:點擊Add IP,搜索DMA,添加到系統構建區。

配置DMA的參數。

第五步:添加concat ip,將DMA的輸入輸出中斷連接concat ip的輸入埠,將輸出埠連接到zynq的中斷埠上。

點擊運行自動連接布線。

布線連接後如下圖所示。

第六步:添加兩個AXISTREAM FIFO IP核,分別連接到DMA的輸入輸出埠,同時配置FIFO的存儲深度,及數據位寬。

zynq系統搭建完成

第七步:右鍵點擊generate output products,生成我們構建的系統。

等待幾分鐘,生成後,系統中添加了一些文件及IP。

右鍵點擊create HDL Wrapper,添加系統頂層文件。

按默認提示點擊OK即可。

頂層文件添加完成後如下圖所示。

致此zynq的ps部分已搭建完畢。

第七步:點擊IP Catalog 搜索FFT IP,雙擊FFT IP核。

進入FFT IP核配置界面,本文選擇的數據類型為float型,運行時鐘100Mhz,配置流水線等,點擊OK,生成FFT IP。

創建FFT IP 頂層文件,實例化FFT IP,便於FFT IP的模擬,調用。

頂層文件中添加如下代碼。

第八步:在PS的系統頂層文件zynq_7020_fft_system_wrapper中,實例化FFT IP的頂層文件FFT_Top,如下所示。

第九步:創建FFT IP核的模擬文件,單獨對FFT IP進行模擬模擬測試。

對於浮點數的FFT IP模擬測試,需要提供單精度浮點數格式(32位的二進位數),且提供虛部和實部。blk_mem_gen_real存放實部,長度為1024,blk_mem_gen_imag存放虛部,長度為1024,本文的FFT IP是

之前已調試好的IP測試,直接調用即可。

模擬時序。

FFT IP輸入時序。

FFT IP輸出時序。

第十步:測試完成後,生成bit流,不需配置管腳。

生成bit流後,可以查看系統資源利用率。

第十一步:導出Hardware。

啟動SDK。

第十二步:創建fft_test工程,按默認配置,點擊next。

創建main.c 。

添加DMA測試常式,同時提供FFT IP所需實部和虛部,且都為單精度浮點數。修改check_data函數,將接收的數據存為文件,導入到matlab中進行數據比對。

本文經過以上步驟實現了zynq系統下的FFT IP核調用,但還需在硬體平臺下進行驗證。希望有zynq平臺的同學可以按此步驟驗證,也可擴展訓練,掛載其他IP核。

推薦閱讀:

相關文章