四位二进制乘法器的设计与实现
1.实验目的
A A A A
设计一个乘法器,实现两个四位二进制数的乘法。
两个二进制数分别是被乘数3210
B B B B。
被乘数和乘数这两个二进制数分别由高低电平给出。
乘法运算的结果即乘和乘数3210
积由电平指示灯显示的二进制数。
做到保持乘积、输出乘积,即认为目的实现,结束运算。
2.总体设计方案或技术路线
总体思路:将乘法运算分解为加法运算和移位运算。
根据Bi的值决定部分积P与A相加或与0相加,之后移位,经过四次以上运算后得到最终的乘积。
对于4位乘法器而言,设A=1011,B=1101,则运算过程可由下图所示。
从乘法运算过程可知,乘法运算可分解为移位和相加两种子运算,而且是多次相加运算,所以是一个累加的过程。
实现这一累加过程的方法是,把每次相加的结果用部分积P表示,若B中某一位Bi=1,把部分积P与A相加后右移1位;若B中某一位Bi= 0,则部分积P与0相加后右移1位(相当于只移位不累加)。
通过4次累加和移位,最后得到的部分积P就是A与B的乘积。
为了便于理解乘法器的算法,将乘法运算过程中部分积P的变化情况用图3表示出来。
存放部分积的是一个9位的寄存器,其最高位用于存放在做加法运算时的进位输出。
先把寄存器内容清零,再经过4次的加法和移位操作就可得到积。
注意,每次做加法运算时,被乘数A与部分积的P7~P4位相加。
设A=1011,B=1101则结果如下图所示
技术路线:实验中,将乘法器电路分为三个部分分别设计,分别是时钟电路,乘法控制电
路,乘法运算电路。
(1) 时钟电路:由一个D 触发器和一个非门组成,D 触发器为二分频接法。
时钟电路共
产生CP ̅̅̅̅, CLK,CLK ̅̅̅̅̅̅三个不同于原时钟CP 的时钟,其中CP
̅̅̅̅是寄存器1,2的时钟,CLK 是寄存器3,4的时钟,CLK
̅̅̅̅̅̅是计数器,控制端D 触发器的时钟。
(2) 乘法控制电路:由一个D 触发器,一个计数器和两个与非门组成。
计算信号S 由数
据开关输入,终止信号i4由计数器产生,计算信号S 通过D 触发器产生控制信号S 和S ,控制信号S 和终止信号i4通过二输入与非门产生控制信号-i4,控制信号S ,控制信号-i4和时钟CLK 通过三输入与非门产生控制信号Cs1。
控制信号S 控制寄存器1,2和计数器的清零端,控制信号S 控制寄存器3的S1,寄存器4的S0和S1,控制信号-i4控制寄存器3的S0,计数器的EP 和ET ,元件K (三输入与门)的开启与封闭,控制信号Cs1控制寄存器1和2的S1。
(3) 乘法运算电路:由四个寄存器,一个加法器和四个元件K (三输入与门)组成。
被乘
数A 和B 分别由寄存器4和3输入,乘积由寄存器2和3输出,加法运算由加法器完成,移位运算由寄存器1,2和3完成。
3.实验电路图
说明:被乘数3210A A A A 和乘数3210B B B B 分别由寄存器4和寄存器3的A4A3A2A1和B4B3B2B1
在并行置数端置入。
乘积由寄存器2和寄存器3的输出端C8C7C6C5C4C3C2C1输出。
CP 为连续脉冲时钟信号,频率可以自行设定。
S 为计算信号,初始时为0。
寄存器1和寄存器2的S0,计数器的LD ,寄存器3和寄存器4的Rd ,D 触发器的Rd 和Sd 均保持为1状态,寄存器1的ABC ,加法器的C0,寄存器1的Dsr 均接地。
其余管脚不接。
整体电路图:
C8 C7 C6 C5
其中K元件(实际为三输入与门)如下所示
=
时钟电路图:
CP
乘法控制电路图:
4. 仪器设备名称、型号
寄存器均选择4位多功能移位寄存器74LS194,加法器选用4位二进制超前进位加法器
74LS283,计数器选用十六进制异步清零计数器74LS161,D触发器选用上升沿双D触发器
74LS74,四输入与非门选用三个74LS20,二输入与非门选用两个74LS00,直流稳压电源,
实验箱,导线若干。
5.理论分析或仿真分析结果
1.初始状态:A4A3A2A1和B4B3B2B1均为0,S为0,寄存器1,寄存器2,计数器均处于
清零等待状态,寄存器3,寄存器4处于置数状态。
此时可输入A4A3A2A1和B4B3B2B1,将
会分别置入寄存器3和寄存器4。
2.计算过程:
B B B B后,即可按下S键,使其为1,(1)将A和B置入后,在乘积电平指示灯显示00003210
计算开始。
̅̅̅̅时钟脉冲上升沿,寄存器1和2置数,将第一次计算结果传递给输出端。
(2)第一个CP
(3)第一个CLK时钟脉冲上升沿,寄存器3右移,为下一次计算做准备。
̅̅̅̅时钟脉冲上升沿,寄存器1和2右移,为下一次计算做准备。
(4)第二个CP
⃐ 时钟上升沿,计数器加1。
(5)第一个CLK
(6)重复(2)(3)(4)(5)过程。
⃐ 时钟脉冲后,计算结束,电平指示灯i4亮,计算结束。
电平指示灯显示为(7)在4个CLK
八位二进制计算结果。
此时,元件K为关闭状态,寄存器1,2处于置数状态,寄存器3处
于保持状态,使得输出结果保持为计算乘积。
仿真实验电路图及仿真实验结果:
被乘数A 乘数B 乘积P
0001 0001 00000001
0010 0010 00000100
0100 0010 00001000
1010 1100 01111000
1100 1100 10010000
1011 1101 10001111
1111 1111 11100001
6.详细实验步骤及实验结果数据记录(包括各仪器、仪表量程及内阻的记录)
被乘数A 乘数B 乘积P
0001 0001 00000001
0010 0010 00000100
0100 0010 00001000
0010 0100 00001000
1000 1000 01000000
1011 1101 10001111
1111 1111 11100001
7.实验结论
我所设计的乘法器工作良好、结果准确。
几次运行均显示了正确的结果,并且运算时间短,速度快,时钟频率可自主调节,易于控制。
此外,实验电路可以简单改装实现轻松的高位乘法运算。
其中对寄存器和终止指令i4进行合理改变即可完成更高位乘法运算。
其运行时间与四位乘法器差不多,呈线性变化,即n 位乘法器需运行2n个CP时钟脉冲的时间。
对高位,多次乘法运算来说,计算速度快,运行时间短。
8.实验中出现的问题及解决对策
(1)问题:实验室没有八位移位寄存器,无法完成加法结果的整体寄存和移位?
解决方案:采用两片74LS194组合成八位移位寄存器(寄存器1和2)。
(2)问题:八位移位寄存器需要在运算过程中不断进行置数,移位的改变?
解决方案:引入时钟CLK 与S ,-i4通过与非门形成随时钟CLK 改变的控制信号Cs1,使移位寄存器依次完成置数,移位的操作。
(3)问题:当八位移位寄存器使用时钟CP 时,由于时钟延迟的问题,八位移位寄存器中的最低位无法移入寄存器3。
解决方案:给时钟CP 加一个反相器,形成时钟CP
̅̅̅̅,保证八位移位寄存器(寄存器1和2)置数后,寄存器3先进行移位操作,而后八位移位寄存器(寄存器1和2)在进行移位操作,保证数据不会丢失。
(4)问题:输入计算信号S 的时间不确定,使运算无法稳定进行。
解决方案:加入一个D 触发器,使S 只能在时钟CLK ⃐ 的上升沿输入,确定了接下来的时钟顺序必然为CP
̅̅̅̅1,CLK1,CP ̅̅̅̅2,CLK ⃐ 1,CP ̅̅̅̅3,…CP ̅̅̅̅8, CLK ⃐ 4,使乘法运算顺利完整的进行。
9.本次实验的收获和体会、对电路实验室的意见或建议
体会:但凡是科研(姑且将本次设计看作是一次简单的科研),必须投入一定量的 心血。
为了完成这项设计,我几易其稿、呕心沥血、颇费心思地想了好几天。
当最初的设想被实现了的时候,我感到无比的满足。
《数电》是一门很有实践价值的课,通过课上系统的知识积累,我发现即便是比较基础的电子、电路知识也可以造出来比较复杂的设备,当然这需要设计者的智慧和勤奋。
看来平日生活中随处可见的电子产品,无不凝聚着工程师、科研人员的汗水和努力。
在设计的过程中,我遇到了很多困难,有的时候被困难压得头疼,但是经过了与同学的讨论,许多困难迎刃而解,我体会到了交流的重要性。
最后,感谢老师用这种课程设计的形式督促我应用知识。
否则的话,以我的惰性,很可能就不会去费尽心思地去设计一个乘法器,这样的话,《数电》算白学了。
谢谢老师。
建议: 略有遗憾的是实验室的元件不是十分齐全,以至于74LS198芯片只能自己组合。
不 过这不是什么大问题,元件的缺少正好可以锻炼同学们发散思维、用最少的成本达到最大目 的的能力。