クリプキクローネ日記帳

ある種の音楽と数学とランニングはミニマルなところが似ていると思う。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

FPGA入門 (回路図とHDLによるディジタル回路設計) [すすたわり(著)] (秀和システム)

回路をコーディングするってどんな感じなのかなと思い読んでみました。



基本ゲートから、加算器、RS/D/トグルのフリップフロップ、バイナリカウンタ、タイマと進んでシーケンサまで
実例メインで少しずつ進むので読みやすかったです。
しかも全ての例で回路図とVHDLとVerilogが併記されているので、見比べながら理解できるところがよかったです。
加算器の説明で大きい回路図を見せられたあとに「+」のみのソースコードが出てくるのに不意を付かれました。
回路図と同じように論理記号だけでソースコードを書いても同じ動きになるのがおもしろいです。
使用面積とか遅延時間とかは変わるとしても。

DフリップフロップはRSフリップフロップの組み合わせで実現できるということを覚えました。
フリップフロップと言えばRS型の再帰っぽい雰囲気の漂う形が好きなんですが、
実際にはただの四角い箱で表示されるD型とその発展形がメインのようで寂しいです。

クロックスキューの話はすごく回路っぽくてソースコードからは全く見えてこないし、厄介そうです。
クロック用の信号線があるんですね。

チャタリング除去はただ何度も見るだけでしょと思ってましたが、
ソフト的に何度も見るというのとは違う考え方だということが分かりました。
信号が不安定になるメタステーブル対策と合わせてD-FFを重ねたり、
多数決回路を導入したり、思ったより回路っぽかったです。

シーケンサの繰り返し処理もソフト的なfor文と違って
トリガモジュールのトリガ信号にパルスを返すという発想が新鮮でした。
そもそも繰り返し処理をする理由も、可読性とか保守性とかではなくて、
面積効率の向上が挙げられているのがおもしろいです。

あと微分回路ってアナログ信号の言葉かと思ったらパルス生成にも使われるんですね。

IPコアの説明はとてもソフト的で普通でしたが、
コア名が長すぎると読みにくいので単語を略すべきっていうのが意外でした。
CTRLみたいな。
ソフトウェアは時代とともに「単語を略してはいけない」というように変わってきたと思うので、
これは単に好みの問題なのか、FPGA特有の理由があるのか気になります。

最後におまけっぽく書いてあったフリーハードウェアは最近流行りの仮想マシンに近いですが、
もっとより直接的に回路ベースでPCをシミュレートするという考え方のようです。
かなりハイスペックなFPGAが要求されそうですが、おもしろいですね。

VHDLとVerilogは文法が違うことは分かったけど、思想とか目的とかがどう違うのか分からず。
ただ単に文法と対象デバイスや環境が違うだけだったら、言語が統一されていないのは残念です。

あと、ソースコードをつい上から手続き的に読んでしまう癖が抜けません。
内部変数だけ変化させて出力を変えてないように見えたり、
初期化してない変数を参照しているように見えたり、
同時に行う繰り返し制御を順番にやっているように見えたり。
process(CLK)の順序回路のところと、そうでないベタの配線のところが混在しているのが不思議です。

ところどころ論理学の話が出てくるのがムズムズしました。
基本ゲートはNANDだけで充分とか、加法標準形の話とか。
論理記号の有無による表現力の違いは修論でやったのでいろいろ薀蓄を述べたくなるんですが、
普通は今回みたいに古典論理しか扱わないのでそれ以上発展しないし興味深いところもないんですよね。
非古典論理がディジタル回路でバンバン使われるようになったらおもしろいですね。
  1. 2017/02/27(月) 00:08:57|
  2. | トラックバック:0
  3. | コメント:0
<<VHDL触ってみた。 | ホーム | すばらしい新世界 [オルダス・ハクスリー(著), 黒原敏行(訳)] (光文社)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://myumbrella.blog42.fc2.com/tb.php/353-10ec9e40
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。