硬件课程设计成品.docx

上传人:b****8 文档编号:29592195 上传时间:2023-07-24 格式:DOCX 页数:41 大小:960.51KB
下载 相关 举报
硬件课程设计成品.docx_第1页
第1页 / 共41页
硬件课程设计成品.docx_第2页
第2页 / 共41页
硬件课程设计成品.docx_第3页
第3页 / 共41页
硬件课程设计成品.docx_第4页
第4页 / 共41页
硬件课程设计成品.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

硬件课程设计成品.docx

《硬件课程设计成品.docx》由会员分享,可在线阅读,更多相关《硬件课程设计成品.docx(41页珍藏版)》请在冰豆网上搜索。

硬件课程设计成品.docx

硬件课程设计成品

 

原理部分

一.课程设计题目

复杂模型机的设计与实现。

二.设计目的

综合运用所学计算机原理知识,设计并实现较为完整的计算机。

三.实验环境

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;相对寻址近转

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1