2015计算机组成原理课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大连海事大学
课程设计报告
课程名称:计算机组成原理课程设计
成员:刘袁
设计时间:2015年8月31日至9月11日
考核记录及成绩评定
目录
一、设计任务与要求 (1)
1.1 课程设计背景与目的 (1)
1.2 应解决的主要问题及应达到的技术 (1)
1.3 基本理论依据 (1)
1.3.1 数据格式 (1)
1.3.2 指令设计 (1)
1.3.3 指令格式 (2)
1.3.4指令系统 (4)
二、设计方案 (5)
三、详细设计 (10)
3.1 异或 (10)
3.2 寄存器间接寻址实现异或 (14)
4.1累加 (16)
4.2异或 (17)
4.3寄存器间接寻址实现异或运算 (19)
五、成员分工及工作情况 (22)
附录1 :电路原理图 (23)
附录2: 源程序及程序注释 (24)
1.累加 (24)
2.异或 (27)
3.对于IN增加的寄存器间接寻址实现异或运算 (29)
附录3: 使用元器件一览表 (33)
附录4 :参考文献 (36)
一、设计任务与要求
1.1 课程设计背景与目的
计算机组成原理课程设计是计算机科学与技术专业的学生在修完计算机组成原理课程之后,必须完成的实验环节。

本课程设计是在完成计算机组成原理分解实验的基础上,来进行模型计算机的整机设计。

通过模型机的设计、组装和调试,建立计算机整机的概念,加深对计算机“时空”概念的理解,掌握设计和调试计算机的基本步骤和方法,提高应用集成电路的基本技能,培养和提高学生独立工作的能力及分析问题和解决问题的能力。

根据此前所学习的有关计算机组成及工作原理的相关知识,利用实验室现有元器件及设备,设计并实现一台模型计算机,并利用实现的指令编程在模型机上运行,对设计工作进行验证。

1.2 应解决的主要问题及应达到的技术
①阅读计算机组成的相关资料,考察现有实验器材,给出模型机设计方案。

方案中要以图文结合的方式描述出模型机的整机构成,即该模型机硬件上主要由哪几个部分组成及其互联方式。

②对模型机各个组成部分具体的硬件构成,功能,操作方式进行详细说明,必要时需给出电路图。

③说明模型机的数据类型,指令格式,寻址方式,指令系统构成,微指令格式及各条指令的微程序流程。

④利用实现的指令编写程序,对设计工作进行验证。

⑤在组装调试成功的基础上,整理出设计说明书和其它文件。

1.3 基本理论依据
下面讲述一下模型计算机的数据格式及指令系统。

1.3.1 数据格式
模型机规定采用定点补码表示法表示数据,字长为8位,8位全用来表示数据(最高位不表示符号),数值表示范围是: 0≤X≤28-1。

1.3.2 指令设计
模型机设计三大类指令共十五条,其中包括运算类指令、控制转移类指令,数据传送类
指令。

运算类指令包含三种运算,算术运算、逻辑运算和移位运算,设计有 6 条运算类指令,分别为:ADD、AND、INC、SUB、OR、RR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。

控制转移类指令有三条 HLT、JMP、BZC,用以控制程序的分支和转移,其中 HLT 为单字节指令,JMP 和 BZC 为双字节指令。

数据传送类指令有 IN、OUT、MOV、LDI、LAD、STA 共 6 条,用以完成寄存器和寄存器、寄存器和 I/O、寄存器和存储器之间的数据交换,除MOV 指令为单字节指令外,其余均为双字节指令。

1.3.3 指令格式
所有单字节指令(ADD、AND、INC、SUB、OR、RR、HLT 和 MOV)格式如下:
7 6 5 4 3 2
1 0
OP-CODE RS RD
其中,OP-CODE 为操作码,RS 为源寄存器,RD 为目的寄存器,并规定:
RS或RD 选定的寄存器
00
01
10
11 R0 R1 R2 R3
IN 和 OUT 的指令格式为:
7 6 5 4 (1) 3 2 (1) 1 0 (1) 7-0 (2)
OP-CODE RS RD P
其中括号中的1表示指令的第一字节,2表示指令的第二字节,OP-CODE为操作码,RS 为源寄存器,RD为目的寄存器,P为I/O端口号,占用一个字节,系统的I/O地址译码原理见图1-1(在地址总线单元)。

