はじめに読むもの
Verilog を一度も見たことがない場合は、まず講義ページを読んでください。 module / wire / reg / assign が分かっていれば、演習 A はすぐ書ける。
02.1 Verilog 入門
必読module の構造、wire と reg の違い、assign と always の使い分け、テストベンチの読み方まで。この演習の前提知識がすべて入っている。
文法リファレンス
辞書として演算子・データ型・記述スタイルの早見表。演習中に「あの書き方どうだったっけ」となったときに開いてください。
発展:本物のシミュレータ(EDA Playground)でも動かす 任意
各演習にはブラウザ内のチェッカーが入っているので、課題を進めるだけなら外部ツールは要らない。 実際の開発現場で使う Icarus Verilog と波形ビューアを体験したい人だけ、 EDA Playground の使い方を読んで試してみてください(Gmail アカウントが必要である)。
進め方
A から E へ順番に進んでください。前で作った回路を次でそのまま使い回す構成になっているので、 飛ばすと後半で手が止まる。
演習一覧
8ビット加算器
★★☆8ビット同士の足し算を行う回路を書く。桁上げ(キャリーアウト)を含めた9ビットの結果を、連結演算子 {} で1本にまとめるのがポイントである。
8ビット減算器
★★☆2の補数を使って引き算を実装する。A で作った加算器に NOT と cin=1 を足すだけで減算器になる——この気づきが本題である。
8ビット比較器
★★★B の減算器が出す borrow を利用して、2つの値の大小を判定する。eq・lt・gt の3つのフラグを出力してください。
8ビット ALU
★★★ADD・SUB・AND・OR・XOR・NOT の6演算を1つのモジュールにまとめる。opcode による切り替えを case 文で書く、CPU の心臓部である。
Accumulator CPU
★★★アキュムレータ型の小型 CPU の制御部を書く。命令を読んで、どのユニットに何をさせるかを決める部分——03.1 で見た「制御ユニット」そのものである。
02.1 Verilog 入門に戻る
手が止まったら、講義ページに戻って該当箇所を読み直すのがいちばん速い解決策である。