第3回分

動作記述

動作記述は構造記述と並んで必ず必要なものなんでしょうか?

構造記述と動作記述の両方がそろわないと回路は動かないのでしょうか?

いえ、回路を表現する別々の方法、ということです。 1つの回路を、構造から表現する言葉と、動作から表現する言葉、です。

動作記述の説明の筆算で、加算の記号が○に+になっていたのはなぜ?

ああ、もちろん、ただの加算の「+」のことです。 紛らわしkつえすいません。

構造記述の回路をコンポーネントとして動作記述設計できるのか?またその逆は?

動作記述の中で構造記述を呼び出すことはできませんね。 詳しくは追々紹介しますが、インスタンス呼び出しは 関数呼び出しとは異なるので、「ある条件の時に回路を呼び出す」という ことはできません。 逆に、構造記述の中に、一部で動作記述が入る、ということは、よくあります。

動作記述の例で、aの前に0をつける意味がよくわからない

ビット幅(桁数)をあわせるための小細工です。 同じビット幅にしてから、加算を行うようにしています。

動作記述の例で、aやbのビット数をtmpにあわせないと動作しないのでしょうか?

それはぜひとも次回、自分で試してみてください。 たぶん、実は問題なく動作するはずです。

動作記述の方が、構造記述よりも一般によく使われるものなのでしょうか?

ケースバイケース、ですかね。 動作が複雑な回路では動作記述の方が明らかに書きやすいですが、 ちょっとした回路であれば構造記述のほうが書きやすいですね。

動作記述における信号の遅延はどのように扱われるのでしょうか?

今回は時間の関係で触れられませんでしたが、 ある条件のあとで一定時間がたった後に値が変化する、 というような遅延を考慮した記述を行うことができます。 ただし論理合成では、その遅延は考慮されません。 (が、実際に合成された回路では、有限の遅延が存在します)

4ビット以上の加算器も、FAを組み合わせればよいのでしょうか?

もちろんその通りです。 ただしある程度桁数が多い加算器では、遅延時間を小さくするために キャリー先見加算器などの工夫が知られています。

動作記述が、いまいちよくわからない

「回路の動作そのもの」を記述する手段、と考えてください。

構造記述の方が、動作記述よりも優れているのはどのようなところでしょうか?

いろいろな例を経験していくと見えてくると思うのですが、 回路の構造から記述した方が書きやすい、という例が、確かに存在します。

動作記述を与えるだけで回路は作られるんでしょうか?

いえ、それに対して論理合成を行って、はじめて回路になります。

4ビット加算器の動作記述で、「+」が、全加算、という意味なんでしょうか?

全加算、というか、いわゆる加算、ですね。

構造記述で書いたものと動作記述で書いたものは同じ動作をするんでしょうか?それとも構造記述は構造だけで動作しない?

前述のように、構造記述と動作記述は、回路の異なる表現手段ですから、 同じ動作をするように構造あるいは動作記述をする、というのが正しい理解かと思います。 構造記述は、回路の構造を記述したものですから、 それを論理合成して、はじめて実際に動作する回路、ということになります。

4ビット全加算器の動作記述の「:=」はどのような意味?

variableで宣言された変数に、値を代入する記号、です。

テストベンチ

4ビット加算器のテストベンチでインスタンス(i0)呼び出しの部分がよくわからない

前回触れたインスタンス呼び出しと同じで、この例では、 検証する対象の回路を定義しています。

テストベンチというものが何かよくわからない

回路が正しい動作をするかを検証するために与える入力を記述したもの、です。

テストベンチで「代表的なもの」は何種類ぐらい選ぶものなのか?

ケースバイケースですね。 どこまで本気で検証したいか、ということと、 どれぐらいの入力パターンを作れるか、ということの兼ね合い、でしょうか。

テストベンチで「代表的なもの」を選ぶことが原因で設計ミスは起こらないのか?

なかなか鋭い指摘です。 選び方が悪いと、肝心なミスを見逃しかねません。 そのあたりは、カバレージ、という指標で、ある程度は評価できます。

テストベンチで「代表的なもの」の選び方をもう少し詳しく知りたい

ちょっと時間の関係で今回は詳しくは触れられませんでしたが、 後ほど、もう少し詳しく扱う予定です。

テストベンチがないと回路は動作しないのか?

いえ、設計した回路を検証するために与える入力、がテストベンチですから、 「絶対に正しい回路」は、テストベンチは不要といえます。

テストベンチとはプログラムのようなものなのか?

上述のように、設計した回路が正しいかを検証するために与える入力、を 記述したもので、です。

テストベンチは、実際の回路の中に組み込まれて、動作確認を行うものなんでしょうか?

いえ、回路の実際の動作の時には、テストベンチなどは与えられず、 実際に動作するときの信号、を受けて動作するわけですから、 テストベンチは、あくまでも、検証のためのもの、です。

テストベンチを用いて動作検証をするとき、動作の異常をどのように知ることができるのか?

本来出てくるはずの正しい出力の値と、シミュレーションで求められた値とを 比べる、ということです。

動作検証は、正しい出力と回路の出力を、1つ1つの入力にしたいて比べる、ということ?

原理的にはそういうことになります。

大規模な回路のテストベンチはどのように作成するのでしょう?人手で?

テストベンチを自動的に生成する方法はないのか?

ある程度は、自動的に生成する方法が研究されているようです。

