資料介紹
描述
大家都知道現(xiàn)在的處理器是RISC-V,即使它本身不是處理器,基于 RISC-V 的板的數(shù)量也越來越多。要了解其中的原因,我們必須了解什么是 RISC-V,以及它與 Arm? 或 x86 的不同之處。首先我們要知道RISC-V不是處理器,像Arm或者x86,它們是指令集架構(gòu)(ISA),特別是開放指令集架構(gòu),開放的字就大了RISC-V 和 Arm 或 x86 之間的區(qū)別。我將舉例說明,如果我是一名 ASIC 設(shè)計(jì)師,并且我想在我的設(shè)計(jì)中集成一個處理器,我有兩個選擇,第一個也是迄今為止最常見的一個是支付給 Arm Limited,它的所有者是Arm Architecture,讓我設(shè)計(jì)一個使用他們的架構(gòu)的處理器,并符合他們的指令集。這將使我的設(shè)計(jì)到達(dá)大量的開發(fā)人員,他們的設(shè)計(jì)符合 Arm 架構(gòu)。您擁有的第二個選項(xiàng)是設(shè)計(jì)符合 RISC-V 的處理器。在這種情況下,由于架構(gòu)是開放的,因此您不必花錢設(shè)計(jì)兼容的處理器。與所有開源項(xiàng)目一樣,支持該架構(gòu)的社區(qū)正在不斷增長,以及參與開發(fā)的公司。這些公司之一是 Microchip。
正如我們在 Arm Cortex?-M1 或最近的 Arm Cortex-M3 中看到的那樣,還有大量基于 RISC-V 架構(gòu)的軟核可以在 FPGA 上實(shí)現(xiàn)。在這篇文章中,我們將使用可用于 Microchip FPGA 的內(nèi)核Mi-V內(nèi)核來開發(fā)基于 RISC-V 的示例設(shè)計(jì)。
Microchip 提供多個基于 RISC-V 架構(gòu)的內(nèi)核。對于這個項(xiàng)目,我們將使用最新開發(fā)的內(nèi)核 MiV_RV32,它是最輕的,因此我們將能夠在 Hello FPGA Kit 中進(jìn)行設(shè)計(jì),并且具有可用的 APB3 和 AHB 接口,這對于連接 eNVM 和一些外圍設(shè)備。

RISC-V 的另一個特點(diǎn)是高可配置性,我們可以根據(jù)它們實(shí)現(xiàn)的擴(kuò)展找到不同的基于 RISC-V 的內(nèi)核。核心中可用的擴(kuò)展對應(yīng)于您可以在 RV32 之后找到的字母,例如 RV32IMAF 具有 I(基本整數(shù)指令集)、M(整數(shù)乘法和除法的標(biāo)準(zhǔn)擴(kuò)展)、A(原子標(biāo)準(zhǔn)擴(kuò)展指令)和 F(單精度浮點(diǎn)的標(biāo)準(zhǔn)擴(kuò)展)。MiV_RV32 內(nèi)核可用的擴(kuò)展是 IMC,C 對應(yīng)于(壓縮指令的標(biāo)準(zhǔn)擴(kuò)展)。
我們要開發(fā)的項(xiàng)目將基于 Mi-V_RV32IMC,由于 SmartFusion2 SoC 有一個微控制器子系統(tǒng) (MSS),我們將 Mi-V 處理器連接到 MSS 以使用非易失性存儲器 (eNVM ),以及可用的 SRAM。此外,我們將添加一個能夠讀取按鈕狀態(tài)的 GPIO 外設(shè)和一個脈沖寬度調(diào)制 (PWM) 外設(shè)來管理板上的三個 LED。在這種情況下,將禁用 Arm Cortex-M3 處理器以節(jié)省能源。
首先,我們必須在 Libero 設(shè)計(jì)套件上創(chuàng)建一個新項(xiàng)目,選擇一個名稱,這次,由于我們不會使用 Arm Cortex-M3,我們將選擇 IGLOO?2 FPGA 作為一部分,即兼容的 FPGA使用 SmartFusion2 SoC。
?

