VHDL RAM 256x8位

VHDL RAM 256x8位,vhdl,ram,intel-fpga,Vhdl,Ram,Intel Fpga,我需要为256x8位RAM编写VHDL代码。我将使用双向总线来管理读写,但我想我可以使用原理图文件来实现这一点。我需要的是创建RAM内存作为一个组件,但我有点挣扎,因为我得到几个代码10818错误。任何帮助都将不胜感激 RAM内存应该有一个数据io端口7到0标准逻辑向量,一个地址端口7到0标准逻辑向量,以及oe、we和clk端口,我猜所有标准逻辑 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

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

RAM内存应该有一个数据io端口7到0标准逻辑向量,一个地址端口7到0标准逻辑向量,以及oe、we和clk端口,我猜所有标准逻辑

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;

我假设你希望这是可合成的

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

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