图1-1 I/O地址译码原理图
由于用的是地址总线的高两位进行译码,I/O地址空间被分为四个区,如表 1-1所示:
表1-1 I/O地址空间分配
系统设计五种数据寻址方式,即立即、直接、间接、变址和相对寻址,LDI指令为立即寻址,LAD、STA、JMP 和 BZC 指令均具备直接、间接、变址和相对寻址能力。

LDI的指令格式如下,第一字节同前一样,第二字节为立即数。

表1-2 LDI指令格式
LAD、STA、JMP 和 BZC 指令格式如下:
表1-3 指令格式
其中 M 为寻址模式,具体见表 1-4,以 R2 做为变址寄存器 RI。

表1-4 寻址方式
1.3.4指令系统
本模型机共有16条基本指令,表1-5列出了各条指令的格式、汇编符号、指令功能。

表1-5 指令格式、符号、功能
二、设计方案
本模型机的数据通路框图如图2-1所示。

图2-1 数据通路框图
和前面的实验相比,复杂模型机实验指令多,寻址方式多,只用一种测试已不能满足设计要求,为此指令译码电路需要重新设计。

如图2-2所示在IR 单元的INS_DEC 中实现。

SE1
T4I[5]
I[6]I[7]
I[3]P<1>P<2>
SE0
T4I[4]
I[6]I[7]
I[2]P<1>P<2>
FZ FC
T4SE4P<3>SE3
T4P<1>I[7]
SE2
T4P<1>I[6]
图2-2 指令译码原理图
本实验中要用到四个通用寄存器R3…R0,而对寄存器的选择是通过指令的低四位,为此还得设计一个寄存器译码电路,在IR 单元的REG_DEC (GAL16V8)中实现,如图2-3所示。

图2-3 寄存器译码原理图
根据机器指令系统要求,设计微程序流程图及确定微地址,如图2-3所示。

按照系统建议的微指令格式,见表2-1,参照微指令流程图,将每条微指令代码化,译成二进制代码表,见表2-2,并将二进制代码表转换为联机操作时的十六进制格式文件。

表2-1 微指令格式
A 字段
B 字段
C 字段
141312选择000001LDA 010LDB 011LDRi 100保留10111023M23
2221201918-1514-1211-98-65-0WR
RD IOM
A 字段
B 字段
C 字段
UA5-UA0
S3-S0
NOP 111
LDIR
LDAR LOAD 11109选择000001ALU_B 010RS_B 011RD_B 100保留101110NOP 1
1
1
保留
PC_B 876选择000001P<1>010P<2>011P<3>100保留101110NOP 1
11
保留
保留LDPC CN
RI_B
表2-2 二进制代码表
根据现有指令,在模型机上实现以下运算:从IN单元读入一个数据,根据读入数据的低4位值X,求1+2+…+X的累加和,01H到0FH共15个数据存于60H到6EH单元。

根据要求可以得到如下程序,地址和内容均为二进制数。

地址内容助记符说明
00000000 00100000 ; START: IN R0,00H 从IN单元读入计数初值
00000001 00000000
00000010 01100001 ; LDI R1,0FH 立即数0FH送R1
00000011 00001111
00000100 00010100 ; AND R0,R1 得到R0低四位
00000101 01100001 ; LDI R1,00H 装入和初值00H
00000110 00000000
00000111 11110000 ; BZC RESULT 计数值为0则跳转
00001000 00010110
00001001 01100010 ; LDI R2,60H 读入数据始地址
00001010 01100000
00001011 11001011 ; LOOP: LAD R3,[RI],00H 从MEM读入数据送R3,
变址寻址,偏移量为00H 00001100 00000000
00001101 00001101 ; ADD R1,R3 累加求和
00001110 01110010 ; INC RI 变址寄存加1,指向下一数据
00001111 01100011 ; LDI R3,01H 装入比较值
00010000 00000001
00010001 10001100 ; SUB R0,R3
00010010 11110000 ; BZC RESULT 相减为0,表示求和完毕
00010011 00010110
00010100 11100000 ; JMP LOOP 未完则继续
00010101 00001011
00010110 11010001 ; RESULT: STA 70H,R1 和存于MEM的70H单元
00010111 01110000
00011000 00110100 ; OUT 40H,R1 和在OUT单元显示00011001 01000000
00011010 11100000 ; JMP START 跳转至START 00011011 00000000
00011100 01010000 ; HLT 停机
01100000 00000001 ; 数据
01100001 00000010
01100010 00000011
01100011 00000100
01100100 00000101
01100101 00000110
01100110 00000111
01100111 00001000
01101000 00001001
01101001 00001010
01101010 00001011
01101011 00001100
01101100 00001101
01101101 00001110
01101110 00001111
三、详细设计
3.1 异或
表3-1 指令描述
异或
RS⊕RD→RD
1011 RS RD
图3-1 微程序流程图
表3-2 二进制代码表
根据现有指令,在模型机上实现以下运算:从IN单元读入两个数据a,b进行异或运算:a ⊕b = (¬a ∧ b) ∨ (a ∧¬b),输出显示结果。

