我的问题是我需要使用它们在VHDL中制作内存插槽的块。 我想要这个块的名称来编写块的结构代码并将它们相互连接以形成内存槽。 谢谢你
答案 0 :(得分:0)
对于简单的记忆,你可以用便携式VHDL推断它们。这允许您的代码在多个设备系列和制造商之间运行。您可能必须实例化库组件以获得更高级的功能,但大多数合成器可以推断出最常见的内存形式。详细信息在供应商的文档中。
该示例适用于生成同步RAM的大多数工具:
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all;
entity ram is
port (
Clock : in std_logic;
Address : in unsigned;
We : in std_logic;
Wr_data : in bit_vector;
Rd_Data : out bit_vector
);
end entity;
architecture simple of ram is
constant MEM_SIZE : positive := 2 ** Address'length;
type ram_mem is array (0 to MEM_SIZE-1) of bit_vector(Wr_data'length-1 downto 0);
signal ram_data : ram_mem;
begin
rd_wr: process(Clock)
begin
if rising_edge(Clock) then
Rd_data <= ram_data(to_integer(Address));
if We = '1' then
ram_data(to_integer(Address)) <= Wr_data;
end if;
end if;
end process;
end architecture;
地址和数据端口不受实例化时确定的宽度的限制。通过连接4位Address
和16位Wr_data
和Rd_data
信号,您可以获得16x16位内存。