以下文章來源于OpenFPGA,作者碎碎思
在各類行業(yè)與應(yīng)用中,經(jīng)常能看到許多 FPGA 設(shè)計。一個非常常見的現(xiàn)象是:設(shè)計者常常用復(fù)雜的有限狀態(tài)機(FSM)來實現(xiàn) I2C、SPI、GPIO 時序控制等功能。

然而,隨著功能不斷擴展,這些 FSM 往往會變得十分龐大、難以維護,大大增加了系統(tǒng)上板調(diào)試與驗證的難度。而且,這些 FSM 不僅要經(jīng)過仿真驗證,上板后還要再次驗證——耗時、費力,也不夠靈活。
當我在 FPGA 中實現(xiàn)這類接口時,我的常用方法是直接用 MicroBlaze V 來替代復(fù)雜 FSM。通過加入一個輕量級軟核處理器,我可以用簡單的 C 程序來完成控制功能。這讓整個邏輯變得更靈活、更直觀,也更容易修改,尤其是在項目末期不可避免的“最后一分鐘更改”發(fā)生時,這種方式能顯著降低風險。
可能有人會擔心:加入 MicroBlaze V 會不會導(dǎo)致資源暴增?
事實上,MicroBlaze V 的可配置性非常高,可以根據(jù)應(yīng)用需求高度裁剪資源,從而大幅減小占用。
這篇文章便是希望深入探討:MicroBlaze V 的配置選項,以及它們對資源占用的影響。
MicroBlaze V 架構(gòu)選項:不同流水線級數(shù)
MicroBlaze V 基于 RISC-V RV32 架構(gòu),但它不僅可配置外設(shè)與接口,還可以選擇指令集擴展,以及處理器內(nèi)部架構(gòu),比如流水線深度。
Vivado 中 MicroBlaze V 的架構(gòu)配置主要體現(xiàn)在流水線級數(shù):

Area(面積) 配置:3 級流水線 —— 資源最小化
Throughput(吞吐量) 配置:4 級流水線 —— 注重運算吞吐率
Performance(性能) 配置:5 級流水線 —— 面向高性能
Frequency(頻率) 配置:8 級流水線 —— 優(yōu)化最高運行頻率
需要注意的是,如果程序運行在延遲較高的外部存儲上(如 DDR),指令獲取可能超過一個周期,因此存儲層級與緊耦合緩存(Tightly Coupled Memory/Cache)至關(guān)重要。關(guān)于緩存配置,我會在下一篇文章中詳細討論。
MicroBlaze V 的 ISA 可選擴展
MicroBlaze V 支持啟用多種可選 RISC-V 擴展,每一種都會影響面積、性能與靈活性:

1. Code Compression (C)-代碼壓縮(C 擴展)
32 位指令替換為 16 位短指令
程序體積可減少 25–35%
幾乎無性能損失
硬件只需極少資源,非常劃算
2. Integer Multiplier (M)-整數(shù)乘法/除法(M 擴展)
加速涉及乘除法的運算
會使用一定數(shù)量的 FPGA DSP 資源
3. Floating Point (F)-浮點單精度(F 擴展)
提供硬件浮點運算
性能顯著提升
資源消耗大幅上升(LUT/FF)
4. Atomic Operations (A)-原子操作(A 擴展)
實現(xiàn)原子讀-改-寫指令
適用于 RTOS、多線程、鎖機制
邏輯開銷較小
5. Bit Manipulation (Zba/Zbb/Zbc/Zbs) -位操作擴展(Zba/Zbb/Zbc/Zbs)
加速移位、旋轉(zhuǎn)、位計數(shù)、提取等操作
對加密、DSP 類應(yīng)用非常有價值
啟用更多擴展意味著更多資源占用,因此我對不同配置進行了綜合與實現(xiàn),對比資源消耗情況。
MicroBlaze V 綜合結(jié)果(部分)
以下為四種流水線配置下,主要 ISA 組合的 LUT、FF、BRAM、DSP 使用情況。從結(jié)果中可以看出一些趨勢:
Area(資源占用)
| 配置 | LUT | FF | BRAM | DSP |
|---|---|---|---|---|
| RV32I | 823 | 449 | 8 | 0 |
| RV32IC | 1033 | 488 | 8 | 0 |
| RV32IM | 1130 | 581 | 8 | 4 |
| RV32IMF | 3855 | 1698 | 8 | 6 |
| RV32ICMF | 4095 | 1737 | 8 | 6 |
Throughput(吞吐)
| 配置 | LUT | FF | BRAM | DSP |
|---|---|---|---|---|
| RV32I | 1200 | 547 | 8 | 0 |
| RV32IC | 1247 | 587 | 8 | 0 |
| RV32IM | 1577 | 684 | 8 | 4 |
| RV32IMF | 4044 | 1814 | 8 | 6 |
| RV32ICMF | 4243 | 1854 | 8 | 6 |
Performance(性能)
| 配置 | LUT | FF | BRAM | DSP |
|---|---|---|---|---|
| RV32I | 1235 | 631 | 8 | 0 |
| RV32IC | 1208 | 671 | 8 | 0 |
| RV32IM | 1304 | 768 | 8 | 4 |
| RV32IMF | 4012 | 1906 | 8 | 6 |
| RV32ICMF | 4229 | 1946 | 8 | 6 |
Frequency(頻率)
| 配置 | LUT | FF | BRAM | DSP |
|---|---|---|---|---|
| RV32I | 1762 | 1252 | 8 | 0 |
| RV32IC | 1713 | 1315 | 8 | 0 |
| RV32IM | 1956 | 1448 | 8 | 4 |
| RV32IMF | 4685 | 2780 | 8 | 6 |
| RV32ICMF | 4949 | 2846 | 8 | 6 |


