【问题标题】:what is the blocks that i need to make memory 16*16 bit slot in VHDL?我需要在 VHDL 中制作内存 16*16 位插槽的块是什么?
【发布时间】:2014-12-16 20:21:47
【问题描述】:

我的问题是我需要使用它们在 VHDL 中制作内存插槽的块。 我想让这个块的这个名字写块的结构代码并将它们相互连接以制作内存插槽。 谢谢。

【问题讨论】:

  • 这个问题我不清楚。您能否详细说明您想要做什么以及您遇到的问题?
  • 我想知道我将它们连接在一起以在 VHDL 中制作内存插槽的块

标签: vhdl


【解决方案1】:

对于简单的记忆,您可以使用可移植的 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_dataRd_data 信号来获得 16x16 位内存。

【讨论】:

  • 请问,顶层图呢?!!
  • 这是顶级 VHDL 文件。对于这样一个简单的任务,您不需要任何子组件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多