【发布时间】:2014-12-16 20:21:47
【问题描述】:
我的问题是我需要使用它们在 VHDL 中制作内存插槽的块。 我想让这个块的这个名字写块的结构代码并将它们相互连接以制作内存插槽。 谢谢。
【问题讨论】:
-
这个问题我不清楚。您能否详细说明您想要做什么以及您遇到的问题?
-
我想知道我将它们连接在一起以在 VHDL 中制作内存插槽的块
标签: vhdl
我的问题是我需要使用它们在 VHDL 中制作内存插槽的块。 我想让这个块的这个名字写块的结构代码并将它们相互连接以制作内存插槽。 谢谢。
【问题讨论】:
标签: vhdl
对于简单的记忆,您可以使用可移植的 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 位内存。
【讨论】: