0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arty A7で自作riscv-rv32iを動かす② DRAMでDキャッシュのみ版

Posted at

始めに

前回Tang Primer用にriscv-rv32iのコアを起こしてから3年、Aary A7であれば情報が多いため、DRAMを使ってより広いスペースでプログラムを動かせるように拡張をしてみました。機能は前記事Tang PrimerまたはArty A7で自作riscv-rv32iを動かすと大きくは変わらず、data ramをデータキャッシュ化してDRAMを接続し、data ramとして128MBの空間を使えるようにしました。これに伴い、instruction ram側にBRAMリソースを割り振り、より大きなCプログラムが動作するようになりました。安定動作しつつあるので、公開することにしました。今回レポジトリを新たに作成して前のSRAM版と共存させていくことにしました。

レポジトリ

https://github.com/yoshiki9636/my-riscv-rv32i-dc

参考URL

Tang PrimerまたはArty A7で自作riscv-rv32iを動かす
Arty A7でAXIバス簡略仕様でDDR3 SDRAMへ読み書きしてみる ※MIG設定の参考
VivadoでMIG+DDR3のシミュレーションの走らせ方メモ&ModelsimでのMIGシミュレーションの走らせ方追加 ※MIGシミュレーション参考

Ver 0.4の機能・制約

  • 単純なダイレクトマップのDキャッシュを実装
  • instruction memoryはSRAMのままのため、ハーバートアーキティクチャのまま
  • I/Oは4セットのRGB LED、12ピン
  • uartモニターにzコマンド(Dキャッシュのパージ)を追加
  • Uartでの表字をI/Oで実現
  • interruptピンを使った外部割込み(単体)、mretの実装を追加
  • illegal operations exceptionを追加
  • privilegeはM-modeのみ
  • fence系、ecall以外のecall系未実装
  • gccのrisc-vツールチェーンでのベアメタルCの動作確認済み

使い方

特に変わっていないので、githubページのReadmeまたは、前回のページを参考にしてください。以下は連立方程式を解くプログラムsimequ_test.cを実行してみたところです。4元1次方程式を解いています。

image.png

終わりに

手抜きの短い記事ですが、論理の方は2024年1月に着手してうまくいかずだいぶ放置していたため、非常に時間がかかってしまいました。次はIキャッシュですが、いつになるかはちょっと想像つかないところです。あとはタイマーやアトミック命令などサポートが必要と考えられますが、趣味のプログラミング、ぼちぼちやっていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?