天天看點

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

1.簡述

首先感謝芯來開源了蜂鳥E203 risc-v處理器,提供了比較完整的工程環境、配套的軟硬體。但是配套的FPGA闆卡實在太貴,對于自費學習的來說是不小的學習成本,而且我也認為完備環境在一定程度上為我們學習提供便利,但反過來說你會忽略很多基本的細節,這部分恰好别人做好的,很多人會陷入一個學習誤區,使用指令run一下,再将工程燒寫到配套的FPGA跑一跑就覺得學得差不多了,好像沒有任何問題,是以我喜歡折騰,因為折騰迫使我不斷去解決問題,在解決問題的過程中會思考很多細節,而且印象更加深刻。當然這是我個人的學習方法。

如果手上有Xilinx的 FPGA闆卡,可以一起學習一下怎麼将e203移植到自己的闆卡上。

2.運作原FPGA工程

進入到FPGA目錄下;

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

gvim打開“README.md”檔案,下面就是FPGA綜合的指令。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

這裡以最後一個:artydevkit為例,這個是Digilent的FPGA闆卡,我們可以參考這個工程修改成我們的FPGA。依次執行以下指令。第二個直接使用“setup”可以打開vivado的gui檢視整個工程。

make install CORE=e203 FPGA_NAME=artydevkit 
make setup CORE=e203 FPGA_NAME=artydevkit 
           

但是出現以下錯誤,這是因為我們環境沒有安裝Digilent的FPGA Board檔案。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

下載下傳傳送門:Digilent FPGA Board 下載下傳連接配接

點選下面直接下載下傳了。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

下載下傳後解壓,進入如圖所在目錄,選擇"arty-a7-35"拷入到虛拟機的共享目錄下,這個操作可以參考我之前的文章:搭建屬于自己的數字IC EDA環境(三):Centos7安裝EDA(vcs2018、verdi2018等)IC工具以及腳本運作第一個工程。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

進入虛拟機,進入到如圖的共享目錄下,使用下面指令将board檔案考入到vivado的board_files目錄下。如果提示沒有權限,使用root權限。

cp -r arty-a7-35 ../../../home/Xilinx/Vivado/2019.1/data/boards/board_files/
           
開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

回到e203工程的FPGA目錄下,重新運作指令,成功啟動vivado并加載整個工程;

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

3.修改FPGA工程

1)複制環境

複制一份artydevkit的環境來修改,新的名字可以自己取,我這裡叫“my_325t”;
           
開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

2)加入自己闆卡指令

為了友善操作,我們先在README檔案加入我們闆卡的操作指令,以後可以直接複制這些指令,不用手動輸入。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

3)修改限制

進入到“my_325t”目錄下的constrs,複制一份限制檔案,根據自己闆卡資源修改。如果闆卡的沒有限制檔案中的外設,可以将其注釋掉,比如我将RGB LED和GPIO注釋掉。當然後面就需要修改FPGA頂層檔案,這個後面會說。但是闆卡有相應外設,自己修改管腳号就可以了

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

4)修改時鐘

其次就是時鐘,我的闆卡隻有125M單端時鐘,是以限制的修改如下圖所示,為了避免混淆直接将時鐘信号名都改了。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

這裡需要修改腳本,如圖修改ip.tcl腳本,這個生成vivado的IP,添加如下兩行腳本,配置clocking wizard IP輸入時鐘的屬性。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

5)修改FPGA型号

先修改board.tcl腳本,如圖,主要修改第二行FPGA型号,注釋掉第三行。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

其他腳本也需要修改,如果有board相關的全部注釋掉,如圖,1為之前内容,将其注釋備份,複制一個将board去掉。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

6)修改FPGA頂層原檔案

進入如圖目錄,有個system.org,這個是E203 的FPGA頂層,前面注釋很多沒有用外設,也修改了時鐘信号名,是以需要大改這個檔案。

gvim不會識别.org的檔案,是以這裡複制 “system.org” 為 “system.v”,然後使用gvim打開“system.v”進行修改,就能文法高亮。修改好後記得将檔案改為.org結尾檔案,不然使用install指令進行cp時找不到這個檔案。

首先将之前100M時鐘信号名全部替換為125M的。然後将限制檔案注釋的輸入輸出端口也注釋掉。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

這些驅動外設的信号是通過IOBUF驅動的,是以注釋掉的端口,對應的IOBUF也注釋掉,不然會報錯。如圖是我注釋的信号,具體注釋那些你可以先進行綜合,根據綜合出來的錯誤資訊将gpio iobuf注釋掉。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

7)啟動Vivado Gui

使用以下指令,先進行install,然後setup啟動Vivado Gui,自動加載e203源檔案和限制檔案。

make install CORE=e203 FPGA_NAME=my_325t
make setup   CORE=e203 FPGA_NAME=my_325t
           

啟動vivado後,可以看到如下界面,說明啟動成功。這裡點下ok,等待一會兒。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

vivado加載所有的限制檔案,這裡需要将舊的檔案remove掉,也就是藍框的兩個檔案。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

進行綜合時,如果提示jtag tck的iobuf錯誤,建議在限制檔案中添加如下限制:

8)綜合成功

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

9)燒寫闆卡

燒寫到FPGA闆卡後,第二個LED應該會亮。固化根據自己闆卡操作一下就行,這裡就不說了。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)

6.總結

修改FPGA環境比較複雜,但是經過不懈的努力最終還是綜合成功。這部分基于我之前分享的EDA環境進行的,公衆号背景回複:EDA虛拟機可以獲得完整EDA環境(虛拟機)。這個修改好的E203工程我也上傳到gitee,傳送門:蜂鳥修改闆:E203_mod。

開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)
開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)
開源RISC-V處理器(蜂鳥E203)學習(二)修改FPGA綜合環境(移植到自己的Xilinx FPGA闆卡)