硬件课程设计报告.docx

上传人:b****1 文档编号:23174126 上传时间:2023-05-15 格式:DOCX 页数:31 大小:962.81KB
下载 相关 举报
硬件课程设计报告.docx_第1页
第1页 / 共31页
硬件课程设计报告.docx_第2页
第2页 / 共31页
硬件课程设计报告.docx_第3页
第3页 / 共31页
硬件课程设计报告.docx_第4页
第4页 / 共31页
硬件课程设计报告.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

硬件课程设计报告.docx

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

硬件课程设计报告.docx

硬件课程设计报告

 

课程设计报告

 

课程名称:

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

实验地点:

专业班级:

学号:

学生姓名:

指导教师:

成  绩:

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

目录

 

计算机组成原理部分1

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

一、设计目的1

二、实验设备1

三、设计要求1

四、设计内容6

五、程序代码12

计算机接口部分13

汽车信号灯控制系统13

一、设计目的13

二、实验环境13

三、设计要求13

四、设计内容14

五、程序代码18

总结与心得24

计算机组成原理部分

复杂模型机的设计与实现

一、设计目的

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

二、实验设备

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