テストベンチをすべての入力の組み合わせを使って検証する場合はあるんでしょうか?

理想的にはその通りですが、特に順序回路(内部状態を持ち、出力が入力からだけは 決まらない回路)では、内部状態も含めたテストベンチが必要ですから、 すべての可能性の検証は、なかなか困難な場合が多いです。

例にでていた100nsというのは理想的な数値なのでしょうか?

経験的に、よく使う値のような気がします。 なんででしょうね。

シミュレーションで、「加算が正しい」ことをもっとわかりやすく表現できないものか?

どうでしょう・・・加算の場合に限ればありそうな気もしますが、 加算以外も含めて汎用的な方法を考えるのは、なかなか難しそうですね。

入力するまでがテストベンチ?それとも比較するまでがテストベンチ?

入力を記述したもの、がテストベンチです。

4ビット加算器のテストベンチの例で、1010+0101+0/1を使った理由はなんでしょう?

4ビット加算器で特徴的な、桁上がり(キャリー)の伝搬をみるため、でしょうね。

論理合成

論理合成がよくわからなかった

記述した回路を、実際に動作する回路に変換する操作、です。

VHDLで記述した回路が動作しないことはあるのか?(論理合成できないことはあるのか?)

動作しない、というか、論理合成ができない場合は、もちろんあり得ます。 詳しくは、これからいろいろな例を見ていくことになりますが、 VHDL記述をする際に、ある程度は、どのような回路ができるか、を想定しながら 記述をすることになります。

論理合成のライブラリはどれぐらいの種類があるんでしょう?

どこで/何で、設計した回路を作るか、次第で、その選択肢の数だけ ライブラリが存在することになります。

FPGAについてもう少し詳しく知りたい

論理機能を自由に設定できる論理回路LSIの一種、です。 詳しくは追々・・・

FPGAとライブラリの関係がよくわからなかった

設計した回路をFPGAで実現するためには、それ(そのFPGA)用のライブラリを 使う、ということです。

XilinxとかSpartan2とはナニ?

Xilinxは論理回路LSIのメーカ、Spartan2は、その製品の1つの名前です。

ライブラリとは具体的にはどんなもの?

FPGAのライブラリを例に、次回具体的にみてみることにしましょう。

論理合成の例で、ライブラリにEXORがあれば使った方がよい、という話があったが、EXORを使うデメリットはあるんでしょうか?

一般にはあまりないように思います。

論理合成の「制約」とは、どのようなものがあるんでしょうか?

生成される回路の回路規模、伝搬時間(動作速度)、などでしょうか。

論理合成の際に、あえて部品数の少ないライブラリを使うメリットはあるんでしょうか?

FPGAなどの実装される側で、使えるように用意しておくべきものが 少なくて済む、というメリットはあります。

なぜライブラリは統一されないんでしょう?

それはいろいろなメーカの思惑、というか、 それぞれのメーカが、自分のところの特色を生かしてよい性能を出せるような ライブラリを用意する、というのが一般的のようです。

論理回路はNANDゲートですべて作れる、と教わったが、なぜあえてAND、OR、NOTなどを使う必要があるのか?

もちろんすべての論理回路は、その気になればNANDゲートだけでできますが、 冗長になる場合もあります。 その点、ライブラリの部品数が多い方が、効率的な回路を合成できる可能性が 高くなります。

論理合成で作られる回路は、ライブラリが違えば、それにあわせて自動的に変わるもの?

そういうことになります。

自分で設計した回路をライブラリに加えることはできるんでしょうか?

そのようなマイ・ライブラリ、を作れるツール・環境もありますね。

その他

<

全加算器のsとcoの違いは?

sが加算結果(下の桁)、coが桁上がり(上の桁)、です。

ディジタル回路で、0と1の他に、ー1を含めて扱うものがあると聞いたことがあるが、それはVHDLで記述できるのか?

確かにそのような多値論理は研究されていますが、 残念ながらVHDLでは記述できません。

実際にVHDLを扱う演習の時間を増やしてほしい

すいませんでした、来週からは・・・

テストに出そうな重要なところを明示してほしい

まだこの時期では、さすがにそこまでは無理です・・・ だって1年目ですし・・・ ただ、これから、できるだけそうするようにしていきたいと思います。

VHDL、FPGA、VLSIは何の略でしょう?

VHDLはそういう名前、 FPGA=Field Programmable Gate Array、 VLSI=Very Large Scale Integration、の略です。

次回の演習はどこでやるのでしょう?

4Fの情報処理実習室でやります。

全体的にちょっと難しかった

慣れない分野なので苦手な人もいると思いますが、 しっかり復習して、がんばってください。

少し話すのが早いので、大切なところはゆっくりめに話してほしい(6件)

こちら、なかなか改善できず、申し訳ありません。 次回は、こういうご指摘をいただかなくなるように、 努力したいと思います。

板書の文が斜めになっているので、まっすぐに書いてほしい

これも、申し訳ないです。 気をつけるようにします。

板書で下の方は後ろの席の人が見えないので使わないでほしい

こちら、ご指摘ありがとうございます。 そのように気をつけたいと思います。

論理回路を復習しようと思った。

ぜひ。

疑問が思いつかない場合は、質問票には何を書けばいいでしょう?

「特になし」は寂しいので、 感想や苦情、同情などを、ぜひ書いてください。
戻る