一台模型计算机设计与测试计算机组成原理课程设计.docx
《一台模型计算机设计与测试计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《一台模型计算机设计与测试计算机组成原理课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
一台模型计算机设计与测试计算机组成原理课程设计
目录
第1章课程设计简介2
1.1课题介绍2
1.2减法指令流程2
1.3课程设计设备2
1.4减法指令流程设计任务2
第2章数据通路设计4
2.1运算器ALU4
2.2存储器4
2.3输入与输出7
2.4数据通路结构7
第3章微程序控制器设计8
3.1机器指令格式8
3.2控制台8
第4章机器语言程序设计12
4.1机器语言程序及其存储器位置、编码和数据初值的设计12
4.2程序执行过程及预测结果12
第5章指令流程与测试13
5.1接线方法13
5.2设置通用寄存器R1,R0的值13
5.3存程序机器代码14
5.4用单拍(DP)方式执行一遍程序14
5.5用单指(DZ)方式执行一遍程序14
5.6用连续方式执行一遍程序15
第6章总结16
参考文献17
第1章课程设计简介
1.1课题介绍
将微程序控制器同执行部件(整个数据通路)连机,组成一台模型计算机;
用微程序控制器控制模型机数据通路;
通过CPU运行就跳机器指令(排除终端指令)组成的简单程序,掌握机器指令与伪指令的关系,牢固建立计算机的政绩概念。
1.2减法指令流程
本次课程设计用到得电路包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组成为一台简单计算机。
计算机模型采用了数据总线和指令总线双总线体质能实现流水控制。
控制器有微程序控制器或者硬布线控制器两种类型,每种类型又有流水和非流水两种方案。
寄存器堆由1片ispLS11016zu组成,运算器由1片ispLS11024组成。
实验台上包括了1片系统编程芯片ispLS11032,可用它实现硬件布线控制
1.3课程设计设备
(1)TEC—4计算机组成原理实验系统一台
(2)双踪示波器一台
(3)直流万能表一只
(4)逻辑测试笔一只
1.4减法指令流程设计任务
1.利用机器指令系统编制简单程序,要求至少使用其中五条指令,对自己编制的简单程序进行译码,手工会变成十六进制机器代码。
学生根据老师指定完成不同的子标题,即程序中必须包含标题类型的指令。
2.按图,参考组成原理实验的电路图完成连线,控制器是控制部件,数据通路是执行部件,时序产生器是时序部件。
连线包括控制台、时序部分、数据通路和微程序控制器之间的链接。
其中,为把操作数传给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0应分别于IR3至IR0连接,WR1、WR0也应该接到IR1、IR0上。
3.将上述任务1中的程序机器代码用控制台操作存入内存中,并根据程序的需要,用数码开关SW7—SW0设置通用寄存器及内存相关单元的数据。
4.用单拍(DP)方式执行一遍程序,列表记录通用寄存器堆RF中寄存器的数据,以及RAM中的数据,与理论分析值做对比。
单拍方式执行是注意观察微地址指示灯、IR/DBUS指示灯、AR2/AR1指示灯和判断字段指示灯的值,以跟踪程序中取指令和执行指令的详细过程。
5.以单指(DZ)方式重新执行程序一遍,注意观察IR/DBUS指示AR2/AR1指示灯的值。
执行结束后,记录RF中四个寄存器的数据,以及RAM中的数据,与理论分析之作对比。
以连续方式(DB、DP、DZ都设为0)再次执行程序。
折中情况相当于计算机正常运行程序。
由于程序中有停机指令STP,程序执行到该指令时自动停机。
执行结束后,记录RF中四个寄存器的数据,以及RAM中的数据,与理论分析值做对比。
第2章数据通路设计
2.1运算器ALU
运算器ALU由一片ispLS1024(U47)组成,在选择端S2、S1、S0控制下,对数据A和B进行加、减、与、直通、乘五种运算,功能如下:
选择
操作
S2
S1
S0
0
0
0
A&B
0
0
1
A&A(直通)
0
1
0
A+B
0
1
1
A-B
1
0
0
A(低4位)XB(低4位)
图2-1操作功能表
进位C只在加法和运算和减法运算时产生。
加运算中,C表示进位;减运算中,C代表借位。
加、减运算产生的进位(借位)在T4的上升沿送入C寄存器保存。
与、乘、直通操作不影响进位C的状态,即进位C保持不变。
当ALU_BUS=1,运算结果送往数据总线DBUS。
加、减运算产生的进位(借位)C与控制台的C指示灯相连。
2.2存储器
1.DR1和DR2
DR1和DR2是运算操作数寄存器,DR1和ALU的B数据口相连,DR2和ALU的A数据口相连。
DR1和DR2各由2片74HC298(U23、U24、U21、U22)组成。
U23是DR1的低4位,U24是DR1的高4位;U21是DR2的低4位,U22是DR2的高4位。
当M1=0且LDDR1=1时,在T3的下降沿,DR1接收来自寄存器堆B端口的数据;当M1=1且LDDR1=1时,在T3的下降沿,DR1接收来自数据总线D_BUS的数据。
当M2=0且LDDR2=1时,在T3的下降沿,DR2接收来自寄存器堆A端口的数据;当M2=1且LDDR2=1时,在T3的下降沿,DR2接收来自数据总线DBUS的数据。
2.多端口通用寄存器堆RF
多端口通用寄存器堆RF由1片ispLSI1016(U32)组成,它的功能和MC14580类似。
寄存器堆中包含4个8位寄存器(R0、R1、R2、R3),有三个控制端口。
其中两个端口控制读操作,一个端口控制写操作,三个端口可同时操作。
RD1、RD0选择从A端口读出的寄存器,RS1、RS0选择从B端口读出的寄存器,WR1、WR0选择被写入的寄存器。
WRD控制写操作。
当WRD=0时,禁止写操作;当WRD=1时,在T2的上升沿将来自ER寄存器的数据写入由WR1、WR0选中的寄存器。
A端口的数据直接送往操作数寄存器DR2,B端口的数据直接送往操作数寄存器DR1。
除此之外,B端口的数据还通过1片74HC244(U15)送往数据总线DBUS。
当RS_BUS#=0时,允许B端口的数据送到数据总线DBUS上;当RS_BUS#=1时,禁止B端口的数据送到数据总线DBUS。
3.暂存寄存器ER
暂存寄存器ER(U14)是1片74HC374,主要用于暂时保存运算器的运算结果。
当LDER=1时,在T4的上升沿,将数据总线DBUS上的数据打入暂存寄存器ER。
ER的输出送往多端口通用寄存器堆RF,作为写入数据使用。
4.开关寄存器SW_BUS
开关寄存器SW_BUS(U38)是1片74HC244,用于将控制台开关SW7—SW0的数据送往数据总线DBUS。
当SW_BUS#=1时,禁止开关SW7—SW0的数据送往数据总线DBUS;当SW_BUS#=0时,允许开关SW7—SW0的数据送往数据总线DBUS。
5.双端口存储器RAM
双端口存储器由一片IDT7132(U36)及少量附加控制电路组成。
IDT7132是2048字节的双端口静态随机存储器,本机实际使用256字节。
IDT7132两个端口可同时进行读、写操作。
在本机中,左端口的数据连接数据总线DBUS,可进行读、写操作,右端口数据和指令总线INS连接,输出到指令寄存器IR,作为只读端口使用。
存储器IDT7132有6个控制引脚:
CEL#、LRW、OEL#、CER#、RRW、OER#。
CEL#、LRW、OEL#控制左端口读、写操作,CER#、RRW、OER#控制右端口读、写操作。
CEL#为左端口选择引脚,低有效,为高时禁止左端口操作;LRW为高时,左端口进行读操作,LRW为低时,左端口进行写操作;OER#为低时,将左端口读出的数据放到数据总线DBUS上。
CER#、RRW、OER#控制右端口读、写操作的方式与CEL#、LRW、OER#控制左端口读、写操作的方式类似,不过右端口读出的数据放到指令总线上而不是数据总线上。
本机设计中,OER#已固定接地,RRW固定接高电平,CER#由CER反相产生。
当CER=1时,右端口读出数据,并放到指令总线INS上;当CER=0时,禁止右端口操作。
左端口的OEL#由LRW经反相产生,不需单独控制。
当CEL#=0且LRW=1时,左端口进行读操作;当CER#=0且LRW=0时,在T3的上升沿开始进行写操作,将数据总线DBUS上的数据写入存储器。
6.地址寄存器AR1和AR2
地址寄存器AR1(U37)和AR2(U27、U28)提供双端口存储器的地址。
AR1是1片GAL22V10,具有加1功能,提供双端口存储器左端口的地址。
AR1从数据总线DBUS接收数据。
AR1的控制信号是LDAR1和AR1_INC。
当AR1_INC=1时,在T4的上升沿,AR1的值加1;当LDAR1=1时,在T4的上升沿,将数据总线DBUS的数据打入地址寄存器AR1。
AR2由2片74HC298组成,有两个数据输入端,一个来自程序计数器PC,另一个来自数据总线DBUS。
AR2的控制信号是LDAR2和M3。
M3选择数据来源,当M3=1时,选中数据总线DBUS;当M3=0时,选中程序计数器PC。
LDAR2控制何时接收地址,当LDAR2=1时,在T2的下降沿将选中的数据源上的数据打入AR2。
7.程序计数器PC、地址加法器器ALU2、地址缓存器R4
程序计数器PC、地址加法器器ALU2、地址缓存器R4联合完成三种操作:
PC加载,PC+1,PC+D。
R4是一个由2片74HC298(U25、U26)构成的具有存储功能的两路选择器。
当M4=1时,选中数据总线DBUS;当M4=0,从指令寄存器IR的低4位IR0—IR3接收数据。
当LDR4=1时,在T2的下降沿将选中的数据打入R4。
ALU2由1片GAL22V10(U17)构成,当PC_ADD=1时,完成PC和IR低4位的相加,即PC加D。
程序计数器PC是1片GAL22V10(U18),当PC_INC=1时,完成PC+1;当PC_ADD=1时,与ALU2一起完成PC+D的功能;当LDPC=1时,接收从ALU2和R4来的地址,实际是接收来自数据总线DBUS的地址,这些新的程序地址在T4的上升沿打入PC寄存器。
8.指令寄存器IR
指令寄存器IR是一片74HC374(U20)。
它的数据端从双端口存储器接收数据(指令)。
当LDIR=1时,在T4的上升沿将来自双端口存储器的指令打入指令寄存器IR保存。
指令的操作码部分送往控制器译码,产生各种所需的控制信号。
大多数情况下,指令的操作数部分应连到寄存器堆(用户自己连接),选择参与运算的寄存器。
在某些情况下,指令的操作数部分也参与新的PC的计算。
本实验系统设计了12条基本的机器指令,均为单字长(8位)指令。
指令功能及格式如表2所示。
表2中的X代表随意值,RS1、RS0指的是寄存器堆的B端口选择信号RS1、RS0,RD1、RD0指的是寄存器堆的A端口选择信号RD1、RD0,不过由于运算结果需写回,因此它也同时指WR1、WR0,用户需将它们对应连接。
另一点需说明的是,为了简化运算,指令JCD中的D是一个4位的正数,用D3D2D1D0表示。
实验系统虽仅设计了12条基本的机器指令,但代表了计算机中常用的指令类型。
必要时用户可扩充到16条指令或者重新设计指令系统。
9.中断地址寄存器IAR
中断地址寄存器IAR(U19)是一片74HC374,用于保存中断发生时的断点地址。
它直接使用LDIAR信号作为时钟脉冲。
当IAR_BUS#=0时,它将断点地址送到数据总线DBUS上,
2.3输入与输出
开关寄存器SW_BUS(U38)是1片74HC244,用于将控制台开关SW7—SW0的数据送往数据总线DBUS。
当SW_BUS#=1时,禁止开关SW7—SW0的数据送往数据总线DBUS;当SW_BUS#=0时,允许开关SW7—SW0的数据送往数据总线DBUS。
通过SW7—SW0输入数据,把数据输入到ER中,然后分别RF中的R0—R3中,然后通过选择,分别通过A、B端口送入DR1和DR2。
然后送入ALU进行相应的运算,再把结果通过DBUS送入RAM进行存储,并把指令通过INS送入IR,在送入控制器中,然后经过一系列的传送通过数据指示灯显示出来。
2.4数据通路结构
数据通路的设计师TEC-4计算机组成原理实验系统最有特色的部分。
首先它采用了数据总线和指令总线双总线形式。
它还使用了大规模在系统可编程器件作为运算器和寄存器堆,使得设计简单,可修改性强。
数据通路位于试验系统的中部。
图2-2数据通路图
第3章微程序控制器设计
3.1机器指令格式
根据下列表的代码格式。
产生不同的功能,完成各个任务。
名称
助记符
功能
指令格式
R7R6R5R4
R3R2
R1R0
加法
ADDRd,Rs
Rd+Rs->Rd
0000
RS1RS0
RD1RD0
减法
SUBRd,Rs
Rd-Rs->Rd
0001
RS1RS0
RD1RD0
乘法
MULRd,Rs
Rd*Rs->Rd
0010
RS1RS0
RD1RD0
逻辑与
ANDRd,Rs
Rd&Rs->Rd
0011
RS1RS0
RD1RD0
存数
STARd,[Rs]
Rd->[Rs]
0100
RS1RS0
RD1RD0
取数
LDARd,[Rs]
[Rs]->Rd
0101
RS1RS0
RD1RD0
无条件转移
JMP[Rs]
[Rs]->PC
1000
RS1RS0
XX
条件转移
JCD
若C=1则
PC+D->PC
1001
D3D2
D1D0
停机
STP
暂停运行
0110
XX
XX
中断返回
IRET
返回断点
1010
XX
XX
开中断
INTS
允许中断
1011
XX
XX
关中断
INTC
禁止中断
1100
XX
XX
图3-1机器指令格式
3.2控制台
控制台位于TEC—4计算机组成原理实验系统的下部,主要由若干指示灯和若干拨动开关组成,用于给数据通路置数、设置控制信号、显示各种数据使用。
1.SW7—SW0
数据开关,直接接到数据通路部分的数据总线DBUS上,用于向数据通路中的器件置数。
开关拨到上面位置时输出1,拨到下面位置时输出0。
SW7是最高位,SW0是最低位。
2.K15—K0
双位拨动开关。
开关拨到上面位置时输出1,拨到下面位置时输出0。
实验中用于模拟数据通路部分所需的电平控制信号。
例如,将K0与LDDR1连接,则K0向上时,表示置LDDR1为1;K0向下时,表示置LDDR1为0。
3.数据指示灯D7—D0
8个红色发光二极管,用于显示数据总线DBUS或者指令寄存器IR的状态。
D7是最高位,D0是最低位。
双位开关IR/DBUS拨到IR位置时,显示指令寄存器IR的状态;双位开关IR/DBUS拨到DBUS位置时,显示数据总线DBUS状态。
4.地址指示灯A7—A0
8个绿色发光二极管,用于显示双端口存储器的地址寄存器内容。
A7是最高位,A0是最低位。
双端口存储器IDT7132有两个地址端口,地址寄存器AR1提供左端口地址A7L—A0L,地址寄存器AR2提供右端口地址A7R—A0R。
当双位开关AR2/AR1拨到AR1位置时,显示地址寄存器AR1的内容;当双位开关AR2/AR1拨到AR2位置时,显示地址寄存器AR2的内容。
5.微地址指示灯_A5—_A0
6个黄色发光二极管,用于显示控制存储器的地址_A5—_A0。
_A5是最高位,_A0是最低位。
其他指示灯P3、P2、P1、P0、IE、C
6个黄色发光二极管用于显示P3、P2、P1、P0、IE、C的值。
P3、P2、P1、P0是控存的微代码位,用于条件分支产生下一个微地址。
C是加、减运算时产生的进位值。
IE是中断允许标志。
当IE=1时,允许中断;当IE=0时,禁止中断。
7.微动开关CLR#、QD、INTR
这三个微动开关用于产生CLR#、QD、INTR单脉冲。
按一次按钮CLR#,产生一个负的单脉冲CLR#,对全机进行复位,使全机处于初始状态,微程序地址置为000000B。
CLR#到时序和控制器的连接已在印制板上实现,控制存储器和数据通路部分不使用复位信号CLR#。
按一次QD按钮,产生一个正的QD启动脉冲。
QD和时序部分的连接已在印制板上实现。
按一次INTR按钮,产生一个正的单脉冲,可用于作为中断请求信号。
INTR到时序部分的连接已在印制板上实现。
这三个单脉冲都有插孔对外输出,供用户设计自己的控制器和时序电路时使用。
。
8.单步、单拍、单指开关DB、DP、DZ
DB(单步)、DP(单拍)、DZ(单指)是三种特殊的非连续工作方式。
当DP=1时,计算机处于单拍方式,按一次QD按钮,每次只执行一条微指令,发送一组T1、T2、T3、T4时序脉冲。
当DZ=1时,计算机处于单指方式。
单指方式只对微程序控制器适用。
在单指方式下,按一次QD按钮,计算机执行一条指令。
当DB=1时,机器处于单步方式。
单步方式只对硬布线控制器适用。
在单步方式下,按一次启动按钮QD,发送一组W1、W2、W3、W4时序脉冲。
在使用硬布线控制器时,每条指令需要一组W1、W2、W3、W4时序脉冲,因此单步方式实际上是硬布线控制器下的单指方式。
DB、DP、DZ这三个双位开关,任何时刻都只允许一个开关置1,决不允许两个或三个开关同时置1。
当DB=0且DP=0且DZ=0时,机器处于连续工作方式。
。
9.控制台方式开关SWC、SWB、SWA
控制台方式开关SWC、SWB、SWA定义了TEC—4计算机组成原理实验系统的五种工作方式。
在出厂时提供的标准控存中,五种工作方式定义如下:
SWC
SWB
SWA
工作方式
0
0
0
PR,启动程序
0
0
1
KRD,读双端口存储器
0
1
0
KWE,写双端口存储器
0
1
1
KLD,加载寄存器堆
1
0
0
KRR,读寄存器堆
图3-2控制台指令格式表
在按CLR#按钮复位后,根据SWC、SWB、SWA选择工作方式。
PR是启动程序方式。
在此方式下,首先在SW7—SW0指定启动地址,按启动按钮QD后,启动程序运行。
KRD是读双端口存储器方式。
在此方式下,
(1)首先在SW7—SW0置好存储器地址;按QD按钮,则将此地址打入地址寄存器AR1,并读出该地址存储器内容到数据总线DBUS。
(2)每按一次QD按钮,地址寄存器AR1加1,并读出新地址存储器内容到数据总线DBUS。
依次进行下去,直到按复位按钮CLR#为止。
KWE是写双端口存储器方式。
在此方式下,
(1)首先在SW7—SW0置好存储器地址;按QD按钮,则首先将此地址打入地址寄存器AR1,然后等待输入数据。
(2)在SW7—SW0置好数据,按QD按钮,首先写数据到AR1指定的存储器单元,然后地址寄存器AR1加1,等待新的输入数据。
依次进行下去,直到按复位按钮CLR#为止。
KLD是加载寄存器堆方式。
此方式用于对寄存器堆加载。
(1)首先在SW7—SW0置好存储器地址,按QD按钮,则将此地址打入地址寄存器AR1和地址寄存器AR2。
(2)在SW7—SW0置好数据,数据的低2位D1、D0为寄存器堆中的寄存器号,按一次QD按钮,则写数据到AR1指定的存储器单元;然后将写入的数据从右端口读出,并送入指令寄存器IR。
10.控制器
控制器位于本实验系统的中上部,产生数据通路操作所需的控制信号。
出厂时,提供了一个微程序控制器,使用户能够进行基本的计算机组成原理实验。
在进行硬连线控制器实验,流水微程序控制器实验和流水硬连线控制器实验等课程设计时,用户可设计自己的控制器,部分或者全部代替出厂时提供的控制器。
图3-3控制器框图
第4章机器语言程序设计
4.1机器语言程序及其存储器位置、编码和数据初值的设计
程序功能:
例如将寄存器R2中的内容和R0中的内容相减,将所得的差值送入到寄存器R2中。
程序实现表:
地址
指令
机器代码
10H
SUBR2,R0
12H
11H
SUBR3,R1
17H
12H
SUBR2,R3
1EH
4.2程序执行过程及预测结果
首先设置通用寄存器R0、R1、R2、R3的值,使R0=10H,R1=12H,R2=14H,R3=16H。
然后从10H地址开始存3个机器代码:
12H,17H,1EH。
用单指的方式执行程序。
初值:
R0=10H,R1=12H,R2=14H,R3=15H。
1.SUBR2,R0
执行结果:
R0=10H,R2=04H。
2.SUBR3,R1
执行结果:
R1=12H,R3=03H
3.SUBR2,R3
执行结果:
R2=01H,R3=15H
第5章指令流程与测试
5.1接线方法
1.将跳线开关J1用短路子短接。
时序发生器的输入TJI接控制存储器的输出TJ。
控制器的输入C接运算器ALU的C。
控制器的输入IR7、IR6、IR5、IR4依次指令寄存器IR的输出IR7、IR6、IR5、IR4。
共6条线。
2.控制器的输出LDIR(CER)、LDPC(LDR4)、PC_ADD、PC_INC、M4、LDIAR、LDAR1(LDAR2)、AR1_INC、M3、LDER、IAR_BUS#、SW_BUS#、RS_BUS#、ALU_BUS、CEL#、LRW、WRD、LDDR1(LDDR2)、M1(M2)、S2、S1、S0依次与数据通路的对应信号连接。
共27条线。
3.指令寄存器IR的输出IR0接双端口寄存器堆的RD0、WR0,IR1接RD1、WR1,IR2接RS0,IR3接RS1。
共6条线。
合上电源。
按CLR#按钮,使实验系统处于初始状态。
5.2设置通用寄存器R1,R0的值
在本操作中,我们打算使R0=08H,R1=06H。
1.令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。
令SWC=0、SWB=1、SWA=1,使实验系统处于寄存器加载工作方式KLD。
按CLR#按钮,使实验系统处于初始状态。
2.在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。
该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。
例如可将该地址设置为0FFH。
按一次QD按钮,将0FFH写入AR0和AR1。
3.在SW7—SW0上设置00H,作为通用寄存器R0的寄存器号。
按一次QD按钮,则将00H写入IR。
4.在SW7—SW0设置10H,作为R0的值。
按一次QD按钮,将10H写入IR指定的R0寄存器。
5.在SW7—SW0上设置10H,作为通用寄存器R2的寄存器号。
按一次QD按钮,将10H写入IR。
6.在SW7—SW0设置14H,作为R2的值。
按一次QD按钮,将14H写入R2。
7.设置R0、R2结束,用同样的方法设置R1、R3
8.按CLR#按钮,使实验系统恢复到初始状态。
5.3存程序机器代码
本操作中,我们从10地址开始存。
3个机器代码:
12H,17H,1EH。
1.令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。
令SWC=0、SWB=1、SWA=0,使实验系统处于写双端口存储器工作