SPI ベースの IO エクスパンダ用の汎用ドライバを作成しようとしています。アイデアは、要求された IO セットアップに一致するインスタンス化で初期化値を渡すことです。
私の現在の試みは次のようになります:
entity max7301_simple is
generic (
IO_cfg : array (1 to 7) OF integer range 0 to 255 := (16#55#, 16#55#, 16#55#, 16#55#, 16#55#, 16#55#, 16#55#)
);
port (
-- Application interface :
clk_i : in std_logic; -- input clock, xx MHz.
rst_i : in std_logic; -- sync reset.
en_i : in std_logic; -- enable, forces re-init of pins on MAX7301.
output_i : in std_logic_vector(27 downto 0); --data to write to output pins on MAX7301
irq_o : out std_logic; -- IRQ, TODO: what triggers, change on inputs ?
input_o : out std_logic_vector(27 downto 0); --data read from input pins on MAX7301
-- MAX7301 SPI interface
sclk : out std_logic; -- SPI clock
din : in std_logic; -- SPI data input
dout : out std_logic; -- SPI read data
cs : out std_logic -- SPI chip select
);
end max7301_simple;
問題は IO_cfg 配列にあります。初期値などを使用してさまざまな試みを試みましたが、配列の指定方法を理解できないようです。
配列をジェネリックとして渡すことができることを読んだことがあると思いますが、まだうまくいきません。ザイリンクス ISE は med に「'array' の近くに構文エラーがあります」とだけ伝えますが、これは私を前進させるのに十分な情報ではありません。
どんな助けでもいただければ幸いです
このモジュールをインスタンス化するときは、常に 7 つの値が必要です。