应用电子电路
本文为大家介绍五款乘法器电路设计方案,包括五款模拟电路设计原理及仿真程序分享,以供参考。
1、基本公式: A1 A0 * B1 B0=Y3 Y2 Y1 Y0
2、设计理念: 两位二进制数 A1 A0 和B1 B0 相乘后,结果最高为四位Y3 Y2 Y1 Y0
3、归纳得出:由上式可归纳得出输出的4位二进制数与输入的两位二进制数之间的逻辑,得出下表:
利用硬件箱自带16进制码发生器,由对应的键控制输出4位2进制构成的1位16进制码,数的范围是0000~1111,即0H~FH.每按键一次,输出递增1,输出进入目标芯片的4位2进制数将显示在该键对应的数码管。
乘数和被乘数的输入模块将16进制码的A~F码设计成输出为null.使得减少了无用码的输入。 两数相乘的方法很多,可以用移位相加的方法,也可以将乘法器看成计数器,乘积的初始值为零,每一个时钟周期将乘数的值加到积上,同时乘数减一,这样反复执行,直到乘数为零。本设计利用移位相加的方法使得程序大大简化。
系统总体电路组成原理图如下图所示:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity chengfa is
port( clk :in std_logic;
a :in std_logic_VECTOR(7 downto 0);
b :in std_logic_VECTOR(7 downto 0);
cout:out std_logic_VECTOR(15 downto 0) );
end chengfa;
architecture one of chengfa is
signal a1,b1:std_logic_vector(3 downto 0);
signal a2,b2:std_logic_vector(7 downto 4);
signal cout1:std_logic_vector(15 downto 0);
signal cout2:std_logic_vector(15 downto 0);
signal a1b1,a2b1,a1b2,a2b2:std_logic_vector(15 downto 0);
begin
process(a,b,clk)
begin
if clk‘event and clk=’1‘ then
a1b1《=“0000”&(a(5 downto 0) *b(5 downto 0));
a2b1《=“00”&(a(7 downto 6)*b(5 downto 0))&“000000”;
a1b2《=“00”&(a(5 downto 0)*b(7 downto 6))&“000000”;
a2b2《=(a(7 downto 6)*b(7 downto 6))&“000000000000”;
end if;
end process;
process(clk)
begin
if clk’event and clk=‘1’ then
cout1《=a1b1+a2b1;
cout2《=a1b2+a2b2;
end if;
end process;
process(clk)
begin
if clk‘event and clk=’1‘ then
cout《=cout1+cout2;
end if;
end process;
end one;
下图显示了一个简单的模拟乘法器体现。该电路提供了三个象限模拟乘法。
全部0条评论
快来发表一下你的评论吧 !