OSECPU-VMをFPGAに移植しよう
by hikalium, 2017-04-17
関連ページ
日次ログ
2017-05-15
GW前の進捗:命令セットをまとめたページを作成した。
GW期間中の進捗:RTLレベル設計(途中)
- RTLレベルの設計を進めている。これを通して、いくつか命令セットの仕様を変更した。
- 各コンポーネントの仕様も固まってきたが、
- 転送表の作成で時間がかかっている。SoCの授業で習ったような方法で転送表をつくれば大丈夫か?もっとよい方法がある?
- まだ初心者でわからないところも多いので、並行してVerilogでの実装を始めつつ仕様を詰めていくことにしたい。
- IOの件
メモリマップドIOにしようとしている。ただ、メモリマップドIOをどのように記述すればいいのかわかっていないので調査する。
報告事項
- セキュリティ・キャンプで使うFPGAボードが決定した
2017-05-10
- 命令セットの設計を多少見直した。RTLレベルの設計に差し掛かっている。
- レジスタ幅を32bitにした。メモリ幅と揃えたかったため。
2017-04-24
ここまでの進捗
- CPU向け命令セットの設計はほとんどできた。
- ラベルのある場所にしか飛べず、ポインタの型チェックと範囲チェックが強制されるという部分をメインの実装ポイントとする。
- CPUの実行が開始すると、ROMに書かれたローダプログラムが起動し、外部メモリからOSECPUのコード(VM向けのもの)を読み込んで、まずラベルのチェックをする。
- 読み込んだラベルに相当するメモリ領域を作成するバイナリをまず生成する。
- その後、プログラム本体とデータ領域を、CPU向けに変換しつつ読み込む。
- 直接メモリ番地を操作できる命令は、ローダしか実行できないのでセキュアである。
- プログラムの終端は、終端命令をバックエンドに追加してそれにより判定する。
- 変換が終了したら、変換後のバイナリにジャンプする。
- 開発環境の構築も終わった
- Quartus Prime Liteを使う(旧Quartus II WebPack)
- 自分のコンピューターは非力なので、コンパイルサーバーを家に立てた。
これからすること
- ブロック図を完成させる。
- 外部RAMをFPGAから操作する方法を調査・試してみる。
- シリアル通信は絶対に実装するので、FPGAからどのように操作するのか、命令セットからどのように操作するかを調査して試す。
- ラベルテーブルの容量をどうするか、FPGAの内部メモリ容量との兼ね合いで決める。
2017-04-17
このページを作成
CPUの仕様をどのようにするか考えているところ。