在VHDL中分配多维数组的一部分

时间:2013-08-15 16:00:11

标签: vhdl

我想改变数组中的一些元素,但可以弄清楚如何去做。

这一行:sig3(1) <= (11, 12);给了我一个错误

entity t1 is
end entity;

architecture testbench of t1 is

    type type3 is array(1 to 2, 1 to 2) of integer;

    signal sig3 : type3;

begin
    process is
    begin
        -- sig3 <= ((11, 12), (13, 14));  -- this works
        sig3(1) <= (11, 12);   -- get error:  "Incompatible types for assignment."
        wait;
    end process;
end architecture;

1 个答案:

答案 0 :(得分:3)

您定义数组的方式不幸地排除了您赞成分配的方法: 如果您对这样的类型进行decalre:

type type3 is array(1 to 2, 1 to 2) of integer;
signal sig3 : type3;

作业必须完全指定索引:

sig3(1,1) <= 11;
sig3(1,2) <= 12;

您可以将2d数组定义为1-d数组的数组,但

type type4 is array(1 to 2) of integer;
type type5 is array(1 to 2) of type4;
signal sig5 : type5;

您现在可以像这样分配:

sig5(1) <= (11,12);

不幸的是,你无法在其他方面轻松工作。