我正在编写一个灵活的 MUX,它有一个通用的,它决定了选择线的数量,也决定了系统的输入和输出的数量。例如,如果大小 = 3;该系统将有 8 个输入、64 个输出和 3 个选择线。这会创建 2^size 多路复用器,每次选择位更改时我都需要设置它们(它们是全局的)。
到目前为止,我有这个:
library ieee ;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all ;
entity mux is
generic ( size : positive := 3 ) ;
port ( din : in std_logic_vector (((2**size)-1) downto 0) ;
sel : in std_logic_vector (size-1 downto 0) ;
y : out std_logic_vector (((2**(size*2))-1) downto 0) ) ;
end mux ;
architecture arc_mux of mux is
begin
process(sel)
begin
end process ;
end arc_mux ;
我想做的是遍历循环中的输入( 0 到 ((2**size)-1) )并将正确的输出调整为存储在该位置的值。问题是我需要为此使用 sel 的值作为 i * 2**size 的偏移量,但我可以在本练习中使用的库不允许我使用 + 运算符将该值添加到 i * 2**尺寸。有什么建议么?