我花了很长时间试图弄清楚如何将 Xilinx Spartan 6 FPGA 的内核生成的 Block 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;
谢谢您的帮助!