第4章 数据通信方式及常用接口芯片 4.1 概述 外部设备是微型机系统的必要的组成部分。外部设备与计算机之间需通过硬件连接和软件控制来建立联系。这一硬件、软件的综合便是接口。接口位于计算机主机与外部设备之间,它的功能是使主机与外部设备能正确地交换信息。 在设计接口之前,首先应当了解某一类型外部设备所要完成的功能,为完成这些功能应做哪些操作,以及如何实现。进一步还应了解对控制信号有什么要求,输入、输出什么信息。这样才能明白外部设备和接口电路之间的交换关系,才能确定哪些功能由硬件逻辑电路实现,哪些功能由软件程序控制实现。 随着大规模集成电路的发展,目前出现的一般倾向是把接口功能分成通用接口和专用接口两种。 通用接口芯片一般有可编程的和不可编程的。不可编程的芯片一般功能比较简单,对各种机型均可适用;可编程的芯片一般功能较多,控制较复杂,有的芯片只与某一机型配套,也有一些芯片可适用于几种性能接近的机型。 对许多功能很强的外部设备,接口很复杂,常常设计成专用接口芯片来实现。这种专用芯片有时甚至可能是一个带微处理器的控制系统。按芯片传送信息方式划分,接口芯片可分为并行接口和串行接口两类。
4.2 可编程并行接口8255A 8255有三个8位并行的数据端口PA、PB、PC,各个口的输入输出功能由程序确定。 8255有三种基本工作方式: 方式0-一基本输入输出方式 方式1――选通输入输出方式 方式2――双向传送方式
8255控制字格式
4.3 可编程多功能接口8155
8155控制字格式
8155用于定时器扩展 (1)定时器的方式选择 8155片内有一个14位减法计数器,可对输入脉冲进行减法计数。外部有两个定时器引脚端TIN、TOUT。TIN为定时器时钟输入,由外部输入时钟脉冲;TOUT为定时器输出,输出各种信号、波形。定时器的14位计数器由04H端口(低8位)和05H端口的D5-D0(高6位)组成。定时器输出有四种波形,可由定时器方式编程选择,定时器方式及相应的输出波形如表4.3.2所示。 (2)定时器的编程 对定时器进行编程时,首先将计数常数及定时器方式送入定时器端口(定时器低8位及定时器高6位、定时器方式)04H及05H。计数常数在0002H~3FFFH之间选择。 计数器的启动和停止计数由命令寄存器(00H)的最高两位控制。
8155举例 例1 8155定时器初始化编程 使8155用作I/O口和定时器工作方式,A口定义为基本输入方式,B口定义为基本输出方式,定时器作为方波发生器,对输入脉冲进行24分频(8155中定时器最高计数频率为4MHZ),设I/O口地址为: 命令/状态口 7F00H PA口 7F01H PB口 7F02H PC口 7FO3H 定时器低8位 7F04H 定时器高8位 7F05H 8l55初始化编程如下: MOV DX, 7F04H ;指向定时器低8位 MOV AL, 18H ;计数常数0018H=24 OUT DX, AL ;计数常数低8位装入 INC DX ;指向定时器高8位 MOV AL, 40H ;设定定时器方式为连续方波输出 OUT DX, AL ;定时器高8位装入 MOV DX, 7F00H ;指向命令/状态口 MOV AL, 0C2H ;命令控制字设定A口为基本输入方式。 ;B口为基本输出方式,并启动定时器。 OUT DX, AL
4.4 可编程定时/计数器8254 在计算机系统中,定时系统通常包括两个部分:时钟电路和定时电路。 4.4 可编程定时/计数器8254 在计算机系统中,定时系统通常包括两个部分:时钟电路和定时电路。 时钟电路包括外部时钟发生器和CPU内部的时序电路,它产生整个计算机系统的最基本的控制信号和同步信号,主要用于CPU内部的指令执行过程,相应产生控制时序,比如,取指令周期,读写周期,中断响应周期,总线响应周期等。时钟电路也可为定时电路提供基准时钟信号。 定时电路主要应用于计算机的接口电路,这部分电路可根据接口的要求,产生各种不同的时序信号。定时电路的基准时钟信号有两种产生办法:一是由系统的时钟电路产生;二是由独立的时钟源产生。这两钟方法在实际应用中都很常用。
8254的内部结构
8254的通道结构
8254的工作方式 8254的6种工作方式: 1.方式0——计数结束中断 2.方式1——可编程单稳 3.方式2——脉冲频率发生器 4.方式3——方波发生器 5.方式4——软件触发选通 6.方式5——硬件触发选通
8254控制字格式
8254的初始化 (l)写入操作 ①对每一个通道而言,控制字必须在计数值之前写入。 ②16位计数初值的写入必须遵守控制字中读/写格式规定的顺序。 (2)读出操作 ①简单读出方式 ②锁存读出方式 ③回读命令方式
8254应用系统设计(1) 例:某8088系统采用8254精确控制一个发光二极管闪亮,系统要求启动8254后使发光二极管点亮2秒,熄灭2秒,亮灭50次后停止闪动,系统工作结束。现有一个时钟脉冲源,频率为2MHz,其他器件任选。试完成下列工作: (1)分析该系统接口电路 (2)编写完成上述功能的程序 1.系统分析 系统控制发光二极管亮2秒灭2秒,恰好是一个方波周期,周期为4秒,可用方式3。 系统提供2MHz时钟脉冲源,周期为0.5µs,若以此信号为CLK输入,产生4秒周期的方波,计数值应为4秒÷0.5µs=8×106,而这个值远远大于一个通道能提供的最大计数值65536。所以,不可能只用一个通道来完成任务。由此,考虑由两个通道级连来产生最后的方波,其中前一个通道的CLK接2MHz,工作于脉冲频率发生器方式,产生一个脉冲波,假设脉冲波周期为4ms(250HZ),于是它的计数值为4ms÷0.5µs=8000,它的OUT输出接后一个通道的CLK输入,后一个通道工作于方波发生器方式,产生周期为4秒的方波,于是它的计数值为4秒÷4ms=1000。当周期为4秒的方波产生2秒高电平,2秒低电平的时候,所控制的发光二极管也就会亮2秒,灭2秒(后一个通道的OUT去控制发光二极管),符合系统要求。
8254应用系统设计(2) 50次计数控制:使用方式0,采用8254回读状态法来确定计满50个周期并结束方波发生器的工作。 综上所述,系统的计数器分配如下: 计数器0工作于脉冲频率发生器方式,输入CLK,接2MHz脉冲信号源,输出OUT0产生250Hz(周期为4ms)的脉冲序列。 计数器1工作于方波发生器方式,输入CLK1接OUT0的250Hz脉冲信号,输出OUT1产生周期为4秒的方波,经过一个反相驱动器去控制一个发光二极管。 计数器2工作于计数结束中断方式,输入CLK2接OUT1的周期为4秒的方波,输出OUT2悬空,内部回读OUT2的状态。
8254应用系统设计(3) 2.计数器0的控制字和计数值 (l)控制字:00110100B (2)计数值:4ms÷0.5µs=8000 3.计数器1的控制字和计数值 (l)正常工作控制字:01110110B (2)计数值:4s÷4ms=1000 (3)停止工作控制字:01110000B 只写控制字,不写计数值,因此方式O不能启动(方式0靠写入计数值启动),相当于停止通道原来的工作。 4.计数器2的控制字和计数值 (1)控制字:10010000B (2)计数值:50(计满次数) 5.回读命令字:11101000B 6.端口地址 本例假设8254的4个端口地址,由计数器0至控制寄存器依次为80H、81H、82H、83H。
8254应用系统设计(4) 7.工作程序设计如下: MOV AL,90H ;#2控制字 OUT 83H,AL MOV AX,8000 ;#0计数值 OUT 80H,AL MOV AL,AH OUT 80H,AL MOV AL,76H ;#1控制字 OUT 83H,AL MOV AX,1000 ;#1计数值 OUT 81H,AL OUT 81H,AL AGAIN: MOV AL,0E8H ;回读命令字 IN AL,82H ;读#2的状态字 TEST AL,80H ;析取D7位的OUT2 JZ AGAIN ;OUT2=0,计数未到,转 MOV AL,70H ;停止#1工作 HLT
4.5 实时时钟与CMOS RAM 8284与MC146818在功能上、作用上不同,前者意义在于时序,后者意义在于定时。也许没有MC 146818计算机尚可工作(在早期PC机上如此),但是若没有8284计算机是绝对不能工作的。 MC146818是MOTOROLA公司生产的CMOS实时时钟/日历芯片,该芯片可产生秒、分、时,星期、日、月及年等7个时标,可通过程序读取或修改这些时标,可提供100年日历,可编程任意设定定时中断,定时范围由30.517µs至23时59分59秒,还有CMOS RAM存储器,其应用十分广泛。以后为讨论方便,我们把MC146818称为时钟日历芯片。 时钟日历芯片MC146818的主要特点是: (1)有10个时标寄存器,4个编程和状态寄存器; (2)有50个字节的静态CMOS RAM; (3)可选择三种时钟频率; (4)可选择二进制或BCD码表示时标(时间和日历); (5)可选择不同的频率输出方波; (6)有三种独立的可编程中断。
MC146818的内部结构 1.时基输入与时钟输出:可接入三种频率的时钟:4.197304MHz、1.048576MHz、32.768KHz。 2.中断周期/方波速率选择逻辑:用于选择中断周期的长短和方波输出频率的大小,二者的选择不是任意的,而是具有连锁性和相关性,有固定的16种组合。 3.方波输出逻辑 4.总线接口 5.时钟日历修改逻辑与BCD/二进制增加逻辑:采用二种数制,即二进制计数和BCD码计数,由编程选择。 6.寄存器组:有A、B、C、D 4个8位寄存器,用于保存CPU送来的编程控制字和芯片本身的某些状态。 7.时钟、报警、日历RAM:用于保存秒、分、时等时钟日历信息及报警时间信息。 8.用户RAM:50个字节,可使用户保存其它信息。
MC146818的引脚功能 Vcc:电源正极,+3~+6V,典型值+5V。 Vss:接地端,或电池负极。 OSC1、SC0:时钟输入端。 CKOUT:时钟输出端。该引脚的输出频率可等于输入时钟频率,或将其4分频后输出。 CKFS:时钟输出控制端。用于控制CKOUT输出时的时钟频率。当CKFS接高电平时,CKOUT端输出时钟的频率等于该芯片输入的时钟频率;当CKFS接低电平时,则将输入时钟OSC1 4分频输出。 SQW:可编程方波输出端,输出方波的频率由寄存器A的相应位确定。 AD7~AD0:数据/地址分时复用线,在AS下降沿时将A7~A0锁存入芯片。 AS:地扯锁存信号。 DS:数据读选通信号。 :读/写信号。 :片选信号。 :中断请求信号。任何一种中断产生, 都将使变成低电平,读取状态寄存器 C可清除此信号。 :复位信号。 PS:电源电位检测端。当实时日历芯片 的电源电压低于临界最小值时,在内部 寄存器内的相应位置标志,以供用户程 序查询,同时使PS引脚变低电平。 NC:空引脚,无定义。
MC146818工作原理
MC146818的工作方式 MC146818可编程选择多种工作方式,比如输入时钟频率、计时数制、中断类型等,这里介绍MC146818的三种中断:周期中断、报警中断和更新结束中断。 周期中断:以一定的时间为周期产生中断,作为周期的这段时间是可编程设定的,有固定的16种,可选择其中一个。MC146818的中断请求连接到系统的IRQ8上,若MC1468l8允许周期中断,则会每隔一定的周期通过IRQ8向CPU申请中断,进而达到定时服务的目的。 周期中断的定时范围是从30.517µs到500ms。 报警中断:到达预设的时间后产生中断。首先设置预定的时间,时间按时、分、秒来设定,当计时达到预设的时间后(此前必须是允许报警中断),MC146818就通过IRQ8向CPU发出中断请求。 报警中断的定时范围是从1秒到23时59分59秒。 更新结束中断:MC146818芯片内部各时标寄存器内容修改一次结束后产生的中断。 在更新周期中首先将秒时标寄存器加1,然后检查是否有溢出,若有溢出则产生进位,使分时标寄存器再加1,再检查有无溢出,依此类推,并能自动识别年、月的结束。 更新周期结束后,若MC146818允许更新结束中断,则通过IRQ8向CPU发出中断请求,在中断程序中可读取时钟日历。
更新周期 MC146818芯片在正常工作时,每秒钟芯片内时标寄存器进行一次刷新操作,即产生一个更新周期,这个更新周期最大也小于2ms。 在更新周期内,芯片内部的时标寄存器数据处于刷新状态,所以在此期间,CPU不可读取时标寄存器的内容,即便读取,其内容也不确定,不能得到一个有效的数据结果。为了得到一个正确的数据,通常可以采用以下两种方法: (1)采用更新结束中断 MC146818芯片1秒钟对时标寄存器刷新一次,每次刷新小于2ms,于是就有998ms的时间处于未刷新状态,此时CPU可读取有效时钟日历。因此可以编程允许每次更新结束后发出更新结束中断请求,提醒CPU将有998ms左右的时间去读取有效数据。在中断之后998ms的任何时间里,可用程序先将时标寄存器的内容读出,然后,在离开中断程序之前清除寄存器C的IRQF和UF位。 (2)采用查询UIP UIP是寄存器A的D7位,用于指示芯片是否处于刷新状态(或称更新周期)。若UIP=1,则表示芯片正在刷新,不可读取数据,需等待,继续查询。当UIP=0时,表示芯片未处于刷新状态,但也许芯片马上在下一个时钟周期就开始刷新操作,这怎么办呢?事实上,时钟日历芯片在时序上保证了这样一点:在开始刷新之前,使UIP=O变成UIP=1,然后再延迟244µs,然后才开始真正的刷新操作。也就是说,当检测到UIP=0时,在最快的情况下,也要等244µs后才能真正开始刷新。因此为保证读到正确的数据,若在检测到UIP=0后,在244µs内完成读取时钟日历的数据。
MC146818在系统中连接框图
CMOS RAM的主要内容与地址分配
MC146818的编程寄存器A、B
寄存器A的DV2DV1DV0组合
寄存器A的RS3RS2RS1RS0组合
MC146818的编程寄存器C、D
MC146818的初始化 编程状态寄存器A(片内地址0AH)主要功能是选择输入时钟,确定输出频率,提供更新状态。 编程状态寄存器B(片内地址0BH)主要功能是允许芯片工作,允许中断,允许方波输出。 编程状态寄存器C(片内地址0CH)主要功能是反映中断状态,程序读该寄存器后,该寄存器将自动清零。因此,可用这种方法清除中断。 编程状态寄存器D(片内地址0DH)主要功能是反映电压状态,该位与引脚PS的状态保持一致。寄存器D为只读寄存器,写入没有意义。 MC146818的初始化工作主要是完成对寄存器A、寄存器B和寄存器C的设置,以及对10个时标寄存器的初始值写入。 具体步骤是: (1)设置寄存器B使SET=1,禁止芯片工作; (2)设置寄存器A; (3)初始时间写入时标寄存器; (4)读寄存器C,清除各中断标志位; (5)设置寄存器B使SET=0,恢复芯片工作。
MC146818举例(1) 例:在某PC/AT系统中,重新设置MC1468l8,条件是:采用32.768KHz输入时钟,允许产生500ms的周期中断,允许方波输出,采用24小时BCD计数,并设置日期时间为:00年9月22日,星期五,上午8时0分0秒。 1.寄存器A编程状态字:00101111B 2.寄存器B编程状态字:01001010B 寄存器B的4AH控制字是在正常工作时使用的,但在芯片初始化过程中,不应使芯片工作,因此D7位(SET)应为1(禁止芯片工作),即控制字为CAH。也就是说,在初始化最初把CAH送给寄存器B禁止芯片计时工作,然后进行其他初始化工作,最后将4AH写入寄存器B计时工作开始。 3.各日期、时间参数写入相应的时标寄存器,注意是BCD码格式。 4.使用PC/AT提供的两个端口地址70H和71H,并遵守其操作规定,即先把要操作的地址送入70H,然后对71H进行读写数据操作。
MC146818举例(2) 5.初始化程序如下: MOV AL, 0BH ;指向B OUT 70H,AL MOV AL, 0CAH ;禁止芯片计时 OUT 71H,AL MOV AL, 00H ;0秒 MOV AL, 00H MOV AL, 02H ;0分 MOV AL, 04H ;8时 MOV AL, 08H MOV AL, 06H ;星期五 MOV AL, 05H
MC146818举例(3) MOV AL, 07H ;22日 OUT 70H,AL MOV AL, 22H OUT 71H,AL MOV AL, 0AH ;指向A MOV AL, 2FH MOV AL,0CH ;指向C IN AL,71H ;读C清除中断 MOV AL,OBH ;指向B OUT 70H,AL MOV AL, 4AH ;允许芯片计时 OUT 71H,AL ST1 ……
报警中断与周期中断 在BIOS数据区中建立了5个与周期中断有关的字单元: 0040H:0098H定时时间到标记单元的段内偏移量 0040H:009AH定时时间到标记单元的段地址 0040H:009CH定时计数值低16位 0040H:009EH定时计数值高16位 0040H:00A0H定时有效标记单元 BIOS在中断INT 15H中扩展了两项功能,用于支持周期中断: (1)设置参数,启动周期中断,并立即返回 输入:AH=83H ES=定时时间到标记单元段地址 BX=定时时间到标记单元段内偏移量 CX=定时计数值高字 DX=定时计数值低字(单位:µs) 返回:无 (2)设置参数,启动周期中断,定时到后返回 输入:AH=86H DX=定时计数值底字(单位:µs)
4.6 串行通信基础 在计算机应用中,计算机与外部设备之间,计算机与计算机之间常常要进行数据交换,我们把这种数据交换称为通信 4.6 串行通信基础 在计算机应用中,计算机与外部设备之间,计算机与计算机之间常常要进行数据交换,我们把这种数据交换称为通信 数据通信的基本方式有2种:并行通信、串行通信 在并行通信中,所有的数据位同时传送,比如8位机的数据线宽度是8位,于是这8位同时传送,因此需要8条传送线,再加上其他的控制线,需要的传送线就更多,如果传送的距离比较远,那么这种方式的投资就很大,加之传送线越多受干扰的机会就越大,使得数据传送的可靠性降低,这种方式的最大优点就是传送速度快 在串行传送中,只用一条数据传送线,所有要传送的数据在通信线上依次一位一位地传送,这种方法使用传送线少,降低工程投资,适合于远距离数据传送,这是它的最大特点,但正是由于一位一位地传送数据,结果是限制了它的传送速率,这是它的不足
串行通信方式 串行通信中,数据发送定时和数据接收定时是一个重要问题。 并行传送时,8位数据同时传送,不存在每一位是属于哪一个字节的问题,而在串行通信中,数据位是在一条通信线上顺序传送的,因此,在数据的发送端和接收端之间要求同步,以区分数据位,数据字节和数据块(报文)。没有正确的同步,接收的信息就毫无用途,因此,要使接收端正确地转换成发送端发送的数据和信息,在串行通信中正确的同步是必不可少的。 串行通信的基本方式按通信的同步方式分为异步方式和同步方式。 如前所述,在串行通信下,所有需传送的数据信息和控制信息都必须在同一根线上传送,每次传送一位。这就提出一个问题:系统如何识别通信线上的数据信号与控制信号呢?又如何知道通信线上有多少个信号,以及是什么信号(0或1)呢?为了解决这些问题,提出了串行通信规程,串行通讯规程就是指对数据传送的某些约定,它包括定时、控制、格式化和数据表示法。异步方式和同步方式各有自己的通信规程。
异步通信方式 异步通信的数据链路控制是面向字符的,即传送的每一组数据构成一个字符,或者说,它把每个字符看作一个独立的信息进行传送,并且每个字符出现在数据流中的相对时间是任意的,而一个字符中每一位占用的时间是固定的,它由传送速率确定。因此,异步通信是字符内的同步,字符间的异步。 异步通信规程规定:数据流中传送的每个字符必须由起始位(1位低电平)开始,而以停止位结束(1位或1位或2位高电平),称为一帧。起始位和停止位称为帧位。 ①起始位。起始位是连续一位的低电平(逻辑0) ②数据位。在起始位之后,即发送数据位。数据位通常有4种配置情况,即有5位、6位、7位、8位 ③奇偶校验位。异步通信采用一位奇偶验位检测错误 ④停止位。表示一个字符发送结束
同步通信方式 (1)在同步通信中,要求发送端在正式发送数据前,先发送一个同步字符去通知接收端,接收端在收到同步字符后,便开始按照双方约定的格式和速率接收数据 (2)同步传送时,由于同步字符的不同,可有不同信息格式,一般分为: ①单同步:只有一个同步字符。 ②双同步:有二个同步字符。 ③外同步:没有同步字符,靠外部时钟同步。 ④SDLC/HDLC:同步数据链路控制/高级数据链路控制。 (3)同步通讯格式包括同步字符、数据、CRC校验: ①同步字符。一种同步标志,指示传送数据的开始。同步字符的选择依据是:其位模式要与传送的数据字符有着明显的差别 ②数据。指连续传送的信息,每个字符可选择为5、6、7、8位,传送的内容可以是数据信息,也可以是命令信息 ③CRC校验。循环冗余校验,用于数据传送的检错。不同在于,奇偶校验对一个字符校验,适于异步通信,而CRC对数据块进行校验,适于同步通信
HDLC HDLC(High Level Data Link Control)高级数据链路控制规程,HDLC适用于分时系统,计算机间的高速数据通讯 HDLC和SDLC除了所用的某些术语和技术细节外,其基本原理是相同的: (1)标志场。标志场由固定的8比特序列01111110组成,表示一帧的开始和结束,也兼作帧同步信号用。为防止在标志场以外的地方,如地址场,控制场等出现同样的序列,发送端和接收端采用“发送0比特插入,接收0比特删除”技术 (2)地址场和控制场。一帧信息是由若干个场(Field)组成的。包括标志场(F场)、地址场(A场,Address)、控制场(C场,Control)、数据场(又称信息场,I场,Information)等。HDLC规定地址场任意长度,控制场为8位或16位 (3)数据场。要传送的数据信息,其信息的长度任意 (4)帧校验序列。每一帧信息有两个字节的帧校验序列,采用16位的循环冗余校验码。除了标志场和自动插入的“0”以外,所有的信息都参加CRC计算
异步通信与同步通信的主要区别 (l)时钟要求 同步通信:发送与接收时钟频率精确相等 异步通信:发送与接收时钟频率基本相等即可 (2)控制信息 同步通信:要求对整个数据块附加帧信息,用于高速数据链路 异步通信:要求对每个数据字符均附加帧信息,用于低速设备,低速传送 (3)校验方式 同步通信:采用16位循环冗余校验码,可靠性高 异步通信:采用1位奇偶校验,可靠性相对较低
波特率 波特率(Baud rate):表示串行数据传送速度,它表示每秒钟传送的二进制位数,是一个速度衡量单位 波特率定义为:1波特=1位二进制位/秒 若某设备每秒传送120帧信息,每帧信息包括:1个起始位,7个数据位,1个奇偶校验位,1个停止位,共10位组成,这时其传送的波特率为: 10位/帧×120帧/秒=1200位/秒=1200波特 通信时,发送方和接收方的传送波特率必须保持一致,并根据传送的波特率来确定发送端接收端的时钟频率。 常用的传送波特率系列有:l10、300、600、1200、2400、4800、9600和19200波特。异步通讯一般在50~9600波特之间。大多数的CRT终端可在110~9600波特的范围内工作,常用9600波特。串行打印机由于受到机械速度的限制,一般波特率定在110波特。对于内部缓冲区大的串行打印机,传送速率可提高到2400波特。
串行通信的数据传送方式 在串行通信中,通信双方的数据传送方式有三种:单工方式、半双工方式和全双工方式 1.单工方式:这种方式只有一条通信线,数据只允许按一个固定的方向传送,即一方只能发送,而另一方只能接收 2.半双工方式:这种方式也只有一条通信线,通信双方都具备接收或发送数据的能力,但不允许任何一方在同一时刻既发送数据又接收数据,通信双方只能分时地进行发送或接收,即或者A发送,B接收,或者B发送,A接收 3.全双工方式:全双工方式是一对单工方式,有2条通信线,要求通信双方都具有完整的发送能力和接收能力,允许在两个方向上同时传送数据
信号的调制与解调 在串行通信中,计算机输入/输出的是以二进制表示的数字信号。但若收发双方距离较远,或在信息网络、计算机网络、远程交换等场合,可借用电话线来进行信息传送 计算机的数字信号有很高的谐波频率,要求传输线的频带很宽,而电话线的频带只有30Hz~3000Hz,用它来传送数字信号时,会产生严重的畸变。如果在电话线频带内来传送信息,就可以减小甚至消除失真 在远距离通信时,发送方要利用调制器把数字信号转换成模拟信号,以两种不同频率的正弦波来表示“1”和“0”发送到通信线上,这一过程称为调制。接收方利用解调器把收到的模拟信号恢复成数字信号,这一过程称为解调。实现调制与解调的装置称为调制解调器(Modem) 按照调制技术,一般有3种调制方法,即调频、调幅和调相 FSK频移键控法工作原理:两个不同频率的模拟信号(一般为2400Hz和1200Hz),分别由电子开关控制,加至运算放大器的输入端,而电子开关由要传送的数字信号控制。当数字信号为“1”时,控制电子开关导通,送出一串频率较高的模拟信号;当数字信号为“0”时,控制另一个电子开关导通,送出一串频率较低的模拟信号,于是在运算放大器的输出端,就得到了调制后的信号
4.7 可编程异步通信接口8250 典型的可编程串行接口芯片有多种,包括: 4.7 可编程异步通信接口8250 典型的可编程串行接口芯片有多种,包括: ①UART:通用异步接收器/发送器(Universal Asynchronous Receiver/Transmitter)。 ②USRT:通用同步接收器/发送器(Universal Synchronous Receiver/Transmitter)。 ③USART:通用同步异步接收器/发送器(Universal Synchronous/Asynchronous Receiver/Transmitter)。 ④ACIA:异步通信接口适配器(Asynchronous Communication Interface Adapter)。 IBM PC系列(包括IBM PC、PC/XT、PC/AT等)为了实现串行异步通信,使用INS8250作为核心,另加一些辅助电路组成异步通信接口。INS8250属于UART。UART通常包括数据格式和波特率参数的设置、并串/串并转换、接口状态测试等功能。
8250主要特点 INS8250具有40个引脚,双列直插式,内部有10个寄存器,编程灵活,使用方便,具有如下主要特点: (1)双全工异步通信接口电路(无同步通信能力) (2)具有双缓冲能力 (3)通信波特率50~9600bps,共分成15种 (4)每字符可传送5~8位 (5)停止位可选择1,1.5,2位 (6)可选择奇校验、偶校验或无校验 (7)可产生中止字符(输出连续低电平) (8)出错检测,能检测奇偶错、帧错和溢出错等错误 (9)片内具有优先权中断控制逻辑 (l0)具有内部模拟诊断功能 (11)具有MODEM控制及状态报告功能
8250 内部结构框图
8250内部结构(1) 1.数据总线缓冲器:提供8250与CPU的数据接口 2.选择和控制逻辑:提供8250与CPU的地址线和控制线接口 3.发送控制电路:发送控制电路由发送保持寄存器THR、发送移位寄存器TSR和发送同步控制电路组成。CPU要发送的数据首先送入发送保持寄存器THR,等发送移位寄存器TSR“空”以后,数据就由THR自动送入TSR,然后再按编程的各种要求(如数据格式、波特率等),再加入始起位、奇偶校验位和停止位,从8250的串行数据输出端SOUT发送出去,发送的顺序是起始位、数据低位、数据高位、停止位 4.接收控制电路:接收控制电路由接收移位寄存器RSR、接收缓冲寄存器RBR及接收同步控制电路组成。在接收时,首先搜索起始位。8250的数据接收时钟RCLK的频率是波特率的16倍。接收同步控制电路用RCLK的上升沿采样输入信号SIN,当采样到SIN输入信号由高电平变成低电平,并连续8个RCLK周期都是低电平,则确认是已经到来一个起始位,然后从第9个RCLK时钟周期的低电平开始算起,每隔16个RCLK时钟周期对SIN输入的数据进行采样(此时应是相应数据位的中心),直至规定的数据格式结束。若正式接收数据前,SIN上的低电平不能保持连续9个RCLK时钟周期的话,则认为是传送线上的干扰所致,不予理睬,从头开始搜索SIN上的起始位
8250内部结构(2) 5.波特率产生电路:波特率产生电路由16位的除数锁存器DLH和DLL,及波特率发生器组成。波特率发生器是一个可编程的分频器,其分频系数就是除数寄存器的值。根据规定的波特率,可以计算出应设置的除数寄存器的值: 除数寄存器=基准时钟频率÷(l6×波特率) 除数寄存器设置后,会产生相应的波特率,也可产生一个工作时钟信号,即: f工作时钟=16×波特率 这个工作时钟在8250芯片内部已作为发送同步控制,并经BOUDOUT脚输出 6.调制解调器控制电路:调制解调器控制电路由调制解调器控制寄存器MCR、调制解调器状态寄存器MSR及控制逻辑组成。这部分电路的作用是控制调制解调器的工作 7.中断控制逻辑:中断控制逻辑由中断允许寄存器IER、中断识别寄存器IIR和中断控制电路组成。8250支持中断方式传送。8250内部有多种中断源,它们能否提出申请,它们的优先级排序等工作就是由这部分电路来完成和控制的
8250内部结构(3) 8.寄存器组:8250的寄存器分散在8250的七个组成部分之中,但从用户的角度讲,这些寄存器是可直接操作的。8250共有10个寄存器,都是8位的,外部用A2A1A0三位地址线寻址,下表给出8250的10个寄存器及其编址,其中DLAB是线路控制寄存器LCR的D7位,用于除数寄存器访问允许 10个寄存器分为两组,一组用于建立8250的基本工作环境,如数据格式、波特率参数、允许中断情况等,这组寄存器包括线路控制寄存器LCR、调制解调器控制寄存器MCR、中断允许寄存器IER、高字节除数锁存器DLH、低字节除数锁存器DLL,这5个寄存器通常是在8250初始化时写入的,而且一旦写入很少去改动它们。另一组在8250工作中用于实际数据通信,可随时检查各种状态
8250引脚功能 (1) 分为两大部分:与CPU连接的部分和与通信设备连接的部分 1.8250与CPU连接的引脚 (1)数据线D7~D0。三态,双向,8位数据线 (2)地址选通ADS。可用于锁存片选信号和地址信号,低电平有效 (3)数据输入选通DISTR、DISTR。用于CPU从8250读取状态信息或数据,通常只用其中一个,另一个可接无效电平。 (4)数据输出选通DOSTR、DOSTR。用于CPU将数据或控制字写入某一个寄存器。通常只用其中一个即可,另一个可接无效电平 (5)驱动器禁止DDIS。输出信号,高电平有效。当CPU从8250读取数据时,DDIS变为低电平输出。当DDIS为高电平时,用于禁止外部驱动器工作 (6)地址线A2、A1、A0。输入信号,CPU用这三条地址线寻址8250的内部寄存器 (7)片选信号CS2、CS1、CS0。必须3个信号都有效,8250才能工作 (8)主复位MR。复位信号,高电平有效
8250引脚功能 (2) 2.8250与通信设备连接的引脚 (l)基准时钟输入XTAL1。8250的基准时钟输入端,把外部时钟信号或晶振信号接入8250 (2)基准时钟输出XTAL2。输出信号,可用于其他定时控制 (3)接收时钟RCLK。接收时钟RCLK用于接收数据时的同步与数据采佯,应为波特率的16倍频,即: RCLK=16×波特率 (4)工作时钟输出BAUDOUT。也叫波特率输出,其频率为16倍频波特率。该信号在8250内部用于控制发送器的同步,同时也输出到芯片外部。该信号与基准时钟颇率,除数寄存器的内容及波特率的关系如下: f工作时钟=f基准时钟÷除数寄存器 =16×传送波特率 该信号也可作为接收时钟,故通常将其连至RCLK端 (5)用户指定的输出OUT1、OUT2。可以通过对调制解调器控制寄存器MCR的D2、D3位编程,使其输出有效的低电平 (6)片选输出CSOUT。是芯片被选中的指示信号,当8250已被选中时,CSOUT变为高电平,此时数据传送才能开始。此信号一般无用
8250引脚功能 (3) (7)中断请求INTRPT。高电平有效。当接收出错或接收数据就绪,或发送保持器已空,或MODEM状态改变,并且中断允许寄存器相应位允许,则INTRPT变成有效的高电平,即请求中断 (8)串行数据输入SIN。是由通信设备(外设或MODEM)发送的串行输入数据的接收端 (9)串行数据输出SOUT。这是8250发送给通信设备(外设或MODEM)的串行数据的输出端 (10)数据终端就绪DTR。低电平有效。有效时表示8250通知MODEM已做好通信准备。在8250收到振铃指示后,若它已准备好,则应以此信号回答MODEM (11)请求发送RTS。低电平有效。有效时表示8250向MODEM发出指示,它要求向MODEM输出串行数据 (12)接收线路信号检测RLSD。由MODEM提供,低电平有效。有效时表明MODEM已接收到数据载波,8250应立即接收解调后的数据 (13)数据设备就绪DSR。低电平有效,是通信设备送给8250的控制信号,表示通信设备就绪,允许使用通信设备进行数据传送 (14)清除发送CTS。低电平有效,是由MODEM送给8250的控制信号。有效时表示MODEM已同意8250的发送请求,通知8250开始发送 (15)振铃指示RI。低电平有效。有效时表示MODEM已收到电话交换台的拨号呼叫(电话振铃信号),MODEM要求8250予以回答
8250初始化编程 8250内部有10个可操作的寄存器,都是8位的寄存器 发送保持寄存器THR功能:保存发送的数据 接收缓冲寄存器RBR功能:保存接收的数据 波特率除数锁存器DLH和DLL功能:保存对基准时钟频率的分频系数,以便产生所需的波特率 当8250基准时钟频率为1.8432MHz(在PC/XT中)时,采用分频的办法产生所要求的波特率。8250接收数据和发送数据所使用的时钟频率是数据传送波特率的16倍。当8250工作于不同波特率时,就要求不同的时钟频率,也就要求不同的分频系数。分频系数即除数,可由下式计算: 除数=1843200/(16×波特率) 除数锁存器分为高8位DLH和低8位DLL,分两次写入。在初始化寻址除数锁存器时,必须先把线路控制寄存器LCR的最高位DLAB置“1”。在8250基准时钟频率为1.8432MHz的条件下,8250的输出波特率与除数锁存器的值之间的关系如表所示
线路寄存器控制字 线路控制寄存器LCR功能:设置一帧数据格式,除数锁存器写入允许位控制,设置附加奇偶位 线路状态寄存器LSR功能:发送与接收是否就绪,接收是否有错误
调制解调器寄存器控制字 调制解调器控制寄存器MCR的主要功能是:设定自测试方式,控制用户输出信号,控制RTS、DTR信号 调制解调器状态寄存器MSR的主要功能是:反映来自MODEM的4个输入引脚的当前状态和变化状态
中断寄存器控制字 中断识别寄存器IIR功能:确定中断源。IIR是只读的,高5位读出时恒为“0”,因此可用这一特征检查某系统中预定的位置是否插入8250芯片 中断允许寄存器IER功能:控制4种中断类型的允许与禁止
8250初始化编程步骤 在使用8250之前,必须根据系统的要求,对8250的有关寄存器进行初始化设置 初始化编程的主要步骤是: (l)80H写入LCR(准备写除数) (2)除数写入DLH,DLL(确定波特率) (3)写入LCR,确定数据格式,并必须使D7=0,以便以后对RBR、THR、IER操作 (4)写入IER (5)写入MCR
8250 应用 例:在PC/XT中重新设置8250,要求:串行异步通信,波特率为9600波特,每个字符7位数据位,2个停止位,采用奇校验,允许所有的中断,并用开放INTRPT中断,已知BIOS为串行接口分配的地址是3F8H~3FFH,试编写8250的初始化程序 解: MOV AL,80H MOV DX,3FBH ;LCR,DLAB=1,送除数 OUT DX,AL ;使通信线控制寄存器最高位置1 MOV AL,OCH MOV DX,3F8H ;DLL,除数低字节 OUT DX,AL MOV AL,0 INC DX ;DLH,除数高字节 OUT DX,AL ;对除数锁存器置初值 MOV AL,00001110B ;设置数据格式为7位/字符,两个停止位,奇校验 MOV DX,3FBH ;LCR MOV AL,0FH ;允许所有中断 MOV DX,3F9H ;IER MOV AL,0BH ;OUT2、DTR、RTS信号有效 MOV DX,3FCH
第4章 作业 1.PC机的定时系统包括哪两部分?各自的作用是什么? 2.8254有几种读操作方式?简述之。 3.某系统采用一片8254产生周期为2ms,个数为10的脉冲序列,已知有一个时钟源,频率为5MHz。要求: (1)画出硬件接口电路图; (2)编写相应程序。 4.MC146818可产生几种中断?简述之。 5.如何保证正确读取MC1468l8的时标寄在器? 6.设计一个MC146818的应用系统,要求: (1)画出接口电路; (2)编写初始化程序。 7.8250本身可以处理几种中断类型?其优先级的次序是怎样排列的?当8250 8.8088与8250连接作串行通信接口,通信参数是:8个数据位,1个停止位,不采用奇偶校验,波特率为2400,要求: (1)设计8088与8250的接口电路; (2)确定8250的各个端口地址; (3)编写8250的初始化程序。
第4章 结束 请同学们按教材后的习题 及时复习 吉林大学远程教育学院