地址内容助记符说明
00000000 00100000 ; START: IN R0,00H 从IN单元读入计数初值a
00000001 00000000
00000010 00100001 ; START: IN R0,00H 从IN单元读入计数初值b
00000011 00000000
00000100 10110100 ; 异或运算
00000101 00110000 ; OUT 40H,R1 和在OUT单元显示
00000110 01000000
00000111 01010000 ; HLT 停机
3.2 寄存器间接寻址实现异或
表3-3 指令描述
助记符号指令格式指令功能
IN RD,P 0010 ** RD [P]->RD
异或1011 RS RD RS⊕RD→RD HALT 0101 ** ** 停机
图3-2 微程序流程图
表3-4 二进制代码表
根据现有指令,在模型机上实现以下运算:从IN单元读入两个数据的地址,从主存寻找数据,进行异或运算,输出显示结果。

地址内容助记符说明
00000000 00100000 ; START: IN R0,00H 从IN单元读入计数初值a
00000001 00000000
00000010 00100001 ; START: IN R0,00H 从IN单元读入计数初值b
00000011 00000000
00000100 10110100 ; 异或运算
00000101 00110000 ; OUT 40H,R1 和在OUT单元显示
00000110 01000000
00000111 01010000 ; HLT 停机
10000000 00000001 ; 数据
10000001 00010000 ; 数据
四、设计结果及分析
4.1累加
测试数据:输入数据为02H,输出数据为03H
图4-1-1 运行截图
图4-1-2 运行截图
图4-1-3 运行截图4.2异或
测试数据:输入数据为01H和02H,输出数据为03H
图4-2-1 运行截图
图4-2-2 运行截图
图4-2-3 运行截图
图4-2-4 运行截图4.3寄存器间接寻址实现异或运算
测试数据:输入地址为80H和81H,输出数据为03H
图4-3-1 运行截图
图4-3-2 运行截图
图4-3-3 运行截图
图4-3-4 运行截图
五、成员分工及工作情况
共同完成:
1.研究了解微指令的设计过程
2.搜集相关资料
3.据实验指导电路图连接电路,联机运行累加求和运算
4.除硬件和程序故障
5.撰写设计报告
刘:寄存器间接寻址
袁:异或运算
附录1 :电路原理图
附录2: 源程序及程序注释
1.累加
地址内容助记符说明
00000000 01010000 ; START:IN R0,00H 从IN单元读入计数初值
00000001 00000000
00000010 10010001 ; LDI R1,0FH 立即数0FH送R1
00000011 00001111
00000100 01000100 ; AND R0,R1 得到R0低4位
00000101 10010001 ; LDI R1,00H 装入和初值00H
00000110 00000000
00000111 11110000 ; BZC RESULT 计数值为0则跳转
00001000 00010110
00001001 10010010 ; LDI R2,60H 读入数据始地址
00001010 01100000
00001011 11001011 ; LOOP:LAD R3,[RI],00H 从MEM读入数据送 R3,变址寻址,偏移量为00H
00001100 00000000
00001101 00111101 ; ADD R1,R3 累加求和
00001110 10100010 ; INC RI 变址寄存加1,指向下一数据
00001111 10010011 ; LDI R3,O1H 装入比较值
00010000 00000001
00010001 10001100 ; SUB R0,R3
00010010 11110000 ; BZC RESULT 相减为0,表示求和完毕
00010011 00010110
00010100 11100000 ; JMP LOOP 未完则继续
00010101 00001011
00010110 11100001 ; RESULT:STA 70H,R1 和存于MEM的70H单元
00010111 01110000
00011000 00000100 ; OUT 40H,R1 和在OUT单元显示
00011001 01000000
00011010 11100000 ; JMP START 跳转至START
00011011 00000000
00011100 00100000 ; HLT 停机
01100000 00000001 ; 数据
01100001 00000010
01100010 00000011
01100011 00000100
01100100 00000101
01100101 00000110
01100110 00000111
01100111 00001000
01101000 00001001
01101001 00001010
01101010 00001011
01101011 00001100
01101100 00001101
01101101 00001110
01101110 00001111
指令文件
;//****** Start Of Main Memory Data ******//
$P 00 50 ; START:IN R0,00H 从IN单元读入计数初值
$P 01 00
$P 02 91 ; LDI R1,0FH 立即数0FH送R1
$P 03 0F
$P 04 44 ; AND R0,R1 得到R0低4位
$P 05 91 ; LDI R1,00H 装入和初值00H
$P 06 00
$P 07 F0 ; BZC RESULT 计数值为0则跳转
$P 08 16
$P 09 92 ; LDI R2,60H 读入数据始地址
$P 0A 60
$P 0B CB ; LOOP:LAD R3,[RI],00H 从MEM读入数据送 R3,变址寻址,偏移量为00H $P 0C 00
$P 0D 3D ; ADD R1,R3 累加求和
$P 0E A2 ; INC RI 变址寄存加1,指向下一数据$P 0F 93 ; LDI R3,O1H 装入比较值
$P 10 01
$P 11 BC ; SUB R0,R3
$P 12 F0 ; BZC RESULT 相减为0,表示求和完毕
$P 13 16
$P 14 E0 ; JMP LOOP 未完则继续
$P 15 0B
$P 16 D1 ; RESULT:STA 70H,R1 和存于MEM的70H单元$P 17 70
$P 18 04 ; OUT 40H,R1 和在OUT单元显示
$P 19 40
$P 1A E0 ; JMP START 跳转至START
$P 1B 00
$P 1C 20 ; HLT 停机
$P 60 01 ; 数据
$P 61 02
$P 62 03
$P 63 04
$P 64 05
$P 65 06
$P 66 07
$P 67 08
$P 68 09
$P 69 0A
$P 6A 0B
$P 6B 0C
$P 6C 0D
$P 6D 0E
$P 6E 0F
;//****** End Of Main Memory Data******//
2.异或
地址内容说明
00000000 00100000 ; 从IN单元读入数据a 00000001 00000000
00000010 00100001 ; 从IN单元读入数据b 00000011 00000000
00000100 10001000 ; 异或运算
00000101 00000000 ; 输出结果
00000110 01000000
00000111 00100000 ; 停机
指令文件
; //****** Start Of Main Memory Data ****** // $P 00 20 ;
$P 01 00
$P 02 21 ;
$P 03 00
$P 04 B4 ;
$P 05 30 ;
$P 06 40
$P 07 50 ;
; //***** End Of Main Memory Data *****//
; //** Start Of MicroController Data **//
$M 00 000001 ; NOP
$M 01 006D43 ; PC->AR, PC加1
$M 03 107070 ; MEM->IR, P<1>
$M 04 002405 ; RS->B
$M 05 04B201 ; A加B->RD
$M 06 002407 ; RS->B
$M 07 013201 ; A与B->RD
$M 08 106009 ; MEM->AR
$M 09 183001 ; IO->RD
$M 0B 000001 ; NOP
$M 0C 103001 ; MEM->RD
$M 0D 200601 ; RD->MEM
$M 0E 005341 ; A->PC
$M 0F 0000CB ; NOP, P<3>
$M 10 280401 ; RS->IO
$M 11 103001 ; MEM->RD
$M 12 06B201 ; A加1->RD
$M 13 002414 ; RS->B
$M 14 05B201 ; A减B->RD
$M 15 002416 ; RS->B
$M 16 01B201 ; ***A或B->RD $M 17 002418 ; RS->B
$M 18 02B201 ; A右环移->RD
$M 19 00241A ; ***RS->B
$M 1A 021221 ; ***/A->A
$M 1B 005341 ; A->PC
$M 1C 10101D ; MEM->A
$M 1D 10608C ; MEM->AR, P<2> $M 1E 10601F ; MEM->AR
$M 1F 101020 ; MEM->A
$M 20 10608C ; MEM->AR, P<2> $M 21 011222 ; ***A与B->A
$M 22 002623 ; ***RD->B
$M 23 003224 ; ***A->RD
$M 24 001425 ; ***RS->A
$M 25 021226 ; ***/A->A
$M 26 011227 ; ***A与B->A
$M 27 002616 ; ***RD->B
$M 28 101029 ; MEM->A
$M 29 00282A ; RI->B
$M 2A 04E22B ; A加B->AR
$M 2B 04928C ; A加B->A, P<2> $M 2C 10102D ; MEM->A
$M 2E 04E22F ; A加B->AR
$M 2F 04928C ; A加B->A, P<2>
$M 30 001604 ; RD->A
$M 31 001606 ; RD->A
$M 32 006D48 ; PC->AR, PC加1
$M 33 006D4A ; PC->AR, PC加1
$M 34 003401 ; RS->RD
$M 35 000035 ; NOP
$M 36 006D51 ; PC->AR, PC加1
$M 37 001612 ; RD->A
$M 38 001613 ; RD->A
$M 39 001615 ; RD->A
$M 3A 001617 ; RD->A
$M 3B 001619 ; ***RD->A
$M 3C 006D5C ; PC->AR, PC加1
$M 3D 006D5E ; PC->AR, PC加1
$M 3E 006D68 ; PC->AR, PC加1
$M 3F 006D6C ; PC->AR, PC加1
; //** End Of MicroController Data **//
3.对于IN增加的寄存器间接寻址实现异或运算
地址内容说明
00000000 01010000 ; 从IN单元读入数据a的地址00000001 00000000
00000010 01010001 ; 从IN单元读入数据b的地址00000011 00000000
00000100 00110100 ; A⊕B->RD
00000101 00000000 ; 输出结果
00000110 01000000
00000111 00100000 ; 停机
指令文件
; //****** Start Of Main Memory Data ****** // $P 00 20
$P 01 00
$P 02 21
$P 03 00
$P 04 B4
$P 05 30
$P 06 40
$P 07 50
$P 80 01
$P 81 02
; //***** End Of Main Memory Data *****//
; //** Start Of MicroController Data **//
$M 00 000001 ; NOP
$M 01 006D43 ; PC->AR, PC加1
$M 03 107070 ; MEM->IR, P<1>
$M 06 106007
$M 07 183008
$M 08 006609
$M 09 103001
$M 0A 106010 ; MEM->AR
$M 10 280401 ; RS->IO
$M 16 01B201 ; A或B->RD
$M 19 00241A ; ***RS->B
$M 1A 021221 ; ***/A->A
$M 21 011222 ; ***A与B->A
$M 22 002623 ; ***RD->B
$M 23 003224 ; ***A->RD
$M 24 001425 ; ***RS->A
$M 25 021226 ; ***/A->A
$M 26 011227 ; ***A与B->A
$M 27 002616 ; ***RD->B
$M 30 001604 ; RD->A
$M 32 006D46 ; PC->AR, PC加1
$M 35 000035 ; NOP
$M 3B 001619 ; ***RD->A
; //** End Of MicroController Data **//
附录3: 使用元器件一览表
1.74LS139
54/74LS139为2 线-4 线译码器,也可作数据分配器。

