硬件课程设计报告讲解.docx

上传人:b****5 文档编号:3272368 上传时间:2022-11-21 格式:DOCX 页数:27 大小:1,002.77KB
下载 相关 举报
硬件课程设计报告讲解.docx_第1页
第1页 / 共27页
硬件课程设计报告讲解.docx_第2页
第2页 / 共27页
硬件课程设计报告讲解.docx_第3页
第3页 / 共27页
硬件课程设计报告讲解.docx_第4页
第4页 / 共27页
硬件课程设计报告讲解.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

硬件课程设计报告讲解.docx

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

硬件课程设计报告讲解.docx

硬件课程设计报告讲解

 

课程设计报告

 

课程名称:

计算机硬件系统设计课程设计

实验地点:

专业班级:

学号:

学生姓名:

指导教师:

成  绩:

2013年6月24日至2013年7月5日

 

计算机组成原理部分

复杂模型机的设计与实现

一、设计目的

综合应用所学计算机组成原理和汇编语言知识,设计并实现较为完整的模型计算机,培养学生独立分析和设计计算机硬件系统的能力。

二、实验设备

1.硬件环境:

Dais-CMB+计算机组成原理教学实验系统一台,排线若干,PC机。

2.软件环境:

操作系统,Dais-CMB+应用软件。

三、设计要求

3.1、设计任务

1.熟悉实验环境,即实验中涉及的硬件和软件,掌握这些环境工具的功能和使用方法。

本实验中主要是Dais-CMB+软件及其工作环境。

Dais-CMB+计算机组成原理教学实验系统一台,排线若干。

连接方法是:

用二芯排线把位于实验装置左上方运算器的左下侧CYCZ接口与位于实验装置红色拨码开关右下方的FCFZ接口相连接。

在联机状态下,首先应打开mXj.abs,然后点击“!

”图标进入链接装载,一旦屏幕自动弹出动态调试窗口表示代码及微代码下载已成功,已进入windows在线集成调试环境。

2.综合应用所学计算机原理知识,设计并实现较为完整的模型计算机。

3.使用模型计算机指令编制程序完成下列功能之一:

(1)乘法运算。

(2)除法运算。

(3)连加和连减运算。

4.将程序译成二进制代码,并将二进制代码写入主存。

3.2、拟定数据格式及指令系统

1.数据格式

模型机规定采用定点补码表示数据,且字长为8位,其格式如下:

其中第7位为符号位,数值表示范围是:

-128≤X≤127(定点整数),-1≤X<1(定点小数)。

2.指令格式

模型机设计五大类指令共十六条,其中包括算术逻辑指令、I/O指令、访存指令、转移指令和停机指令。

⑴算术逻辑指令

设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:

其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:

⑵访存指令和转移指令

模型机设计2条访存指令、即存数指令(STA)、取数指令(LDA);2条转移指令,即无条件转移指令(JMP)、结果为零或有进位转移指令(BZC),指令格式为:

其中,OP-CODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。

D为形式地址,如为位移量,正负均可,M为寻址模式,其定义如下:

模型机规定变址寄存器RI指定为寄存器R2。

⑶I/O指令

输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:

其中,addr=01时,选中“INPUTDEVICE”中的开关组作为输入设备,addr=10时,选中“OUTPUTDEVICE”中的LED作为输出设备。

⑷停机指令

HALT指令,用于实现停机操作,指令格式如下:

3.指令系统

模型机有16条基本指令,其中算术逻辑运算指令9条,访问内存指令2条,程序控制指令2条,输入输出指令2条,其它指令2条。

表1列出了各条指令的格式、汇编符号、指令功能。

表1指令格式

4.微指令格式

微指令字长32位,格式如下所示:

A字段

B字段

说明:

DDR1表示LDDR1DDR2表示LDDR2

5.模型计算机数据通路框图

模型计算机数据通路框图如图1所示:

图1模型机数据通路框图

6.微程序设计

按照系统建议的微指令格式和模型计算机数据通路框图,分析指令流程,为每条机器指令编制微程序,并和系统自带的微程序比较(在复位后,输入“3”,按“装载”,可将系统微程序装入)。

编制微程序实现新指令的功能。

四、设计内容

4.1、基本内容

1.试验箱系统图

2.程序流程图

3.分析微指令执行序列

首先通过代码在指令流程图中找到对应项,然后再在系统控存内容找出对应的32位指令程序,然后再根据拟定好的数据格式和指令系统对微指令进行分析。

