CPU/RAMからROM/I/Oまで!自作のミニRISC-Vマイコンの構成


FPGAキットDE10のスイッチやLEDとの接続

CPUとメモリ構成の概要

図1 FPGAキットDE10上に構築した自作のミニRISC-Vマイコンは,CPU,ROM,RAM,SDRAMといった基本的なメモリ構成をもつ.画像クリックで動画を見る.または記事を読む.[著]圓山 宗智
詳細[VOD]新人技術者のためのRISC-V CPU設計初めの一歩~C言語完全対応!HDLソース500行のミニCPUを一緒に作る~

FPGAキットDE10上に構築されるミニRISC-Vマイコンは,CPU,ROM,RAM,SDRAMといった基本的なメモリ構成をもちます.CPUは命令の解釈とデータ処理を行い,命令メモリとしてROMを参照し,データメモリとしてRAMを利用します.ROMは128KB,RAMは32KB,SDRAMは64MBの容量をもち,それぞれ独立したアドレス範囲にマップされています.内部クロックは20MHzで動作し,命令やデータのアクセスはmmBUSを介して行われます.

周辺機能とI/Oインターフェース

周辺機能としてTICKタイマ,入出力ポート,UART,SPI,I2Cインターフェースが用意されています.TICKタイマはシステム・クロックに基づき時間を測定し,入出力ポートはLEDやスイッチなどの外部信号と接続されます.UARTは調歩同期式シリアル通信,SPIは同期式シリアル通信,I2Cは外部センサやシールドとのデータ交換に利用されます.ボード上の3軸加速度センサとの通信もI2Cで制御されます.

バス接続とマスタ・スレーブ構成

CPUと周辺モジュールはmmBUSを介して接続されます.CPUは命令用とデータ用の2つのマスタポートをもち,各スレーブ・ポートはROM,RAM,SDRAM,タイマ,I/Oインターフェースに接続されます.マスタの優先順位はCPUデータ>CPU命令となり,アドレス・デコードはメモリ・マップに従います.周辺機器のレジスタは必要最小限のメモリ空間に配置され,効率的にアクセスできます.

FPGA上の外部接続

FPGAボード上にはプッシュ・ボタン,LED,スイッチ用コネクタが用意されており,Arduinoシールドの接続も可能です.SPIやI2Cの通信もこれらのコネクタを通して外部シールドに接続できます.これにより,CPUからROM/RAMまでの基本構成と,I/Oや外部デバイスとのインターフェースを一貫して理解できます.

メモリマップ例

  1. ROM:開始アドレス0x00000000,終了アドレス0x0FFFFFFF,実サイズ128KB
  2. RAM:開始アドレス0x10000000,終了アドレス0x1FFFFFFF,実サイズ32KB
  3. SDRAM:開始アドレス0x20000000,終了アドレス0x2FFFFFFF,実サイズ64MB
  4. TICKタイマ:開始アドレス0x30000000,終了アドレス0x3FFFFFFF
  5. 入出力ポート:開始アドレス0x40000000,終了アドレス0x4FFFFFFF
  6. UART:開始アドレス0x50000000,終了アドレス0x5FFFFFFF
  7. SPI:開始アドレス0x60000000,終了アドレス0x6FFFFFFF
  8. I2C0:開始アドレス0x70000000,終了アドレス0x7FFFFFFF
  9. I2C1:開始アドレス0x80000000,終了アドレス0x8FFFFFFF
〈著:ZEPマガジン〉

動画を見る,または記事を読む

チャプタ・リスト

著者紹介

  • nan

著書

参考文献

  1. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  2. Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  6. [VOD]カメラ×ラズパイで一緒に!初めての画像処理プログラミング
  7. [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  8. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.