在VHDL中寻址std_logic向量数组中的特定位

时间:2013-06-16 20:19:57

标签: arrays vhdl fpga modelsim

我是VHDL新手。 我的问题是我似乎无法从std_logic_vector数组中找到正确的写法或读取语法。我这样初始化数组:

 TYPE eleven_samples_in IS ARRAY ( 0 TO 10 ) OF STD_LOGIC_VECTOR( 87 DOWNTO 0 );

我尝试解决它:

odd: for i in 1 to 6 generate
   node: compare_level
       port map(
                input  => eleven_samples_in(i*2 - 1)(79 DOWNTO 0),
                output  => eleven_samples_out(i*2 - 1)(79 DOWNTO 0 )
               );
end generate odd;

或者:

 port map(
           input  => eleven_samples_in(i*2 - 1,79 DOWNTO 0),
           output  => eleven_samples_out(i*2 - 1,79 DOWNTO 0 )
         );
 end generate odd;

但我得到的错误如:

  

错误(10409):Median_Filter.vhd中的VHDL类型转换错误(45):文本或符号“eleven_samples_in”附近转换的对象类型必须与目标对象的std_logic_vector类型匹配

我搜索了网络,发现没有任何效果。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您创建了一个类型eleven_samples_in,并直接使用它。这是不正确的。

相反:

type eleven_samples_in_type is array (0 to 11) of std_logic_vector(89 downto 0);
signal eleven_samples_in : eleven_samples_in_type;

...

在不了解您的compare_levels组件的情况下,这就像我可以帮助

一样