FPGA始めました
最近FPGAにハマっています。きっかけは、写真の「ディジタル回路設計とコンピュータアーキテクチャー ARM版」を買って、この本の解説に従って、FPGAボードのDE0-CVを使って最小限のARM命令が動くCPUコアをFPGAで作るようになって、FPGAのお手軽さと面白さに目覚めました。自分で部品をハンダ付け・配線して実際のハードを作るのは時間もなく(ましてやカスタム基盤を設計する根性もなく)、FPGAで回路を合成してシミュレーションすると、なんとなく回路設計したような気持ちになれ、ソフトを書くのとはまた違った面白さがあります。
今回買ったFPGAボードはAlteraのCyclone Vを搭載したDE0-CVをマルツオンラインで購入しました。DE0-CVにした理由は、AlteraとXilixのどちらにしようかと思ったのですが、「ディジタル回路設計とコンピュータアーキテクチャー」でAlteraの開発環境やDE2-115ボードが紹介されていたこと、DE2-115は高価で手が出ないので、安価ですが7SEG-LEDなど表示系が比較的充実したDE0-CVを購入しました。
最初は「ディジタル回路設計とコンピュータアーキテクチャー」に掲載されているSystem Verilogのコードをそのまま打ち込んだだけですが、入力ミスを見つけるために、初めて使うAlteraの開発環境Quartus Primeと格闘しながら論理ミュレーションを動かすなどして、実際にARM命令が動くCPUが作れた時は結構感動しました。この本は、FPGAで実際に動くCPUを作ってみるためには絶好の名著だと思いますので、興味のある方は是非買ってみて下さい。Amazonのレビューに、私の書評も掲載しています。
その後コードを拡張して、演習問題のパイプライン化は自力で動かすことができました。また、パイプライン化に加えて、MOV/CMP/EOR(XOR)/ROR/LSR/ASR/LSL命令を追加しています。
現在はDE0-CVに搭載されているSD-RAMにアクセスできるようにしようとしているのですが、FPGA内臓メモリーはノーウェイトでアクセスできることに対してSD-RAMはノーウェイトではアクセスできないため、パイプラインの制御に改造が必要でまだうまくいっていません(LDR命令でメモリーから読みだすまでのパイプラーンストールに加えて、読みだした値をレジスタファイルにライトバックするあたりのパイプラインストールの追加考慮が必要なようです)。SD-RAMアクセスの単体試験はQsysで合成した出来合いのIPを使うことでできているのですが。
DE0-CVを使ったミニARMのコードなどは、オリジナル書籍発売元やARM社の版権もあると思うので、私が作ったHDLコードを掲載するのはやめておきます。
« mbed TY51822r3でmbed OSを使う | トップページ | ZYBOでPmodCLP(Parallel Interface LCD)を動かす »
「FPGA」カテゴリの記事
- PYNQ-Z1のOverlay読み込みとPythonからのFPGA PLの制御(2)(2017.02.04)
- PYNQ-Z1のOverlay読み込みとPythonからのFPGA PLの制御(2017.01.28)
- Vivado Constraints Wizardによるクロック・入出力制約の作成(2016.12.11)
- ZYBOでOV7670カメラモジュールのVGA画像を表示する(2016.12.04)
- Vivado Integrated Logic Analyzer(ILA)の使い方(2016.11.12)
この記事へのコメントは終了しました。
コメント