Qsys では、12 個の入力パラレル ポートを使用しています (名前を にpio1しますpio12)。各ポートは 12 ビットです。vhdlこれらのパラレル・ポートは、Quartus 回路図のブロックから値を取得します。回路図bdfでは、nios ii システム シンボルから を確認できるので、これらの を の他のブロックに接続pio1できます。pio12piobdf
私の質問は、これらpio1をベクトル化する方法pio12ですか? Nios システム シンボルから出てくる12pio個すべてのピオを 1 行ずつ表示する代わりに、これらの 12 個のピオすべてをグループ化して、12 個ではなく 1 個だけを表示するにはどうすればよいですか? pio私が見たものから、pio[1..12][1..12] という名前を付けることができます。最初のブラケットは を意味pio1しpio12、2 番目のブラケットはビット 1 からビット 12 を意味します。これは、各パラレル ポートに 12 ビットがあるためです。
pio_helper.vhdこのファイルを使用して Qsys に新しいコンポーネントを作成しました。
ファイルは次のpio_helper.vhdlとおりです。
entity pio_helper is
port(
pio1 : in std_logic_vector(11 downto 0);
pio2 : in std_logic_vector(11 downto 0);
pio3 : in std_logic_vector(11 downto 0);
pio4 : in std_logic_vector(11 downto 0);
pio5 : in std_logic_vector(11 downto 0);
pio6 : in std_logic_vector(11 downto 0);
pio7 : in std_logic_vector(11 downto 0);
pio8 : in std_logic_vector(11 downto 0);
pio9 : in std_logic_vector(11 downto 0);
pio10 : in std_logic_vector(11 downto 0);
pio11 : in std_logic_vector(11 downto 0);
pio12 : in std_logic_vector(11 downto 0);
piomerge : out std_logic_vector(143 downto 0)
);
end pio_helper;
のアーキテクチャ動作pio_helperは
begin
piomerge(11 downto 0) <= pio1;
piomerge(23 downto 12) <= pio2;
piomerge(35 downto 24) <= pio3;
piomerge(47 downto 36) <= pio4;
piomerge(59 downto 48) <= pio5;
piomerge(71 downto 60) <= pio6;
piomerge(83 downto 72) <= pio7;
piomerge(95 downto 84) <= pio8;
piomerge(107 downto 96) <= pio9;
piomerge(119 downto 108) <= pio10;
piomerge(131 downto 120) <= pio11;
piomerge(143 downto 132) <= pio12;
end behavior;
次のエラーが発生しました。いくつか質問があります。
- これは純粋にデータ転送であるため、クロック信号とリセット信号はないと思います
writebyteenable_n12回出てくる(1回だけ許される)のに12回あるpioのに…どう変えればいいの?
警告: avalon_slave_0: 信号 writebyteenable_n が 12 回表示されます (1 回のみが許可されます) エラー: avalon_slave_0: インターフェイスには関連するクロックが必要です エラー: avalon_slave_0: インターフェイスには関連するリセットが必要です エラー: avalon_slave_0: インターフェイスには関連するクロックが必要です。