Vhdl 如何将163位数字映射为1位数字?
我有两个163位的数字,我想用乘法器映射。但对于乘法器,a(162向下至0)和b仅为一位。那我该怎么做呢?请帮忙Vhdl 如何将163位数字映射为1位数字?,vhdl,Vhdl,我有两个163位的数字,我想用乘法器映射。但对于乘法器,a(162向下至0)和b仅为一位。那我该怎么做呢?请帮忙 entity demo_pointadd is Port ( x : in STD_LOGIC_VECTOR (162 downto 0); y : in STD_LOGIC_VECTOR(162 downto 0); p : out STD_LOGIC_VECTOR (162 downto 0); q
entity demo_pointadd is
Port ( x : in STD_LOGIC_VECTOR (162 downto 0);
y : in STD_LOGIC_VECTOR(162 downto 0);
p : out STD_LOGIC_VECTOR (162 downto 0);
q : out STD_LOGIC_VECTOR (162 downto 0);
clk : in STD_LOGIC;
reset : in STD_LOGIC);
end demo_pointadd;
-- component declaration
component full_163bitmul
Port ( a : in STD_LOGIC_VECTOR (162 downto 0);
b : in STD_LOGIC;
clk : in STD_LOGIC;
reset : in STD_LOGIC;
c : out STD_LOGIC_VECTOR (162 downto 0));
end component;
begin
mul_1 :full_163bitmul
port map (a => x,
b => y, --- PROBLEM??
clk => clk,
reset => reset,
c => p);
这本身似乎不是乘数。当我猜测full_163bitmul的代码时,输出'c'将是'a'(如果b='1')或全零(如果b='0')或未定义(如果b是'Z'|'X'|……) 如果你想用它来构建一个完整的乘法器,你必须循环通过“y”向量,把单个位带到“b”输入,并对结果进行加法和移位
sig_b<=y(i);
mul_1 :full_163bitmul
port map
(a => s_x,
b => sig_b,
clk => clk,
reset => reset,
c => temp);
...
sig_b s_x,
b=>sig_b,
时钟=>clk,
重置=>重置,
c=>temp);
...
您是否实现了full\u 163bitmul
?如果是,请把它放在问题中。不过,从你在这里展示的内容来看,这似乎不太可能。163位数字乘以1位数字有什么意义呢?约翰:与其把这个问题编辑成一个不同的问题,不如发布一个新问题。是的,如果需要的话,请问一个新问题。如果您再次还原此问题,我将锁定此问题。或者,full\u 163bitmul
中可能有一个状态机,并接受端口a
上的两个输入。否则它只是一个多路复用器。