表1系统控存内容

地址

代码

功能

00

00000080

空操作

01

20006040

PC→AR,PC+1

02

00801006

RAM→IR按B转

03

00800420

RAM→DR1

04

0080C038

RAM→AR按B转

05

008040C0

RAM→AR

06

008004E0

RAM→DR1

07

C0000810

RI→DR2

08

40294090

DR1+DR2→AR

09

40298438

DR1+DR2→DR1按B转

0A

008004D0

RAM→DR1

0B

20000810

PC→DR2

0C

A00008B0

RD→DR2

0D

40290280

DR1+DR2→RD?

0E

00000080

空操作

0F

A0000408

RD→DR1

10

50200488/400F0488

DR1→DR1

11

50300448/40100548

DR1变反→DR1

12

500004C8/

DR1+1→DR1

13

502004B0/400F04B0

DR1→DR1

14

00000000

空操作

15

40000280/50

DR1+1→RD

16

A00008E8

RD→DR2

17

403D0280/50

DR1^DR2→RD

18

40300280

DR1变反→RD

19

601400D8

299带进位右移

1A

601800D8

299带进位左移

1B

60000280

299→RD

1C

40200280/00800280

DR1→RD/RAM→RD

1D

A0800180

RD→RAM

1E

40602080/405F2080

DR1→PC

1F

00008072

BZC按条件转

20

200060C0

PC→AR,PC+1

21

80000280

RS→RD

22

200060A0

PC→AR,PC+1

23

80000430

RS→DR1

24

20006060

PC→AR,PC+1

25

800008F0

RS→DR2

26

20006050

PC→AR,PC+1

27

A00004A8

RD+1→RD

28

01000281

SW→RD

29

80000468

RS→DR1

2A

A2000080

RD→LED

2B

A0000418

RD→DR1

2C

00000034

HALT微地址不变

2D

800C0098

RS→299移位器

2E

401C0280

0→RD

2F

800C0058

RS→299移位器

4.设计内容

(1)运行几条指令,按照系统的微指令格式和模型计算机数据通路框图分析其流程,写出所分析机器指令的微程序。

(2)增加一条新指令,为其编制微程序。

(3)编制程序,完成连加运算。

5.设计思路

(1)修改微指令:

修改微指令,首先要弄懂其每一位代表什么意思有什么功能,参照74LS181的功能表,我们所修改的是把AND指令修改为异或指令XOR,只需控制74LS181上的M,S0,SI,S2,S3,将算数运算改为相应的逻辑运算,即M17403D0280修改为M17403E0280,然后对照及其软件验证其正确性。

(2)连加运算设计:

先输入一个数作为控制连加的次数,然后每次输入一个数作为要加的数,把结果放到内存的某个空间里,实现连加,直到次数达到控制值。

4.2、运行程序

1.单步运行微程序

键入数字键00(PC地址从00H开始),然后每按动一次“单步”命令键,运行一条微指令。

对照微程序流程图,观察微地址显示灯是否和流程一致。

2.单步运行机器程序

键入数字键03H(PC地址),然后每按动一次“宏步”命令键,运行一条机器指令。

对照机器指令程序,观察微地址显示灯是否和流程一致。

3.程序连续运行与暂停程序

键入数字键00H(PC地址)按动“运行”命令键使模型机进入实时运行状态。

在实时运行状态按“宏单”键执行的暂停命令,使模型机进入停机状态。

4.3、运行结果

上图所示,实现功能为输入循环次数R0的数值03H。

上图所示,实现功能为P01B0;COMR0

上图所示,实现功能为P0270;INCR0

上图所示,实现功能P0636;ADCR1,R2

上图所示,实现功能为输出运算结果R2的值,具体如下图所示:

83H

第二次连加运算之后的结果显示:

86H

第三次连加运算之后的结果显示:

89H

程序终止运行。

五、程序代码

1.修改微指令

P0084;INR0

P0185;inR1

P0294;COMR0,R1

P0AC0;HALT

2.连加运算

计算机接口部分

汽车信号灯控制系统

一、设计目的

综合应用所学计算机接口和汇编语言原理和知识,设计并实现较为完整的计算机控制系统,培养学生独立分析和设计计算机硬件系统的能力

二、实验环境

1.硬件环境:

实验采用北京精仪达盛科技有限公司的CPU挂箱,8086CPU模块,接口挂箱及相应的扩展模块。

