0

我需要为 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;
4

1 回答 1

0

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

您不能直接在 FPGA 中使用双向总线。芯片内部没有。如果您正确编写代码,则可以使用三态信号来推断一系列连线与或连线或驱动程序。

但是,这些都不能帮助您使用 RAM。如果您想推断设备内部的 RAM,则它必须与可用的实际 RAM 块相对应。它们将有单独的数据总线用于写入数据进入和读取数据出来。检查您正在使用的综合工具的帮助文件(可能是 Quartus for Altera,除非您使用不同的第三方工具)。将有一节介绍推断 RAM 块,它将向您展示要使用的确切编码风格。

于 2014-03-09T20:09:24.233 回答