1四位二进制乘法器的设计与实现1.实验目的设计一个乘法器,实现两个四位二进制数的乘法。两个二进制数分别是被乘数3210AAAA和乘数3210BBBB。被乘数和乘数这两个二进制数分别由高低电平给出。乘法运算的结果即乘积由电平指示灯显示的二进制数。做到保持乘积、输出乘积,即认为目的实现,结束运算。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则结果如下图所示2技术路线:实验中,将乘法器电路分为三个部分分别设计,分别是时钟电路,乘法控制电路,乘法运算电路。(1)时钟电路:由一个D触发器和一个非门组成,D触发器为二分频接法。时钟电路共产生𝐶𝑃̅̅̅̅,CLK,𝐶𝐿𝐾̅̅̅̅̅̅三个不同于原时钟CP的时钟,其中𝐶𝑃̅̅̅̅是寄存器1,2的时钟,CLK是寄存器3,4的时钟,𝐶𝐿𝐾̅̅̅̅̅̅是计数器,控制端D触发器的时钟。(2)乘法控制电路:由一个D触发器,一个计数器和两个与非门组成。计算信号S由数据开关输入,终止信号i4由计数器产生,计算信号S通过D触发器产生控制信号S和𝑆̅,控制信号S和终止信号i4通过二输入与非门产生控制信号-i4,控制信号S,控制信号-i4和时钟CLK通过三输入与非门产生控制信号Cs1。控制信号S控制寄存器1,2和计数器的清零端,控制信号𝑆̅控制寄存器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.实验电路图说明:被乘数3210AAAA和乘数3210BBBB分别由寄存器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均接地。其余管脚不接。整体电路图:3CPABCDCPRdS1S0QaQbQcQdABCDCPRdS1S0QaQbQcQdABCDCPRdS1S0QaQbQcQdABCDCPRdDsrS1S0QaQbQcQdKKKKC4S4S3S2S1&QaQbQcQd&RdCPCPDQQETEPABCDi4Bi-i4B4B3B2B1A4A3A2A1加法器寄存器1寄存器2寄存器3寄存器4计数器D触发器1C0S1CPDQQD触发器2SDsrDsrDsrC8C7C6C5C4C3C2C1B4B3B2B1A4A3A2A14其中K元件(实际为三输入与门)如下所示1&K=AiBi-i4Ai时钟电路图:CPCPDQQD触发器1CLK乘法控制电路图:&QaQbQcQd&RdCPETEPABCDi4-i4计数器SCPDCLKQD触发器S54.仪器设备名称、型号寄存器均选择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.计算过程:(1)将A和B置入后,在乘积电平指示灯显示00003210BBBB后,即可按下S键,使其为1,计算开始。(2)第一个𝐶𝑃̅̅̅̅时钟脉冲上升沿,寄存器1和2置数,将第一次计算结果传递给输出端。(3)第一个CLK时钟脉冲上升沿,寄存器3右移,为下一次计算做准备。(4)第二个𝐶𝑃̅̅̅̅时钟脉冲上升沿,寄存器1和2右移,为下一次计算做准备。(5)第一个𝐶𝐿𝐾⃐时钟上升沿,计数器加1。(6)重复(2)(3)(4)(5)过程。(7)在4个𝐶𝐿𝐾⃐时钟脉冲后,计算结束,电平指示灯i4亮,计算结束。电平指示灯显示为八位二进制计算结果。此时,元件K为关闭状态,寄存器1,2处于置数状态,寄存器3处于保持状态,使得输出结果保持为计算乘积。仿真实验电路图及仿真实验结果:被乘数A乘数B乘积P000100010000000100100010000001000100001000001000101011000111100011001100100100001011110110001111111111111110000166.详细实验步骤及实验结果数据记录(包括各仪器、仪表量程及内阻的记录)被乘数A乘数B乘积P00010001000000010010001000000100010000100000100000100100000010001000100001000000101111011000111111111111111000017.实验结论我所设计的乘法器工作良好、结果准确。几次运行均显示了正确的结果,并且运算时间短,速度快,时钟频率可自主调节,易于控制。此外,实验电路可以简单改装实现轻松的高位乘法运算。其中对寄存器和终止指令i4进行合理改变即可完成更高位乘法运算。其运行时间与四位乘法器差不多,呈线性变化,即n位乘法器需运行2n个CP时钟脉冲的时间。对高位,多次乘法运算来说,计算速度快,运行时间短。78.实验中出现的问题及解决对策(1)问题:实验室没有八位移位寄存器,无法完成加法结果的整体寄存和移位?解决方案:采用两片74LS194组合成八位移位寄存器(寄存器1和2)。(2)问题:八位移位寄存器需要在运算过程中不断进行置数,移位的改变?解决方案:引入时钟CLK与S,-i4通过与非门形成随时钟CLK改变的控制信号Cs1,使移位寄存器依次完成置数,移位的操作。(3)问题:当八位移位寄存器使用时钟CP时,由于时钟延迟的问题,八位移位寄存器中的最低位无法移入寄存器3。解决方案:给时钟CP加一个反相器,形成时钟𝐶𝑃̅̅̅̅,保证八位移位寄存器(寄存器1和2)置数后,寄存器3先进行移位操作,而后八位移位寄存器(寄存器1和2)在进行移位操作,保证数据不会丢失。(4)问题:输入计算信号S的时间不确定,使运算无法稳定进行。解决方案:加入一个D触发器,使S只能在时钟𝐶𝐿𝐾⃐的上升沿输入,确定了接下来的时钟顺序必然为𝐶𝑃̅̅̅̅1,CLK1,𝐶𝑃̅̅̅̅2,𝐶𝐿𝐾⃐1,𝐶𝑃̅̅̅̅3,…𝐶𝑃̅̅̅̅8,𝐶𝐿𝐾⃐4,使乘法运算顺利完整的进行。9.本次实验的收获和体会、对电路实验室的意见或建议体会:但凡是科研(姑且将本次设计看作是一次简单的科研),必须投入一定量的心血。为了完成这项设计,我几易其稿、呕心沥血、颇费心思地想了好几天。当最初的设想被实现了的时候,我感到无比的满足。《数电》是一门很有实践价值的课,通过课上系统的知识积累,我发现即便是比较基础的电子、电路知识也可以造出来比较复杂的设备,当然这需要设计者的智慧和勤奋。看来平日生活中随处可见的电子产品,无不凝聚着工程师、科研人员的汗水和努力。在设计的过程中,我遇到了很多困难,有的时候被困难压得头疼,但是经过了与同学的讨论,许多困难迎刃而解,我体会到了交流的重要性。最后,感谢老师用这种课程设计的形式督促我应用知识。否则的话,以我的惰性,很可能就不会去费尽心思地去设计一个乘法器,这样的话,《数电》算白学了。谢谢老师。建议:略有遗憾的是实验室的元件不是十分齐全,以至于74LS198芯片只能自己组合。不过这不是什么大问题,元件的缺少正好可以锻炼同学们发散思维、用最少的成本达到最大目的的能力。