第2回分

HDL全般

HDLを用いた設計の短所はなんでしょう?

あまり思いつきませんね・・・ 楽を覚えてしまうと、戻れない、ということぐらいでしょうか・・・

VHDLの利点はなんでしょう?

論理回路の設計で、「作りたいもの」を考えることに 集中できる、ということでしょうか。

HDLによって、設計の手間はどの程度省けるのでしょう?

もちろん回路の規模によりますが、最近のCPUのような大規模なものだと、 手設計はほとんど不可能でしょうね。

HDLとVHDLの違いは?

HDLは、論理回路を記述するハードウエア記述言語、の総称で、 その一種が、VHDL、です。

HDLで論理式を書くのであれば、回路図を描くのと変わらないのではないか?

今日の授業で紹介した例では、そのとおりです。 しかし次回扱う、動作記述、が、HDLの本来の特長ですので、お楽しみに。

HDLで記述した回路のテストの方法は?

基本的には、入力を与えて、それに対する出力を観察して、 所望の値かどうか、をチェックします。

HDLで記述する回路の最適化(冗長の消去)は行えないのか?

それは論理合成の際に、自動的に行ってくれます。 これが、HDLからはじめる論理回路の設計の長所でもあります。

授業で扱うぐらいの回路の設計では何行ほどのHDL記述になるのでしょうか?

いまのところの目標では、100行程度の記述の論理回路は扱いたいと考えています。

論理合成するソフトの名前は?

商品がいろいろありますが、有名どころでは、Synopsys社の Design Analyzer、というものがあります。

VHDLで記述した回路は、PICのようなものに書き込んで動かすのでしょうか?

イメージとしては、その通りです。 演習では、FPGAと呼ばれる論理LSIに書き込んで動作させます。

VHDLで記述した回路と手設計の回路は同じになるのでしょうか?

論理機能は同一のものになるはずですが、 回路自体は、必ずしも同じになりません。 これは、冗長性を取り除くレベルなどが異なるためで、 一般に、小規模な回路であれば、 十分注意して設計すれば手設計の方が回路が小さくなることが多いようです。

VHDLの文法

port mapの部分の文法がよくわからなかった

使う部品の端子名と、設計している回路中でのノード(配線)の名前、を 対応づけています。

port mapの中で、(...a=>a...)とあるところでエラーにならないのか?

左側のaは部品の端子名、右側のaは回路中の配線名で、この例ではたまたま 同じ名前になっているだけ、ですので、大丈夫です。

インスタンスの接続で、s=>w0, a=>w0と2段階のものを、もっと簡略に書く方法はないのでしょうか?

残念ながら、こうするしかありません。 ただつなぐだけの配線でも、w0のような名前をつけてあげないといけません。

全加算器の例で、w1, w2につながっている信号(半加算器のco)の記述の前に、co<=w1 or w2と記述してもよいのか?

今回は詳しくは触れませんでしたが、VHDLの記述は、回路の記述であって、 記述した順番に「プログラムが実行」されるわけではないので、 記述する順番は関係なく、最後まで終わった時点で、接続関係が 正しく記述されていれば、大丈夫です。

library ieee;のieeeとは、IEEEのことでしょうか?

はい、IEEE (Institute for Electrical and Electronical Engineers)、で、 このVHDLの標準化を行っている団体、です。

4ビット加算器の例で、回路の名前はfull_adder4ではなくadder4でよいのでは?

そうですね、回路の名前ですので、わかりやすい名称であれば、 何でもよいです。

<=と=>の使い分けは?

今日扱った例での<=は配線の接続の記述、で =>は、port map内で、部品と配線の対応関係を記述する記号、でした。

end full_adderのあとに;(セミコロン)はいらないのでしょうか?

entity記述のportの最後に)(閉じカッコ)はいらないのでしょうか?

抜けていましたか、失礼。必要です。

vector形式の信号の宣言で、downtoとuptoの違いは?

すいません、ウソを言ってしまいました。 uptoという記述は間違いで、正しくはto、と書きます。 配列の添え字が、大きい方から小さい方へ書くときは、3 downto 0のように書き、 逆に小さい方から大きい方へ書くときは、0 to 3のように書きます。

w0などのsignalの宣言をせずに、そのまま回路や論理式を記述できるんでしょうか?

それは文法上、できません。 signalの宣言と、回路や接続の記述は分ける必要があります。

全加算器のVHDL記述で、半加算器をcomponentで宣言していますが、実体がないように見えるが大丈夫?

鋭い指摘です。 C言語の関数のプロトタイプ宣言と同じようなもので、 componentは、「こういう入出力の部品があるつもりで」という宣言を しているだけで、その部品の中身・実体は、別のところに書きます。 実際には、adder4の例では、adder4のシミュレーションや論理合成をするときには、 full_adderやhalf_adderを記述したVHDLファイルをいっしょに指定します。

entityとcomponentで同じ名前の入出力端子(port)を使うことができるのでしょうか?

C言語の関数の引数と同じように、大丈夫です。

教科書に載っている論理回路図と、授業で描いた論理回路図が違うのはなぜ?

回路図の描き方が違っていましたかね・・・ 機能自体は同じのはずです。

授業そのもの・その他

減算はどうやるんでしょう?

たぶん別の授業で扱う内容かと思いますが、2の補数の加算、として行います。

全加算器のVHDL記述が、いまいちよくわからなかった

ぜひ復習を。 細かい文法には気をとられず、記述の本質だけを見ていくと、 わかってしまえば、何ともないと思います。

加算器は、具体的には何に使われるんでしょう?

コンピュータとは、そもそも計算機、ですから、 コンピュータ全般、ですね。

カルノー図を思い出したいです

ぜひ復習を。

VHDLの演習は行いますか?

再来週をはじめ、半年で数回を予定しています。

青や緑のチョークは見にくいのでやめてくださ

すいません、たしかにそうですね。見えにくいかな、と思いつつ、 使ってしまいました。次回からは気をつけます。

質問票を書く時間をとってほしいです

すいませんでした、今日は時間がなくなってしまいました。 次回からは、少し時間をとるようにしたいと思います。

もう少しゆっくり話してください(1件)

前回より、ご指摘いただいた数は減ったのですが、まだ指摘されてしまいました。 もう少し気をつけてみます。

授業をもう少しゆっくり進めてほしいです

前半の復習・半加算器のところがゆっくりすぎたと思います

これはなかなか難しいところで、このように、相反する指摘をいただきました。 みなさんの反応を見ながら、試行錯誤してみたいと思います。

板書をもう少しきれいに書いてほしいです

もう少しきれいに書くように努力してみます。

名前を間違えないでください

こればっかりは、謝るしかありません・・・ごめんなさい。 名簿にふりながをうっておきます。

休憩はとらないのでしょうか?

今日はとりませんでしたが、とった方がいいですかね。 進捗を見ながら、考慮してみます。
戻る