硬件课程设计报告讲解.docx
- 文档编号:3272368
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:27
- 大小:1,002.77KB
硬件课程设计报告讲解.docx
《硬件课程设计报告讲解.docx》由会员分享,可在线阅读,更多相关《硬件课程设计报告讲解.docx(27页珍藏版)》请在冰豆网上搜索。
硬件课程设计报告讲解
课程设计报告
课程名称:
计算机硬件系统设计课程设计
实验地点:
专业班级:
学号:
学生姓名:
指导教师:
成 绩:
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
总结与心得
硬件课程设计历时两周时间,综合了计算机组成原理和接口技术相关的学科知识和技能。
在实验设计期间,小组成员能够团队协作,共同攻克难关。
最终课程设计顺利完成,为大三最后的时刻。
画上了一个圆满的句号。
组成原理部分,由于是上学期学过,忘掉不少。
这次实验时候,预先一起复习了一下相关的知识点。
在理论有所了解的基础上,再进行实验的实际操作。
借助软件平台和已经连接好电路的试验箱,首先验证了实验所附带的第三个程序代码的显示结果。
在此基础上,进行修改微指令的任务。
但在设计连加运算时候,碰到了阻碍。
对汇编语言的陌生,也是一个不小的阻扰。
分工合作,两人研究汇编语言修改指令代码,一人设计总体程序架构。
后来又请教老师同学,参观或“偷师”别人的经验。
最终能够成功实现连加运算的结果输出。
接口技术部分,刚好有这学期的知识储备,直接开始设计工作。
参照实验指导书上的例题,小组内进行了探讨,分析了一下相关的设计要点。
起初,在灯亮灯灭的问题上有点小纠结,经过不断的代码调试,最后算是成功了。
能实现两个动作,灯亮和灯灭,还不能实现灯闪的条件。
后来,在组长的深入分析之后,对程序代码做了一个小小的改动,调试发现灯闪也可以实现。
然后给小组讲解之后,一起分工修改各人负责部分代码。
终于整个汽车信号灯系统能够正常运作。
通过这次课程设计,既是对旧知识的回顾和复习,又是一种对新知识的自主学习和探索。
课程设计的目的并不在于上交一份报告,而是对这种学习能力和解决问题能力的培养。
课程设计也是对理论知识的进一步消化和吸收,因为只有实践才是检验知识的唯一道路。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 课程设计 报告 讲解