5cm FPGA基板でMicroBlazeを動かす|UART+7セグ表示まで一気に動作確認 | 有限会社 FPGAインフォメーション【公式】

BLOG & INFO

5cm FPGA基板でMicroBlazeを動かす|UART+7セグ表示まで一気に動作確認

Running MicroBlaze on a 5cm FPGA Board | UART Input to 7-Segment Display


🇬🇧English Sammary

This article demonstrates how to run MicroBlaze on a compact 5cm FPGA board and implement a simple UART-to-7-segment display system.

We built a minimal system using:

  • MicroBlaze CPU
  • AXI UART Lite
  • AXI GPIO

The system receives numeric input from a PC via UART, displays it on a 7-segment LED, and sends an echo back for verification.

Key lessons:

  • Always check baud rate settings
  • Verify XDC pin assignments
  • Properly configure Vitis workspace

This setup shows that even a small FPGA board can handle full embedded system prototyping efficiently.


導入

5cmサイズのFPGA基板を使って、今回はMicroBlazeを動作させてみました。

これまでに以下を確認済みです:

  • 7セグLEDのカウント表示
  • UART通信(PCとの通信)
  • VHDL単体での動作確認

今回はそこから一歩進めて、
MicroBlaze上でUART入力 → 7セグ表示を実現します。


🔧 開発環境

  • FPGA:5cm FPGAボード(XC7S25系)
  • ツール:
    • Vivado 2025.x
    • Vitis 2025.x
  • クロック:50MHz
  • UART:FT2232H経由

🧠 システム構成

今回の構成はシンプルです。

PC → UART → MicroBlaze → GPIO → 7SEG

UARTフィードバック

ポイントは:

  • PCから入力した数字を受信
  • そのまま7セグに表示
  • UARTでエコーバック(確認用)

⚙️ Vivado設計

① Block Design

  • MicroBlazeを配置
  • AXI UART Lite
  • AXI GPIO(7SEG用)
  • Clocking Wizard(50MHz)

② Wrapper生成

VivadoでHDL Wrapperを生成すると、以下のようなトップになります:

entity mb_uart_7seg_wrapper is
port (
FT_RXD : out STD_LOGIC;
FT_TXD : in STD_LOGIC;
SEG_tri_o : out STD_LOGIC_VECTOR ( 7 downto 0 );
diff_clock_rtl_0_clk_n : in STD_LOGIC;
diff_clock_rtl_0_clk_p : in STD_LOGIC;
reset_rtl_0 : in STD_LOGIC
);
end mb_uart_7seg_wrapper;

※XDCの信号名ミスでハマったので注意


🖥️ Vitisでソフト作成

ハマりポイント

  • 「You have not yet opened a workspace」が出る
    → Workspaceを開く必要あり
  • Platformは作れてもApplicationが作れない
    → Platform選択を確認

💻 サンプルコード(C)

#include "xuartlite.h"
#include "xgpio.h"#define UART_DEVICE_ID XPAR_UARTLITE_0_DEVICE_ID
#define GPIO_DEVICE_ID XPAR_GPIO_0_DEVICE_IDXUartLite Uart;
XGpio Gpio;int main()
{
u8 data; XUartLite_Initialize(&Uart, UART_DEVICE_ID);
XGpio_Initialize(&Gpio, GPIO_DEVICE_ID); XGpio_SetDataDirection(&Gpio, 1, 0x00); while(1)
{
if (XUartLite_Recv(&Uart, &data, 1))
{
// エコーバック
XUartLite_Send(&Uart, &data, 1); // 数字のみ表示
if (data >= '0' && data <= '9')
{
XGpio_DiscreteWrite(&Gpio, 1, data - '0');
}
}
}
}

🔌 動作結果

最初うまく動かなかった原因はこれ👇

👉 ボーレートが 9600bps だった

→ 115200に合わせたら即動作


🎉 実際の動き

  • PCで数字キー入力
  • FPGAに送信
  • 7セグに表示
  • 同時にエコーバック

👉 完全に想定通り動作

動画はこちらから見れます


⚠️ ハマりポイントまとめ

  • XDCの信号名ミス
  • Workspace未設定(Vitis)
  • ボーレート不一致

👉 この3つでほぼ詰まる


💡 今回のポイント

  • MicroBlazeでも超シンプル構成で動く
  • UART+GPIOだけでも十分実用
  • 5cm基板でもしっかりシステム組める

対話ログ

今回のやり取りは保存しています。

👉 ChatGPTとの対話ログはこちら


🚀 次のステップ

  • コマンド入力対応
  • 複数桁表示
  • FIFO化
  • AXIバス制御拡張

✍️ まとめ

5cm FPGA基板でも、

👉 「CPU+入出力」まで一気に構築できる

これで、

  • ソフト+ハード一体開発
  • 組み込みシステム試作

がかなり現実的になりました。


FPGAインフォメーションのホームページはこちらです。

5SQ XC7S25A FPGAボードはこちらから購入できます

プライバシーポリシー / 特定商取引法に基づく表記 / 利用規約

Copyright © 2026 有限会社FPGAインフォメーション All Rights Reserved.

CLOSE