接下來在電壓選擇器上,我們將為 PLL 和 I/O 設(shè)置選擇 3.3。現(xiàn)在在下一個窗口中,由于我們將使用 MSS,我們將選擇選項(xiàng)Create a system builder-based design 。

創(chuàng)建項(xiàng)目后,Libero? 設(shè)計(jì)套件會詢問我們系統(tǒng)構(gòu)建器的名稱,在我的例子中,我選擇 top 作為名稱。接下來,將打開 MSS 配置向?qū)Р@示內(nèi)存選擇窗口。在 MSS 中,我們將作為存儲程序的 eNVM 和執(zhí)行程序的 SRAM,因此我們將選擇這兩個選項(xiàng)。

現(xiàn)在我們必須創(chuàng)建一個內(nèi)存客戶端,目前我們將選擇選項(xiàng)內(nèi)容用 0 填充,因?yàn)樯院笪覀儗⑹褂?SoftConsole 上生成的 hex 文件初始化內(nèi)存。通過單擊下一步,我們將選擇外圍設(shè)備。在這種情況下,外圍設(shè)備是 MSS 和結(jié)構(gòu)之間的接口。我們必須選中窗口頂部的框,單擊下一步。

在下一個窗口中,我們可以選擇我們想要使用的時鐘電路。Hello FPGA 套件有一個板載 50 MHz 振蕩器,我們將使用它來為 MSS 時鐘電路供電。MSS 的輸出時鐘將連接到所有結(jié)構(gòu)模塊。選擇合適的時鐘速度很重要,因?yàn)?Mi-V 內(nèi)核將在結(jié)構(gòu)上實(shí)現(xiàn),我們可能會遇到時序問題。現(xiàn)在,我們將為 50 Mhz 的結(jié)構(gòu)選擇一個時鐘。

其余窗口將保持默認(rèn)。向?qū)瓿珊?,我們將擁有一個包含 MSS 的 SmartDesign。現(xiàn)在我們必須在設(shè)計(jì)中添加我們需要的其余塊。我們將從 Mi-V_RV32 內(nèi)核開始。我們可以在目錄選項(xiàng)卡的處理器文件夾中找到它。核心的配置器將被打開。在第一個選項(xiàng)卡上,我們必須選擇要添加到核心的擴(kuò)展,在本例中為 IMC,以及乘法器的位置。此外,我們可以選擇我們需要的接口選項(xiàng),在這種情況下,APB_master 用于外圍設(shè)備,AHB Master 用于內(nèi)存。復(fù)位向量地址將被配置為 MSS 上 eNVM 內(nèi)存上的第一個地址,即 0x6000 0000。

在 Memory Map 選項(xiàng)卡上,我們必須配置接口的地址范圍。由于 MSS 有預(yù)定義地址,我們必須將 AHB Master 地址配置在 0x2000 0000 到 0x6FFF FFFF 的范圍內(nèi),連接到 APB 總線的外設(shè)將位于 0x7000 0000 到 0x7FFF FFFF 的范圍內(nèi)。

現(xiàn)在 Mi-V 內(nèi)核已配置并添加到設(shè)計(jì)中。現(xiàn)在我們必須添加一個帶有兩個啟用 APB 插槽的 CoreAPB3 來連接一個帶有三個通道的 corePWM,以及一個帶有 2 個 GPIO 的 coreGPIO 來連接按鈕。coreAPB3 的地址寬度設(shè)置為 16 位。

最后,為了能夠調(diào)試 Mi-V 內(nèi)核,我們必須添加一個 coreJTAG。將所有內(nèi)核添加到 SmartDesign 后,我們必須像下圖一樣連接所有內(nèi)核。為避免在設(shè)計(jì)規(guī)則檢查中出現(xiàn)警告,請記住將所有未連接的輸出標(biāo)記為未使用。

