600 likes | 796 Views
第 4 章 数据通信方式及常用接口芯片. 4.1 概述 外部设备是微型机系统的必要的组成部分。外部设备与计算机之间需通过硬件连接和软件控制来建立联系。这一 硬件、软件的综合便是接口 。接口位于计算机主机与外部设备之间,它的功能是使主机与外部设备能正确地交换信息。 在设计接口之前,首先应当了解某一类型外部设备所要完成的功能,为完成这些功能应做哪些操作,以及如何实现。进一步还应了解对控制信号有什么要求,输入、输出什么信息。这样才能明白外部设备和接口电路之间的交换关系,才能确定哪些功能由硬件逻辑电路实现,哪些功能由软件程序控制实现。
E N D
第4章 数据通信方式及常用接口芯片 4.1 概述 • 外部设备是微型机系统的必要的组成部分。外部设备与计算机之间需通过硬件连接和软件控制来建立联系。这一硬件、软件的综合便是接口。接口位于计算机主机与外部设备之间,它的功能是使主机与外部设备能正确地交换信息。 • 在设计接口之前,首先应当了解某一类型外部设备所要完成的功能,为完成这些功能应做哪些操作,以及如何实现。进一步还应了解对控制信号有什么要求,输入、输出什么信息。这样才能明白外部设备和接口电路之间的交换关系,才能确定哪些功能由硬件逻辑电路实现,哪些功能由软件程序控制实现。 • 随着大规模集成电路的发展,目前出现的一般倾向是把接口功能分成通用接口和专用接口两种。 • 通用接口芯片一般有可编程的和不可编程的。不可编程的芯片一般功能比较简单,对各种机型均可适用;可编程的芯片一般功能较多,控制较复杂,有的芯片只与某一机型配套,也有一些芯片可适用于几种性能接近的机型。 • 对许多功能很强的外部设备,接口很复杂,常常设计成专用接口芯片来实现。这种专用芯片有时甚至可能是一个带微处理器的控制系统。按芯片传送信息方式划分,接口芯片可分为并行接口和串行接口两类。
4.2 可编程并行接口8255A • 8255有三个8位并行的数据端口PA、PB、PC,各个口的输入输出功能由程序确定。 • A口具有一个8位数据输出锁存/缓冲器和一个8位数据输入锁存器。 • B口具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。 • C口具有一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。这个口在方式0控制下,可分为两个4位的口,用于传送数据或状态字。 • 8255有三种基本工作方式: 方式0-一基本输入输出方式 方式1――选通输入输出方式 方式2――双向传送方式
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 • 在计算机系统中,定时系统通常包括两个部分:时钟电路和定时电路。 • 时钟电路包括外部时钟发生器和CPU内部的时序电路,它产生整个计算机系统的最基本的控制信号和同步信号,主要用于CPU内部的指令执行过程,相应产生控制时序,比如,取指令周期,读写周期,中断响应周期,总线响应周期等。时钟电路也可为定时电路提供基准时钟信号。 • 定时电路主要应用于计算机的接口电路,这部分电路可根据接口的要求,产生各种不同的时序信号。定时电路的基准时钟信号有两种产生办法:一是由系统的时钟电路产生;二是由独立的时钟源产生。这两钟方法在实际应用中都很常用。
8254的工作方式 • 8254的6种工作方式: • 1.方式0——计数结束中断 • 2.方式1——可编程单稳 • 3.方式2——脉冲频率发生器 • 4.方式3——方波发生器 • 5.方式4——软件触发选通 • 6.方式5——硬件触发选通
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 AL,50 ;#2计数值 OUT 82H,AL MOV AL,34H ;#0控制字 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 MOV AL,AH OUT 81H,AL AGAIN: MOV AL,0E8H ;回读命令字 OUT 83H,AL IN AL,82H ;读#2的状态字 TEST AL,80H ;析取D7位的OUT2 JZ AGAIN ;OUT2=0,计数未到,转 MOV AL,70H ;停止#1工作 OUT 83H,AL 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的三种中断:周期中断、报警中断和更新结束中断。 • 周期中断:以一定的时间为周期产生中断,作为周期的这段时间是可编程设定的,有固定的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的初始化 • 编程状态寄存器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秒 OUT 70H,AL MOV AL, 00H OUT 71H,AL MOV AL, 02H ;0分 OUT 70H,AL MOV AL, 00H OUT 71H,AL MOV AL, 04H ;8时 OUT 70H,AL MOV AL, 08H OUT 71H,AL MOV AL, 06H ;星期五 OUT 70H,AL MOV AL, 05H OUT 71H,AL
MC146818举例(3) MOV AL,OBH ;指向B OUT 70H,AL MOV AL, 4AH ;允许芯片计时 OUT 71H,AL ST1 …… MOV AL, 07H ;22日 OUT 70H,AL MOV AL, 22H OUT 71H,AL MOV AL, 09H ;9月 OUT 70H,AL MOV AL, 09H OUT 71H,AL MOV AL, 09H ;00年 OUT 70H,AL MOV AL, 00H OUT 71H,AL MOV AL, 0AH ;指向A OUT 70H,AL MOV AL, 2FH OUT 71H,AL MOV AL,0CH ;指向C OUT 70H,AL IN AL,71H ;读C清除中断
报警中断与周期中断 • 在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 CX=定时计数值高字 DX=定时计数值底字(单位:µs) 返回:无
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 • 典型的可编程串行接口芯片有多种,包括: • ①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内部结构(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。复位信号,高电平有效