2017-11-01 11 views
2

VHDLのエンティティの構文について混乱します。VHDLのエンティティ構文

enter image description here

出典::私はについて混乱している何Peter J. Ashenden, "The Designers Guide to VHDL", 3rd ed., Morgan Kaufmann, 2008.

は、宣言の終わりです。ここ実体が宣言されるべきかEBN formのルールがあります。これによると、エンティティまたはの識別子を最後に含める必要はなく、すべて同じ動作をします。たとえば、以下の2つの宣言はまったく同じですか?

宣言1

entity identifier is 
    ... 
begin 
    ... 
end ; 

宣言2

entity identifier is 
    ... 
begin 
    ... 
end entity identifier ; 

そうなら、なぜ誰もが、後者の宣言を選ぶでしょうか? 2つの亜種のうちどちらを使用すべきかをお勧めしますか?私はこれを求めています。なぜなら、私は通常、後者の宣言を例で見ています。なぜ、誰が最初の宣言よりも2番目の宣言を好むのか、自分自身では説明できません。

+0

ここでオプションの構文が必要なのはスタイルです。意見を求めている間は、デザインファイルに任意の数のデザイン単位を含めることができ、評価単位で他のプライマリユニットとセカンダリユニットをプライマリユニット(エンティティ)とセカンダリユニット(アーキテクチャ)の間にインタリーブすることはできません。制限された行数でエディタウィンドウを表示すると、実際に何が終了するのかという疑問が湧きます。 – user1155120

答えて

4

私はほとんどの場合、後者の宣言を使用します。なぜなら、コードがよく文書化されているからです。前者の場合、読者がシンプルにend;を見つけた場合、何が終了しているのかははっきりしていません。

VHDL未満冗長な言語を使用する場合は、(一般的に)プログラマは、多くの場合、C++で例えば、閉鎖されているものを読者に示すために何かを閉鎖構造にコメントを追加:

} // if (enable) 

if (enable) 
    begin : enable_block 
    ... 
    end : enable_block 
0123:Verilogで

end // if (enable) 

SystemVerilogのは、適切な言語で同じことをやっての機能を追加します

end ; 
end identifier ; 

"ほとんど常に":

あなたはVHDLでこれらすべてを言うことができる理由は、

end ; 
end entity ; 
end identifier ; 
end entity identifier ; 

する唯一これらは合法的、VHDL-87とVHDL-93は、後方互換性を作ることです?はい。私は実行可能コードを書いていましたが、私はいつも後者を書くでしょう。しかし、今週、VHDLについていくつかのPowerPointスライドを作成しました。私はを意図的に書いていました。なぜなら、end entity identifier ;全体が読者の気を散らすと思ったからです。あなたはそれをあなたがすることができます。

+0

親愛なるテイラー氏、詳細な説明をいただきありがとうございます。 「より良い文書化されたコード」は優れた議論です。私はより冗長なものを使用します。 –

+2

これはまた、壊れたコードを識別しやすくします。ツールが '構文エラー:終了プロセスが期待され、終了エンティティが見つかりました 'と報告した場合、間違いをより早く見つけることができます。 –