完成所有設(shè)計(jì)后,我們必須檢查設(shè)計(jì)規(guī)則并生成組件。然后我們可以綜合設(shè)計(jì)。
綜合設(shè)計(jì)后,我們可以設(shè)置 IO 約束以選擇輸入和輸出引腳。我們必須打開約束管理器,并使用 IO 編輯器通過單擊編輯來編輯約束。在 IO 編輯器窗口中,我們必須根據(jù)下圖選擇引腳。

當(dāng)所有管腳都配置好后,保存并退出 IO Editor,現(xiàn)在我們可以在設(shè)計(jì)流程上實(shí)現(xiàn)設(shè)計(jì)執(zhí)行Place and Route 。
現(xiàn)在,由于設(shè)計(jì)是在結(jié)構(gòu)上實(shí)現(xiàn)的,我們必須檢查設(shè)計(jì)的時序。根據(jù)手冊(第 7 頁),SmartFusion2 SoC 上的 Mi-V 可以達(dá)到 49 到 65 MHz 之間,具體取決于啟用的功能。在這種情況下,設(shè)計(jì)以 50 MHz 運(yùn)行,因此顯然我們不會有任何問題。要檢查時序,首先我們必須定義設(shè)計(jì)的時序約束。為此,我們將讓 Libero 設(shè)計(jì)套件選擇時鐘,并設(shè)置相應(yīng)的錯誤路徑。在 Constraint Manager 中,我們將導(dǎo)航到 Timing 選項(xiàng)卡,然后單擊Derive constraints 。這將為我們的設(shè)計(jì)生成一個包含時序約束的文件。我們可以檢查這個文件并驗(yàn)證輸入時鐘和來自 CCC 的輸出時鐘是否正確定義。
現(xiàn)在,在設(shè)計(jì)流程中,我們可以執(zhí)行驗(yàn)證時序命令并等待驗(yàn)證完成。然后我們可以檢查一個列表,其中包含根據(jù)最差延遲排序的信號。

我們可以看到最慢的信號有 0.608ns 的松弛。
現(xiàn)在,我們必須生成要在軟件話務(wù)臺上使用的所有軟件工件。為此,我們必須打開 Libero 設(shè)計(jì)套件默認(rèn)安裝的固件目錄。我們可以看到我們計(jì)算機(jī)上所有驅(qū)動程序的列表。在這種情況下,我們需要為 CoreGPIO、CorePWM 和 MiV_RV32 硬件抽象層 (HAL) 生成驅(qū)動程序。

此外,我們將為 corePWM 生成示例項(xiàng)目 PWM Slow Blink 以將其用作模板。
在軟件話務(wù)臺上,我們將導(dǎo)入示例項(xiàng)目,我們必須進(jìn)行一些更改。首先,我們必須根據(jù)地址映射更改 hw_platform 上的地址。

我們可以看到coreGPIO在地址0x7000 0000,corePWM在地址0x7000 1000。在hw_platform.h文件中我們要修改corePWM和coreGPIO對應(yīng)的地址,還要修改SYS_CLK_FREQ的定義到相應(yīng)的頻率。
#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
現(xiàn)在,我們必須更改鏈接器文件以使 RAM 和 ROM 地址與設(shè)計(jì)匹配。我們將使用的鏈接器是 microsemi-riscv-igloo2.ld,因?yàn)樗菑?eNVM 執(zhí)行代碼的模板。在代碼中,我們必須更改 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 */
最后,在項(xiàng)目配置上,我們還要再做兩處改動。首先,在 C/C++ Build > Settings 上,在鏈接器配置上,我們必須為Release構(gòu)建配置選擇鏈接器文件 microsemi-riscv-igloo2.ld。

最后,在 Flash 圖像創(chuàng)建窗口中,我們必須添加標(biāo)志 –change-section-lma *-0x60000000

