1

「inner_module」と呼ばれる vhdl モジュールがあり、いくつかの入力ポートと出力ポートがあります。

entity inner_module is 
port (input1, input2 : in std_logic;
      output1, output2 : out std_logic);
end inner_module;

そして、それを「outer_module」と呼ばれる別のモジュールに含めたい (カプセル化しますか?)。次のように、「outer_module」に入力ポートと出力ポートがあるとします。

entity outer_module is 
port(outer_input1: in std_logic;
   outer_output1: out std_logic);
end outer_module;

これらは精巧に作成され、outer_module のアーキテクチャ部分を使用して inner_module に適切にフィードされます。これは、outer_output1 を評価するために作成されます。

信号 input1 と output1 は、メイン EVM (virtex 6) に接続されている外部 evm (dac evm など) を駆動するためのものであるとします。

シンタックスをチェックし、合成した後... ポートをピンに関連付ける必要があります (I/O ピンの計画を使用)。ただし、関連付けることができるポートは最上位モジュールのポートのみであり、アクセス権がありません。入力 1 と出力 1 に信号を送ります。

outer_module のエンティティ宣言に input1 と output1 を追加できますが、dac evm を駆動するためにこれらの信号を使用しているという事実を「隠し」(多くの信号である可能性があります)、単純にouter_module の以前のエンティティ宣言とのインターフェイス。信号input1とoutput1を正しいピンに関連付けたいのですが、これを「トップモジュールから」実行しません。

出来ますか?それを行う方法に関するアイデアや参考文献はありますか? それとも、最上位モジュールのピンに関連付けるすべての信号を常に含める必要がありますか?

4

2 に答える 2

1

これに対する可能な解決策を考えることができますが、それは良い考えではないと思います。避けるべきことを避けようとしていると思います。下位レベルのブロックから上位レベルのブロックを介して「隠された」I/O を渡さないことにより、基本的にどこからでもアクセスできるグローバル信号/ポートを要求しています。これを行うことができない物理的な理由はありません (つまり、デザイン内の任意の信号を FPGA ピンに接続できる必要があります) が、VHDL デザインが機能することを期待する方法ではありません。「グローバル シグナル」や変数が好きな人はいません。なぜなら、それらがどこから来てどこへ行くのかを追跡する能力を失うからです。

最上位デザインの I/O を見ると、I/O をターゲット デバイスのピンと考える必要があります。デザインで外部と通信するものはすべて、最上位デザインに入力または出力が必要です。

この理由でトップ レベルのデザインが非常に大きくなることは珍しくありません。通常、多くの相互接続があります。SDRAM インターフェイスは、最上位レベルにある信号の数をすぐに爆発させる可能性があります。ノイズとクラッターを減らすために試すことができるいくつかのことを次に示します。

  • 内部ブロック間を接続する場合、レコードを使用して目的/機能が類似する信号をグループ化します。設計ではinner_module、最上位の DAC EVM に出力する必要があるすべての信号を含むレコード タイプの出力ポートを に含めることができます。最上位設計のポート マップでレコードを使用することは避けたいと思います。これはツールとの混乱を引き起こす可能性がありますが、これは私の迷信でもあります.
  • 多次元データやバスを管理するために、ベクトル、配列 (または配列の配列) を利用します。これにより、混乱を大幅に減らすことができます。bit0, bit1,の代わりにbit2、信号 (ベクトル) を呼び出すことができ、信号のbitsすべての要素が同じ方法で処理されます。
  • インターフェイスを使用する必要があるブロック内ではなく、設計のトップ レベル (または 1 レベル下) に、物理/外部 (つまり、SDRAM インターフェイス) と対話するモジュールを配置します。これにより、インターフェイスがインスタンス化されている場所に到達するために、(潜在的に) モジュールの多くのレイヤーを介して外部インターフェイス信号を送信する必要がなくなります。
  • 優れた VHDL エディタ (私は vhdlmode の emacs が好きです) を利用して、エンティティ (ポート マップ) をコピーし、それをインスタンス化として、信号のリストとして貼り付けることで、発生するコピー/貼り付けエラーの数を大幅に減らすことができます。コンポーネントなどとして
于 2013-10-02T16:22:59.053 に答える
1

最上位ポートにはレコード タイプを使用します。接続の両端 (FPGA と DAC のシミュレーション モデルなど) で使用できるパッケージでレコードを宣言します。

レコード内の実際のシグナルの詳細を非表示にすることができます。レコードを更新する必要がある場合、最上位の設計を変更する必要はありません。

ポートは 1 つの方向 (モード、in、out、inout のいずれか) しか持てないため、レコードのペアを使用するのが一般的です。1 つはすべての入力信号を含み、もう 1 つは出力用です。

最も外側のレベルでは、FPGAピンを正しく接続してコンポーネントを記録するためのツール(Xilinxに言及しているため、UCFファイル)を取得するために、いくつかの実験が必要になる場合があります...

于 2013-10-02T19:13:37.993 に答える