computer system foundationCSF 2026
演習2 / VERILOG HDL

Verilog で
回路を設計する

加算器から小型 CPU まで、5つの回路を自分の手で書く。書いたコードはその場でブラウザが採点するので、 インストールもアカウント登録も要らない。

難易度:★★☆〜★★★ 所要:合計 2〜3時間 前提:02.1 Verilog 入門
01

はじめに読むもの

Verilog を一度も見たことがない場合は、まず講義ページを読んでください。 module / wire / reg / assign が分かっていれば、演習 A はすぐ書ける。

発展:本物のシミュレータ(EDA Playground)でも動かす 任意

各演習にはブラウザ内のチェッカーが入っているので、課題を進めるだけなら外部ツールは要らない。 実際の開発現場で使う Icarus Verilog と波形ビューアを体験したい人だけ、 EDA Playground の使い方を読んで試してみてください(Gmail アカウントが必要である)。

02

進め方

A から E へ順番に進んでください。前で作った回路を次でそのまま使い回す構成になっているので、 飛ばすと後半で手が止まる。

0
準備
02.1 を読む
A
8ビット加算器
assign と連結演算子
B
8ビット減算器
2の補数で加算器を再利用
C
8ビット比較器
borrow から大小を判定
D
8ビット ALU
case で6演算を切替
E
Accumulator CPU
制御部を自分で書く
記録の持ち運び

書いたコードと「全パターン正解」の記録は、このブラウザに自動保存される。別の端末で続けるときや、発展ページ(チップ化)を別の端末で開くときは、「書き出し」でファイルに残し、向こうで「読み込み」する。

答えはすぐには開かない。 各ページの「答え合わせ」は、違うコードで3回チェックを走らせるか、正解するまで開かない仕組みになっている。 間違えること自体が目的の一部なので、まず自分の考えを書いて「チェック」を押してください。 どのテストケースで落ちたかと、その原因のヒントがその場で出る。
03

演習一覧

A

8ビット加算器

★★☆

8ビット同士の足し算を行う回路を書く。桁上げ(キャリーアウト)を含めた9ビットの結果を、連結演算子 {} で1本にまとめるのがポイントである。

所要 20–30分assign / wire / 桁上げ
B

8ビット減算器

★★☆

2の補数を使って引き算を実装する。A で作った加算器に NOT と cin=1 を足すだけで減算器になる——この気づきが本題である。

所要 20–30分2の補数 / ボロー / ~ 演算子
C

8ビット比較器

★★★

B の減算器が出す borrow を利用して、2つの値の大小を判定する。eq・lt・gt の3つのフラグを出力してください。

所要 25–35分比較 / フラグ / borrow
D

8ビット ALU

★★★

ADD・SUB・AND・OR・XOR・NOT の6演算を1つのモジュールにまとめる。opcode による切り替えを case 文で書く、CPU の心臓部である。

所要 30–45分ALU / opcode / case 文
E

Accumulator CPU

★★★

アキュムレータ型の小型 CPU の制御部を書く。命令を読んで、どのユニットに何をさせるかを決める部分——03.1 で見た「制御ユニット」そのものである。

所要 45–60分PC / ACC / 命令デコード

発展:自分の回路をチップにする

試作

A〜E で自分で書いて全パターン正解した Verilog を、論理合成 → セル割当 → タイミング → 配置 → 配線 → レイアウト → テープアウトまで、架空プロセス CSF-28 の上でブラウザだけで通す。どれか 1 つ正解すると開く。

所要 15–20分A〜E のどれかを正解してから

02.1 Verilog 入門に戻る

手が止まったら、講義ページに戻って該当箇所を読み直すのがいちばん速い解決策である。

講義ページ