現(xiàn)在我們可以構(gòu)建項(xiàng)目以生成 hex 文件。
生成 hex 文件后,我們必須回到 Libero 設(shè)計(jì)套件,并使用生成的 hex 文件初始化 eNVM 內(nèi)存。

最后生成比特流,并將其導(dǎo)出為 DAT 格式。
現(xiàn)在,我們必須打開 Hello GUI 應(yīng)用程序?qū)⒃O(shè)計(jì)發(fā)送到 Hello FPGA Kit,我們將看到 LD1 是如何緩慢閃爍的。
雖然 RISC-V 是開源的并且可以免費(fèi)使用,但也有一些公司已經(jīng)開發(fā)了內(nèi)核并且可以集成到其他設(shè)備中。Microchip 的PolarFire? SoC設(shè)備就是這種情況,它們是基于 SiFive 處理器(SiFive 公司的 RISC-V 處理器)的SOC。
我們生活在硅公司的不斷變化的時代,盡管 Arm 在該領(lǐng)域擁有大量(大量、大量……)設(shè)備,但 RISC-V 使新設(shè)備的開發(fā)成本更低,而且該標(biāo)準(zhǔn)提供的可配置性可以提供幫助在不需要完整功能的芯片上節(jié)省硅。期待使用 RISC-V 的新 SoC。
- SLMLET,具有混合RISC-V內(nèi)核,高速IF和eFPGA的S 2次下載
- RISC-V和RISC-V AI的未來(特邀講座) 16次下載
- RISC-V設(shè)計(jì)支持工具,支持RISC-V技術(shù)的基礎(chǔ) 12次下載
- 如何構(gòu)建RISC-V嵌入式 3次下載
- GW2A FPGA開發(fā)板RISC V設(shè)計(jì)快速應(yīng)用手冊
- 從零開始寫RISC-V處理器 104次下載
- RISC-V MCU開發(fā) (二):工程創(chuàng)建與管理
- 基于FPGA的無線通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 46次下載
- 系統(tǒng)可編程閃存中的RISC微控制器LGT8XM 0次下載
- 基于FPGA的PID系統(tǒng)源碼下載 80次下載
- 基于FPGA和DSP的機(jī)載圖形顯示系統(tǒng) 36次下載
- 基于FPGA的多圖片動態(tài)顯示VGA系統(tǒng) 27次下載
- 荔枝糖RISC-V開發(fā)板原理圖 51次下載
- 如何在FPGA設(shè)計(jì)中創(chuàng)建一個中斷事件 6次下載
- 基于FPGA的mif文件創(chuàng)建與使用
- 若貝集成電路設(shè)計(jì)和RISC-V雙系統(tǒng)平臺 71次閱讀
- RISC-V筆記——基礎(chǔ) 515次閱讀
- RISC-V 與 ARM的常見問題解答 568次閱讀
- 一文讀懂RISC-V與ARM 1070次閱讀
- fpga和risc-v處理器的區(qū)別 1205次閱讀
- 如何創(chuàng)建FPGA控制的機(jī)器人手臂 1152次閱讀
- 基于形式的高效 RISC-V 處理器驗(yàn)證方法 692次閱讀
- RISC-V,迎來新創(chuàng)新 632次閱讀
- RISC-V SIG創(chuàng)建專屬郵件列表和論壇板塊 688次閱讀
- RISC-V指令集架構(gòu)特點(diǎn) 3676次閱讀
- 如何創(chuàng)建FPGA內(nèi)核/SoC所需的所有常用組件 1649次閱讀
- RISC-V SIG成功將Chromium等桌面軟件適配到openEuler RISC-V 2272次閱讀
- 介紹基于RISC-V的芯片 1.2w次閱讀
- FPGA創(chuàng)建一個程序生成規(guī)范 828次閱讀
- 創(chuàng)建可靠FPGA設(shè)計(jì)的10大技巧 761次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論