乘法器——精选推荐

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

乘法器
⽬录
⼀、实验⽬的 (1)
⼆、实验原理 (1)
三、实验内容 (1)
四、实验条件 (3)
五、实验步骤及仿真 (3)
编码如下; (3)
仿真如下: (5)
六、收获与总结 (5)
乘法器
⼀、实验⽬的
设计⼀个能进⾏两个⼗进制数相乘的乘法器,乘数和被乘数均⼩于100,通过按键输⼊,并⽤数码管显⽰,显⽰器显⽰数字时从低位向⾼位前移,最低位为当前显⽰位。

当按下相乘键后,乘法器进⾏两个数的相乘运算,数码管将乘积显⽰出来。

⼆、实验原理
1、了解乘法器的⼯作原理。

2、了解复杂时序电路的设计流程。

三、实验内容
1、乘数和被乘数的输⼊仍⽤数据开关K1-K10分别代表数字1、
2、…、9、0,⽤编码器对数据开关K1~K10的电平信号进⾏编码,
编码器真值表:
数据开关电平信号编码器输出
K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 Q3 Q2 Q1 Q0
↑0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 0 0 0 0 0 0 0 ↑ 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0
0 1 1 1
1 0 0 0 1 0 0 1 0 0 0 0
⽤两个数码管显⽰乘数,两个数码管显⽰被乘数。

设置“相乘”信号mul,当乘数输⼊完毕后,mul有效使输⼊的乘数送寄存器模块寄存。

再输⼊被乘数,显⽰在另两个数码管上。

设置“等于”信号equal,当乘数和被乘数输⼊后,equal有效,使被乘数送寄存模块寄存,同时启动乘法摸块。

两数相乘的⽅法很多,可以⽤移位相加的⽅法,也可以将乘法器看成计数器,乘积的初始值为零,每⼀个时钟周期将被乘数的值加到积上,同时乘数减⼀,这样反复执⾏,直到乘数为零。

硬件系统⽰意图:
(详细可以参考教材231页的VHDL代码来设计)
2、设计⼀个能进⾏两个⼗进制数的乘法器,乘数和被乘数的输⼊⽤开关K1~K10代表0~9,⽤编码器对数据开关进⾏编码,设置相乘信号,当输⼊完毕后,相乘信号有效,使输⼊的乘数送进寄存器寄存。

在输⼊被乘数。

设计等于信号。

当输⼊完毕后。

启动乘法模块。

此设计可分为乘数被乘数输⼊控制模块、寄存模块、乘法模块和扫描显⽰模块⼏部分。

系统框图:
3、对所编写的电路进⾏编译及正确的仿真。

四、实验条件
Quartus II实验环境
五、实验步骤及仿真
顶层⽂件如下:
该器件mulcon对乘法过程进⾏时序控制。

Clk为时钟信号;
lStart控制乘法器的开始;
Endd控制乘法器结束;
Clr起到复位作⽤;
Ca⽤来控制乘数移位寄存器(74194)的移位功能,在乘法器进⾏移位相加的过程中进⾏移位;
Cb[0]、cb[1]⽤来控制被乘数移位寄存器(74194)的移位功能,在乘法器进⾏移位相加的过程中进⾏移位;Cm[0]、cm[1]控制⼋位移位寄存器(74198)的移位功能,使得和乘数与被乘数的移位相⼀致;
编码如下;
library ieee;
use ieee.std_logic_1164.all;
entity mulcon is
port
(
start:in std_logic;
i4:in std_logic;
bi:in std_logic;
clk:in std_logic;
endd:out std_logic;
clr:out std_logic;
ca:out std_logic;
cb1:out std_logic;
cb0:out std_logic;
cm1:out std_logic;
cm0:out std_logic;
cc:out std_logic
);
end mulcon;
architecture mulcon_architecture of mulcon is
signal current_state,next_state:bit_vector(1 downto 0);
constant s0:bit_vector(1 downto 0):="00";
constant s1:bit_vector(1 downto 0):="01";
constant s2:bit_vector(1 downto 0):="10";
constant s3:bit_vector(1 downto 0):="11";
begin
com1:process(current_state,start,i4)
begin
case current_state is
when s0=>if(start='1')then next_state<=s1;
else next_state<=s0;
end if;
when s1=>next_state<=s2;
when s2=>next_state<=s3;
when s3=>if(i4='1')then next_state<=s0;
else next_state<=s2;
end if;
end case;
end process com1;
com2:process(current_state,bi)
begin
case current_state is
when s0=>endd<='1';clr<='1';ca<='0';cb1<='0';cb0<='0'; cm1<='0';cm0<='0';cc<='0'; when s1=>endd<='0';clr<='0';ca<='1';cb1<='1';cb0<='1'; cm1<='0';cm0<='0';cc<='0'; when s2=>if(bi='1')then
endd<='0';clr<='1';ca<='0';cb1<='0';cb0<='0'; cm1<='1';cm0<='1';cc<='1'; else endd<='0';clr<='1';ca<='0';cb1<='0';cb0<='0'; cm1<='0';cm0<='0';cc<='1'; end if; when s3=>endd<='0';clr<='1';ca<='0';cb1<='0';cb0<='1'; cm1<='0';cm0<='1';cc<='0'; end case;
end process com2;
reg:process(clk)
begin
if clk='1'and clk'event then
current_state<=next_state;
end if;
end process reg;
end mulcon_architecture;
仿真如下:
六、收获与总结
在乘法器的试验中,主要设计的其实是乘法器的时序控制信号mulcon,把mulcon的对应输出与移位器,加法器和计数器相连之后,就能够进⾏4位⼆进制数移位相加的功能,即乘法功能。

这次课程设计,期间遇到了许多的问题。

我通过查阅课本及资料。

以及相互讨论和⽼师的指导。

最终设计成、功了。

⽽且通过了仿真。

不断的完善了⾃⼰的设计。

经过浙西设计我体会到了合作的重要性,同时也发现了⾃⾝的问题。

在以后的学习⼯作中,我希望能培养我的动⼿能⼒。

上⼀页下⼀页。

相关文档
最新文档