VHDL RAM 256x8位

时间:2014-03-09 13:26:39

标签: vhdl ram intel-fpga

我需要为256x8位RAM编写VHDL代码。我将使用双向总线来管理读写,但我想我可以使用原理图文件来做到这一点。我需要的是创建RAM内存作为一个组件,但我有点挣扎,因为我得到几个代码10818错误。任何帮助,将不胜感激。

RAM内存应该有一个data_io端口(7 downto 0 std_logic_vector),一个地址端口(7 downto 0 std_logic_vector),以及oe,we和clk端口(我猜是所有std_logic?)

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY MyRAM IS 
PORT(CLOCK,WE,OE:IN STD_LOGIC;
ADDR:IN STD_LOGIC_VECTOR (7 DOWNTO 0);
D_IO: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY;

ARCHITECTURE RTL OF MyRAM IS
TYPE RAM_12 IS ARRAY (0 TO 255)OF STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL RAM_PTR:RAM_12;
BEGIN
PROCESS(CLOCK)
BEGIN
IF RISING_EDGE(CLOCK) THEN
RAM_PTR(CONV_INTEGER(ADDR))<=D_IO;
ELSE 
D_IO<=RAM_PTR(CONV_INTEGER(ADDR));
END IF;
END PROCESS;
END RTL;

1 个答案:

答案 0 :(得分:0)

我假设您希望这是可合成的......

您不能直接在FPGA中使用双向总线。芯片里面没有。如果您正确编写代码,可以使用三态信号来推断有线和/或有线或驱动程序的集合。

然而,这些都无法帮助您使用RAM。如果要推断设备内部的RAM,则必须与可用的实际RAM块对应。它们将具有单独的数据库,用于写入数据以及读取数据。检查您正在使用的综合工具的帮助文件(可能是Quartus for Altera,除非您使用的是其他第三方工具)。将会有一个关于推断RAM块的部分,它将向您展示要使用的确切编码样式。