第15章 串行通信及接口电路
15.1 串行通信的基本概念 15.1.1 串行通信的特点: 数据在单条1位宽的传输线上按时间先后一位一位地传送; 节省传输线(优点); 数据传输率较低(缺点); 主要适用于长距离、低速率的通信中。
15.1.2 串行通信涉及的常用术语 1. 单工、半双工和全双工(数据通信的方向性结构) (1)单工(Simplex) 特点:仅能进行一个方向的数据传送 设备A 发送器 设备B 接收器 Data flow
(2) 半双工(Half Duplex) 特点:数据可以在两个方向上进行传送,但是这种传送绝不能同时进行。【双向,但不同时】 设备A 发送器/ 接收器 设备B 接收器/ 发送器 Data flow
(3) 全双工(Full Duplex) 特点:能够在两个方向同时进行数据传送。 设备A 发送器/ 接收器 设备B 接收器/ 发送器
2. 数据传输率 每秒传输的二进制位数,单位为bps(bit per second )也称比特率。 波特率―――每秒传输的“符号”(也称信号码元—Signal Element)的个数。 【例如,每秒传送1个符号,则波特率为1波特】
在计算机中,一个“符号”的含义为高、低两种电平,分别代表逻辑值“1”和“0”,所以每个符号的信息量为1比特,此时波特率与比特率刚好一致。 但在其他一些场合 (例如通信中采用的“相一幅”复合调制技术),一个“符号”的信息含量就不是一个比特,此时,波特率就不等于比特率。
4种相位(0,90,180,270) →实现 3位/信号码元 调制 每种相位有两种振幅值 →实现 3位/信号码元 调制 900 101 001 00 1800 110 010 000 100 011 111 2700 标准 波特率系列:50,75,110,150,300,600,1200,……
现在的电话网是模拟通信系统,它是为传输话音信息而设计的。要在电话网上传送数字信号,必须经过调制和解调。 实现调制和解调两个过程的设备称为“调制解调器”(Modulator Demodulator-Modem)
方法:选取音频范围某一频率的正(余)弦模拟信号作为载波,用以运载所要传送的数字信号。 用传送的数字信号改变载波信号的幅值、频率或相位,使之在信道上传送; 到达信道另一端,再将数字信号从载波中取出。
1 数字信号 (a)调幅 (b)调频 (c)调相 按数字信号的值改变载波信号的幅度 按数字信号的值改变载波信号的频率 按数字信号的值改变载波信号的相位
3. 发送时钟和接收时钟 CLK(主时钟) 数据输入寄存器 (串行数据输入) 输入移位寄存器 输入移位脉冲 ÷1,÷16,÷32 数据输出寄存器 (串行数据输出) 输出移位寄存器 ÷1,÷16,÷32 输出移位脉冲 发送时钟
F(时钟频率)=波特率因子*波特率 4. 波特率因子 波特率因子: 数据传输率(波特率)与时钟频率之间的比例系数. 给定时钟频率,选择不同的波特率因子可得到不同的波特率。 例如:f = 19.2 kHz,若选波特率因子为16,则波特率为1200 bps。 若选定波特率因子和波特率,则相应的确定了对时钟频率的要求。
1200*16=19200(时钟频率)→若外部时钟电路的频率F=1MHz,需用8253分频,试计算分频系数(8253的计数初值)=? 8253计数初值=时钟频率/(波特率*波特率因子)
8251 外部的 时钟电路 1MHz 8253 19.2KHz ÷1,÷ 16,… CLK OUT N分频 移位脉冲
5.异步方式与同步方式 (1) 异步方式(Asynchronous):也称“起止同步式”。 串行异步传输数据格式: 11…1 5-8位数据位 1/0 11…1 5-8位数据位 停止位或空闲位 1… 1 起始位 奇偶校验 第n个字符 空闲位 第n+1个字符 低位 高位
(2)同步方式(Synchronous) 串行同步通信信息格式 同步字符(SYN1) 同步字符(SYN2) 数据(DATA) …
数据场 同步通信的效率(协议开销) 例:SDLC/HDLC帧格式: 假定数据长度为2048位, 通信效率为:2048/(2048+48)=97% 协议开销仅为3% 一般公式:SDLC/HDLC协议开销=1.0-N/(N+48),其中N为发送数据的比特数。 标志 01111110 地址 8位 控制 8位 数据场 CRC 8位 CRC 8位 标志 01111110
15.5 可编程串行通信接口8251A Intel 8251A是通用同步/异步收发器USART (Universal Synchronous Asynchronous Receiver/Transmitter) ,它是专为Intel 微处理器设计的,可用作CPU和串行外设的接口电路。 15.5.1 8251A的基本性能 (1) 可用于同步和异步传送。 (2) 同步传送:5~8位/字符;内部或外部字符同步;可自动插入同步字符。 (3) 异步传送: 5~8位/字符;时钟速率为通信速率的1、16、64倍。
(4) 异步传送时,可产生中止字符(BreakCharacter);可产生1、1 (5) 波特率:异步:DC-19.2K;同步:DC-64K。 (6) 全双工、双缓冲器发送和接收。 (7) 差错检测:具有奇偶错、溢出错和帧格式错等差错检测电路。 (8) 28脚双列直插式封装。 (9) 全部输入输出与TTL电平兼容;单一+5V电源;单一TTL电平时钟;
PROGRAMMABLE COMMUNICATION INTERFACE Intel 8251A PROGRAMMABLE COMMUNICATION INTERFACE n Synchronous and Asynchronous Operation n Synchronous 5-8 Bit Characters;Internal or External Character Synchronization; Automatic Sync Insertion n Asynchronous 5-8 Bit Characters; Clock Rate-1,16 or 64 Times Baud Rate; Break Character Generation;1,1.5, or 2 Stop Bits; False Start Bit Detection; Automatic Break Detect and Handling; n Synchronous Baud Rate -DC to 64K Baud n Asynchronous Baud Rate -DC to 19.2K Baud n Full Duplex, double Buffered, Transmitter and Receiver n Error Detection -Parity, Overrun and Framing n Fully Compatible with 8080/8085 CPU n 28-Pin DIP Package n All Inputs and Outputs are TTL Compatible n Single + 5V Supply n Single TTL Clock
15.5.2 8251A的结构与引脚功能 1. 8251A 的引脚 8251A有28条引脚,引脚分配如图15.47所示。
图 15.47 8251A的引脚信号 8251A D2 1 28 D1 D3 2 27 D0 RxD 3 26 Vcc GND 4 25 RxC D4 5 24 DTR D5 6 23 RTS 8251A D6 7 22 DSR D7 8 21 RESET TxC 9 20 CLK WR 10 19 TxD CS 11 18 TxEMPTY C/D 12 17 CTS RD 13 16 SYNDET/BRKDET RxRDY 14 15 TxRDY 2 图 15.47 8251A的引脚信号
2. 8251A的结构和工作原理 8251A的结构方块图如图15.48所示。 由图中可看出8251A可分为5个部分。 (1) 接收器 (2) 发送器 (3) 数据总线缓冲器 (4) 调制解调器控制电路 (5) 读写控制逻辑电路
图 15.48 8251A 内部结构框图 内 部 总 线 发送 缓冲器 并-串 转换 发送器 数据总线 缓冲器 发送控制电路 读/写 TXD D7-D0 发送控制电路 TXRDY RESET 读/写 控制逻辑电路 CLK TXEMPTY C/D TXC RD WR 缓冲器 接收 串-并 转换 接收器 CS RXD DSR 调制/解调 控制电路 DTR CTS RXRDY RTS 接收控制电路 RXC SYNDET 图 15.48 8251A 内部结构框图
8251A是CPU与外设之间的接口电路,其对外的接口信号可分为两组: 另一组是与外设之间的接口信号(参见图15.49)。
图 15.49 8251A的对外接口信号 CLK D7-D0 DTR 8086 8251A 外设 DSR M/IO 译码 RTS AB CTS CS TXD C/D RD RD RXD WR WR TXC TXRDY TXE RXC RXRDY SYNDET 计数器/ 定时器 RESET 图 15.49 8251A的对外接口信号
1. 8251A与CPU之间的接口信号 (1) 复位信号RESET (2) 数据线D7~D0 (3) 读写控制信号 (4) 收发联络信号
8251A的读/写控制真值表 CS C/D RD WR 操作 0 0 0 1 CPU从8251A读数据 0 0 1 0 CPU往8251A写数据 0 1 0 1 CPU从8251A读状态 0 1 1 0 CPU往8251A写控制命令 0 × 1 1 D7~D0为高阻态 1 × × × D7~D0为高阻态
2. 8251A与外设之间的接口信号 有四个Modem控制信号DTR、DSR、RTS和CTS。 另外还有四个信号,如下所述: (1) 接收器时钟RXC (2) 发送器时钟TXC (3) 接收数据线RXD (4) 发送数据线TXD
图3-5 V.24/RS-232C 信号连接与定时关系 a)信号线连接 本 地 Modem 远 程 Modem 计 算 机 终 端 1 2 3 4 5 6 7 8 20 22 101 103 104 105 106 107 102 109 108 125 机壳地 发送数据(TXD) 接收数据(RXD) 请求发送(RTS) 允许发送(CTS) Modem就绪( DSR) 信号地(GND) 载波检测(CD) 终端就绪(DTR) 呼叫指示 载波检测 电话线 CCITT 信号名 插脚号 图3-5 V.24/RS-232C 信号连接与定时关系 a)信号线连接
8251A的编程包括两个部分,一个是方式指令字,另一个是命令指令字。 前者用来定义8251A的工作方式,它必须紧接在复位后由CPU写入; 后者用来指定芯片的实际操作,只有在写入了方式选择控制字后,才能由CPU写入。 1. 方式指令字 方式指令字的格式如图15.50所示。
D7 D6 D5 D4 D3 D2 D1 D0 异步 1 同步 S2 S1 EP PEN L2 L1 B2 B1 00 同步方式 01 异步方式(X1) 10 异步方式(X16) 11 异步方式(X64) 00 字符长度为5位 01 字符长度为6位 10 字符长度为7位 11 字符长度为8位 1 带奇偶校验 0 不带奇偶校验 1 偶校验 0 奇校验 异步 无效 1 1位停止位 1.5位停止位 2位停止位 同步 1个同步字符,外同步,SYNDET为输入 1个同步字符,内同步,SYNDET为输出 2个同步字符,外同步,SYNDET为输入 2个同步字符,内同步,SYNDET为输出 图 15.50 8251A的方式指令字
命令指令字的格式如图15.51所示,它直接让8251A实现某种操作或进入规定的工作状态。 2. 命令指令字 命令指令字的格式如图15.51所示,它直接让8251A实现某种操作或进入规定的工作状态。
D7 D6 D5 D4 D3 D2 D1 D0 图 15.51 8251A的命令指令字 EH IR RTS ER SBRK RXE DTR TXEN 1 允许发送 1 进入搜索方式 1 内部复位 1 数据终端准备好 1 允许接收 1 发送中止字符 0 正常工作 1 清除错误标志 1 请求发送 图 15.51 8251A的命令指令字
3. 状态字 CPU可以在8251A工作过程中利用输入指令读取当前8251A的状态字,从而可以检测接口和数据传输的工作状态。 8251A状态字的格式如图15.52所示。
D7 D6 D5 D4 D3 D2 D1 D0 图 15.52 8251A 的状态字 1 发送器准备好 1 数据通信设备准备好 帧格式错标志 DSR SYNDET/BRKDET FE OE PE TXEMPTY RXRDY TXRDY 1 发送器准备好 1 数据通信设备准备好 帧格式错标志 溢出错标志 奇偶错标志 1 接收器准备好 1 发送器空 SYNDET BRKDET 1 已达到同步 0 未达到同步 1 接收到中止字符 0 正常工作 图 15.52 8251A 的状态字
(1) 三个错误标志位PE、OE和FE, PE=1是奇偶校验错;OE=1是溢出错,也称为“超越错”;FE=1是“帧格式错”,它们只对异步方式有效。出现这三种错误时都不中止8251A的工作,它们可以用操作命令字中的ER位来复位。 (2) RXRDY、TXE(TXEMPTY)和SYNDET/BRKDET位与同名引脚的状态含义相同,此处不再重述。 (3) DSR位是数据通信设备准备好状态位, DSR=1表示调制解调器或其他外设已处于准备好状态,此时DSR输入信号有效。
通常TXRDY状态位提供CPU查询,而TXRDY引脚的输出信号作为中断请求信号发给CPU。 (4) TXRDY是发送器准备好位,它与输出引脚TXRDY的含义有所不同。 TXRDY状态位为“1”只反映当前发送缓冲器已空,而TXRDY输出引脚为“1”时,除发送缓冲器已空外,还需要以CTS=0和TXEN=1为条件,即存在如下逻辑关系: 输出引脚TXRDY为“1”=发送缓冲器空 ·(CTS=0)·(TXEN=1) 通常TXRDY状态位提供CPU查询,而TXRDY引脚的输出信号作为中断请求信号发给CPU。
4. 8251A的初始化及数据传送流程图 8251A的初始化及数据传送流程图如图15.53所示。
图 15.53 8251A 初始化和数据传送流程图 Y N Y N Y N N Y RESET 输出方式指令字 异步方式? 输出第一个同步字符 Y 是单同步? N 输出第二个同步字符 输出命令指令字 Y 有复位命令否? N 传送数据 输出命令指令字或输入状态字 N 数据完否? Y 图 15.53 8251A 初始化和数据传送流程图
8251A的初始化编程必须在复位操作之后,先设置方式指令字; 如果设定在异步方式,则马上要输出命令指令字进行设置,然后才能进行数据传送; 在数据传送过程中,也可使用命令指令字进行某些操作设置或读取8251A的状态; 在数据传送结束时,若使用IR位为“1”的内部复位命令使8251A复位,则它又可重新接收方式指令字,从而改变工作方式完成其他传送任务。
如果设定8251A工作在同步方式,那么在输出方式指令字后,应紧跟着输出一个同步字符或两个同步字符,然后再输出命令指令字,后面的操作与异步方式相同。
5. 编程举例 (1) 异步方式下的初始化编程 设定8251A工作于异步方式,波特率因子为64,每字符7个数据位,偶校验,2位停止位,则方式指令字为11111011=FBH。 操作命令字的设定,例如使8251A的发送器允许,接收器允许,使状态寄存器中的3个错误标志位复位,使数据终端准备好信号DTR输出低电平,则命令指令字应为00010111=17H。
MOV AL, 0FBH ; 输出方式指令字 若8251A的端口地址为50H、51H,则本例初始化程序如下: OUT 51H, AL MOV AL, 17H ; 输出命令指令字
(2) 同步方式下的初始化编程举例 8251A工作于同步方式,双同步字符,同步字符设定为16H,内同步,偶校验,每字符7个数据位,则方式指令字为00111000B=38H。 命令指令字设定为10010111B=97H,使发送器允许,接收器允许,使错误标志复位,开始搜索同步字符,并通知调制解调器,数据终端设备已准备就绪。
8251A的端口地址为50H、51H,则本例初始化程序如下: MOV AL, 38H ; 输出方式指令字 OUT 51H, AL MOV AL, 16H ; 输出两个同步字符16H OUT 51H, AL MOV AL, 97H ;输出命令指令字 OUT 51H, AL CPU执行上述程序之后,即完成了对8251A同步方式的初始化编程。
15.5.5 8251A 的应用 1. 利用8251A实现与终端的通信 2. 利用8251A实现双机通信
由于是近距离通信,因此不用Modem,两台微机直接通过RS-232C相连即可,且通信双方均作为数据终端设备DTE;由于采用EIA RS-232C接口标准,所以需要加接电平转换电路。 通信时假设对方已准备好,所以可不使用四根联络信号(指DTR,DSR,RTS,CTS),仅使8251A的CTS接地即可。 甲乙两机可进行半双工或全双工通信。CPU与接口之间可按查询方式或中断方式进行数据传送。 本例采用半双工通信,查询方式,异步传送。
8251A 8251A EIA/ TTL 电 平 转 换 EIA/ TTL 电 平 转 换 系统主时钟 系统主时钟 甲机 乙机 8251A DTE DTE CLK 8251A EIA/ TTL 电 平 转 换 EIA/ TTL 电 平 转 换 CLK TxD 时钟电路 TxD 2 2 TxD TxD TxC RxD 3 3 RxD RxD RxD RxC CPU 总线 GND 7 7 CPU总线 CTS CTS DSR DSR DTR DTR RTS TxC RS-232C接口 RTS RxC 时钟电路 图 15.55 利用8251A进行双机通信硬件连接图
(1) 发送端初始化程序及控制程序如下所示(设在此之前已对8251A进行了复位操作): START: MOV DX, 8251A控制端口号 MOV AL, 7AH ; 输出方式指令字,异步方式,7位数据位,1位停止位 OUT DX, AL ; 偶校验,波特率因子为16 MOV AL, 11H ;输出命令指令字,发送器允许,错误标志复位 OUT DX, AL MOV SI, 发送数据块首地址 MOV CX, 发送数据块字节数 NEXT: MOV DX, 8251A控制端口号 IN AL, DX ;输入状态字 TEST AL, 01H ; 查询状态位TXRDY是否为“1” JZ NEXT ; 发送未准备好,则继续查询 MOV DX, 8251A数据端口号 MOV AL, [SI] ; 发送准备好,则从发送区取一字节数据发送 INC SI ; 修改地址指针 LOOP NEXT ; 未发送完,继续 HLT
(2) 接收端初始化及控制程序如下所示(设在此之前已对8251A进行了复位操作): BEGIN: MOV DX, 8251A控制端口号 MOV AL, 7AH ; 输出方式指令字 OUT DX, AL MOV AL, 14H ; 输出命令指令字 MOV DI, 接收数据块首地址 MOV CX, 接收数据块字节数 L1: MOV DX, 8251A控制端口号 IN AL, DX ; 输入状态字 TEST AL, 02H ; 查询状态位RXRDY是否为“1” JZ L1 ; 接收未准备好,则继续查询 TEST AL, 08H ; 检测是否有奇偶校验错 JZ ERR ; 若有错,则转出错处理 MOV DX, 8251A数据端口号 IN AL, DX ; 接收准备好,则接收一个字节 MOV [DI], AL ; 存入接收数据区 INC DI ; 修改地址指针 LOOP L1 ; 未接收完,则继续 HLT
8251A初始化的补充说明(关于先写3次“0”的问题) MOV DX, 2B9H MOV AL, 0 OUT DX, AL ; OUT DX, AL ;向8251A 写3次“0” MOV AL, 40H ;内部复位 OUT DX,AL MOV AL, 4EH ; 方式指令字 OUT DX, AL; MOV AL, 27H ; 命令指令字 OUT DX, AL
Intel 8251A PROGRAMMABLE COMMUNICATION INTERFACE A Reset Operation (internal or external) will return the 8251A to the Mode instruction format. Note: Internal Reset on Power-up: When power is first applied ,the 8251A may come up in the Mode, Sync character or Command Format. To guarantee that the device is in the Command instruction format before the Reset command is issued. It is safest to execute the worst-case initialization sequence (sync mode with two sync characters). Loading three 00Hs consecutively into the device with C/D=1 configures sync operation and writes two dummy 00H sync characters. An internal Reset command (40H) may then be issued to return the device to the “idle” state.
第15章 作业 P548 第35题 第36题