Qsys では、12 個の入力パラレル ポートを使用しています (名前を にpio1
しますpio12
)。各ポートは 12 ビットです。vhdl
これらのパラレル・ポートは、Quartus 回路図のブロックから値を取得します。回路図bdf
では、nios ii システム シンボルから を確認できるので、これらの を の他のブロックに接続pio1
できます。pio12
pio
bdf
私の質問は、これら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_n
12回出てくる(1回だけ許される)のに12回あるpio
のに…どう変えればいいの?
警告: avalon_slave_0: 信号 writebyteenable_n が 12 回表示されます (1 回のみが許可されます) エラー: avalon_slave_0: インターフェイスには関連するクロックが必要です エラー: avalon_slave_0: インターフェイスには関連するリセットが必要です エラー: avalon_slave_0: インターフェイスには関連するクロックが必要です。