Superb Garbages 2

千野純一(chinorin)のはてなダイアリーの続きです。

FPGAってあれだろ、あの~⋯CPU刺すところ?

  • ほんでVHDL? VHDとかLDとかの仲間か?


  • なんか突然FPGAに対して強烈な興味が湧きまして、実機はまだないけどVHDLVerilog HDLについて座学した。
    • 一応FPGAについて説明する試み:Field Programmable Gate Arrayの頭字語。Field Programmableは「現場でプログラム可能な」ということ。GateはNOTやANDやORやXORのような「論理ゲート」のこと。Arrayは「複数繋がっているもの」のことで、例えば鉄アレイは鉄球が複数繋がってるやつ。抵抗アレイは抵抗が複数繋がってる部品。トランジスタアレイはトランジスタが複数個入ったIC。つまり論理ゲートがたくさん入ってて、それらの動作はプログラマブルなんですよと言ってる。
    • 具体的にはHDL(Hardware Description Language:ハードウェア記述言語)と呼ばれるプログラム言語っぽい(が、プログラム言語の一種ではない)言語でゲートの構成や動作を記述し、それを読み込むことによってHDLで書いた通りのハードウェアになるというCPUやMPUに似たLSIの一種です。要は中身の振る舞いをユーザーが書くCPUだと思っとけばまあだいたい合ってる。と思う。
    • ちなみに印刷原稿みたいにHDLのソースを半導体メーカーに納品すればカスタムCPU的なものが発注できるみたいなのもあるらしい。(もちろんそれなりの最低ロットで数百万とか数千万とかの世界だと思うが) HDL自体はそういう用途やシミュレーションのために作られたわりと古くからある言語群みたいで、FPGA用としてはVHDLVerilog HDLの2種類がよく使われる。
  • いやー、VHDLを見てるとちょっと嬉しい。まさかこんなところで再会するとはね。
    • ブロックはbeginで始まりendで終わる。
    • end直前の行末にはセミコロンを書かない。(書いてもいいみたいだが)
    • 等価演算子は「=」、(ブロッキング)代入演算子は「:=」
    • 整数型は「integer」
    • 型が厳密で融通が全く効かず、関数を使ってキャストする
    • 変数定義の書き方は「変数名:型名」
    • 論理演算子は「not」「and」「or」「xor」
  • ってな具合。Pascalじゃん。
  • でもまあ、
    • if関係のブロックは「then」や「else」で始まって「end if」で終わる。
    • 「elsif」などというらしくないキーワードがある
    • べき乗演算子がある。「**」
    • 非等価演算子は「<>」でも「!=」でもなく「/=」
  • このへんはなかなかの気持ち悪さだけど。特に最後のやつ、非等価で「/=」を使う言語って何だっけ、絶対あったよなあ⋯⋯と思って調べたらALGOLだった。つーかそもそも全体的にPascalっぽいというよりALGOLっぽいんだな。なるほど。
  • 一方Verilog HDLは、途中でC方面のシンタックスに分岐した感じ。分岐するまでの共通部分が元々のHDLなのだろう。わかりやすい。
  • まー全体的にはVerilog HDLの方が書きやすく工夫されているようには見える。型もゆるいしキーワードも簡素だし、センシティビティリストの中で論理演算しちゃうのもなかなか刺激的だ。
  • うーん、実際にやるとしたらさしあたりどっちでやるべきか⋯⋯Arduinoの関係で最近よく触ってるのはCだし、やっぱ後者にしとくべきかなあ。でも名前は前者の方が断然いいんだよなあ。w

 

  • どうでもいいけど「センシティビティ」という言葉は、特にカタカナで書くと一発で読みづらいねえ。センシティブの度合い、つまり感受性ってことなんだけど、感受性リストっていうのも日本語としては意味不明な感じ。更新トリガーリストとか監視リストとか言ってくれた方がわかりやすいが、でもきっとセンシティビティリストと呼ぶのがハードウェアの動作として正しいイメージに近いからそうしてるんだろうな。
  • どうでもいいけどその2、HDLでZ80とかを書くことが可能らしく、なんかネットを探せばソースが落ちてたりするし、Z80にもともとあったバグが再現されてたりフィックスされてたりもするらしい。w もちろんZ80著作権はまだ有効だが、当時NECが互換CPUを作ったときも中身は見ずに命令表から再現してそれがOKだったらしいし、そういうもんらしい。他にもFPGAで古いCPUを再現する試みは色々行われていて、やれPC-8001だ、MSXだ、MZだ、と楽しそうにやっている皆さんの模様をそこいらで見ることができる。