資料介紹
描述
大家都知道現(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 設計師,并且我想在我的設計中集成一個處理器,我有兩個選擇,第一個也是迄今為止最常見的一個是支付給 Arm Limited,它的所有者是Arm Architecture,讓我設計一個使用他們的架構(gòu)的處理器,并符合他們的指令集。這將使我的設計到達大量的開發(fā)人員,他們的設計符合 Arm 架構(gòu)。您擁有的第二個選項是設計符合 RISC-V 的處理器。在這種情況下,由于架構(gòu)是開放的,因此您不必花錢設計兼容的處理器。與所有開源項目一樣,支持該架構(gòu)的社區(qū)正在不斷增長,以及參與開發(fā)的公司。這些公司之一是 Microchip。
正如我們在 Arm Cortex?-M1 或最近的 Arm Cortex-M3 中看到的那樣,還有大量基于 RISC-V 架構(gòu)的軟核可以在 FPGA 上實現(xiàn)。在這篇文章中,我們將使用可用于 Microchip FPGA 的內(nèi)核Mi-V內(nèi)核來開發(fā)基于 RISC-V 的示例設計。
Microchip 提供多個基于 RISC-V 架構(gòu)的內(nèi)核。對于這個項目,我們將使用最新開發(fā)的內(nèi)核 MiV_RV32,它是最輕的,因此我們將能夠在 Hello FPGA Kit 中進行設計,并且具有可用的 APB3 和 AHB 接口,這對于連接 eNVM 和一些外圍設備。
RISC-V 的另一個特點是高可配置性,我們可以根據(jù)它們實現(xiàn)的擴展找到不同的基于 RISC-V 的內(nèi)核。核心中可用的擴展對應于您可以在 RV32 之后找到的字母,例如 RV32IMAF 具有 I(基本整數(shù)指令集)、M(整數(shù)乘法和除法的標準擴展)、A(原子標準擴展指令)和 F(單精度浮點的標準擴展)。MiV_RV32 內(nèi)核可用的擴展是 IMC,C 對應于(壓縮指令的標準擴展)。
我們要開發(fā)的項目將基于 Mi-V_RV32IMC,由于 SmartFusion2 SoC 有一個微控制器子系統(tǒng) (MSS),我們將 Mi-V 處理器連接到 MSS 以使用非易失性存儲器 (eNVM ),以及可用的 SRAM。此外,我們將添加一個能夠讀取按鈕狀態(tài)的 GPIO 外設和一個脈沖寬度調(diào)制 (PWM) 外設來管理板上的三個 LED。在這種情況下,將禁用 Arm Cortex-M3 處理器以節(jié)省能源。
首先,我們必須在 Libero 設計套件上創(chuàng)建一個新項目,選擇一個名稱,這次,由于我們不會使用 Arm Cortex-M3,我們將選擇 IGLOO?2 FPGA 作為一部分,即兼容的 FPGA使用 SmartFusion2 SoC。
?
接下來在電壓選擇器上,我們將為 PLL 和 I/O 設置選擇 3.3。現(xiàn)在在下一個窗口中,由于我們將使用 MSS,我們將選擇選項Create a system builder-based design 。
創(chuàng)建項目后,Libero? 設計套件會詢問我們系統(tǒng)構(gòu)建器的名稱,在我的例子中,我選擇 top 作為名稱。接下來,將打開 MSS 配置向?qū)Р@示內(nèi)存選擇窗口。在 MSS 中,我們將作為存儲程序的 eNVM 和執(zhí)行程序的 SRAM,因此我們將選擇這兩個選項。
現(xiàn)在我們必須創(chuàng)建一個內(nèi)存客戶端,目前我們將選擇選項內(nèi)容用 0 填充,因為稍后我們將使用 SoftConsole 上生成的 hex 文件初始化內(nèi)存。通過單擊下一步,我們將選擇外圍設備。在這種情況下,外圍設備是 MSS 和結(jié)構(gòu)之間的接口。我們必須選中窗口頂部的框,單擊下一步。
在下一個窗口中,我們可以選擇我們想要使用的時鐘電路。Hello FPGA 套件有一個板載 50 MHz 振蕩器,我們將使用它來為 MSS 時鐘電路供電。MSS 的輸出時鐘將連接到所有結(jié)構(gòu)模塊。選擇合適的時鐘速度很重要,因為 Mi-V 內(nèi)核將在結(jié)構(gòu)上實現(xiàn),我們可能會遇到時序問題。現(xiàn)在,我們將為 50 Mhz 的結(jié)構(gòu)選擇一個時鐘。
其余窗口將保持默認。向?qū)瓿珊?,我們將擁有一個包含 MSS 的 SmartDesign。現(xiàn)在我們必須在設計中添加我們需要的其余塊。我們將從 Mi-V_RV32 內(nèi)核開始。我們可以在目錄選項卡的處理器文件夾中找到它。核心的配置器將被打開。在第一個選項卡上,我們必須選擇要添加到核心的擴展,在本例中為 IMC,以及乘法器的位置。此外,我們可以選擇我們需要的接口選項,在這種情況下,APB_master 用于外圍設備,AHB Master 用于內(nèi)存。復位向量地址將被配置為 MSS 上 eNVM 內(nèi)存上的第一個地址,即 0x6000 0000。
在 Memory Map 選項卡上,我們必須配置接口的地址范圍。由于 MSS 有預定義地址,我們必須將 AHB Master 地址配置在 0x2000 0000 到 0x6FFF FFFF 的范圍內(nèi),連接到 APB 總線的外設將位于 0x7000 0000 到 0x7FFF FFFF 的范圍內(nèi)。
現(xiàn)在 Mi-V 內(nèi)核已配置并添加到設計中。現(xiàn)在我們必須添加一個帶有兩個啟用 APB 插槽的 CoreAPB3 來連接一個帶有三個通道的 corePWM,以及一個帶有 2 個 GPIO 的 coreGPIO 來連接按鈕。coreAPB3 的地址寬度設置為 16 位。
最后,為了能夠調(diào)試 Mi-V 內(nèi)核,我們必須添加一個 coreJTAG。將所有內(nèi)核添加到 SmartDesign 后,我們必須像下圖一樣連接所有內(nèi)核。為避免在設計規(guī)則檢查中出現(xiàn)警告,請記住將所有未連接的輸出標記為未使用。
完成所有設計后,我們必須檢查設計規(guī)則并生成組件。然后我們可以綜合設計。
綜合設計后,我們可以設置 IO 約束以選擇輸入和輸出引腳。我們必須打開約束管理器,并使用 IO 編輯器通過單擊編輯來編輯約束。在 IO 編輯器窗口中,我們必須根據(jù)下圖選擇引腳。
當所有管腳都配置好后,保存并退出 IO Editor,現(xiàn)在我們可以在設計流程上實現(xiàn)設計執(zhí)行Place and Route 。
現(xiàn)在,由于設計是在結(jié)構(gòu)上實現(xiàn)的,我們必須檢查設計的時序。根據(jù)手冊(第 7 頁),SmartFusion2 SoC 上的 Mi-V 可以達到 49 到 65 MHz 之間,具體取決于啟用的功能。在這種情況下,設計以 50 MHz 運行,因此顯然我們不會有任何問題。要檢查時序,首先我們必須定義設計的時序約束。為此,我們將讓 Libero 設計套件選擇時鐘,并設置相應的錯誤路徑。在 Constraint Manager 中,我們將導航到 Timing 選項卡,然后單擊Derive constraints 。這將為我們的設計生成一個包含時序約束的文件。我們可以檢查這個文件并驗證輸入時鐘和來自 CCC 的輸出時鐘是否正確定義。
現(xiàn)在,在設計流程中,我們可以執(zhí)行驗證時序命令并等待驗證完成。然后我們可以檢查一個列表,其中包含根據(jù)最差延遲排序的信號。
我們可以看到最慢的信號有 0.608ns 的松弛。
現(xiàn)在,我們必須生成要在軟件話務臺上使用的所有軟件工件。為此,我們必須打開 Libero 設計套件默認安裝的固件目錄。我們可以看到我們計算機上所有驅(qū)動程序的列表。在這種情況下,我們需要為 CoreGPIO、CorePWM 和 MiV_RV32 硬件抽象層 (HAL) 生成驅(qū)動程序。
此外,我們將為 corePWM 生成示例項目 PWM Slow Blink 以將其用作模板。
在軟件話務臺上,我們將導入示例項目,我們必須進行一些更改。首先,我們必須根據(jù)地址映射更改 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
現(xiàn)在,我們必須更改鏈接器文件以使 RAM 和 ROM 地址與設計匹配。我們將使用的鏈接器是 microsemi-riscv-igloo2.ld,因為它是從 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 */
最后,在項目配置上,我們還要再做兩處改動。首先,在 C/C++ Build > Settings 上,在鏈接器配置上,我們必須為Release構(gòu)建配置選擇鏈接器文件 microsemi-riscv-igloo2.ld。
最后,在 Flash 圖像創(chuàng)建窗口中,我們必須添加標志 –change-section-lma *-0x60000000
現(xiàn)在我們可以構(gòu)建項目以生成 hex 文件。
生成 hex 文件后,我們必須回到 Libero 設計套件,并使用生成的 hex 文件初始化 eNVM 內(nèi)存。
最后生成比特流,并將其導出為 DAT 格式。
現(xiàn)在,我們必須打開 Hello GUI 應用程序?qū)⒃O計發(fā)送到 Hello FPGA Kit,我們將看到 LD1 是如何緩慢閃爍的。
雖然 RISC-V 是開源的并且可以免費使用,但也有一些公司已經(jīng)開發(fā)了內(nèi)核并且可以集成到其他設備中。Microchip 的PolarFire? SoC設備就是這種情況,它們是基于 SiFive 處理器(SiFive 公司的 RISC-V 處理器)的SOC。
我們生活在硅公司的不斷變化的時代,盡管 Arm 在該領域擁有大量(大量、大量……)設備,但 RISC-V 使新設備的開發(fā)成本更低,而且該標準提供的可配置性可以提供幫助在不需要完整功能的芯片上節(jié)省硅。期待使用 RISC-V 的新 SoC。
- SLMLET,具有混合RISC-V內(nèi)核,高速IF和eFPGA的S 2次下載
- RISC-V和RISC-V AI的未來(特邀講座) 11次下載
- RISC-V設計支持工具,支持RISC-V技術的基礎 12次下載
- 如何構(gòu)建RISC-V嵌入式 2次下載
- GW2A FPGA開發(fā)板RISC V設計快速應用手冊
- 從零開始寫RISC-V處理器 99次下載
- RISC-V MCU開發(fā) (二):工程創(chuàng)建與管理
- 基于FPGA的無線通信系統(tǒng)設計與實現(xiàn) 46次下載
- 系統(tǒng)可編程閃存中的RISC微控制器LGT8XM 0次下載
- 基于FPGA的PID系統(tǒng)源碼下載 79次下載
- 基于FPGA和DSP的機載圖形顯示系統(tǒng) 36次下載
- 基于FPGA的多圖片動態(tài)顯示VGA系統(tǒng) 27次下載
- 荔枝糖RISC-V開發(fā)板原理圖 51次下載
- 如何在FPGA設計中創(chuàng)建一個中斷事件 6次下載
- 基于FPGA的mif文件創(chuàng)建與使用
- RISC-V 與 ARM的常見問題解答 413次閱讀
- 一文讀懂RISC-V與ARM 707次閱讀
- fpga和risc-v處理器的區(qū)別 744次閱讀
- 如何創(chuàng)建FPGA控制的機器人手臂 899次閱讀
- 基于形式的高效 RISC-V 處理器驗證方法 549次閱讀
- RISC-V,迎來新創(chuàng)新 511次閱讀
- 關于RISC-V定制化,定制計算的好處和優(yōu)勢以及行業(yè)應用有哪些呢? 1272次閱讀
- RISC-V SIG創(chuàng)建專屬郵件列表和論壇板塊 565次閱讀
- RISC-V指令集架構(gòu)特點 3225次閱讀
- 如何創(chuàng)建FPGA內(nèi)核/SoC所需的所有常用組件 1443次閱讀
- RISC-V SIG成功將Chromium等桌面軟件適配到openEuler RISC-V 2018次閱讀
- RISC-V運動到底是什么?數(shù)據(jù)中心芯片中的RISC-V 2671次閱讀
- 介紹基于RISC-V的芯片 1.2w次閱讀
- FPGA創(chuàng)建一個程序生成規(guī)范 776次閱讀
- 創(chuàng)建可靠FPGA設計的10大技巧 695次閱讀
下載排行
本周
- 1無鉛焊接的可靠性
- 1.03 MB | 5次下載 | 1 積分
- 2GBT1094.11-2022電力變壓器第11部分:干式變壓器
- 14.12 MB | 3次下載 | 免費
- 3PT500齒輪傳動動力學綜合測試實驗臺
- 0.16 MB | 3次下載 | 免費
- 4爬電距離和電氣間隙計算
- 0.75 MB | 2次下載 | 1 積分
- 5SX1308應用電路圖與SX1308升壓電路圖
- 0.18 MB | 1次下載 | 免費
- 6ADC參數(shù)單位換算
- 761.94KB | 1次下載 | 免費
- 7串口工具UartAssist5.0.exe
- 0.60 MB | 1次下載 | 免費
- 8UCC38C42 25瓦自諧振復位正激變換器
- 320.6KB | 1次下載 | 免費
本月
- 1ACDC變換器的原理圖免費下載
- 0.26 MB | 65次下載 | 免費
- 2無刷電機控制方案設計合作
- 1.05 MB | 22次下載 | 免費
- 3美的超薄電磁爐TM-S1-09B主板原理圖
- 0.08 MB | 20次下載 | 免費
- 4純電動汽?的主要部件及?作原理
- 5.76 MB | 12次下載 | 5 積分
- 5GP328和GP88S對講機的維修實列資料合集免費下載
- 0.03 MB | 10次下載 | 10 積分
- 6舒爾SLX4無線話筒接收機原理圖:二次變頻超外差部分
- 0.27 MB | 8次下載 | 免費
- 7IP5385_DEMO開發(fā)資料
- 1.96 MB | 7次下載 | 2 積分
- 8i.MX Linux開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板
- 17.86 MB | 7次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191363次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183329次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73805次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評論
查看更多