資料介紹
描述
大家都知道現在的處理器是RISC-V,即使它本身不是處理器,基于 RISC-V 的板的數量也越來越多。要了解其中的原因,我們必須了解什么是 RISC-V,以及它與 Arm? 或 x86 的不同之處。首先我們要知道RISC-V不是處理器,像Arm或者x86,它們是指令集架構(ISA),特別是開放指令集架構,開放的字就大了RISC-V 和 Arm 或 x86 之間的區別。我將舉例說明,如果我是一名 ASIC 設計師,并且我想在我的設計中集成一個處理器,我有兩個選擇,第一個也是迄今為止最常見的一個是支付給 Arm Limited,它的所有者是Arm Architecture,讓我設計一個使用他們的架構的處理器,并符合他們的指令集。這將使我的設計到達大量的開發人員,他們的設計符合 Arm 架構。您擁有的第二個選項是設計符合 RISC-V 的處理器。在這種情況下,由于架構是開放的,因此您不必花錢設計兼容的處理器。與所有開源項目一樣,支持該架構的社區正在不斷增長,以及參與開發的公司。這些公司之一是 Microchip。
正如我們在 Arm Cortex?-M1 或最近的 Arm Cortex-M3 中看到的那樣,還有大量基于 RISC-V 架構的軟核可以在 FPGA 上實現。在這篇文章中,我們將使用可用于 Microchip FPGA 的內核Mi-V內核來開發基于 RISC-V 的示例設計。
Microchip 提供多個基于 RISC-V 架構的內核。對于這個項目,我們將使用最新開發的內核 MiV_RV32,它是最輕的,因此我們將能夠在 Hello FPGA Kit 中進行設計,并且具有可用的 APB3 和 AHB 接口,這對于連接 eNVM 和一些外圍設備。
RISC-V 的另一個特點是高可配置性,我們可以根據它們實現的擴展找到不同的基于 RISC-V 的內核。核心中可用的擴展對應于您可以在 RV32 之后找到的字母,例如 RV32IMAF 具有 I(基本整數指令集)、M(整數乘法和除法的標準擴展)、A(原子標準擴展指令)和 F(單精度浮點的標準擴展)。MiV_RV32 內核可用的擴展是 IMC,C 對應于(壓縮指令的標準擴展)。
我們要開發的項目將基于 Mi-V_RV32IMC,由于 SmartFusion2 SoC 有一個微控制器子系統 (MSS),我們將 Mi-V 處理器連接到 MSS 以使用非易失性存儲器 (eNVM ),以及可用的 SRAM。此外,我們將添加一個能夠讀取按鈕狀態的 GPIO 外設和一個脈沖寬度調制 (PWM) 外設來管理板上的三個 LED。在這種情況下,將禁用 Arm Cortex-M3 處理器以節省能源。
首先,我們必須在 Libero 設計套件上創建一個新項目,選擇一個名稱,這次,由于我們不會使用 Arm Cortex-M3,我們將選擇 IGLOO?2 FPGA 作為一部分,即兼容的 FPGA使用 SmartFusion2 SoC。
?
接下來在電壓選擇器上,我們將為 PLL 和 I/O 設置選擇 3.3。現在在下一個窗口中,由于我們將使用 MSS,我們將選擇選項Create a system builder-based design 。
創建項目后,Libero? 設計套件會詢問我們系統構建器的名稱,在我的例子中,我選擇 top 作為名稱。接下來,將打開 MSS 配置向導并顯示內存選擇窗口。在 MSS 中,我們將作為存儲程序的 eNVM 和執行程序的 SRAM,因此我們將選擇這兩個選項。
現在我們必須創建一個內存客戶端,目前我們將選擇選項內容用 0 填充,因為稍后我們將使用 SoftConsole 上生成的 hex 文件初始化內存。通過單擊下一步,我們將選擇外圍設備。在這種情況下,外圍設備是 MSS 和結構之間的接口。我們必須選中窗口頂部的框,單擊下一步。
在下一個窗口中,我們可以選擇我們想要使用的時鐘電路。Hello FPGA 套件有一個板載 50 MHz 振蕩器,我們將使用它來為 MSS 時鐘電路供電。MSS 的輸出時鐘將連接到所有結構模塊。選擇合適的時鐘速度很重要,因為 Mi-V 內核將在結構上實現,我們可能會遇到時序問題。現在,我們將為 50 Mhz 的結構選擇一個時鐘。
其余窗口將保持默認。向導完成后,我們將擁有一個包含 MSS 的 SmartDesign。現在我們必須在設計中添加我們需要的其余塊。我們將從 Mi-V_RV32 內核開始。我們可以在目錄選項卡的處理器文件夾中找到它。核心的配置器將被打開。在第一個選項卡上,我們必須選擇要添加到核心的擴展,在本例中為 IMC,以及乘法器的位置。此外,我們可以選擇我們需要的接口選項,在這種情況下,APB_master 用于外圍設備,AHB Master 用于內存。復位向量地址將被配置為 MSS 上 eNVM 內存上的第一個地址,即 0x6000 0000。
在 Memory Map 選項卡上,我們必須配置接口的地址范圍。由于 MSS 有預定義地址,我們必須將 AHB Master 地址配置在 0x2000 0000 到 0x6FFF FFFF 的范圍內,連接到 APB 總線的外設將位于 0x7000 0000 到 0x7FFF FFFF 的范圍內。
現在 Mi-V 內核已配置并添加到設計中。現在我們必須添加一個帶有兩個啟用 APB 插槽的 CoreAPB3 來連接一個帶有三個通道的 corePWM,以及一個帶有 2 個 GPIO 的 coreGPIO 來連接按鈕。coreAPB3 的地址寬度設置為 16 位。
最后,為了能夠調試 Mi-V 內核,我們必須添加一個 coreJTAG。將所有內核添加到 SmartDesign 后,我們必須像下圖一樣連接所有內核。為避免在設計規則檢查中出現警告,請記住將所有未連接的輸出標記為未使用。
完成所有設計后,我們必須檢查設計規則并生成組件。然后我們可以綜合設計。
綜合設計后,我們可以設置 IO 約束以選擇輸入和輸出引腳。我們必須打開約束管理器,并使用 IO 編輯器通過單擊編輯來編輯約束。在 IO 編輯器窗口中,我們必須根據下圖選擇引腳。
當所有管腳都配置好后,保存并退出 IO Editor,現在我們可以在設計流程上實現設計執行Place and Route 。
現在,由于設計是在結構上實現的,我們必須檢查設計的時序。根據手冊(第 7 頁),SmartFusion2 SoC 上的 Mi-V 可以達到 49 到 65 MHz 之間,具體取決于啟用的功能。在這種情況下,設計以 50 MHz 運行,因此顯然我們不會有任何問題。要檢查時序,首先我們必須定義設計的時序約束。為此,我們將讓 Libero 設計套件選擇時鐘,并設置相應的錯誤路徑。在 Constraint Manager 中,我們將導航到 Timing 選項卡,然后單擊Derive constraints 。這將為我們的設計生成一個包含時序約束的文件。我們可以檢查這個文件并驗證輸入時鐘和來自 CCC 的輸出時鐘是否正確定義。
現在,在設計流程中,我們可以執行驗證時序命令并等待驗證完成。然后我們可以檢查一個列表,其中包含根據最差延遲排序的信號。
我們可以看到最慢的信號有 0.608ns 的松弛。
現在,我們必須生成要在軟件話務臺上使用的所有軟件工件。為此,我們必須打開 Libero 設計套件默認安裝的固件目錄。我們可以看到我們計算機上所有驅動程序的列表。在這種情況下,我們需要為 CoreGPIO、CorePWM 和 MiV_RV32 硬件抽象層 (HAL) 生成驅動程序。
此外,我們將為 corePWM 生成示例項目 PWM Slow Blink 以將其用作模板。
在軟件話務臺上,我們將導入示例項目,我們必須進行一些更改。首先,我們必須根據地址映射更改 hw_platform 上的地址。
我們可以看到coreGPIO在地址0x7000 0000,corePWM在地址0x7000 1000。在hw_platform.h文件中我們要修改corePWM和coreGPIO對應的地址,還要修改SYS_CLK_FREQ的定義到相應的頻率。
#ifndef HW_PLATFORM_H
#define HW_PLATFORM_H
/***************************************************************************//**
* Soft-processor clock definition
* This is the only clock brought over from the Mi-V Soft processor Libero design.
*/
#define SYS_CLK_FREQ 25000000UL
/***************************************************************************//**
* Non-memory Peripheral base addresses
* Format of define is:
* <corename>_<instance>_BASE_ADDR
*/
#define COREGPIO_BASE_ADDR 0x70000000UL
#define COREPWM_BASE_ADDR 0x70001000UL
現在,我們必須更改鏈接器文件以使 RAM 和 ROM 地址與設計匹配。我們將使用的鏈接器是 microsemi-riscv-igloo2.ld,因為它是從 eNVM 執行代碼的模板。在代碼中,我們必須更改 eNVM 和 ram 地址。
MEMORY
{
envm (rx) : ORIGIN = 0x60000000, LENGTH = 240k
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64k
}
RAM_START_ADDRESS = 0x20000000; /* Must be the same value MEMORY region ram ORIGIN above. */
RAM_SIZE = 64k; /* Must be the same value MEMORY region ram LENGTH above. */
STACK_SIZE = 2k; /* needs to be calculated for your application */
HEAP_SIZE = 2k; /* needs to be calculated for your application */
最后,在項目配置上,我們還要再做兩處改動。首先,在 C/C++ Build > Settings 上,在鏈接器配置上,我們必須為Release構建配置選擇鏈接器文件 microsemi-riscv-igloo2.ld。
最后,在 Flash 圖像創建窗口中,我們必須添加標志 –change-section-lma *-0x60000000
現在我們可以構建項目以生成 hex 文件。
生成 hex 文件后,我們必須回到 Libero 設計套件,并使用生成的 hex 文件初始化 eNVM 內存。
最后生成比特流,并將其導出為 DAT 格式。
現在,我們必須打開 Hello GUI 應用程序將設計發送到 Hello FPGA Kit,我們將看到 LD1 是如何緩慢閃爍的。
雖然 RISC-V 是開源的并且可以免費使用,但也有一些公司已經開發了內核并且可以集成到其他設備中。Microchip 的PolarFire? SoC設備就是這種情況,它們是基于 SiFive 處理器(SiFive 公司的 RISC-V 處理器)的SOC。
我們生活在硅公司的不斷變化的時代,盡管 Arm 在該領域擁有大量(大量、大量……)設備,但 RISC-V 使新設備的開發成本更低,而且該標準提供的可配置性可以提供幫助在不需要完整功能的芯片上節省硅。期待使用 RISC-V 的新 SoC。
- SLMLET,具有混合RISC-V內核,高速IF和eFPGA的S 2次下載
- RISC-V和RISC-V AI的未來(特邀講座) 11次下載
- RISC-V設計支持工具,支持RISC-V技術的基礎 12次下載
- 如何構建RISC-V嵌入式 2次下載
- GW2A FPGA開發板RISC V設計快速應用手冊
- 從零開始寫RISC-V處理器 99次下載
- RISC-V MCU開發 (二):工程創建與管理
- 基于FPGA的無線通信系統設計與實現 46次下載
- 系統可編程閃存中的RISC微控制器LGT8XM 0次下載
- 基于FPGA的PID系統源碼下載 79次下載
- 基于FPGA和DSP的機載圖形顯示系統 36次下載
- 基于FPGA的多圖片動態顯示VGA系統 27次下載
- 荔枝糖RISC-V開發板原理圖 51次下載
- 如何在FPGA設計中創建一個中斷事件 6次下載
- 基于FPGA的mif文件創建與使用
- RISC-V 與 ARM的常見問題解答 413次閱讀
- 一文讀懂RISC-V與ARM 707次閱讀
- fpga和risc-v處理器的區別 744次閱讀
- 如何創建FPGA控制的機器人手臂 899次閱讀
- 基于形式的高效 RISC-V 處理器驗證方法 549次閱讀
- RISC-V,迎來新創新 511次閱讀
- 關于RISC-V定制化,定制計算的好處和優勢以及行業應用有哪些呢? 1272次閱讀
- RISC-V SIG創建專屬郵件列表和論壇板塊 565次閱讀
- RISC-V指令集架構特點 3225次閱讀
- 如何創建FPGA內核/SoC所需的所有常用組件 1443次閱讀
- RISC-V SIG成功將Chromium等桌面軟件適配到openEuler RISC-V 2018次閱讀
- RISC-V運動到底是什么?數據中心芯片中的RISC-V 2671次閱讀
- 介紹基于RISC-V的芯片 1.2w次閱讀
- FPGA創建一個程序生成規范 776次閱讀
- 創建可靠FPGA設計的10大技巧 695次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多