硬件课程设计成品.docx
《硬件课程设计成品.docx》由会员分享,可在线阅读,更多相关《硬件课程设计成品.docx(41页珍藏版)》请在冰豆网上搜索。
硬件课程设计成品
原理部分
一.课程设计题目
复杂模型机的设计与实现。
二.设计目的
综合运用所学计算机原理知识,设计并实现较为完整的计算机。
三.实验环境
1.硬件环境
EL-JY-II型计算机组成原理实验系统一套,排线若干。
PC机
2.软件环境
操作系统。
“计算机组成原理-16位”应用软件。
四.模型机结构
模型机结构如下图所示,图中运算器ALU由U7—U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。
微控器部分控存由U13—U15三片2816构成。
存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00H—FFH。
输出设备由底板上的四个LED数码管及其译码、驱动电路构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。
在开关方式下,输入设备由16位电平开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。
在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用。
注:
本系统的数据总线为16位,指令、地址和程序计数器均为8位。
当数据总线上的数据打入指令寄存器、地址寄存器和程序计数器时,只有低8位有效。
图1模型机结构框图
五.工作原理
1、数据格式:
本实验计算机采用定点补码表示法表示数据,字长为16位,其格式如下:
15
1413……..0
符号
尾数
其中第16位为符号位,数值表示范围是:
-32768≤X<32767。
2、指令格式:
(1)算术逻辑指令
设计9条单字长算术逻辑指令,寻址方式采用寄存器直接寻址。
其格式如下:
7654
32
10
OP-CODE
rs
rd
其中OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
OP-CODE
0111
1000
1001
1010
1011
1100
1101
1110
1111
指令
CLR
MOV
ADD
SUB
INC
AND
NOT
ROR
ROL
Rs或rd
选定寄存器
00
Ax
01
Bx
10
Cx
9条算术逻辑指令的名称、功能和具体格式见表2。
(2)存储器访问及转移指令
存储器的访问有两种,即存数和取数。
它们都使用助记符MOV,但其操作码不同。
转移指令只有一种,即无条件转移(JMP)。
指令格式如下:
76
54
32
10
00
M
OP-CODE
rd
D
其中OP-CODE为操作码,rd为寄存器。
M为寻址模式,D随M的不同其定义也不相同,如下表所示:
OP-CODE
00
01
10
指令说明
写存储器
读存储器
转移指令
寻址模式M
有效地址E
D定义
说明
00
E=(PC)+1
立即数
立即寻址
10
E=D
直接地址
直接寻址
11
E=100H+D
直接地址
扩展直接寻址
注:
扩展直接寻址用于面包板上扩展的存储器的寻址。
(3)I/O指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
7654
32
10
OP-CODE
addr
rd
其中,当OP-CODE=0100且addr=10时,从“数据输入电路”中的开关组输入数据;当OP-CODE=0100且addr=01时,将数据送到“输出显示电路”中的数码管显示。
3、指令系统
本实验共有14条基本指令,其中算术逻辑指令8条,访问内存指令和程序控制指令4条。
输入输出指令2条。
表1列出了各条指令的格式、汇编符号和指令功能。
表1各指令格式及功能
汇编符号
指令的格式
功能
MOVrd,rs
ADDrd,rs
SUBrd,rs
1000rsrd
1001rsrd
1010rsrd
rs→rd
rs+rd→rd
rd-rs→rd
INCrd
ANDrd,rs
NOTrd
RORrd
1011rdrd
1100rsrd
1101rdrd
1110rdrd
rd+1→rd
rs∧rd→rd
/rd→rd
┌→rd→┐
└─────┘
ROLrd
1111rdrd
┌←rd←┐
└─────┘
MOV[D],rd
001000rd
D
rd→[D]
MOVrd,[D]
001001rd
D
[D]→rd
MOVrd,D
000001rd
D
D→rd
JMPD
00001000
D
D→PC
INrd,KIN
OUTDISP,rd
0100│10│rd
0100│01│rd
KIN→rd
rd→DISP
4、设计微代码
本系统设计的微程序字长共32位,其部分控制位如下:
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
151413
121110
9
8
7
6
5
4
3
2
1
A
AR
LDR2
LDR1
A9
A8
S3
S2
S1
S0
M
Cn
WE
1A
1B
F1
F2
F3
uA5
uA4
uA3
uA2
uA1
uA0
A字段B字段
16
2
选择
测试字
0
0
0
1
P
(1)
识别操作码
1
0
P
(2)
判寻址方式
1
1
P(3)
条件测试
32
31
30
选择
0
0
0
0
0
1
PC-B
0
1
0
AL-U-B
0
1
1
299-B
1
0
0
RS-B
1
0
1
RD-B
1
1
0
RI-B
F1、F2、F3三个字段的编码方案如表所示。
表2F1、F2、F3三个字段的编码方案
F1字段
F2字段
F3字段
151413
选择
121110
选择
987
选择
000
LDRi
000
RAG
000
P1
001
LOAD
001
ALU-G
001
AR
010
LDR2
010
RCG
010
P3
011
自定义
011
自定义
011
自定义
100
LDR1
100
RBG
100
P2
101
LAR
101
PC-G
101
LPC
110
LDIR
110
299-G
110
P4
111
无操作
111
无操作
111
无操作
六、设计思想
计算机的运行由32位微指令控制,这32为微指令可以对计算机的地址总线、数据总线、控制总线进行有效的控制,通过编写32为微指令,可以有效的控制数据在总线上的流动,也可以修改ALU运算器的运算指令,实现自己想要的指令与运算,进而构建自己的模型机。
七、设计步骤
1、对现有的指令进行微指令分析(以in指令为例)
(1)运行微指令01
图1-1运行微指令01H
由观察可以看出,A字段为001表示PC-BUS总线打开,LDARLDPC有效表示数据将从PC寄存器流向AR寄存器,而UA5-UA0为02H则表示吓一跳的地址为02H。
(2)运行微指令02
图1-2运行微指令02H
由观察可以看出,P1有效,即将要识别操作码,数据从RAM流向指令寄存器IR.
(3)执行微指令28
图1-3运行微指令28H
有观察可以看出,SWB位有效,表示外设输入端口被打开,LDR0有效,表示它将接收输入的数据,因此,数据有外设流向R0。
至此,in指令执行完毕。
同理分析其他硬指令,可得到如下指令流程图:
图1-4指令流程图
2、编写自己的实例程序,实现连加与连减功能
(1)连加程序
源代码:
P00E0;CLRR0
P01E1;CLRR1
P02E2;CLRR2
P0384;INR0
P0485;INR1
P0531;ADCR0,R1
P0616;MOVR1,R2
P07AA;OUTR2
P0885;INR1
P0936;ADCR1,R2
P0AAA;OUTR2
P0B08;JMP07
P0C08
P0DAA;OUTR2
P0EC0;HALT
M0000000080
M0120006040
M0200801006
M0300800420
M040080C038
M05008040C0
M06008004E0
M07C0000810
M0850294090
M0950298438
M0A008004D0
M0B20000810
M0CA00008B0
M0D50290280
M0E00000080
M0FA0000408
M1050200488
M1150300448
M12500004C8
M13502004B0
M1400000000
M1540000280
M16A00008E8
M17403D0280
M1840300280
M19601400D8
M1A601800D8
M1B60000280
M1C40200280
M1DA0800180
M1E40602080
M1F00008072
M20200060C0
M2180000280
M22200060A0
M2380000430
M2420006060
M25800008F0
M2620006050
M27A00004A8
M2801000281
M2980000468
M2AA3000080
M2BA0000418
M2C00000034
M2D800C0098
M2E401C0280
M2F800C0058
M3000000080
M3100000080
M3200000080
M3300000080
M3400000080
M3500000080
M3600000080
M3700000080
M3800000080
M3900000080
M3A00000080
M3B00000080
M3C00000080
M3D00000080
M3E00000080
M3F00000080
调试运行结果如图所示:
图2-1装载完毕图
图2-2输入被加数05H
图2-3输入加数06
:
图2-4得到05H与06H的和
图2-5继续输入加数07
图2-6得到连加的结果12H
(2)连减程序
源代码:
P00E0;CLRR0
P01E1;CLRR1
P02E2;CLRR2
P0384;INR0
P0485;INR1
P0551;SBCR0,R1
P0616;MOVR1,R2
P0718;MOVR2,R0
P08AA;OUTR2
P0908;JMP04
P0A04
M0000000080
M0120006040
M0200801006
M0300800420
M040080C038
M05008040C0
M06008004E0
M07C0000810
M0850294090
M0950298438
M0A008004D0
M0B20000810
M0CA00008B0
M0D50290280
M0E00000080
M0FA0000408
M1050200488
M1150300448
M12500004C8
M13502004B0
M1400000000
M1540000280
M16A00008E8
M17403D0280
M1840300280
M19601400D8
M1A601800D8
M1B60000280
M1C40200280
M1DA0800180
M1E40602080
M1F00008072
M20200060C0
M2180000280
M22200060A0
M2380000430
M2420006060
M25800008F0
M2620006050
M27A00004A8
M2801000281
M2980000468
M2AA3000080
M2BA0000418
M2C00000034
M2D800C0098
M2E401C0280
M2F800C0058
M3000000080
M3100000080
M3200000080
M3300000080
M3400000080
M3500000080
M3600000080
M3700000080
M3800000080
M3900000080
M3A00000080
M3B00000080
M3C00000080
M3D00000080
M3E00000080
M3F00000080
调试运行结果如图所示:
图2-7装载完毕图
图2-8输入被减数40H
图2-9输入减数01H
图2-10得到结果3FH
图2-11继续输入被减数02H
图2-12得到连减的结果3CH
3、修改微指令实现自己想要的机器指令
(1)修改指令将要实现的功能.
SBCrs,rd指令能实现:
rs-rd-cy→rd,现使该指令实现功能:
rd-rs-cy→rd
将微指令:
M0FA0000408
M25800008F0
修改为:
M0FA0000808
M25800004F0
(2)观察结果
修改前建发:
04h-02h结果如下:
图3-1运行过程
图3-2结果显示02h
修改后04h-02h结果如下:
图3-3运行过程
图3-4结果显示FEH
九、心得体会
本实验主要是根据所学的计算机组成原理的知识,完成对复杂模型机的搭建。
通过该实验,我清楚的看到了计算机最基本的结构图,尤其是计算机在进行数据处理过程中,数据在总线上的流动情况,这不仅让我从根本上了解到了计算机的工作原理,而且让我充分认识到了数据总线、地址总线、与控制总线在计算机的工作过程中各自的作用与相互协作过程。
通过对各个硬指令运行过程中的微指令的分析,我了解了CPU是如何对整个计算机进行控制的。
同时我也学会了对指令的分析方法,这为我之后搭建自己的复杂机模型打下了基础。
通过近20个小时的努力我们小组最终完成了本门设计的基本任务,然而本次设计并不是完美的,至今我们依然没有实现如何使用有限的寄存器实现程序的全速运行,而只能每次手动输入,这是本次设计的一个遗憾,在今后依然需要继续学习。
参考文献
【1】罗克露刘辉俸志刚纪禄平主编,《计算机组成原理(第二版)》,电子工业出版社,2010-5.;
【2】钱晓捷主编,《新编汇编语言程序设计》,电子工业出版社。
2010-5;
【3】王铮主编,《硬件课程设计指导书》,太原理工大学;
接口部分
一.设计目的
综合运用所学计算机接口技术的原理和知识,设计并实现较为完整的控制系统。
二.实验环境
1.硬件环境
实验采用北京精仪达盛科技有限公司的CPU挂箱,8086CPU模块(或8051CPU模块),接口挂箱及相应的扩展模块。
2.软件环境
8086集成开发环境或8051集成开发环境。
三.芯片连线图
图1系统接线图
系统接线:
8255接CS0;8253接CS1;A口接输入,B口接输出,C口接clk的输出;CLK3->CLK0;OUT0->CLK1;OUT0->CLK2;OUT1->PC0;OUT2->PC1。
说明:
图中应PA口输入,PB口输出。
在此硬件连接基础上实现如下功能:
通过拔键开关输入1,2或其它,实现输出的慢闪、快闪和常亮三种方式工作,相应的流程图如下:
图2程序流程图
四、汽车信号灯控制系统
1.设计并制作出汽车信号灯微机控制系统;
2.所需执行的操作由相应的开关状态反映,所需控制的信号灯有仪表板左/右转弯灯、左右头灯和左右尾灯共六类灯,其驾驶操作与灯光信号对应关系如下:
(1)左/右转弯(合上左/右开关):
仪表板左/右转弯灯、左/右头灯、左/右尾灯闪烁。
(2)紧急开关合上:
所有灯闪烁。
(3)刹车(合上刹车开关):
左右尾灯亮。
(4)左/右转弯刹车:
仪表板左/右转弯灯、左/右头灯、左/右尾灯闪烁,右/左尾灯亮。
(5)刹车、合上紧急开关:
尾灯亮、仪表板灯、头灯闪烁。
(6)左/右转弯刹车,并合上紧急开关:
右/左尾灯亮,其余灯闪烁。
(7)停靠(合上停靠开关):
头灯、尾灯以30Hz的频率闪烁。
有10种输入选择,影响6个灯输出,对应关系如下表:
驾驶操作
头灯
仪表灯
尾灯
左
右
左
右
左
右
左转弯
闪
灭
闪
灭
闪
灭
右转弯
灭
闪
灭
闪
灭
闪
紧急开关合上
闪
闪
闪
闪
闪
闪
刹车
灭
灭
灭
灭
亮
亮
左转弯刹车
闪
灭
闪
灭
闪
亮
右转弯刹车
灭
闪
灭
闪
亮
闪
紧急刹车
闪
闪
闪
闪
亮
亮
紧急左转刹车
闪
闪
闪
闪
闪
亮
紧急右转刹车
闪
闪
闪
闪
亮
闪
停靠
闪
闪
灭
灭
闪
闪
表1对应关系表
停靠时以30赫兹频率闪烁。
五、设计思想
本实验中使用8255的pc口作为信号的输入口,输入信号为方波信号,初始将需要常亮的信号灯的对应位设置为0,即初始为亮,需要闪亮和常灭的信号灯对应的位设置为1,即初始为灭。
当检测到方波信号为1时,将需要闪亮的信号灯对应的位设置为0,即使原来对应灭变为亮,当方波信号为0时,保持初始输出不变,这样随方波信号的周期变化,闪亮的信号灯亮灭变化,其他信号灯保持初始状态,实现了所需的要求。
六、源程序
;常量定义
pa8255equ04a0h
pb8255equpa8255+2
pc8255equpa8255+4
con8255equpa8255+6
clk0equ04b0h
clk1equclk0+2
clk2equclk0+4
conclkequclk0+6
;伪指令
assumecs:
code
codesegmentpublic
org100h
start:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;时钟初始化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movdx,conclk;控制寄存器
movax,36h;计数器0,方式3
outdx,ax
movdx,clk0
movax,7Ch
outdx,ax
movax,92h
outdx,ax;计数值927Ch
movdx,conclk
movax,76h;计数器1,方式3
outdx,ax
movdx,clk1
movax,04h
outdx,ax
movax,0;计数值32h
outdx,ax
movdx,conclk
movax,0b6h;计数器2,方式3
outdx,ax
movdx,clk2
movax,0ch
outdx,ax
movax,0;计数值04h
outdx,ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;8255初始化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movdx,con8255;控制寄存器地址
movax,99h;设置为A口输入,B口输出,C口输入
outdx,ax
start1:
movdx,pa8255;A口地址
inax,dx;输入
cmpal,01h
jzL1
cmpal,02h
jzL2
cmpal,03h
jzL3
cmpal,04h
jzL4
cmpal,05h
jzL5
cmpal,06h
jzL6
cmpal,07h
jzL7
cmpal,08h
jzL8
cmpal,09h
jzL9
cmpal,0ah
jzL10
;;;;;;;;;;;;;;;;;;灯常灭
movax,0FFh
movdx,pb8255;B口地址
outdx,ax
calldelay
jmpstart1
L1:
jmpnearptrL1One
L2:
jmpnearptrL2One
L3:
jmpnearptrL3One
L4:
jmpnearptrL4One
L5:
jmpnearptrL5One
L6:
jmpnearptrL6One;相对寻址近转