【发布时间】:2020-03-23 12:38:54
【问题描述】:
我正在学习 VHDL,但我还不了解如何正确使用泛型。假设我需要使用具有可变位数的 2:1 MUX 来描述不同的多路复用器。我们称这个参数为 p。 这是一个示例代码(这段代码在这个上下文中并不重要)
library ieee;
use ieee.std_logic_1164.all;
entity mux2to1_gen is
generic ( p : POSITIVE := 1 );
port (
x,y : in std_logic_vector ( p-1 downto 0 );
s : in std_logic;
m : out std_logic_vector ( p-1 downto 0 )
);
end mux2to1_gen;
architecture logic of mux2to1_gen is
signal s_vector : std_logic_vector ( p-1 downto 0 );
begin
s_vector <= ( others => s );
m <= (NOT (s_vector) AND x) OR (s_vector AND y);
end architecture;
我想使用此代码轻松创建一个 2:1 8 位 MUX,即 p = 8 或者可能是一个 5:1 MUX,在 1 位上使用四个 2:1 MUX。所以基本上,我想创建另一个文件并轻松使用此代码,仅在第一种情况下声明 p 的值,在第二种情况下仅声明更多内容。我怎么做?
【问题讨论】:
-
我希望您意识到,真正的 HDL 设计中没有人会以这种方式使用 MUX。这仅在教育中进行。在实际设计中,您只需使用 if 语句。