ザイリンクスSpartan6FPGAのコアで生成されたブロックRAMを双方向データバスに接続する方法を理解しようとしています。私が見つけることができるすべての例は、入力データポートと出力データポートを個別に使用することを示していますが、私の場合、双方向データバスとして使用することを余儀なくされています。
VHDLを使用しています。
生成されたコンポーネントの定義は次のとおりです。
COMPONENT ram
PORT (
clka : IN STD_LOGIC;
wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
dina : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
douta : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END COMPONENT;
これは次のようにインスタンス化されます。
ram1 : ram
PORT MAP (
clka => clk,
wea => r_w,
addra => addr,
dina => din,
douta => dout
);
dina
誰かが私に接続しdouta
てinout
呼ばれるポートに接続するプロセスブロックを見せてもらえますかdata
?
私は次のことを試しましたが、0%の成功でした:
process(clk)
begin
if rising_edge(clk) then
if r_w = "1" then
-- Write
din <= data;
dout <= temp;
else
-- Read
din <= (others => 'Z');
data <= dout;
end if;
end if;
end process;
ご協力いただきありがとうございます!