我正在尝试在VHDL中创建5维数组,但不确定如何设置和初始化位。

这是我到目前为止所拥有的:

    type \1-line\ is array (4 - 1 downto 0) of unsigned (32 - 1 downto 0);
    type square is array (4 - 1 downto 0) of \1-line\;
    type cube is array (4 - 1 downto 0) of square;
    type hypercube is array (4 - 1 downto 0) of cube;
    type \5-cube\ is array (4 - 1 downto 0) of cube;

    signal mega_array : \5-cube\;
    begin
        process (clock, reset) begin
                if (reset == '1') then
                        mega_array <= '0';
                end if;
        end process;
    end behv;

最佳答案

一种实现方法是使用'(others =>'0')'。这是一种将向量的所有位设置为0的干净安全的方法。您必须对阵列的每一层都执行此操作。

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity test is
    port (
        clock : in std_logic;
        reset : in std_logic);
end entity test;

architecture behv of test is

    type \1-line\ is array (4 - 1 downto 0) of unsigned (32 - 1 downto 0);
    type square is array (4 - 1 downto 0) of \1-line\;
    type cube is array (4 - 1 downto 0) of square;
    type \5-cube\ is array (4 - 1 downto 0) of cube;

    signal mega_array : \5-cube\;

begin

    process (clock, reset)
    begin
        if (reset = '1') then           -- note: not '=='
            mega_array <= (others => (others => (others => (others => (others => '0')))));
        end if;
    end process;

end architecture behv;


请注意,尽管\1-...命名是正确的VHDL,但我不会使用它来避免讨厌的工具问题。我不确定它们是否会来,但是避免它们比解决它们更好。我会改用t_1line

关于arrays - 如何:VHDL中的多维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14894204/

10-13 02:06