gpt4 book ai didi

arrays - VHDL 初始化 std_logic_vector 的通用数组

转载 作者:行者123 更新时间:2023-12-04 02:00:47 25 4
gpt4 key购买 nike

我想在 VHDL 中为卷积内容实现一个环形缓冲区并使其通用。我的问题是如何在不引入更多信号或变量的情况下初始化内部数据。

通常我可以通过

signal initialized_vector : std_logic_vector(15 downto 0) := (others => '0');

但我不知道如何在默认情况下对数组执行此操作。

这是我的代码:
entity convolution_ringbuffer is
generic (
BitDepth_signal : integer := 24;
BufferSize : integer := 10
);
port (
data_in : in std_logic_vector(BitDepth_signal-1 downto 0);
sclk : in std_logic;
enable : in std_logic;
data_out : out std_logic_vector(BitDepth_signal-1 downto 0)
);
end convolution_ringbuffer;

architecture behavioral of convolution_ringbuffer is

type internal_data is array(0 to BufferSize-1) of std_logic_vector(BitDepth_signal-1 downto 0);
signal data_internal : internal_data;

begin

process ( sclk )

variable current_position : integer range 0 to (BufferSize-1) := 0;

begin

if ( rising_edge(sclk) and enable = '1' ) then

data_internal(current_position) <= std_logic_vector(data_in);

if ( current_position < BufferSize-1 ) then
current_position := current_position + 1;
else
current_position := 0;
end if;

end if;

if ( falling_edge(sclk) ) then
data_out <= std_logic_vector(data_internal(current_position));
end if;

end process;

end behavioral;

最佳答案

您可以执行与 std_logic_vector 几乎相同的操作。你只需要考虑你还有一个维度:

signal data_internal : internal_data := (others=>(others=>'0'));

如果要存储更复杂的初始化数据,可以使用初始化函数:
function init return internal_data is
begin
--do something (e.g. read data from a file, perform some initialization calculation, ...)
end function init;

signal data_internal : internal_data := init;

关于arrays - VHDL 初始化 std_logic_vector 的通用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47436170/

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