從表格和圖表中可以看出:
最小的 RV32I 資源占用最小
不含壓縮、乘法、浮點等擴展
非常適合替代中小型 FSM
M 擴展導(dǎo)致資源中等增加
LUT/FF 有一定增加
DSP 消耗增加(乘法器)
F 擴展導(dǎo)致資源大幅增長
因 FPU(浮點單元)需要大量邏輯
C 擴展幾乎“免費”
硬件增加極小
但顯著減少代碼體積與 BRAM 使用
強烈推薦啟用
ICMF(全功能)組合資源最多
但相比其他 CPU,要實現(xiàn)同等功能仍相當劃算
資源增長趨勢(相對于 RV32I)
| 變體 | ΔLUT | ΔFF |
|---|---|---|
| RV32IM | +37% | +29% |
| RV32IMF | +368% | +278% |
| RV32IC | +26% | +9% |
| RV32ICMF | +398% | +287% |
可見:
C 擴展最劃算,建議幾乎所有項目都開啟
F 擴展才是資源暴增的主要來源
M 擴展非常值得開啟,只需少量 DSP
不同應(yīng)用的最佳配置建議
結(jié)合資源、性能與實測數(shù)據(jù),可給出常見設(shè)計的推薦選項:
● RV32IM(Throughput吞吐量)
極佳的平衡性——約 1.5K 個 LUT,4 個 DSP
適合需要少量算術(shù)與可靠吞吐的驅(qū)動型任務(wù)
● RV32IMF(Performance性能)
計算密集型 — 4012 個查找表,6 個數(shù)字信號處理器
高性能、高算力需求
示例:浮點運算、控制算法
● RV32IC
如果工作負載僅涉及整數(shù)運算且內(nèi)存帶寬受限,則它是最具成本效益的選擇。
對 BRAM 敏感的設(shè)計優(yōu)先考慮
● RV32ICMF(Area面積)
適用于復(fù)雜系統(tǒng)控制
指令壓縮提高程序密度
總結(jié):MicroBlaze V 是 FSM 的更現(xiàn)代、更靈活的替代方案

在 FPGA 設(shè)計中,使用 MicroBlaze V 替代復(fù)雜 FSM,能夠:
大幅降低 RTL 復(fù)雜度
提高可維護性
加快調(diào)試效率
在資源可控的前提下,獲得極高的靈活性與擴展性
在最小配置下,MicroBlaze V 的資源占用非常小,卻能輕松實現(xiàn)許多 FSM 很難維護的復(fù)雜功能。
對于需要快速適配變化、軟件可擴展性高、邏輯較復(fù)雜的控制任務(wù),MicroBlaze V 無疑是更先進、更高效的選擇。
-
FPGA
+關(guān)注
關(guān)注
1660文章
22415瀏覽量
636504 -
接口
+關(guān)注
關(guān)注
33文章
9525瀏覽量
157060 -
狀態(tài)機
+關(guān)注
關(guān)注
2文章
499瀏覽量
29159 -
仿真驗證
+關(guān)注
關(guān)注
0文章
27瀏覽量
8356
原文標題:為什么越來越多 FPGA 項目開始依賴 MicroBlaze V?深度解析
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
AMD FPGA的MicroBlaze固化過程詳解
MicroBlaze處理器的PetaLinux操作系統(tǒng)怎么移植?
求一款雙MicroBlaze軟核處理器的SOPC系統(tǒng)設(shè)計
基于MicroBlaze 軟核的FPGA 片上系統(tǒng)設(shè)計
基于MicroBlaze軟核的FPGA片上系統(tǒng)設(shè)計
基于MicroBlaze軟核的FPGA片上系統(tǒng)設(shè)計
MicroBlaze軟核處理器在DAB發(fā)射機中的應(yīng)用
基于MicroBlaze處理器的BPIFlash操作
Xilinx公司的MicroBlaze處理器的結(jié)構(gòu)和原理是怎么樣的?
ARTY Board與Xilinx MicroBlaze的配合使用演示
如何從MicroBlaze處理器訪問PS的內(nèi)部
關(guān)于嵌入式處理器的在線調(diào)試方法
MicroBlaze V軟核處理器的功能特性
為什么在FPGA設(shè)計中使用MicroBlaze V處理器
評論