本文來源電子發燒友社區,作者:yuzhiwen1986, 帖子地址:https://bbs.elecfans.com/jishu_2295853_1_1.html
高云FPGA 平臺介紹
Combat開發套件是以高云半導體 GW2A 系列 FPGA 產品為核心,是高云半導體晨熙?家族第一代產品,內部資源豐富,具有高性能的 DSP資源,高速LVDS 接口以及豐富的 BSRAM 存儲器資源,這些內嵌的資源搭配精簡的FPGA 架構以及 55nm 工藝使 GW2A 系列 FPGA 產品適用于高速低成本的應用場合。
外設接口管腳說明
本次項目中用到的I/O口如表下描述
信號名 | FPGA管腳序號 | BANK | 描述 | I/O電平 |
---|---|---|---|---|
SYS_CLK | M19 | 2 | 50Mhz有源晶振 | 3.3V |
FPGA_RST | AB3 | 5 | 復位,低電平有效 | 3.3V |
LED1 | U17 | 3 | LED指示燈1 | 1.5V |
LED2 | U19 | 3 | LED指示燈2 | 1.5V |
LED3 | U18 | 3 | LED指示燈3 | 1.5V |
LED4 | T17 | 3 | LED指示燈4 | 1.5V |
QSPI_DQ[0] | ||||
QSPI_DQ[0] | ||||
QSPI_DQ[0] | ||||
QSPI_DQ[0] | ||||
QSPI_CS | ||||
QSPI_SCK | ||||
MCU_TCK | C22 | 2 | ||
MCU_TDI | F22 | 2 | ||
MCU_TMS | J22 | 2 | ||
MCU_RST | V14 | 4 | ||
MCU_WAKE_UP | R18 | 3 | 按鍵3喚醒MCU | 1.5V |
PMU_PADRST | T19 | 3 | 按鍵2復位PMU | 1.5V |
PMU_PADRST |
時鐘復位電路
開發板為 FPGA 提供了一個 50MHz 有源晶振,連接到了全局時鐘引腳。
LED指示燈
開發板中有 4 個綠色 LED 燈,用戶可通過 LED 燈顯示所需狀態。可通過以下方式對 LED 燈進行測試:? 當 FPGA 對應管腳輸出信號為邏輯高電平時,LED 被點亮;當輸出信號為低電平時,LED 熄滅
MCU 喚醒電路
開發板有4個按鍵開關,用戶可以通過手動控制對應FPGA管腳輸入低電平,觸發MCU喚醒。本項目中使用KEY2/3/4作為復位和喚醒電路,電路圖如下
復用J17作為MCU的JTAG調試接口
LCD_PWM ->C22 -> MCU_TCK
LCD_SDA ->F22 ->MCU_TDI
LCD_VSYNC->G22 -> MCU_TDO
LCD_DE -> J22 ->MCU_TMS
LCD_B7 ->V14 -> MCU_RST
FPGA 原型平臺和MCU調試仿真器
FPGA 原型主要分為兩部分:FPGA 開發板,和調試器。接下來章節分別予以介紹。完整的 FPGA 開發板原型(包括 FPGA 開發板和MCU調試器)如下圖所示:
蜂鳥E203開源SoC
對于一個處理器核,還需要配套的 SoC 才能具備完整的功能。蜂鳥 E203 內核不僅僅完全開源了 Core的實現,還搭配完整的開源 SoC 平臺,請參見《蜂鳥 E203 開源 SoC 簡介》了解更多 SoC 的介紹與信息。蜂鳥 E203 開源 SoC 的Subsys 模塊的款圖如下:
Linux平臺環境搭建
這里以Ubuntu系統為例進行說明。
代碼下載和基本環境配置
- 下載E203源碼
git clone https://github.com/SI-RISCV/e200_opensource.git
- 下載iverilog源碼
`git clone https://github.com/steveicarus/iverilog.git
- 切換到v11分支(必須用V11或以上的版本)
git checkout v11-branch
- 安裝依賴
sudo apt-get install autoconf gperf flex bison build-essential
- 編譯、安裝iverilog和vvpsh autoconf.sh
./configure
make
make install
- 創建python軟鏈接
查看一下python的版本,我的還是Python2,新更新一下:
查看一下/usr/bin目錄下面有哪些版本,如果有python3版本就創建一個新的軟連接sudo ln -s /usr/bin/python3.8 /usr/bin/python
其中/usr/bin/python3.8對應你實際安裝的python版本。7. 安裝gtkwave
sudo apt-get install gtkwave
HBird-E-SDK 下載和配置1. 將 HBird-E-SDK 項目下載到本機 Linux 環境中,使用如下命令:
git clone [https://github.com/SI-RISCV/hbird-e-sdk](https://github.com/SI-RISCV/hbird-e-sdk)
- 由于編譯軟件程序需要使用到GNU 工具鏈,假設使用完整的 riscv-tools 來自己編譯 GNU 工具鏈則費
時費力,因此本文檔推薦使用預先已經編譯好的 GCC 工具鏈。我們已經將工具鏈上傳至網盤,網盤具體地址記載于
hbird-e-sdk 項目(https://github.com/SI-RISCV/hbird-e-sdk)的 prebuilt_tools 目錄下的 README
中,用戶可以在網盤中的“RISC-V SoftwareTools/RISC-V_GCC_201801_Linux”目錄下載壓縮包gnu-mcu-eclipse-riscv-none-gcc-7.2.0-2-20180111-2230-centos64.tgz和gnu-mcu-eclipse-openocd-0.10.0-6-20180112-1448-centos64.tgz,然后按照如下步驟解壓使用(注意:上述鏈接網盤上的工具鏈可能會不斷更新,用戶請注意自行判斷使用最新日期的版本,下列步驟僅為特定版本的示例)。
cp gnu-mcu-eclipse-riscv-none-gcc-7.2.0-2-20180111-2230-centos64.tgz ~/
cp gnu-mcu-eclipse-openocd-0.10.0-6-20180112-1448-centos64.tgz ~/
//將兩個壓縮包均拷貝到用戶的根目錄下
cd ~/
tar -xzvf gnu-mcu-eclipse-riscv-none-gcc-7.2.0-2-20180111-2230-centos64.tgz
tar –xzvf gnu-mcu-eclipse-openocd-0.10.0-6-20180112-1448-centos64.tgz
// 進入根目錄并解壓上述兩個壓縮包,解壓后可以看到一個生成的 gnu-mcu-eclipse 文件夾
cd ~/hbird-e-sdk // 進入 hbird-e-sdk 目錄文件夾
mkdir ~p work/build/openocd/prefix
// 在 hbird-e-sdk 目錄下創建上述這個 prefix 目錄 cd work/build/openocd/prefix // 進入到 prefix 該目錄
ln –s ~/gnu-mcu-eclipse/openocd/0.10.0-6-20180112-1448/bin bin
// 將用戶根目錄下解壓的
OpenOCD 目錄下的 bin 目錄作為軟鏈接鏈接到該
prefix 目錄下
cd ~/hbird-e-sdk // 進入 hbird-e-sdk 目錄文件夾
mkdir -p work/build/riscv-gnu-toolchain/riscv32-unknown-elf/prefix/
// 在 hbird-e-sdk 目錄下創建上述這個 prefix 目錄
cd work/build/riscv-gnu-toolchain/riscv32-unknown-elf/prefix
// 進入到 prefix 該目錄
ln -s ~/gnu-mcu-eclipse/riscv-none-gcc/7.2.0-2-20180111-2230/bin bin
// 將用戶根目錄下解壓的 GNU
Toolchain 目錄下的 bin 目錄作為軟鏈接鏈接到
// 該 prefix 目錄下 注意:此步驟完成工具鏈的安裝之后,后續開發程序示例無需重復執行此步驟。
Verilog 仿真測試
使用E203 源代碼運行基于 Verilog 的仿真測試程序,可以使用如下步驟進行。
**步驟一:**準備好自己的電腦環境,可以在公司的服務器環境中運行,如果是個人用戶,推薦如下配置:
(1)本項目使用 Ubuntu 18操作系統
(2)由于 Linux 操作系統的版本眾多,推薦使用 Ubuntu 18.04 版本的 Linux 操作系統有關如何安裝 Ubuntu 操作系統本文不做介紹,有關 Linux 的基本使用本文也不做介紹,請用戶自行查閱資料學習。
**步驟二:**將 e200_opensource 項目下載到本機 Linux 環境中,使用如下命令:
git clone https://github.com/SI-RISCV/e200_opensource.git
**步驟三:**編譯 RTL 代碼,使用如下命令:
cd /vsim
// 進入到 e200_opensource 目錄文件夾下面的 vsim 目錄。
make install CORE=e203
// 運行該命令指明需要為 e203 進行編譯,該命令會在 vsim 目錄下生成一個 install
// 子文件夾,在其中放置所需的腳本,且將腳本中的關鍵字設置為 e203。
make compile
// 編譯 Core 和 SoC 的 RTL 代碼
// 注意:在此步驟之中,編譯 Verilog 代碼需要使用到仿真器工具,在 github 上的 Makefile
// 中使用的是免費的 iverilog 工具,如果需要使用商業 EDA 的用戶需要自行修改 Makefile 中的
// 對于免費的 iverilog 工具如何安裝請用戶在互聯網上自行搜索。
步驟四:運行默認的一個 testcase(測試用例),使用如下命令:
make run_test
注意:在此步驟中,運行仿真需要使用仿真器工具,在 github 上的 Makefile 中此部分空缺,實際運行的是”echo PASS”命令打印一個虛假的 PASS 到 log 文件中。用戶需要使用真正的仿真器運行仿真得到真實的運行結果。
注意:make run_test 將執行 e200_opensource/riscv-tools/
riscv-tests/isa/generated 目錄中的一個默認 testcase,如果希望運行所有的
回歸測試,請參見步驟五。
當用make去編譯Makefile文件的時候,如果有出現/bin/sh:Syntax error: 的錯誤時候,一般是當前默認的shell不正確的原因首先可以用命令ls -l /bin/sh 看看當前默認的是什么shell,Ubuntu一般默認為bash再用要修改默認的shell,可以采用命令sudo dpkg-reconfigure dash。會出現如下窗口,然后選擇否。
步驟五:運行回歸(regression)測試集,使用如下命令:
make regress_run
注意:這使用 e200_opensource/ riscv-tools/riscv-tests/isa/generated 目錄中 testcases,逐個的運行 testcase。
步驟六:查看回歸測試結果: make
regress_collect // 該命令將收集步驟五中運行的測試集的結果,將打印若干行的結果,每一行對應一個測 // 試用例,如果那個測試用例運行通過,那一行則打印的 PASS,如果運行失敗,那一行則 // 打印的 FAIL。如圖 所示
代碼編譯下載
工程導入
在Opensource
目錄下FPGA文件夾創建一個新的文件夾gowin,
將相關的rtl文件拷入,并對top文件進行的對應修改,文件目錄如下圖:
打開gowin軟件,創建工程,選擇好對應的器件并導入文件。導入具體軟件操作說明參見SUG100-1.7_Gowin云源軟件用戶指南,本項目中導入之后界面如下:
程序編譯和下載
修改完程序之后保存點擊Process 點擊Place&Route編譯,編譯通過之后前面會出現綠
.編譯通過后雙擊Program Device彈出下載窗口,點擊開始下載
運行和調試軟件
HBird-E-SDK介紹
HBird-E-SDK 并不是一個軟件,它本質上是由一些 Makefile、板級支持包(Board Support Package,
BSP)、腳本和軟件示例組成的一套開發環境。HBird-E-SDK 基于 Linux 平臺,使用標準的 RISC-V GNU
工具鏈對程序進行編譯,使用 OpenOCD+GDB 將程序下載到硬件平臺中并進行調試。
HBird-E-SDK 代碼結構
編譯 demo_gpio 示例程序,使用如下命令: cd // 進入 hbird-e-sdk 目錄文件夾 make dasm PROGRAM=demo_gpio NANO_PFLOAT=0 //注意:由于 Demo_GPIO 程序的 printf 函數不需要輸出浮點數,上述選項 NANO_PFLOAT=0 指明 newlib-nano 的 printf 函數無需支持浮點數,請參見《RISC-V 架構與嵌入式開發快速入門》第 11 章了解相關信 息。
將編譯好的
demo_gpio 程序下載至 FPGA 原型開發板中,使用如下命令:
很遺憾,我這里因為使用的下載器有問題,最終還是沒有成功下載MCU bin文件。
但是基本的流程走通了。時間有限試用期已經結束了。期待下一次還會有繼續!
-
高云半導體
+關注
關注
20文章
123瀏覽量
50467 -
RISC-V
+關注
關注
44文章
2229瀏覽量
46026 -
E203
+關注
關注
0文章
8瀏覽量
110
發布評論請先 登錄
相關推薦
評論