VHDL:コンポーネントとエンティティ


25

コンポーネントとエンティティの違いは何だろうと思っています。どの場合にエンティティの代わりにコンポーネントを使用するのが良いかを知りたいです。どうもありがとうございます。


1
誰でもタグコール 'vs'を作成できますか。ありがとうございました。
ピーターストーン

7
タイトルのように「対」という意味ですか?うーん、良い考えではありませんが、考えます。
-stevenvh

2
ここの全員がVisual Studioを使用しているわけではありません。;-)
cbmeeks

回答:


17

これは、一部の人々(特に物理的な電子機器のバックグラウンドを持つ人々)に役立つアナロジーです。

A componentはコンパイラに「ある時点でこれを呼び出すようなピンが付いたものになるでしょうが、今のところは心配しないでください」と伝えます。一種の「ソケット」を定義します。続いて、その「ソケット」に「つながる」ものを説明することができます。

entity名前とそのコンパイラは、その「ソケット」(したがって、「ワイヤ」に接続すること)に「プラグに」缶ピンのセットで特定の何かです。

あなたがいないことに注意必要があるcomponentあなたは「ソケット」は個別に定義する必要はありませんので、コンパイラはすでに実体について知っている意味「直接インスタンス化」を行うことができます。実際、それは私の推奨されるアプローチです。そうでなければ、component同期を保つための追加レベルです。

VerilogとVHDLを混在させ、VHDL内でVerilogブロックを使用する必要がある場合は、コンポーネントを使用する必要があります。次に、これcomponentがソケットであり、コンパイラ/エラボレーターがVerilogをソケットにプラグインできるのはかなり後のことです。


コンポーネントはDIPパッケージに似ています。1つの回路で同じ8ピンオペアンプを何十回も使用できますが、常に8ピンです。それらは同じ種類のオペアンプであるにもかかわらず、別々のコンポーネントです。エンティティは、データシートのピン配置に似ています。個別のオペアンプはすべて同じピン配列を備えています。
ajs410

14

エンティティが複数持つことができ、デザインユニットへの本当のインタフェースであるアーキテクチャ。 エンティティは物の出し入れ方法を定義し、アーキテクチャはデザインユニットの動作方法を定義します。したがって、同じエンティティによって記述される同じ機能を実装する複数の方法を使用できます

A コンポーネントは、理想的又は「仮想」デザインユニットです。トップダウン設計を行う場合(つまり、下位レベルブロックを設計する前に最上位レベルをまとめる場合)、コンポーネントを使用して、設計ユニットに期待するインターフェイスのタイプを記述できます。これは、将来の実際の実装のためのプレースホルダーまたはブラックボックスと考えることができます。

構成を使用するをすると、特定のコンポーネントインスタンスをエンティティ定義にバインドます。ここで、どのポートをどのポートに接続する必要があるかをマップできます。これは、理想的な意味で定義されたコンポーネントが実際に実装されたエンティティにどのようにマッピングされるかをマッピングします。

実際にはには、コンポーネントは通常不要であり、通常使用されない別のレベルの抽象化を作成することがわかりました。エンティティを直接インスタンス化し、エンティティのインスタンスに使用するアーキテクチャを参照することにより、コンポーネントの使用(および必要性)をスキップできます。

例えば:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...

2

以下の[1]から:

VHDLのエンティティ、コンポーネント、およびコンポーネントインスタンスには重要な違いがあります。エンティティは設計インターフェースを記述し、コンポーネントはインスタンス(またはサブブロック)として使用されるエンティティのインターフェースを記述し、コンポーネントインスタンスは他の部品や信号に接続されたコンポーネントの別個のコピーです。これらを、自作部品を使用したブレッドボード設計のプロセスと比較する。エンティティとアーキテクチャは、パーツがどのように機能するかのインターフェイスと回路図を記述したデータブックのようなものです。このコンポーネントは、接続方法を説明するパーツに付属する短いピンリストのようなものです。コンポーネントインスタンスは実際の部分そのものであり、それぞれが独立して動作する多くのものを持っている場合があります。

コンテキストと詳細については、[1]を参照してください。


ライン上には多数のVHDLチュートリアルがあります。例[2] [3] ...本(84ページPDF)[4]よさそうです[5]主にリンク[6]


1
巻末注のリンクを好むように見えますが、それが印刷物で行われている方法であり、使用するためのハイパーリンクを使用していません。「コンテキストと詳細については、このリンクを参照してください」と書くことができます。はるかに使いやすい、AFAIC。ただの提案。
stevenvh

2
古い脳:-)。私は最大限の情報に傾倒します(あなたが気づいたように:-))、巻末注の方法により、読者はリンクがどこから来たのか、また時々同じサイトにあるかどうかを見ることができます。非常に長いリンクの場合、意味のある名前でbit.ly / j.mpを使用する傾向があります。また、ユーザーがリンクをクリックすることをためらっているのを見たことがあります(これらはコピーして確認のために貼り付けることができます(追加作業))。しかし、指摘されたポイントと私は将来的にそれぞれをオプションとして検討します。
ラッセルマクマホン

0

エンティティは、入出力ポートが指定されている設計単位です。エンティティは外部ポートを定義するだけですが、内部の機能は対応するアーキテクチャによって指定されます。コンポーネントは、エンティティとアーキテクチャの両方で構成される完全な設計単位です。最初のステップは、コンポーネントの宣言(名前とポートの指定)、そしてコンポーネントのインスタンス化(ポートマッピング)です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.