图1 74LS139
2.74LS245
总线驱动器74LS244和74LS245经常用作三态数据缓冲器,74LS244为单向三态数据缓冲器,而74LS245为双向三态数据缓冲器。

单向的内部有8个三态驱动器,双向的有16个三态驱动器。

如下图为74LS245引脚图
图2 74LS245
3.74LS273
74LS273是8位数据/地址锁存器。

74LS273是一种带清除功能的8D触发器, 1D~
8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

图3 74LS273
4.74LS08P
与门电路,双路14脚封装,四重2输入与门
图4 74LS08P
5、74LS175
74LS175为4 D触发器。

1脚为0时,所有Q输出为0,Q非输出为1;9脚位时钟输入端,9脚上升沿将相应的触发器D的电平,锁存入D触发器。

图5 74LS175
6、74LS74AP
74LS74内含两个独立的D上升沿双d触发器,每个触发器有数据输入D、置位输入/SD,复位输入/SD、时钟输入CP和数据输出Q。

/SD、/RD的低电平使输出预置或清除,而与其它输入端的电平无关。

当/SD、/RD均无效高电平时,符合建立时间要求的D数据在CP上升沿作用下传送到输出端。

附录4 :参考文献
[1] 白中英.计算机组成原理(第四版).北京:科学出版社,2008年1月
[2] 白中英,戴志涛.计算机组成原理(第五版).北京:科学出版社,2013年3月。

相关文档
最新文档