gpt4 book ai didi

vhdl - 在 VHDL 中,是否可以在不使用类型的情况下创建一个 std_logic_vector 数组?

转载 作者:行者123 更新时间:2023-12-01 21:56:27 25 4
gpt4 key购买 nike

在 SystemVerilog 中,我可以创建一个多维数组,如下所示:

reg [31:0] mem[0:127];

但是,在 VHDL 中,VHDL 书中所有在线创建类似多维数组的示例都表明,在创建数组之前,我必须先创建一个类型。示例:

type   mem_t is array(0 to 127) of std_logic_vector(31 downto 0); 
signal mem :mem_t;

是否可以像在 verilog 中一样在 VHDL 中一步完成所有这些操作,而无需首先为数组创建类型?示例:

signal mem :array(0 to 127) of std_logic_vector(31 downto 0);
--syntax error:GHDL: Type mark expected in a subtype indication
--syntax error:vsim: near "array": (vcom-1576) expecting STRING or IDENTIFIER or << or '('

我问的原因是因为当连接 IO 与 VHDL 模块之间连接的数组时,我试图避免使用包来声明数组类型。

最佳答案

您创建的是一个数组的数组——通常这就是您想要的。 @Matthew Taylor 创建的是一个多维数组。

使用 VHDL-2008,复合元素可以不受约束,因此,您可以创建:

type std_logic_aoa is array (natural range <>) of std_logic_vector;

现实地说,这应该在标准库中——只是目前还没有。

然后你就可以使用它了:

signal mem : std_logic_aoa (0 to 127)( 31 downto 0);

你在这里想要一个数组的数组的原因是它允许你做这样的事情:

signal Data : std_logic_vector(31 downto 0) ;
. . .
Data <= mem(15) ;

关于vhdl - 在 VHDL 中,是否可以在不使用类型的情况下创建一个 std_logic_vector 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56794058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com