gpt4 book ai didi

generics - VHDL 通用多维数组

转载 作者:行者123 更新时间:2023-12-02 19:15:51 26 4
gpt4 key购买 nike

我使用这个实体:

ENTITY SPI_PT100 IS
GENERIC
(
PT100_DATA_SIZE : INTEGER := 8; --nombre de data à envoyer par trame
PT100_NB_MOSI : INTEGER := 3; --nombre de ligne MOSI
PT100_10ms_CNT : INTEGER := 400000; --nb tick in_clk entre deux trames (défaut 10ms @ 40Mhz)
PT100_500ns_CNT : INTEGER := 20 --nb de tick in_clk entre deux changement d'état sur SCLK (1/2 periode) (défaut : sclk = 1Mhz)
);
PORT
(
--input
in_clk : IN STD_LOGIC; --40Mhz
in_data : IN STD_LOGIC_VECTOR((PT100_DATA_SIZE-1) DOWNTO 0); --data à envoyer
--output
out_spi_sclk : OUT STD_LOGIC := '0'; --clk du SPI
out_spi_u_sync : OUT STD_LOGIC := '1'; -- u_sync du SPI
out_spi_mosi : OUT STD_LOGIC := '0' -- mosi du SPI
);
END ENTITY;

我想使用 PT100_NB_MOSI 作为通用多数组大小:

in_data : IN STD_LOGIC_VECTOR((PT100_DATA_SIZE-1) DOWNTO 0); ==> 
in_data : IN STD_LOGIC_VECTOR((PT100_NB_MOSI-1) DOWNTO 0)) OF ((PT100_DATA_SIZE-1) DOWNTO 0);

我知道我可以使用类型或子类型来完成此操作,但在这种情况下我认为我必须使用包。有没有仅使用 GENERIC 机制的解决方案?

最佳答案

不幸的是没有。您可以做的是使用一维向量:

in_data : IN STD_LOGIC_VECTOR((PT100_NB_MOSI*PT100_DATA_SIZE-1) DOWNTO 0);

并访问in_data(i*PT100_DATA_SIZE+j)用于访问(i, j)数组元素。

否则,您必须在包文件中将其声明为数组:

type my_arr is array(natural range <>) of std_logic_vector(PT100_DATA_SIZE-1 DOWNTO 0);

然后包含数组:use work.my_pkg.my_arr; (或 use work.my_pkg.all; 表示整个包)并在界面中使用它: in_data : IN my_arr((PT100_NB_MOSI-1) DOWNTO 0);

关于generics - VHDL 通用多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467706/

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