微控制器.docx
- 文档编号:12066134
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:20
- 大小:760.24KB
微控制器.docx
《微控制器.docx》由会员分享,可在线阅读,更多相关《微控制器.docx(20页珍藏版)》请在冰点文库上搜索。
微控制器
课程实验报告
课程实验名称:
计算机组成原理微程序控制器
专业班级:
学号:
姓名:
指导教师:
报告日期:
2013年6月20日
计算机科学与技术学院
目录
一、实验目的2
二、实验设备2
三、实验任务2
四、芯片说明2
五、实验要求6
六、实验步骤7
七、最终电路检测16
八、实验体会和收获16
九、实验中碰到的问题和解决的方法17
一、实验目的
1.复习与巩固微程序控制器基本原理。
2.练习简单微程序的控制与调试。
3.为整机实验做准备。
4.进一步加深对运算器、存储器及时序电路的理解。
5.熟练连接硬件电路,为课程设计做好准备。
二、实验设备
实验台:
JZYL—Ⅱ型计算机组成原理实验仪一台。
主要芯片:
74LS6116:
静态存储器芯片1片
74LSl81:
运算器芯片2片
74LS373:
八D锁存器3片
74LS244:
八路原码输出三态门1片
74LS193:
同步4位计数器1片
其它基本器件若干
三、实验任务
1.按照下面的参考电路实现取数、加法、或操作等运算。
(提示:
尽量控制信号最少)
2.复习前两个实验电路中各个信号的含义和作用,好好思考其中的协作关系。
重点是运算与存储器之间的建立用微命令控制数据通路。
四、芯片说明
74LS193:
74LS193是同步四位二进制可逆计数器,它具有双时钟输入,并具有同步清除和同步置数等功能,其引脚排列及逻辑符号如下图4.1所示。
图4.174LS193的引脚排列图
引脚功能含义如下:
LOAD为置数端,CLEAR为清除端;
UP为加计数端,DOWN为减计数端;
A、B、C、D为计数器输入端,Q0、Q1、Q2、Q3为数据输出端。
74LS6116:
74LS6116芯片为静态RAM6116,6116是2K*8位静态随机存储器芯片,当电源关闭时,RAM不能保留其中的数据,其采用CMOS工艺制造,单一+5V供电,额定功耗160mW,典型存取时间200ns,24线双列直插式封装。
其引脚功能及管脚定义图如下图4.2所示。
CE
OE
WE
方式
D0-D7
H
*
*
未选
高阻
L
L
H
读
Dout
L
H
L(脉冲)
写
Din
表4.16116芯片功能表
图4.26116引脚图
引脚功能含义如下:
A0-A10为地址线;
CE是片选线;
OE是读允许线;
WE是写允许线。
74LS181:
74LS181是一个四位运算器。
实验中要用多个运算方式,如下表4.2所示,以及用到如下图4.3所示的异或门来实现数据的奇偶校验。
表4.274LS181功能真值表
图4.374LS181引脚图
74LS373:
74LS373芯片为八D锁存器(3S,锁存允许输入有回环特性),具体引脚分布和真值表如下图4.4和表4.3所示。
芯片功能:
当三态允许控制端OE为低电平,O0~O7为正常逻辑状态,可用来驱动负载或总线;
当OE为高电平,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响;
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
引脚功能:
D0~D7数据输入端;
OE三态允许控制端(低电平有效);
LE锁存允许端;
Dn
LE
OE
On
H
H
L
H
L
H
L
L
X
L
L
Q0
X
X
H
高阻态
O0~O7输出端。
图4.474LS373引脚图表4.374LS373真值表
74LS224:
74LS244为3态8位缓冲器,一般用作总线驱动器。
但74LS244没有锁存的功能。
主要用途:
用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等。
其引脚功能图和真值表如下图4.5和表4.4所示。
图4.574LS244引脚功能图
表4.474LS244真值表
其中,L表示低电平;H表示高电平;X表示不定状态;Z表示高阻态。
5、实验要求
1.实验前的准备
1)复习有关运算器和存储器的内容:
复习《计算机组成原理》中有关数据通路的章节内容。
对数据通路的构成、数据在数据通路中的流动及控制方法有基本的了解。
2)熟悉电路中各部分的关系及信号间的逻辑关系。
3)参考芯片手册,自己设计实验电路,画出芯片间管脚的连线图,标上引脚号,节省实验的时间。
4)对所设计的电路进行检查,重点是检查能否控制数据在电路中不同部件之间的传输。
2.实验步骤
实验可按照自己设计的电路或参考电路按照搭积木的方式进行。
先完成运算器的数据通路部分,在运算器部分能够正确完成各类运算的基础上,再增加存储器通路,并能通过带三态控制的数据开关,存入要用的初始数据。
最终的结果能够在指示灯上显示。
3.能够进行下面次序的演示
1)能演示一轮脉冲、单脉冲和连续脉冲。
2)能在6116中存入指定数据。
3)C’的译码与表达式的匹配。
4)可以运行部分机器指令。
六、实验步骤
第一步:
设计时序电路
1、接线
1)CLK接3.81Hz。
2)SEL接K左。
3)STOP接K右。
4)START接Pi(正脉冲)。
2、产生一轮节拍的过程:
1)STOP拨为0(低电平)。
2)SEL拨为1(高电平)。
3)按START。
每按一次会顺序产生T0→T1→T2→T3→T4一轮,之后自动停止。
3、产生连续节拍的过程:
1)STOP拨为0(低电平)。
2)SEL拨为0(低电平)。
3)按START启动。
之后会顺序产生T0→T1→T2→T3→T4,一轮又一轮,永无止境。
只到STOP变为1(高电平)出现上升沿后产生当轮最后一个节拍信号T4后停止。
4、产生单个节拍的过程:
CLK接另一个单脉冲按钮Pj,按产生连续节拍的步骤操作启动,即本质上就是连续节拍,只是脉冲源由自动改成了手动。
之后连续按Pj,每按一次会产生一个节拍,会依次是:
T0→T1→T2→T3→T4→T0→T1→T2→T3→T4→T0→T1→T2→T3→T4→……
具体电路如下图6.1所示。
图6.1时序电路图
第二步:
利用74LS193连接计数器
特别提醒:
在进行每次实验之前,检查芯片、实验台和导线的好坏。
芯片检查:
按照如下电路图(图6.1),连接74LS芯片,将P接入脉冲信号,做加减法,观察4位地址信号灯。
结论:
数据验证达到了预期的效果,芯片完好,能做正常的计数。
图6.2简单计数的逻辑图
具体电路如下所示:
图6.3简单计数的具体逻辑
检验:
我们接出4个指示灯,用加减指令控制,正常加减。
结论:
193芯片工作正常。
第三步:
增加6116电路,接出信号灯
增加74LS6116芯片:
设计好计数电路之后,按步骤2连接6116芯片,根据图6.3连接好电路。
图6.4存储器部分电路
具体电路图如下图:
图6.5存储器电路的详细线路图
第四步:
将6116输出端作为B操作数送入181进行运算
74LS181做数据运算器,进行算术运算和逻辑运算,接受运算指令的控制。
我们现在送入的数据是从总线上输入的数据,既是后面提到的(ADDR)中的数据。
第五步:
将两片373作为数据锁存器接到181上,控制数据传输
74LS373做数据锁存器,锁存数据。
同存储器实验,我们需要两片373锁存实验数据,另外,我们用指示灯指示373数据的传输,电路概图和具体电路见下图6.6和图6.7所示。
图6.6373锁存数据电路概图
图6.7373锁存数据具体电路图
检验:
用193加减送入数据B,用373锁存数据,这时A=B,然后设置181为加法,得到结果为A+B。
结论:
运算电路正常。
第六步:
连接244和指令存储器IR,作为数据和指令的控制
244做读写控制器,控制6116存储器的读写模式。
74LS373做指令锁存器,锁存微指令。
K0~K7作为输入控制开关,其中K0~K3作为地址输入开关,K4~K6作为OP指令开关,K7作为指令扩充位。
电路概图和具体电路图如下图6.8和图6.9所示。
图6.8电路概图
图6.9具体电路图
检验:
用开关送入4位数据到244中,将244置为导通,6116置为读状态,然后重复指令加操作。
再将244设置为高阻态,用开关送入不同数据,并用6116“存储”,执行相同加法指令。
结论:
第一次运算正确,第二次运算结果为上一次运算结果的两倍,说明第一次正常送数到总线上,第二次没有送到,244工作正常。
而且6116读写功能正常。
第七步:
设计组合逻辑电路
组合逻辑电路是指令控制的表达式,我们根据需要的功能,设置每一位的Ci,已有的C0~C7上,我们添加了C8作为溢出位和C9作为新加功能——std的控制位,实现对244的控制。
电路概图如下所示。
图6.10组合逻辑外接电路概图
1.机器指令(IR中)
654
3210
OP
ADDR
格式
000NOP
100LOADAC(ADDR)
101XORAC(AC)⊕(ADDR)
110ORAC(AC)+(ADDR)
111ADDAC(AC)加(ADDR)
010SUBAC(AC)减(ADDR)
注:
ADDR由74LS193给出(见图中),已有OP不得重新定义。
2.微命令设计一览表
微命令
C’9
C’8
C’7
C’6
C’5
C’4
C’3
C’2
C’1
C’0
功能
Std指令244控制位
溢出位
181输出第二个373
181输出第一个373
Cn
M
S3
S2
S1
S0
有效值
0
1
1
1
1
1/0
1/0
1/0
1/0
1/0
注:
微命令由OP译码出手产生。
微命令个数依需要而定,不一定就是8个。
3.机器指令对应的微命令表
机器指令
OP
对应的微命令取值
C’9
C’8
C’7
C’6
C’5
C’4
C’3
C’2
C’1
C’0
NOP
000
1
0
0
0
0
1
0
1
1
0
LOAD
100
1
0
1
1
0
1
1
0
1
0
XOR
101
1
0
1
1
0
1
0
1
1
0
OR
110
1
0
1
1
0
1
1
1
1
0
ADD
111
1
1
1
1
1
0
1
0
0
1
SUB
010
1
1
1
1
0
0
0
1
1
0
STD
011
0
0
1
0
0
0
0
0
0
0
注:
根据卡诺图写出各C’的逻辑函数表达式,由于表达式已在检查表上,这里不再单独写出。
NOP指令的所有与181相关的C’(即S4S3S2S1M=LHHLH)完全同XOR。
4.逻辑电路实现
由上述的逻辑式连接电路,具体电路如下图6.11所示:
图6.11组合逻辑电路图
第八步:
加分项设计
1.冲突设计:
当244在直通状态且6116处于读状态时发生冲突时,报警灯亮。
此时将迫使244处于高阻态。
我们用244的控制位和6116读写控制位相与作为冲突信号。
检验:
将244的控制位置为低,处于导通,将6116读写控制位置为读,冲突灯亮。
结论:
说明读写冲突,显示正确,冲突功能正常。
2.溢出设计:
在算术运算中,需要有一个溢出位指示181运算结果,如果有溢出则显示相应的信号。
于是,用181的进位经由一个373控制输出,具体电路如下图6.12所示。
图6.12溢出电路图
检验:
用减法指令,0001减1100,溢出灯显示红色;用加法指令,1110加1100,溢出显示绿色。
结论:
溢出灯正常,加减法溢出位显示颜色相反。
3.新指令STD的设计:
增加存存储器指令std,格式为:
011STD(ADDR)AC。
我们用244芯片控制AC数据输出到总线上,再将6116置为读操作,送入指令。
具体电路如下图6.13所示。
图6.13STD指令电路图
检验:
用LOAD指令,对AC置数1101,设置地址位1011再执行STD指令,一个CPU周期后,将6116置为读状态,通过变化地址开关到1011,看到1011号地址数据为1101。
结论:
STD指令设计成功,指令正常工作。
微程序控制器最终全局电路图如下图6.14所示。
图6.14微控制器全局电路图
七、最终电路检测
检测步骤:
1)在6116中存入与存储单元地址增一的数据——0至15十六个值,比如,地址0000中存入0001。
然后读出,随着地址变化,存储的值发生相应的变化,说明存储器部分可以正常工作。
2)NOP指令:
在此情况下,执行任何操作AC不变化。
3)LOAD指令:
将存储器地址设为0001,执行LOAD指令,执行后观察到AC的值变为0010,说明LOAD指令可按设计工作。
4)XOR指令:
将存储器地址设为0101,执行XOR指令,执行后观察到AC值为0100,说明异或指令正常。
5)OR指令:
将存储器地址设为0101,执行OR指令,执行后观察到AC值为0110,说明或指令正常。
6)将存储器地址设为0000,执行ADD指令,执行后观察AC的值变为0111,再继续进行ADD,但结果为1010,重复指令,结果在1010和0101两个数值中间变化,说明ADD指令还存在问题。
7)SUB指令:
先置数0111到AC中,将存储器地址设为0101,执行SUB指令,执行后观察到,AC值为0001,说明指令正常。
8)STD指令:
先置数0110到AC中,将存储器地址设为0101,执行STD指令,执行后观察地址0101中数据值为0110,说明指令正常。
9)冲突:
将读模式读操作改为读模式写操作,冲突报警灯亮,说明冲突处理模块可正常工作。
10)溢出检测:
在实行加法减法的指令时,按照正确的数据执行,溢出正常,加减法溢出灯颜色不同。
8、实验体会和收获
这次实验做了很长时间,花了我们两天(下午到晚上)。
原先我对微程序不是很懂,虽然也能讲出理论知识,但对于它为什么能这么运行却是丝毫不清楚的。
这也致使我在实验开始之前,也就是老师给我们讲实验的时候听不懂微指令哪一块的用意。
满头雾水的开始做实验,有些战战兢兢。
做到微指令哪一块的时候就卡住了,停下来思考拨动开关和进行不同指令有什么关系。
仔细看图后我发现,基本上每个芯片都有个控制端,那我们可不可以利用这些控制端来操作信号的传输呢?
我又去查找了这些指令的含义,例如:
100LOADAC(ADDR)。
也就意味着把6116里的东西送到第二个373里面,途中经过181、第一个373。
那么怎么控制呢?
我请教了其他同学,他们说了一个让我恍然大悟的词语:
卡诺图。
将三个控制端(指令代码)和这几个控制信号用卡诺图关联起来,通过输出指令达到改变控制端的开关,进而实现功能。
我认为这次的实验的精髓就在这里,实现了控制端操作,是组原实验的一大进步。
后来我又想这些控制端是要按顺序执行的,如果只用这些指令是远远不够的,功能必然会紊乱。
而后我又想到了老师一开始就提到的节拍!
分了好几个阶段进行输送信号。
我一下子就豁然开朗,明白了这个实验的意义。
而后就很快的完成了整个接线任务。
老师说,不要急着做实验,先把原理弄明白。
我很赞成这句话,像我这样把原理弄懂了之后做起实验来头脑清醒,思路明确,接线轻而易举。
九、实验中碰到的问题和解决的方法
很惭愧,我们第二天下午就已经接完线了,可是总是测试失败,就是哪个ADD运算老是混乱,有时候正常,有时候乱来。
我们足足排了一晚上的错,还是没有检查出来。
最后不得已硬着头皮给老师检验,第一次理所当然没有通过。
我们又继续检查,由于其他功能都能实现,所以无非就是那几个地方出错:
一是Cn或者是M、二是卡诺图有误、三是接线错了。
我们一一排查,每一项都是正确的,尤其是Cn和卡诺图,检查了不止三次。
由于线多且杂,排查起来很不方便,因此花了很多时间检查,因此浪费了很多时间也没有结果。
这给我们很大的打击,最后试验以ADD未完全实现结尾。
后来做完回寝室和几个同学一商量才意识到很可能是节拍安排不当的缘故。
因为Cn输入信号不是随时输的,要刚好运算的时候输入信号。
过早或过迟输入都会无效,因为信号不能保存。
我突然想到为什么当时没有考虑节拍的问题。
这就是思维盲区,当你在脑海里肯定了原因就是这些的时候你很难跳出来去考虑其他因素。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制器
![提示](https://static.bingdoc.com/images/bang_tan.gif)