Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VHDL代码的测试台中声明数组数组?_Vhdl - Fatal编程技术网

如何在VHDL代码的测试台中声明数组数组?

如何在VHDL代码的测试台中声明数组数组?,vhdl,Vhdl,我有一个数组定义为实体的输入。我使用一个包来定义数组的数组。在测试台中,我包含了该包并在体系结构中声明了组件,但出现了一个错误,即“entity average中不存在正式端口x。请将块平均的定义与其组件声明和实例进行比较,以检测不匹配。” 附上以下声明。请帮忙 -- the code library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; package vpkg is type m_array is

我有一个数组定义为实体的输入。我使用一个包来定义数组的数组。在测试台中,我包含了该包并在体系结构中声明了组件,但出现了一个错误,即“entity average中不存在正式端口x。请将块平均的定义与其组件声明和实例进行比较,以检测不匹配。” 附上以下声明。请帮忙

-- the code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

package vpkg is
    type m_array is array(1 downto 0, 1 downto 0) of std_logic_vector(7 downto 0);
end package;

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

use work.vpkg.all;

entity average is
    Port (x : in m_array;
          clk : in std_logic;
          y : out std_logic_vector(7 downto 0)  
     );
end average;

architecture avg_arch of average is
signal sum : std_logic_vector(8 downto 0) := (others => '0');
begin
process(x):
    for I in 0 to 1 loop
        for J in 0 to 1 loop
            sum <= sum + ('0' + x(I,J));
        end loop;
    end loop;
end process;
    y <= std_logic_vector(to_signed(to_integer(signed(sum) / 4),8));
end avg_arch;
——代码
图书馆IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.NUMERIC_STD.ALL;
包装vpkg为
类型m_数组是标准_逻辑_向量(7向下到0)的数组(1向下到0,1向下到0);
端包装;
图书馆IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.NUMERIC_STD.ALL;
使用work.vpkg.all;
实体平均数为
端口(x:在m_阵列中;
clk:标准逻辑中;
y:输出标准逻辑向量(7到0)
);
最终平均数;
平均建筑面积为
信号和:标准逻辑向量(8到0):=(其他=>'0');
开始
过程(x):
对于0到1循环中的I
对于0到1循环中的J
和时钟,y=>y);
输入程序:进程
开始
等待100ns;

x(0,0)我不能复制这个。你使用的模拟器是什么?您可以编辑您的答案以包含该内容。我用的是Modelsim和GHDL。嘿,am9417,我用的是Vivado模拟器。提供一个,若并没有一个针对平均值的体系结构和一个针对tb_平均值的完整体系结构,你们的测试台就无法详细阐述。您的实体和组件声明相匹配。@TanviSingh,您需要在此处添加尽可能多的代码以再现错误,因为它缺少体系结构。尽管如此,我认为这不是你的代码,而是一些Vivado模拟器的问题…回到
sum
--the test bench
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use work.vpkg.all;

entity tb_average is
--      Port ( );
end tb_average;

architecture tb_average_arch of tb_average is

component average
    Port (x : in m_array;
          clk : in std_logic;
          y : out std_logic_vector(7 downto 0)  
          );
end component;

signal x : m_array;
signal clk : std_logic := '0';
signal y : std_logic_vector(7 downto 0);

begin
average_1 : average Port Map (x => x,clk => clk,y=>y);

input_proc : process
begin 
    wait for 100ns;
    x(0,0) <= "00001001";
    x(0,1) <= "00000110";
    x(1,0) <= "00000011";
    x(1,1) <= "00000001";
    wait; 
    
end process;

clk_proc : process
begin
    wait for 100ns;
    loop
        clk <= '1';
        wait for 10ns;
        clk <= '0';
        wait for 10ns;
    end loop;
end process;
    
end tb_average_arch;