私のFPGAソフトウェアには、要素またはシステム設計の開発にドラッグアンドドロップ機能があります。これは、ユーザーがコードに移動して変更することなく、変更可能なパラメータを設定できる「汎用」コンポーネントで最も効果的です。そのために、1つの入力と複数の出力を持つジェネリック・デマルチプレクサを作成することにしました。このデザインでは、ユーザーが出力ポートの数と入出力ポートのビット幅を定義できるようにする必要があります(どちらも同じ幅です)。また、設計では、選択された出力ポートの数(関数で処理した部分)の数に応じて出力選択ポートのビット幅を決定する必要があります。私の制限のため、出力ポートの数は2〜256の出力になります。それはデザインの出力の可変数をコード化することが可能ですか、それはパイプの夢です。私は多くの固定出力デマルチプレクサのコードを書いていることに注意してください。一般的なDEMUX(1入力、複数出力)をVHDLでコーディングすることはできますか?
答えて
私があなたが探しているものを完全に理解しているかどうかはわかりませんが、私は正しく答えようとします。
まずはあなたのツールがVHDL-2008をサポートしているかどうかによって異なります。多くのカスタマイズ可能な機能はVHDL-1993では利用できません。
あなたは、これはおそらく動作することができない場合:
あなたはyour_package.vhdl
パッケージタイプを定義するための最初の必要性そして、あなたは次のようにあなたのエンティティを定義することができます。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
USE WORK.your_package.ALL;
ENTITY demux IS
GENERIC (PORT_WIDTH : integer := 8; -- define your data width
NB_OUTPUT : integer := 50); -- define the number of outputs needed
PORT (input : IN std_logic_vector(PORT_WIDTH - 1 DOWNTO 0);
output : OUT demux_output(0 TO NB_OUTPUT - 1)(PORT_WIDTH - 1 DOWNTO 0);
sel : IN std_logic_vector(7 DOWNTO 0));
END ENTITY;
ARCHITECTURE RTL OF demux IS
SIGNAL sel_int : integer := 0;
BEGIN
sel_int <= to_integer(unsigned(sel));
PROCESS (sel_int, input)
BEGIN
output <= (OTHERS => (OTHERS => '0'));
FOR i IN 0 TO (NB_OUTPUT - 1) LOOP
IF (i = sel_int) THEN
output(i) <= input;
END IF;
END LOOP;
END PROCESS;
END ARCHITECTURE;
そこでは、ポートの幅(PORT_WIDTH
)と出力ポートの数(NB_OUTPUT
)を宣言するだけです。
あなたのツールがVHDL-2008に準拠していない場合は、拘束されていないデータ幅をタイプdemux_output
で宣言することはできません。そのため、グローバル定数を定義する必要がありますが、これはおそらくあなたが探している "カスタマイズ可能な部分"を失うでしょう。
ツールにVHDL2008がサポートされている場合は、パッケージを使用する代わりに汎用タイプを使用できます。 –
真実ですが、私はそれが "セクシー"ではないことを知ります:p –
最後に、コードを実際に読んで、あなたが提案したことを完全に理解する時間を得ました。あなたはほぼ正しいと思っています。この例では、実際の出力ポートではなく、配列内の場所に入力が送られるように指定しています。私の目標は、入力を特定の出力に接続し、データをその出力にラッチさせることでした。私は配列を使うことを考えましたが、私が探していたものではないと判断したので、配列にアクセスして独自の出力にルーティングする別のエンティティを開発する必要がありました。出力の数を一般的な機能にすることはできないようです。 –
A.Kとscary_jeffには、応答に感謝します。 VHDL-2008に準拠しているかどうかを私のツールで確認します。ちょうどあなたが知っているように、私はVHDLについて非常に新しく、素早く学びますが、私ができるだけシンプルにしようとするより複雑な設計に慣れるまではそれほど時間がかかりません。私はそれに従いますが、私には新しいものです。
出力:OUT demux_output(0 TO NB_OUTPUT - 1)(PORT_WIDTH - 1 DOWNTO 0);
私はそれが何を言っているのか理解していますが、私が行ったすべての研究において、どれも能力やそのような例を示していませんでした。もう一つの行;
出力< =(その他(>その他(OTHERS => '0')));
もう一度、キーワード「others」のドキュメントを見たことがないので、私には意味がありません。私が使用できる「良い」VHDLリソースについて説明したり、私に知らせてもらえますか?そうすれば、初心者タイプの質問をするのではなく、より複雑な問題について助けを求めることができます。もう一度、ありがとう。
- 1. 一般的な方法で複数の入力データフレームから複数の入力データフレームを作成する
- 2. ストリームアナリティック(SA)複数入力と1出力
- 3. 複数の入力と1つの出力でkafkaを使用しますか?
- 4. 複数の入力と出力を単一のルールでスネークメイクファイル
- 5. android studioで一般的な入力定数を定義する方法は?
- 6. 一般的なBinarySearchTree(Java)のPostOrder出力
- 7. Kotlinで一般的な入力パラメータを持つ関数リテラルを宣言する
- 8. 複数出力の8ビットレジスタを同じ出力(VHDL)に接続
- 9. 可変数の入出力のVHDL
- 10. イベントレット/一般的な非同期入出力タスク精度
- 11. Vivado 2015.1 VHDL入力/出力違反
- 12. jQuery:一般的なキーボード入力をどのように聞きますか?
- 13. 一度に入力して出力できないのはなぜですか?
- 14. 複数の入出力にtf.map_fn(...)を適用できますか?
- 15. ファイルビートに複数の出力を設定することはできますか?
- 16. 1人ではなく、複数人で出力するには?
- 17. このクラスを一般的なクラスにすることはできますか?
- 18. Vala - 一般的な値を出力する
- 19. Matlabでは、複数入力関数の場合、1つの入力を複数の入力として使用する方法はありますか?
- 20. 制限付き入力と出力可能な出力を一致させるアルゴリズムはありますか?
- 21. VHDLバッファ変数と出力変数
- 22. iOS Swift:タイプを入力パラメータとして使用する一般的な方法を抽出しますか?
- 23. ニューラルネットワーク複数の入力と1つの出力
- 24. vhdlブロックの出力をその入力にフィードバックする
- 25. 一般的な.NETクラスのリストはどこで入手できますか
- 26. 複数行のデータを1行で出力することはできますか?
- 27. Logstash複数入力複数出力
- 28. 複数の行を入力としてテキスト選択を行うことができるVBAで '入力ボックス'を作成することはできますか?
- 29. 複数のJOptionPane文字列入力ダイアログを1つの文で出力する
- 30. VSTインストゥルメント複数入力と出力
このような質問をする通常の方法は、あなたが試したことの例と、何が間違っているのかの説明を含めることです。 –