一、实验目的
1、深入了解位片结构运算器AM2901的功能与用法;
2、学习4片AM2901组成一个16位运算器的级连方式,深化运算器部件的组成、设计、控制和使用等方面的知识。
二、实验原理
运算器是计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑运算,以及传送、移位、比较等操作。运算器的组成除了ALU单元外,还包括必要的寄存器和移位器等部件。寄存器用于存放操作数和运算结果,以节省访问存储器的时间;移位器实现数据的移位功能,以扩展ALU的运算功能,增加数据传送的灵活性。
AM2901是一个4位的位片结构运算器,主要由ALU、输入多路选择器、输出选择器、寄存器组和移位器等组成,如图1-1所示。
4 输出Y 二选一 F=0000 Cn+4 OVR F3 R 二选一 A锁存器 F OE ALU S 三选一 B锁存器 Cn I3 I4 I5 I0 I1 I2 数据D 4 A口地址 B口地址 4 4 A B 16个通用寄存器组 B RAM3 三选一 RAM0 Q寄存器 Q3 三选一 Q0 I6 I7 I8
图1-1 AM2901芯片的内部组成结构
1)算术逻辑ALU
ALU为4位算术逻辑单元,共有8种运算功能,由输入端I5I4I3的编码值决定执行哪一种功能。 2)通用寄存器组
AM2901内部有一个通用寄存器组,共有16个4位的寄存器。寄存器组有A和B两个端口,其中端口A只有读出数据功能,端口B具有读出和写入两种功能。即数据可以从A口和B口输出,但只能从B口输入。
3)Q寄存器
Q寄存器位4位,在乘除运算中可用来存放乘数或商,故又称为乘商寄存器。Q寄存器本身具有移位功能,可对数据进行左移一位或右移一位的处理。
4)ALU输入多路选择器
AM2901具有两个输入多路选择器R和S,为ALU提供两个操作数。R可选择来自数据线的数据D(来自外部)或寄存器组端口A的数据;S可从寄存器组端口A、B和Q寄存器3个来源选取数据。两个操作数的组合由控制信号I2I1I0的编码确定。
5)移位器
4位,用于对ALU的输出实现直送、左移或右移处理。 6)输出选择器
选择AM2901输出数据Y的来源。输出数据Y有两个来源:一个是ALU的运算结果F,另一个是直接来自寄存器组端口A。输出数据Y的选择,以及ALU的运算结果F如何传送给寄存器组端口B的输入或Q寄存器,由控制信号I8I7I6的编码值确定。
表1-1、表1-2和表1-3为ALU操作运算、数据来源以及运算结果处理的选择情况。
表1-1 选择8种运算 表1-2 选择ALU的8种输入数据组合 表1-3 选择运算器的8种结果的处置方案 I5 I4 I3 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 运算类型 R+S S-R R-S R∨S R∧S R∧S R⊕S R⊕S I2 I1 I0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 R来源 S来源 A Q A B [1]0 Q 0 B 0 A [2]D A D Q D 0
I8 I7 I6 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 寄存器组 F → B F → B F/2 → B F/2 → B 2F → B 2F → B Q寄存器 F → Q Q/2 → Q Q/2 → Q Y输出 F F A F F F F F 注:[1] 0表示数值恒为0;[2]D表示外部数据。
7)Am2901需要用一个CLK(CP)时钟信号作为内部通用寄存器、锁存器和Q寄存器的打入(锁存)信号,如图1-2所示。CLK为高电平时A、B锁存器即输入端的数据直通输出端,CLK的下降沿将输入端的数据锁存。CLK为低电平时通用寄存器从B口接收数据,CLK的上升沿将输入端的数据锁存,Q寄存器接收数据的情况与通用寄存器组相同。
ALU操作周期 系统时钟
Q寄存器接收
A、B口数据锁存 通用寄存器接收
图1-2 Am2901时钟CLK信号作用图
三、实验内容与步骤
1、实验说明
脱机运算器实验,是指把运算器部件完全脱离与计算机主机和其他部件正常的连接关系,在完全孤立出来的运算器上进行的实验。此时,只能通过微型拨动开关和按键控制教学机的运算器完成指定的运算功能,并通过信号指示灯观察运算结果。
除I8~I0 的9个拨动开关之外,其余的拨动开关功能和作用如下: 1)A口、B口地址(各4位):输入从A口、B口对内部寄存器组的寄存器进行读、写操作的地址。 2)SCI(2位):选择最低位进位输入信号C0的形成,可取0、1,也可取进位标志C的值(用于带进位的加、减运算)。 3)SSH(2位):选择移位器左移、右移操作时最高位或最低位的移入信号。 4)SST(3位):选择运算器的操作结果对状态标志寄存器的影响,即选择某个操作结果将对状态寄存器的标志有什么影响。
2、实验内容
在运算器脱机环境下,以手工方式,通过拨动开关向运算器提供运算操作所需的控制信号和数据,完成运算器的运算操作。 3、实验步骤
1)打开电源开关后,将教学机左下方的5个拨动开关置为1XX00(单步、16位、脱机方式);先按一下“RESET”按键,再按一下“START”键(每按一下“START”键,时钟电路发出一个负脉冲),进行初始化。
2)将SST 设置为“001”,通过拨动开关向运算器提供控制信号。
3)按下表所列的操作进行脱机运算器实验,将结果填入表中。其中D1取为0101H,D2取为1010H;D1、D2通过16位数据开关向运算器提供数据;通过指示灯观察运算结果及状态标志。
4)特别说明:下表的运算实际上分两步完成:第一步完成数值运算,第二步完成赋值以及将标志状态送到标志寄存器。当设置好I8-I0、SCI、SSH的值以及A口和B口的地址后,运算器进行运算,按下START键后进行赋值(包括标志寄存器)操作。
运算 *D1+0->R0 *D2+0->R1 R0+R1->R0 R0-R1->R0 R1-R0->R1 R0∨R1->R1 R0∧R1->R0 R0⊕R1->R0 R0⊕R1->R0 2*R0->R0 R0/2->R0 I8-I0 011000111 011000111 011000001 011001001 011001001 011011001 011100001 011110001 011111001 111000011 101000011 A B SCI 00 00 00 01 01 00 00 00 00 00 00 SSH 00 00 00 00 00 00 00 00 00 00 00 压START前 ALU输出 1212 3131 4343 1212 1F1F 1F1F 1212 0D0D EDED EDED DBDA CZVS 随机 0 0 0 1000 1000 1000 1000 1000 1001 0001 压START后 ALU输出 1212 3131 7474 E0E1 0D0D 1F1F 1212 1212 0D0D DBDA 6DED CZVS 0 0 0 1000 1000 1000 1000 1000 1001 0001 0001 不用 0000 不用 0001 0001 0000 0001 0000 0000 0001 0000 0001 0001 0000 0001 0000 0001 0000 不用 0000 不用 0000 注:用*标记的运算,表示D1、D2的数据来自外部,由拨动开关SW给出。
四、实验要求
1、认真写出预习报告,包括实验用的全部数据,实验操作步骤等。
2、实验之后写出实验报告,包括实验过程中遇到的问题,解决方法,实验后的心得体会及对该次实验的建议与意见。
五、思考题
1、请举例说明,为何有的运算在按下START键之前和按下START键之后运算器的输出F相同,有的运算在按下START键之前和按下START键之后运算器的输出F不同?
在进行运算器脱机实验时,若通过指示灯检查运算器的每次运算结果,得到运算结果是在START之前,而得到状态寄存器中存入的状态标志结果是在START键之后。
参照ALU的操作周期的时序知A、B口数据锁存是在时钟下降沿,而寄存器的接收是在低电平,按START能得到低电平。所以按START前后结果不同,它们得到的是不同的东西。
六、实验心得
本次实验是第一次了解位片结构运算器AM2901的功能与用法,一开始对实验的仪器毫无了解,后来经过老师讲解与介绍逐渐的了解了工作原理与实验内容。
本次实验最大的收获就是基本理解Am2901的工作原理。对于Am2901,认识到它是用来实现算数和逻辑运算的,结合这次实验设计4位ALU,明白ALU只是一个组合逻辑电路,它能直接对输入的数据进行运算,不会受到时钟信号的影响。
芯片有16个4位通用寄存器,通过A、B地址的选择,可以选择其中的两个寄存器参与当前的运算,但这两个寄存器的内容在传入ALU前,还必须经过对应的A、B锁存器才能进入ALU的两个输入端口,这是用来确保运算过程中数据一致性的问题的。而锁存器只有在脉冲信号的边沿端才会起作用,因此实验中会涉及到按压STEP手动产生脉冲信号,使数据锁存。另外,对于ALU的运算结果,它可以输出到Y,同时又可以将结果保存在B通用寄存器或Q寄存器中。立即数数据不可以经过寄存器传入ALU,它必须直接通过R输入端进入ALU。
因篇幅问题不能全部显示,请点此查看更多更全内容