1. 程式人生 > >為Quartus工程生成rbf文件的方法

為Quartus工程生成rbf文件的方法

art bat 作者 tdi lang int 區別 有一個 pretty

rbf文件是Quartus編譯生成的fpga配置文件的二進制數據量格式的文件,主要用於使用外部主機通過PS方式配置FPGA。

在含ARM硬核的SoC FPGA中,可以使用HPS配置FPGA,配置時分為兩種情況,一種是在HPS處於uboot啟動階段時通過u-boot配置,一種是Linux啟動之後通過應用程序配置。這兩種配置方式都需要用到rbf格式的配置文件,但是兩種方式所需的rbf格式的配置文件卻又存在著差異,其中,uboot階段配置fpga需要使用未經壓縮的rbf格式文件,而在Linux應用程序中配置fpga時,需要使用經過壓縮了的rbf文件。默認情況下,Quartus軟件不能自動生成rbf文件,需要在設置種開啟生成rbf文件選項。另外,也可以直接通過命令行的方式,從quartus編譯得到的sof文件轉換得到rbf文件。圖1為在Quartus中直接勾選生成rbf文件的選項。

技術分享圖片

需要註意的是,這種方式生成的rbf文件是經過壓縮了的,可以支持Linux中使用應用程序直接配置FPGA,不支持uboot階段配置fpga。

另外也可以通過腳本實現

使用sof文件直接轉換得到未經壓縮的rbf文件的命令格式為:

quartus_cpf -c my_input_file.sof my_output_file.rbf
使用sof文件直接轉換得到經過壓縮的rbf文件的命令格式為:

quartus_cpf -c -o bitstream_compression=on my_input_file.sof my_output_file.rbf

使用時,可以直接在SoC EDS軟件中輸入上述命令生成rbf文件,也可以將上述命令做成腳本,這裏作者傾向於直接將上述命令做成腳本,然後雙擊生成rbf文件

打開記事本,將下列命令粘貼到記事本中,然後保存為bat格式。例如保存為“sof2rbf_dc.bat”文件

%QUARTUS_ROOTDIR%\\bin64\\quartus_cpf -c -o bitstream_compression=on AC501_SoC_GHRD.sof soc_system_dc.rbf
pause

然後,將sof2rbf_dc.bat文件拷貝到工程中sof所在目錄下,直接雙擊運行該bat文件,就能生成名為soc_system_dc.rbf的文件了,該文件是經過壓縮的rbf文件。

同樣的再打開記事本,將下列命令粘貼到記事本中,然後保存為bat格式。例如保存為“sof2rbf.bat”文件

%QUARTUS_ROOTDIR%\\bin64\\quartus_cpf -c AC501_SoC_GHRD.sof soc_system.rbf
pause

然後,將sof2rbf.bat文件拷貝到工程中sof所在目錄下,直接雙擊運行該bat文件,就能生成名為soc_system.rbf的文件了,該文件是未經壓縮的rbf文件。

註意,上述命令內容中,AC501_SoC_GHRD.sof名字需要換成你工程中實際的sof文件的名字。

下圖為分別使用sof2rbf.bat和sof2rbf_dc.bat腳本生成的rbf文件,可以看到,兩者尺寸差距較大,soc_system.rbf為4146KB,而soc_system_dc.rbf僅為1270KB。

技術分享圖片

另外,圖中還有一個名為AC501_SoC_GHRD.rbf的文件,該文件是勾選了Quartus的自動生成rbf選項後生成的rbf文件,可以看到,與使用命令方式生成的壓縮後的rbf文件尺寸一致。

另外,AC501_SoC_GHRD.sof文件的尺寸比未經壓縮的soc_system.rbf文件的尺寸大了440KB,那麽這兩者之間會有什麽聯系和區別呢,有興趣的網友可以研究研究。

 

為Quartus工程生成rbf文件的方法