华中科技大学计算机学院数字逻辑实验报告2(共四次)Word文档下载推荐.docx
《华中科技大学计算机学院数字逻辑实验报告2(共四次)Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《华中科技大学计算机学院数字逻辑实验报告2(共四次)Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
Logisim2.7.1软件一套。
4、实验内容
(1)四位乘法器设计
四位乘法器Mul4Í
4实现两个无符号的4位二进制数的乘法运算,其结构框图如图3-1所示。
设被乘数为b(3:
0),乘数为a(3:
0),乘积需要8位二进制数表示,乘积为p(7:
0)。
Mul4Í
4
a(3:
0)
b(3:
p(7:
图3-1四位乘法器结构框图
四位乘法器运算可以用4个相同的模块串接而成,其内部结构如图3-2所示。
每个模块均包含一个加法器、一个2选1多路选择器和一个移位器shl。
图3-2中数据通路上的数据位宽都为8,确保两个4位二进制数的乘积不会发生溢出。
shl是左移一位的操作,在这里可以不用逻辑器件来实现,而仅通过数据连线的改变(两个分线器错位相连接)就可实现。
图3-2四位乘法器内部结构
(2)32Í
4乘法器设计
32Í
4乘法器Mul32Í
4实现一个无符号的32位二进制数和一个无符号的4位二进制数的乘法运算,其结构框图如图3-3所示。
设被乘数为b(31:
0),乘积也用32位二进制数表示,乘积为p(31:
这里,要求乘积p能用32位二进制数表示,且不会发生溢出。
Mul32Í
b(31:
p(31:
图3-332Í
4乘法器结构框图
在四位乘法器Mul4Í
4上进行改进,将数据通路上的数据位宽都改为32位,即可实现Mul32Í
4。
(3)32Í
32乘法器设计
32乘法器Mul32Í
32实现两个无符号的32位二进制数的乘法运算,其结构框图如图3-4所示。
0),乘数为a(31:
32
a(31:
图3-432Í
32乘法器结构框图
用32Í
4作为基本部件,实现32Í
32。
0)=(b31b30b29b28·
·
b15b14b13b12·
b4b3b2b1b0)2
乘数为a(31:
0)=(a31a30a29a28·
a15a14a13a12·
a3a2a1a0)2
=(a31a30a29a28)2Í
228+·
+(a15a14a13a12)2Í
212+·
+(a3a2a1a0)2Í
20
所以,
0)=b(31:
0)Í
a(31:
=b(31:
((a31a30a29a28)2Í
20)
=b(31:
(a31a30a29a28)2Í
228+·
+b(31:
(a15a14a13a12)2Í
212+·
(a3a2a1a0)2Í
从上述推导可知,Mul32Í
32可以用8个Mul32Í
4分组相乘,然后通过4的倍数位的左移(相当于乘2i),再将左移结果两两相加得到。
5、实验设计方案
1)mul4*4的乘法公式为
图3-54x4的乘法公式
所以其设计思路为:
假设b为被乘数,a为乘数,则通过a作为数据选择端,若a为0,则取之前一位的运算结果作为本位的值;
如果a为1,b左移1位(并将移位后的b作为下一位运算的b值),将前一位的运算结果加上b左移1位后的结果的和作为本位的值。
2)其电路图如图3-6所示:
图3-64x4乘法器电路
其基本算法与4*4的乘法器基本相当,只是此时被乘数b变为32位,因而需要将数据位宽变为32位,同样采用移位并且使用数据选择器。
其电路图如图3-7所示:
图3-732x4乘法器
(3)32Í
mul32*32乘法器的设计思路为:
使用之前封装的32*4的乘法器,将乘数a分为8个4位二进制数,分设为p1,p2,p3,p4,p5,p6,p7,p8。
然后分别将pi左移4*(i-1)位,(该结果可以通过移位器分线出来4位)得到的数再分别两两相加,再两两相加,最后加在一起,得到的结果即为两数相乘的结果p。
图3-832x32乘法器
6、实验结果记录
根据实验方案设计要求,对于相应的乘法器和除法器,在给定的输入条件下,填写表3-1。
表3-1无符号数的乘法器实验结果记录表
电路
输入1(16进制)
输入2(16进制)
输出(16进制)
b=0Í
A
a=0Í
p=0Í
64
E
9
7E
003ABEF1
24B756A
019ABEF1
7
B3B3897
0002BEF1
00004EF1
D8C32EE1
00003EF1
0003BEF1
EBC51EE1
图3-9
图3-10
图3-11
图3-12
图3-13
图3-14
数字逻辑实验报告(3)
无符号数的除法器设计
二、无符号数的除法器设计
无符号数的除法器的设计。
要求使用合适的逻辑电路的设计方法,通过工具软件logisim进行无符号数的除法器的设计和验证,记录实验结果,验证设计是否达到要求。
通过无符号数的除法器的设计、仿真、验证3个训练过程,使同学们掌握数字逻辑电路的设计、仿真、调试的方法。
(1)四位除法器设计
四位除法器实现两个无符号的4位二进制数的除法运算,其结构框图如图2-1所示。
设被除数为n2(3:
0),除数为d(3:
0),商为quot(3:
0),余数为rem(3:
Div4
n2(3:
d(3:
quot(3:
rem(3:
2-1四位除法器结构框图
四位除法器Div4算法步骤如下:
(1)设n1="
0000"
,将被除数以n1:
n2的形式拼接,除数为d;
(2)重复4次:
将n1:
n2左移1位;
if(n1>
d)beginn1=n1-d;
n2(0)=1end
(3)商和余数的结果为:
quot=n2;
rem=n1。
四位除法器也可以用4个相同的模块串接而成。
每个模块均包含一个减法器、两个2选1多路选择器、一个比较器和一个移位器shl。
请参照四位乘法器的设计思路,实现两个无符号的4位二进制数的除法器。
(2)32位除法器设计
32位除法器Div32实现两个无符号的32位二进制数的除法运算,其结构框图如图2-2所示。
设被除数为n(31:
0),除数为d(31:
0),商为quot(31:
0),余数为rem(31:
Div32
n(31:
d(31:
quot(31:
rem(31:
2-232位除法器结构框图
对四位除法器Div4中4个相同的模块之一进行改进,将数据通路上的数据位宽都扩展为32位,得到一个Div1。
将32个Div1拼接起来即可实现Div32。
(1)除法器Div4的内部逻辑结构框图如图3-1所示
图3-1除法器div4的内部逻辑结构框图
(2)其电路图如图3-2所示
图3-2除法器div4的电路图
(2)32位除法器Div32设计
(1)首先,先连接一个一次32div32的除法器,即已知当前的余数和当前的商,推算出下一位的余数和下一位的商。
将该子电路命名为32div_1
32div_1子电路的设计思路如下:
1.32div_1有d、cur_quot、cur_rem三个输入端,有next_quot,next_rem两个输出端。
2.将当前余数左移一位,余数的最低为补商的最高位
3.商左移一位,最低位补0还是1根据以下步骤判断:
将移位后的余数与除数d比较,d>
rem时,商的最低位应该补0;
否则,商的最低位应该补1。
将商输出,即为next_quot。
4.d>
rem时,余数仍为移位后的余数;
否则,余数rem=rem-d。
将rem输出,即为next_rem。
将该操作重复32次,即将32个已经封装好的32div_1相连,则产生的即为32div32除法器。
(2)其电路图分别如下所示:
图3-3为32div_1的除法器的内部图:
图3-332div_1除法器的内部原理图
图3-4为32div32的除法器图:
图3-432div32除法器内部原理图
根据实验方案设计要求,对于相应的乘法器和除法器,在给定的输入条件下,填写表2-1。
表2-1无符号数的乘法器实验结果记录表
n2=0Í
d=0Í
quot=0Í
F
rem=0Í
n=0Í
534
fd
A0504EF1
63
17877be
图3-5
图3-6
图3-7
图3-8
7、实验中遇到的问题及解决方法
(1)故障1
问题描述:
在设计4位除法器时比较器出现了问题,当被除数位1110,除数为1100时出现了错误的输出。
后来发现原来是因为比较器的数据类型是关于2的补码,在一些情况下会输出错误的结果。
问题分析:
比较器的数据类型是关于2的补码,所以在比较的时候不会按照无符号数来进行比较。
解决方法:
将比较器的数字类型改为无符号数。
(2)故障2
在设计32位除法器时电路显示出现明显振荡,所以会输出错误的结果。
由于32位除法器电路