芯片资料.docx
- 文档编号:29129477
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:35
- 大小:130.64KB
芯片资料.docx
《芯片资料.docx》由会员分享,可在线阅读,更多相关《芯片资料.docx(35页珍藏版)》请在冰豆网上搜索。
芯片资料
8088芯片
1979年,INTEL公司推出了8088芯片,它仍旧是属于16位微处理器,内含29000个晶体管,时钟频率为4.77MHz,地址总线为20位,可使用1MB内存。
8088内部数据总线都是16位,外部数据总线是8位,而它的兄弟8086是16位。
1981年8088芯片首次用于IBMPC机中,开创了全新的微机时代。
也正是从8088开始,PC机(个人电脑)的概念开始在全世界范围内发展起来。
8088为40条引线、双列直插式封装。
它们的40条引线排列如图5.1所示。
8088有最小组态(单微处理器组成的小系统)和最大组态(多处理器系统)两种工作模式,从图5.1所示,大部分引脚在两种组态下功能是一样的,只有8根引脚的名称及功能不同(24脚~31脚)。
由于在PC机内,8088工作于最大组态,所以在引脚功能介绍时,为了突出重点我们只介绍最大模式的引脚功能。
2.18088地址线和数据线
AD7~AD0:
8位地址/数据总线,分时复用、双向、三态。
A15~A8:
地址线,三态输出。
A19/S6~A16/S3:
地址/状态线,分时复用、输出、三态。
在总线周期的T1状态作地址线用,A19~A16输出高4位地址。
在总线周期的T2~T4状态作状态线用,S6~S3输出状态信息,其中:
S6恒为0。
S5指示中断允许标志IF的当前状态,S5=1,表示当前允许可屏蔽中断请求,S5=0,则禁止一切可屏蔽中断。
S4和S3用以指示是哪一个段寄存器正在使用,其编码和使用的段寄存器如下:
00为ES,01为SS,10为CS,11为DS。
2.28088总线周期概念
1.指令周期:
CPU执行一条指令的时间(包括取指令和执行完该指令所需的全部时间)称为一个指令周期。
2.总线周期:
通过外部总线对存储器或I/O端口进行一次读/写操作的过程称为总线周期。
因此,一个指令周期由若干个总线周期组成。
而一个总线周期由若干时钟周期T组成。
3.时钟周期:
也就是系统主时钟频率的倒数,它是CPU的基本时间计量单位,例如,某CPU的主频为5MHz,则其一个时钟周期就是200ns,若主频为10MHz,则一个时钟周期为100ns。
8086/8088CPU的一个基本总线周期由4个时钟周期(T1,T2,T3,T4)组成,时钟周期也称为时钟状态,即T1状态、T2状态、T3状态和T4状态。
每一个时钟周期(时钟状态)内完成一些基本操作。
例如:
在T1状态,CPU往数据/地址多路复用总线上发出访问存储器或I/O端口的地址信息。
在T2状态,CPU从总线上撤销地址,若为读周期发出“RD”控制信号,使数据/地址多路复用总线的低8位处于高阻抗状态,以便CPU有足够的时间从输出地址方式转变为输入数据方式,接着在T3~T4期间,CPU从总线上接收数据。
若为写周期发出“WR”控制信号,由于输出数据和输出地址都是写总线过程,因而不需要缓冲时间,CPU在T2~T4期间把数据放到总线上。
在T3状态,数据/地址分时复用线的低8位上出现由CPU输出的数据或为CPU从存储器或I/O端口读入的数据。
在T4状态,8088完成数据传送,是控制信号变为无效,结束总线周期。
2.3微型计算机的基本工作方法
NMI:
不可屏蔽中断申请信号,输入、上升沿有效。
不可屏蔽中断申请不受中断允许标志IF的影响,一旦从NMI引脚收到一个正跳变触发信号,CPU在当前指令执行完成,便自动引起一个类型码为2的中断,并转入执行与中断类型码相对应的不可屏蔽中断服务程序。
INTR:
可屏蔽中断申请信号,输入、高电平有效。
受CPU内部中断允许标志位的控制。
。
CPU用STI指令可使中断允许标志IF置1,用CLI指令可使IF清0,从而可实现中断允许或屏蔽。
RESET:
复位信号,输入、高电平有效。
READY:
准备就绪信号,输入、高电平有效。
CPU在每个总线周期的T3状态检测Ready信号线,如果Ready为低电平,表示数据末准备好,则在T3状态结束后CPU插入一个或几个TW等待状态,直到Ready信号有效后,才进入T4状态,完成数据传送过程。
TEST:
测试信号,输入、低电平有效。
TEST信号是和等待指令WAIT配合使用的信号。
QS1、QS0:
指令队列状态信号,输出,高电平有效。
这两个信号的组合用来指示CPU中指令队列的当前状态。
QS1、QS0的代码组合与对应的操作定义如表5.1所示。
S2、S1、S0:
总线周期状态信号,三态、输出。
在最大模式系统中,总线周期状态信号S2、S1、S0用来指示当前总线周期所进行的操作类型。
S2、S1、S0的编码与总线操作类型的对应关系如表5.2所示。
LOCK:
总线封锁信号,三态、输出、低电平有效。
LOCK信号可由指令前缀LOCK来设置。
RQ/GT0、RQ/GT1:
总线请求信号(输入)/总线请求允许(输出),双向、低电平有效。
在最大模式中,这两个信号用来供CPU以外的两个协处理器发出总线请求(RQ)和接收CPU对其总线请求信号的响应信号(GT0,GT1)。
其中RQ/GT0比RQ/GT1有更高的优先级。
RD:
读信号,三态、输出、低电平有效。
RD信号有效,表示CPU正在对存储器或I/O端口进行读操作。
MN/MX:
最小/最大工作模式控制信号,输入。
当MN/MX接高电平时,则CPU工作在最小模式。
当MN/MX接低电平时,则CPU工作在最大模式。
SSO:
系统状态输出信号,输出。
在最小模式下,该信号与其它两个信号一起反应8088总线操作类型。
在最大模式下,该引脚输出恒为高电平。
8253芯片
基本概述
intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
工作原理
8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
一、8253内部结构
8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器
数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
2.读/写控制
读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。
接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
A1A0:
端口选择信号,由CPU输入。
8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。
这4个端口地址由最低2位地址码A1A0来选择。
如表9.3.1所示。
3.通道选择
(1)CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。
(2)RD#、WR#——读/写控制命令,由CPU输入,低电平有效。
RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。
WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。
CPU对8253的读/写操作如表9.3.2所示。
4.计数通道0~2
每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,最大计数值是FFFFH,采用BCD码计数时。
最大计数值是9999。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
必要时可用来锁存计数值。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。
OUT端将有输出。
表示计数次数到。
当某个通道用作定时器时。
由CLK输入一定频率的时钟脉冲。
根据要求定时的时间长短确定所需的计数值。
并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。
OUT将有输出,表示定时时间到。
允许从CLK输入的时钟频在1~2MHz范围内。
因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。
而后者是内时钟脉冲进行减“1”计数。
作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:
定时系数=需要定时的时间/时钟脉冲周期
①设置通道:
向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;
②计数/定时:
向通道写入计数值,启动计数操作;
③读取当前的计数值:
向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:
当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。
计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。
锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
5.方式选择控制字
二、8253的通道工作方式
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
8253的各种工作方式如下:
1.方式0:
计数结束则中断
工作方式0被称为计数结束中断方式,它的定时波形如图9.3.4所示。
当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止。
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。
当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。
显然,利用工作方式0既可完成计数功能,也可完成定时功能。
当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLKi端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变,表示计数次数到。
当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。
从CLKi,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数,定时时间从写入计数值开始,到计数值计到“0”为止,这时OUTi输出正跳变,表示定时时间到。
有一点需要说明,任一通道工作在方式0情况下,计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。
2.方式1:
单脉冲发生器
工作方式1被称作可编程单脉冲发生器,其定义波形如图9.3.5。
进入这种工作方式,CPU装入计数值n后OUTi输出高电平,不管此时的GATE输入是高电平还是低电平,都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。
与此同时,OUTi输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”,OUTi输出由低电平向高电平跳变,形成输出单脉冲的后沿,因此,由方式l所能输出单脉冲的宽度为CLKi周期的n倍。
如果在减“1”计数过程中,GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数,其效果会使输出的单脉冲加宽,如教材图9-22(b)中的第2个单脉冲。
这种工作方式下,计数值也是一次有效,每输入一次计数值,只产生一个负极性单脉冲。
3.方式2:
速率波发生器
工作方式2被称作速率波发生器,其定时波形如图9.3.6所示。
进入这种工作方式,OUTi输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平不变;待计数值减到“1”和“0”之间,OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUTi将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLKi周期,重复周期为CLKi周期的n倍。
如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。
这样会改变输出脉冲的速率。
如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。
4.方式3:
方波发生器
工作方式3被称作方波发生器,其定时波型如图9.3.7所示。
任一通道工作在方式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,并从下一个计数操作周期开始改变输出方波的速率。
5.方式4:
软件触发方式计数
工作方式4被称作软件触发方式,其定时波形如图9.3.8所示。
进入工作方式4,OUTi输出高电平。
装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。
由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。
如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。
显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUTi输出负脉冲(表示定时时间到),其定时时间=n×CLK周期。
这种工作方式也可完成计数功能,它要求计数的事件以脉冲的方式从CLKi输入,将计数次数作为计数初值装入后,由CLKi端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由OUTt端输出负脉冲(表示计数次数到)。
当然也可利用OUTj向CFU发出中断请求。
因此工作方式4与工作方式0很相似,只是方式0在OUTi端输出正阶跃信号、方式4在OUTi端输出负脉冲信号。
6.方式5:
硬件触发方式计数
工作方式5被称为硬件触发方式,其定时波形如图9.3.9所示。
进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。
因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
这种工作方式下,当计数值计到“0”后,系统将自动重新装入计数值n,但并不开始计数,一定要等到由GATE端引入的正跳沿,才会开始进行减“1”计数,因此这是一种完全由GATE端引入的触发信号控制下的计数或定时功能。
如果由CLKi输入的是一定频率的时钟脉冲,那么可完成定时功能,定时时间从GATE上升沿开始,到OUTi端输出负脉冲结束。
如果从CLKi端输入的是要求计数的事件,则可完成计数功能,计数过程从GATE上升沿开始,到OUTi输出负脉冲结束。
GATE可由外部电路或控制现场产生,故硬件触发方式由此而得名。
如果需要改变计数初值,CPU可在任何时候用输出指令装入新的计数初值m,它将不影响正在进行的操作过程,而是到下一个计数操作周期才会按新的计数值进行操作。
从上述各工作方式可看出,GATE作为各通道的门控信号,对于各种不同的工作方式,它所起的作用各不相同。
在8253的应用中,必须正确使用GATE信号,才能保证各通道的正常操作。
7.读取计数器的当前值
⑴直接读计数器:
输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。
但由于计数器处于工作状态,读出值不一定能稳定。
⑵先锁存再读取:
①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。
②读计数器通道(有锁存器)。
PIC-8259A
1Overview
在本章的第一节我们已经提到,中断的来源除了来自于硬件自身的NMI中断和来自于软件的INTn指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。
这些中断也都通过PIC(ProgrammableInterruptController)进行控制,并传递给CPU。
在IBMPC极其兼容机上所使用的PIC是Intel8259A芯片。
8259A芯片的功能非常强大,但在IBMPC上,我们只用到比较简单的功能。
我们本节也只讨论其在PC上的使用。
一个8259A芯片的可以接最多8个中断源,但由于可以将2个或多个8259A芯片级连(cascade),并且最多可以级连到9个,所以最多可以接64个中断源。
早期,IBMPC/XT只有1个8259A,.但设计师们马上意识到这是不够的,于是到了IBMPC/AT,8259A被增加到2个以适应更多外部设备的需要,其中一个被称作Master,另外一个被称作Slave,Slave以级连的方式连接在Master上。
如今绝大多数的PC都拥有两个8259A,这样最多可以接收15个中断源。
通过8259A可以对单个中断源进行屏蔽。
--------------------------------------------------------------------------------
2Principle
在一个8259A芯片有如下几个内部寄存器:
InterruptMaskRegister(IMR)
InterruptRequestRegister(IRR)
InSeviceRegister(ISR)
IMR被用作过滤被屏蔽的中断;IRR被用作暂时放置未被进一步处理的Interrupt;当一个Interrupt正在被CPU处理时,此中断被放置在ISR中。
除了这几个寄存器之外,8259A还有一个单元叫做PriorityResolver,当多个中断同时发生时,PriorityResolver根据它们的优先级,将高优先级者优先传递给CPU。
当一个中断请求从IR0到IR7中的某根线到达IMR时,IMR首先判断此IR是否被屏蔽,如果被屏蔽,则此中断请求被丢弃;否则,则将其放入IRR中。
在此中断请求不能进行下一步处理之前,它一直被放在IRR中。
一旦发现处理中断的时机已到,PriorityResolver将从所有被放置于IRR中的中断中挑选出一个优先级最高的中断,将其传递给CPU去处理。
IR号越低的中断优先级别越高,比如IR0的优先级别是最高的。
8259A通过发送一个INTR(InterruptRequest)信号给CPU,通知CPU有一个中断到达。
CPU收到这个信号后,会暂停执行下一条指令,然后发送一个INTA(InterruptAcknowledge)信号给8259A。
8259A收到这个信号之后,马上将ISR中对应此中断请求的Bit设置,同时IRR中相应的bit会被reset。
比如,如果当前的中断请求是IR3的话,那么ISR中的bit-3就会被设置,IRR中IR3对应的bit就会被reset。
这表示此中断请求正在被CPU处理,而不是正在等待CPU处理。
随后,CPU会再次发送一个INTA信号给8259A,要求它告诉CPU此中断请求的中断向量是什么,这是一个从0到255的一个数。
8259A根据被设置的起始向量号(起始向量号通过中断控制字ICW2被初始化)加上中断请求号计算出中断向量号,并将其放置在DataBus上。
比如被初始化的起始向量号为8,当前的中断请求为IR3,则计算出的中断向量为8+3=11。
CPU从DataBus上得到这个中断向量之后,就去IDT中找到相应的中断服务程序ISR,并调用它。
如果8259A的EndofInterrupt(EOI)通知被设定位人工模式,那么当ISR处理完该处理的事情之后,应该发送一个EOI给8259A。
8259A得到EOI通知之后,ISR寄存器中对应于此中断请求的Bit会被Reset。
如果8259A的EndofInterrupt(EOI)通知被设定位自动模式,那么在第2个INTA信号收到后,8259AISR寄存器中对应于此中断请求的Bit就会被Reset。
在此期间,如果又有新的中断请求到达,并被放置于IRR中,如果这些新的中断请求中有比在ISR寄存中放置的所有中断优先级别还高的话,那么这些高优先级别的中断请求将会被马上按照上述过程进行处理;否则,这些中断将会被放在IRR中,直到ISR中高优先级别的中断被处理结束,也就是说知道ISR寄存器中高优先级别的bit被Reset为止。
--------------------------------------------------------------------------------
3IRQ2/IRQ9Redirection
为什么要将IRQ2重定向到IRQ9上?
这仍然是由于兼容性问题造成的。
早期的IBMPC/XT只有一个8259A,这样就只能处理8种IRQ。
但很快就发现这根本不能满足
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 芯片 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)