VHDLで遊ぶ
最近は,驚いたことに数十万ゲートの回路を個人レベルで作る事が出来る時代になっています.
74シリーズを並べて,加算回路を作ってみたり,頭のなかで乗算回路を作るにはいくつ74HC00が必用だな,とか考えたり.簡単なCPUを作ってみるのを夢見たりしたことがある人がいるかもしれませんが,VHDLを使うと実際に動く回路が簡単に作れます.
VHDLについて,ざっと調べてみると,複雑怪奇で嫌になってしまうかもしれませんが,実際に回路を記述する上で必要なことはそれほど多くないようです.言語仕様の1割も知っていれば(多少難があるかもしれませんが)簡単なCPUくらい作る事が出来ると思います.
CADツール
グラフィカルなインターフェイスで回路を書いて,VHDLのソースを自動生成するツールも存在しますが,(2005年現在では)まだ実用レベルのソースは出力できないようです.そのため,CADソフトを使う場合でも,生成されたVHDLソースを手作業で直すことになるみたいです.
ゲートレベルとRTLとビヘイビアレベル
VHDLを記述する方法として,大きく分けてビヘイビアレベルと,レジスタトランスファレベル(RTL)という階層があります.他にもゲートレベルとか.
データ型
VHDLにはたくさんデータ型がありますが,実際に回路を組み立てる上で必用になるのはごく一部です.
一番,使うのは,std_logicとそれを複数並べてベクトル化した, std_logic_vectorでしょう.あと,Integerも使うと楽になるかもしれません.
アトリビュート
データや信号について,色々な情報を取り出すことが出来ます.データの名前の後に,「'」を付けてアトリビュート名を書きます.
よく使うのは,「'event」というアトリビュートで,信号が変化したときにTRUEとなるブール型のデータです.
つまり,
if clk'event and clk = '1' then …
と書けば,クロックの立ち上がり時に動作する処理を書くことが出来ます.