前回の続き。
今回はVHDLの基本的な文法とか教えてもらった。
よくよく考えたら学生時代にVHDLでコード書いてたので,あぁそう言えばこんなのあったなぁとか,そんな感じだった。
以下適当にメモなど。
- そもそもハードウェア記述言語が作られたのは,ICを設計しているうちにプロセス微細化がどんどん進んでしまって,いざ製造しようとしたらプロセスルールが古いけど今更こんなの作るの?ってなっちゃうから。(最近はそこまで進歩早くないけど,昔はムーアの法則とかあったじゃん。)
- SystemCは今後期待らしいよ。
- レポートファイルちゃんと読めたら,もう少しデバッグとか早くなりそう。
- RTLレベルは別名ゲートレベルともいう。ゲートレベルって言った方がピンと来る。
- 最初のうちはRTLで書いて,どういう回路に落ちるかを確認しながら勉強するといいよ。
- Verilogでは大文字小文字区別するけど,VHDLでは区別しない。
- ライブラリの宣言はおまじない。entityに回路の入出力ピンを書く。architectureに処理内容を書く。
- パラで動くっていうのが,ソフト屋さんには分からないらしい。
- <=は代入の意味だけど,if文の中だと以上という意味になる。キモイ。
- バスの宣言の仕方で,std_logic_vector(7 downto 4)というふうにも書ける。上半分だよ!っていうのを強調したい時に使ったりするらしいけど,まぁあんまり使う必要は無いかも。
- シーケンシャルに処理させたい場合は,process文を使う。process文の中ではif文,case文,variable宣言とかが使えて便利。
- if文はCと同じような感じ。case文も雰囲気で分かる。case文はif文使うよりコンパクトな回路に落ちる場合が多いのでうまく使い分けること。
- case文の最後はwhen others => null;とも書けるけど,あまり推奨されないらしい。when others => '0'とかはっきり決めた方がいい。
- 配置配線はXilinxの場合はPlanAhedっていうソフトで行う。これやるとピン配情報とかが記載されたUCFファイルってのが生成される。
- 同期ってのは笛の音に合わせてバケツリレーする感じ。非同期ってのは次の人が手空いてるならバケツ渡す感じ。非同期の方が一般的には高速になるけど,有効な設計手法が無いんだとか。
- クロックスキューとは,モジュールごとにクロックが遅延して届く現象。クロックに同期させるつもりが,それぞれバラバラで動いちゃう。
- VHDLではソース内で立上がりと立下りの両方を使うことは推奨されていない。どっちか決め打ちして使うこと。→クロックのONとOFFの幅が必ずしも一緒じゃないから。
- 別々のプロセスで出力信号を書き換えるな。正常に動作しないよ!
- 同じ出力信号に値を2回代入すると,あとのヤツが優先される。→ラダープログラムの二重コイルみたいな感じ。
- component使えばみんな幸せになれる。

コメントする