实验二 原码一位乘法器
设计要求:
-
8位无符号的原码一位乘法器的实现
-
通过时钟驱动右移,模拟运算过程
-
实现脉冲控制,位移指定次数后要及时停止
-
结果输出给到乘积隧道
实验目的:
A.掌握寄存器、分离器、比较器等一系列新的逻辑元件使用方法
B.学习并运用计算机原码乘法原理,在硬件电路中予以实现
C.熟练掌握 Logisim 寄存器电路的使用
方案设计:
A.宏观设计
a.位移次数控制
采用计数器+比较器的硬件实现,控制右移9次即可(题目中有提示)
这里LOAD在=0时,给到1信号;将b送入右侧寄存器中
其他时候都=0就按照位移情况对右侧寄存器开展更新
b.位移的实现
采用上下四组8位宽分离器实现,左边高位右边低位,乘积右移
最高位有八位加法器的进位输入得到,右移弹出的数据用于数据选择器
来部署下次是+0还是+a
c.部分乘积,+a还是+0 ?
如上图,用低位弹出的数据01来判断下次+0+a;
LOAD只在第一次使用触发,将y送入;其余时刻都是保存位移的部分积
d.八位加法的实现
采用【八位加法器】的封装,输入数据改成8位;此处x是作为常量
调用,不会受到位移影响
e.被乘数a与乘数b的保存
俩寄存器,a存在x中;第一个存部分乘积,第二个存y;随着计算过程右移,xy
会被逐步右移并替换为乘积结果;启动初始化时候x=y=0
右移过程是不会影响到x本体的,因为我们x是作为常量调用
位移运算过程不会修改x的数值
B.实验步骤
a.元件测试-选择器
具体功能:MUX二路选择,0选左侧,1选右侧
实现方式:右侧输入控制端,下边两侧给到等待选择的数据
b.元件测试-比较器
具体功能:给到输入数据,满足条件输出1,其他时候都是0
实现方式:输入数据接上端,判断标准接下端,右侧输出
c.元件测试-分离器
具体功能:实现多位数据拆分、整合;数据是双向的,看你哪一端口输入,输入端口为主动区;可以通过面板设置,将某一位数据“分配”到指定的隧道;或者两个位数小的整合成一个多位数的数据
实现方式:多入1出,实现整合;举例本电路中的合并过程
1入多出,可以通过面板位数设置,将指定位数输出到对应隧道中
d.电路搭建
C.debug - 本地测试
成果展示:
心得体会:
这次使用Logism出现了之前数字逻辑学习中没有出现过的逻辑元件,进一步贴近了实际计算机组成的部件,是一次拓展性的探索,当然对未知事物的探索也是一件比较费劲的事情(位移器、寄存器、比较器、分离器、八位串型加法器黑盒子);我先进行了这些未知元件基本功能的测试,熟悉知道什么给到什么输入有什么输出实现了什么功能,再结合书上思想给出设计图纸;步步为营的过程虽然艰难,但是可以对纠错和实验过程进行强有力的保障。