2.软件环境:

8086集成开发环境。

三、设计要求

1、设计并制作出汽车信号灯微机控制系统;

2、所需执行的操作由相应的开关状态反映,所需控制的信号灯有仪表板左/右转弯灯、左右头灯和左右尾灯共六类灯,其驾驶操作与灯光信号对应关系如下:

(1)左/右转弯(合上左/右开关):

仪表板左/右转弯灯、左/右头灯、左/右尾灯闪烁。

(2)紧急开关合上:

所有灯闪烁。

(3)刹车(合上刹车开关):

左右尾灯亮。

(4)左/右转弯刹车:

仪表板左/右转弯灯、左/右头灯、左/右尾灯闪烁,右/左尾灯亮。

(5)刹车、合上紧急开关:

尾灯亮、仪表板灯、头灯闪烁。

(6)左/右转弯刹车,并合上紧急开关:

右/左尾灯亮,其余灯闪烁。

(7)停靠(合上停靠开关):

头灯、尾灯以30Hz的频率闪烁。

有10种输入选择,影响6个灯输出,对应关系如下表:

四、设计内容

4.1、设计思想

本系统中要求设计汽车信号灯控制系统,通过6盏灯的亮灭或者闪来控制10中操作,即:

左转弯、右转弯、刹车,紧急开关合上,左转弯刹车,右转弯刹车,紧急刹车,紧急左转刹车,紧急右转刹车,停靠。

每一种操作都对应不同灯的显示。

通过8253提供的时钟信号,8255通过C口接收,然后A口通过开关输入,B口通过显示灯输出。

在该实验中,我们通过8090A/D实现对灯亮度的控制。

本实验中我们所用到的芯片是8255和8253,是系统实现的核心部分,下面对这些芯片做简要介绍。

1)芯片8255

8255是一个CPU与外设之间提供了TTL电平兼容的接口。

8255可以工作在方式0,方式1,方式2三种方式,其中端口A可以工作在这3种不同的方式下,二端口B只能工作在方式0和方式1,端口C配合端口A和端口B工作。

本实验中不8255A端口做输入,B端口做输出,C端口取出一位来通过与具有定时功能的8253芯片连接,实现灯闪烁这一效果。

2)芯片8253

8253有6种工作方式,本次实验设计主要用到方式3,方式3又可称为方波发生器。

任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:

1的方波。

进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。

如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。

这时OUTi端输出的周期为n×CLKi周期,占空比为1:

1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。

如果在操作过程中,GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。

如果要求改变输出方波的速率,则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。

4.2、系统结构图

具体设计电路图

实际接线图

4.3、系统接线

8255CS→CS0,8253CS→CS1;

A口接输入((K1……K8)→(PA0……PA7)),B口接输出((LED1……LED6)→(PB0……PB5));

C口接CLK的输出:

CLK3→CLK0,OUT0→CLK1,OUT0→CLK2,OUT1→PC0,OUT2→PC1。

4.4、状态转换表

根据系统图和题目要求,列出状态表:

注:

输入状态中,0代表低电平无效,1代表高电平有效;

输出状态中,1/0代表灯闪,1代表灯亮,0代表灯灭。

4.5、程序流程图

五、程序代码

;常量定义

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,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;判断左转弯

jzZZ

cmpal,02h;判断右转弯

jzYZ

cmpal,04h;判断紧急开关合上

jzL3

cmpal,08h;判断刹车

jzL4

cmpal,10h;判断左转弯刹车

jzL5

cmpal,20h;判断右转弯刹车

jzL6

cmpal,40h;判断紧急刹车

jzL7

cmpal,80h;判断紧急左转弯刹车

jzL8

cmpal,03h;判断紧急右转弯刹车

jzL9

cmpal,05h;判断停靠

JZL10

;;;;;;;;;;;;;;;;;;灯常亮

movax,0ffh

movdx,pb8255;B口地址

outdx,ax

jmpstart1

L1:

jmpnearptrZZ;

L2:

jmpnearptrYZ

L3:

jmpnearptrJJ

L4:

jmpnearptrSTOP

L5:

jmpnearptrLSTOP

L6:

jmpnearptrRSTOP

L7:

jmpnearptrJSTOP

L8:

jmpnearptrJLSTOP

L9:

jmpnearptrJRSTOP

L10:

jmpnearptrTING

;;;;;;;;;;;;;;;左转弯

ZZ:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza1

movax,11101010b

movdx,pb8255

