ROM数组的常量值

时间:2016-06-06 09:12:25

标签: arrays vhdl constants

我正在尝试创建64位ROM type ROM is array (7 downto 0, 7 downto 0) of std_logic;

然后我想创建constant R :ROM :=

其中R(0, 7 downto 0 )的值为"00010011"

R(0, ) {3}指针值选择R(1, ),然后按公式输出:

for i in 0 to 7  loop
      Data_Out(i) <= R(conv_integer(AArray),i);
end loop;.

但是我试图定义ROM的常量值我得到一个错误,有人能指出我为这个数组定义常量的正确方法。

1 个答案:

答案 0 :(得分:4)

对于更复杂的初始化值,创建一个返回常量值的函数通常很有用,例如:

type ROM is array (7 downto 0, 7 downto 0) of std_logic;

function ROM_init return ROM is
  variable res_v : ROM;
begin
  -- Write code that assigns initial value to res_v
  return res_v;
end function;

constant R : ROM := ROM_init;

如果实际需要一个向量数组,你可以考虑改为:

type ROM is array (7 downto 0) of std_logic_vector(7 downto 0);
function ROM_init return ROM is
  variable res_v : ROM;
begin
  res_v(0) := "00010011";  -- Value from question
  -- Write more code that assigns initial value to res_v;
  return res_v;
end function;
constant R : ROM := ROM_init;

请注意,综合工具可能不会将其实现为ROM内存块,而只是简单的逻辑网络。