4位向量乘法器什么意思啊先解释,可以的话用VHDL实现
1个回答

就是具有4位的输入信号进行向量运算,然后输出最终结果(不知道你的要求是几位的,我的理解应该是输入输出出应该包括模长和角度library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity vector4 is

port(a:in std_logic_vector(3 downto 0);

b:in std_logic_vector(3 downto 0);

y:out std_logic_vector(7 downto 0));

end entity vector4;

architecture art1 of vector4 is

signal d:std_logic_vector(7 downto 0);

signal da:std_logic_vector(7 downto 0);

signal dat:std_logic_vector(7 downto 0);

signal data:std_logic_vector(7 downto 0);

begin

process(a,b)----(0),a(1),a(2),a(3),b(0),b(1),b(2),b(3))

begin

if a(0)='1' then

d(0):=b(0);

d(1):=b(1);

d(2):=b(2);

d(3):=b(3);

d(7 downto 4):="0000";

else

d(7 downto 0):="00000000";

end if;

if a(1)='1' then

da(1):=b(0);

da(2):=b(1);

da(3):=b(2);

da(4):=b(3);

da(0):='0';

da(7 downto 5):="000";

else

da(7 downto 0):="00000000";

end if;

if a(2)='1' then

dat(2):=b(0);

dat(3):=b(1);

dat(4):=b(2);

dat(5):=b(3);

dat(1 downto 0):="00";

dat(7 downto 6):="00";

else

dat(7 downto 0):="00000000";

end if;

if a(3)='1' then

data(3):=b(0);

data(4):=b(1);

data(5):=b(2);

data(6):=b(3);

data(2 downto 0):="000";

data(7):='0';

else

data(7 downto 0):="00000000";

end if;

y