outdx,ax

jmpstart1

a1:

movdx,pb8255

movax,0ffh

outdx,ax

jmpstart1

;;;;;;;;;;;;;;;;;右转弯

YZ:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza2

movax,11010101b

movdx,pb8255

outdx,ax

jmpstart1

a2:

movdx,pb8255

movax,0ffh

outdx,ax

jmpstart1

;;;;;;;;;;;;;;;;紧急开关闭合

JJ:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza3

movax,11000000b

movdx,pb8255

outdx,ax

jmpstart1

a3:

movdx,pb8255

movax,0ffh

outdx,ax

jmpstart1

;;;;;;;;;刹车

STOP:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza4

movax,11111100b

movdx,pb8255

outdx,ax

jmpstart1

a4:

movdx,pb8255

movax,11111100b

outdx,ax

jmpstart1

;;;;;;;;;左刹车

LSTOP:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza5

movax,11101000b

movdx,pb8255

outdx,ax

jmpstart1

a5:

movdx,pb8255

movax,11111110b

outdx,ax

jmpstart1

;;;;;;;;;;;;;;;;右刹车

RSTOP:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza6

movax,11010100b

movdx,pb8255

outdx,ax

jmpstart1

a6:

movdx,pb8255

movax,11111101b

outdx,ax

jmpstart1

;;;;;;;;;;;;;;;;;紧急刹车

JSTOP:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza7

movax,11000000b

movdx,pb8255

outdx,ax

jmpstart1

a7:

movdx,pb8255

movax,11111100b

outdx,ax

jmpstart1

;;;;;;;;;;;紧急左刹车

JLSTOP:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza8

movax,11000000b

movdx,pb8255

outdx,ax

jmpstart1

a8:

movdx,pb8255

movax,11111110b

outdx,ax

jmpstart1

;;;;;;;;;紧急右刹车

JRSTOP:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza9

movax,11000000b

movdx,pb8255

outdx,ax

jmpstart1

a9:

movdx,pb8255

movax,11111101b

outdx,ax

jmpstart1

;;;;;;;;;;停靠

TING:

movdx,pc8255

inax,dx

andal,01h

cmpal,01h

jza10

movax,11001100b

movdx,pb8255

outdx,ax

calldelay

jmpstart1

a10:

movdx,pb8255

movax,0ffh

outdx,ax

jmpstart1

;;;;;;;;;子程序

delay:

movcx,5000h;timedelay

delay1:

nop

nop

loopdelay1

ret

;;;;;;;;;下面放着变量定义

codeends

endstart

总结与心得

硬件课程设计历时两周时间,综合了计算机组成原理和接口技术相关的学科知识和技能。

在实验设计期间,小组成员能够团队协作,共同攻克难关。

最终课程设计顺利完成,为大三最后的时刻。

画上了一个圆满的句号。

组成原理部分,由于是上学期学过,忘掉不少。

这次实验时候,预先一起复习了一下相关的知识点。

在理论有所了解的基础上,再进行实验的实际操作。

借助软件平台和已经连接好电路的试验箱,首先验证了实验所附带的第三个程序代码的显示结果。

在此基础上,进行修改微指令的任务。

但在设计连加运算时候,碰到了阻碍。

对汇编语言的陌生,也是一个不小的阻扰。

分工合作,两人研究汇编语言修改指令代码,一人设计总体程序架构。

后来又请教老师同学,参观或“偷师”别人的经验。

最终能够成功实现连加运算的结果输出。

接口技术部分,刚好有这学期的知识储备,直接开始设计工作。

参照实验指导书上的例题,小组内进行了探讨,分析了一下相关的设计要点。

起初,在灯亮灯灭的问题上有点小纠结,经过不断的代码调试,最后算是成功了。

能实现两个动作,灯亮和灯灭,还不能实现灯闪的条件。

后来,在组长的深入分析之后,对程序代码做了一个小小的改动,调试发现灯闪也可以实现。

然后给小组讲解之后,一起分工修改各人负责部分代码。

终于整个汽车信号灯系统能够正常运作。

通过这次课程设计,既是对旧知识的回顾和复习,又是一种对新知识的自主学习和探索。

课程设计的目的并不在于上交一份报告,而是对这种学习能力和解决问题能力的培养。

课程设计也是对理论知识的进一步消化和吸收,因为只有实践才是检验知识的唯一道路。

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

当前位置:首页 > 小学教育 > 英语

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

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