串行通信和DMA控制接口_第1页
串行通信和DMA控制接口_第2页
串行通信和DMA控制接口_第3页
串行通信和DMA控制接口_第4页
串行通信和DMA控制接口_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、10 串行通信和DMA控制接口10.1 串行通信的基本概念串行通信指的是数据一位一位地依次传输,每一位数据占据一个固定的时间长度。这种情况只要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外部设备之间的远距离通信,但串行通信的速度比较慢。串行通信线路有如下3种方式如图所示:(1) 单工通信:它只允许一个方向传输数据。A只作为数据发送器,B只作为数据接收器,不能进行反方向传输。(2) 半双工通信:它允许两个方向传输数据,但不能同时传输,只能交替进行,A发B收或B发A收。在这种情况下,为了控制线路换向,必须对两端设备进行控制,以确定数据流向。这种协调可以靠增加接口的附加控制线

2、来实现,也可用软件约定来实现。(3) 全双工通信:它允许两个方向同时进行数据传输,A收B发的同时可A发B收,如图所示。显然,两个传输方向的资源必须完全独立,A与B都必须有独立的接收器和发送器,从A到B和从B到A的数据通路也必须完全分开(至少在逻辑上是分开的)。图图8.2110.1.2 串行通信数据的收发方式在串行通信中数据的收发可采用异步和同步两种基本的工作方式。1. 异步通信方式异步通信所采用的数据格式是以一组不定“位数”数组组成。第1位称起始位,它的宽度为1位,低电平;接着传送一个字节(8位)的数据,以高电平为“1”,低电平为“0”;最后是停止位,宽度可以是1位,1.5位或2位,在两个数据

3、组之间可有空闲位。异步通信的数据格式见图10.2。每秒传送数据的位数称为传送速率,即波特率(band rate)。波特率一般在300,600,900,1,200,2,400,9,600波特之间。计算机之间的异步通信速率一经确定后,一般不应变动,但通信的数据是可变动的,也就是数据组之间的空闲位是可变的。2. 同步通信方式在同步通信时所使用的数据格式根据控制规程分为面向字符及面向比特的两种。(1) 面向字符型的数据格式:面向字符型的同步通信数据格式可采用单同步、双同步及外同步3种数据格式,如下图所示。图图8.24单同步是指在传送数据之前先传送一个同步字符“SYNC”,双同步则先传送两个同步字符“S

4、YNC”。接收端检测到该同步字符后开始接收数据。外同步通信的数据格式中没有同步字符,而是用一条专用控制线来传送同步字符,使接收方及发送端实现同步。当每一帧信息结束时均用两个字节的循环控制码CRC为结束。(2) 面向比特型的数据格式: 根据同步数据链路控制规程(SDLC),面向比特型的数据以帧为单位传输,每帧由6个部分组成。第1部分是开始标志“7EH”;第2部分是一个字节的地址场;第3部分是一个字节的控制场;第4部分是需要传送的数据,数据都是位(bit)的集合;第5部分是两个字节的循环控制码CRC;最后部分又是“7EH”,作为结束标志。面向比特型的数据格式如图所示。图图8.25在SDLC规程中不

5、允许在数据段和CRC段中出现6个“1”,否则会误认为是结束标志。因此要求在发送端进行检验,当连续出现5个“1”,则立即插入一个“0”,到接收端要将这个插入的“0”去掉,恢复原来的数据,保证通信的正常进行 。通常,异步通信速率要比同步通信的低。最高同步通信速率可达到800k位,因此适用于传送信息量大,要求传送速率很高的系统中。10.2 可编程串行通信接口芯片8251A8251A是一个通用串行输入/输出接口,可用来将86系列CPU以同步或异步方式与外部设备进行串行通信。它能将并行输入的8位数据变换成逐位输出的串行信号;也能将串行输入数据变换成并行数据,一次传送给处理机。广泛应用于长距离通信系统及计

6、算机网络。 10.2.1 8251A芯片内部结构及其功能8251A由发送器、接收器、数据总线缓冲存储器、读/写控制电路及调制/解调控制电路等5部分组成,如图10.4(a)所示。引脚信号如图10.4(b)所示。图图8.26图图8.271. 发送器8251A的发送器包括发送缓冲存储器,发送移位寄存器(并串转换)及发送控制电路3部分,CPU需要发送的数据经数据发送缓冲存储器并行输入,并锁存到发送缓冲存储器中。如果是采用同步方式,则在发送数据之前,发送器将自动送出一个(单同步)或两个(双同步)同步字符(Sync)。然后,逐位串行输出数据。如果采用异步方式,则由发送控制电路在其首尾加上起始位及停止位,然

7、后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出,其发送速率由TXC端上收到的发送时钟频率决定。2. 接收器8251A的接收器包括接收缓冲存储器,接收移位寄存器(串并转换)及接收控制电路3部分。外部通信数据从RXT端,逐位进入接收移位寄存器中。如果是同步方式,则要检测同步字符,确认已经达到同步,接收器才可开始串行接收数据,待一组数据接收完毕,便把移位寄存器中的数据并行置入接收缓冲存储器中;如果是异步方式,则应识别并删除起始位和停止位。这时RXDRY线输出高电平,表示接收器已准备好数据,等待向CPU输出。8251A接收数据的速率由RXC端输入的时钟频率决定。接收缓冲存储器和接收移位寄存

8、器构成接收器的双缓冲结构。3. 数据总线缓冲存储器数据总线缓冲存储器是CPU与8251A之间信息交换的通道。它包含3个8位缓冲寄存器,其中两个用来存放CPU向8251A读取的数据及状态,当CPU执行IN指令时,便从这两个寄存器中读取数据字及状态字。另一个缓冲寄存器存放CPU向8251A写入的数据或控制字。当CPU执行OUT指令时,可向这个寄存器写入,由于两者公用一个缓冲寄存器,这就要求CPU在向8251A写入控制字时,该寄存器中无将要发送的数据。为此,该接口电路必需要有一定的措施来防止。4. 读/写控制电路读/写控制电路用来接收一系列的控制信号,由它们可确定8251A处于什么状态,并向8251

9、A内部各功能部件发出有关的控制信号,因此它实际上是8251A的内部控制器。由读/写控制电路接收的控制信号如下:(1) RESET复位信号。向8251A输入,高电平有效。RESET有效,迫使8251A中各寄存器处于复位状态,收、发线路上均处于空闲状态。(2) CLK主时钟。向8251A输入。CLK信号用来产生8251A内部的定时信号。对于同步方式,CLK必须大于发送时钟(TXC)和接收时钟(RXC)频率的30倍。对于异步方式,CLK必须大于发送和接收时钟的4.5倍。8251A还规定CLK频率要在0.743.1MHz范围内。(3) CS选片信号。由CPU输入,低电平有效。CS有效,表示该8251A

10、芯片被选,通常由8251A的高位端口地址译码得到。(4) RD和WR读和写控制信号。由CPU输入,低电平有效。(5) C/D控制/数据信号。C/D1,表示当前通过数据总经传送的是控制字或状态信息;C/D0,表示当前通过数据总线传送的是数据;均可由一位地址码来选择。5. 调制/解调控制电路当使用8251A实现远距离串行通信时,8251A的数据输出端要经过调制器将数字信号转换成模拟信号,数据接收端收到的是经过解调器转换来的数字信号,因此8251A要与调制/解调器直接相连,它们之间的接口信号如下:(1) DTR数据终端准备好信号,向调制/解调器输出,低电平有效。DTR有效,表示CPU已准备好接收数据

11、,它可软件定义。控制字中DTR位1时,输出DTR为有效信号。(2) DSR数据装置准备好信号。由调制/解调器输入,低电平有效。DSR有效,表示调制/解调器或外部设备已准备好发送数据,它实际上是对DTR的回答信号。CPU可利用IN指令读入8251A状态寄存器内容,检测DSR位状态,当DSR1时,表示DSR有效。(3) RTS请求发送信号。向调制/解调器输出,低电平有效。RTS有效,表示CPU已准备好发送数据,可由软件定义。控制字中RTS位1时,输出RTS有效信号。(4) CTS清除发送信号。由调制/解调器输入,低电平有效。CTS有效,表示调制/解调器已作为接收数据准备,只要控制字中TXEN位1,

12、CTS有效时,发送器才可串行发送数据。它实际上是对RTS的回答信号。如果在数据发送过程中使CTS无效,或TXEN0,发送器将正在发送的字符结束时停止继续发送。10.2.2 8251A芯片的编程可编程串行通信接口芯片8251A在使用前必须进行初始化,以确定它的工作方式,传送速率,字符格式以及停止位长度等,可使用的控制字如下: 1. 方式选择控制字其使用格式如图10.5所示。B2B1位用来定义8251A的工作方式是同步方式还是异步方式,如果是异步方式还可由B2B1的取值来确定传送速率。1表示输入的时钟频率与波特率相同,允许发送和接收波特率不同,RXC和TXC也可不相同,但是它们的波特率系数必须相同

13、;16表示时钟频率是波特率的16倍;64表示时钟频率是波特率的64倍。图图10.5因此通常称1,16和64为波特率系数,它们之间存在如下的关系:发送/接收时钟频率发送/接收波特率波特率系数L2L1位用来定义数据字符的长度可为5,6,7或8位。PEN位用来定义是否带奇偶校验,称作校验允许位。在PEN1情况下,由EP位定义是采用奇校验还是偶校验。S2S1位用来定义异步方式的停止位长度(1位、15位或2位)。对于同步方式,S1位用来定义是外同步(S11)还是内同步(S10),S2位用来定义是单同步(S21)还是双同步(S20)。2. 操作命令控制字其使用格式如图10.6所示,TXEN位是允许发送位,

14、TXEN1,发送器才能通过TXD线向外部串行发送数据。图图10.6DTR位是数据终端准备好位。DTR1,表示CPU已准备好接收数据,这时DTR引线端输出有效。RXE位是允许接收位。RXE1,接收器才能通过RXD线从外部串行接收数据。SBRK位是发送断缺字符位。SBRK1,通过TXD线一直发送“0”信号。正常通信过程中SBRK位应保持为“0”。ER位是清除错误标志位。8251A设置有3个出错标志,分别是奇偶校验标志PE,越界错误标志OE和帧校验错标志FE。ER1时将PE,OE和FE标志同时清“0”。RTS位是请求发送信号。RTS1,迫使8251A输出RTS有效,表示CPU已作好发送数据准备,请求

15、向调制/解调器或外部设备发送数据。IR位是内部复位信号。IR1,迫使8251A回到接收方式选择控制字的状态。EH位为跟踪方式位。EH位只对同步方式有效,EH1,表示开始搜索同步字符,因此对于同步方式,一旦允许接收(RXE1),必须同时使EH1,并且使ER1,清除全部错误标志,才能开始搜索同步字符。从此以后所有写入的8251A的控制字都是操作命令控制字。只有外部复位命令RESET1或内部复位命令IR1才能使8251A回到接收方式选择命令字状态。3. 状态控制字CPU可在8251A工作过程中利用IN指令读取当前8251A的状态控制字,其使用格式如图10.7所示。图图10.7CPU可在任意时刻用IN

16、指令读8251A状态字,这时C/D引线端应输入为“1”,在CPU读状态期间,8251A将自动禁止改变状态位。对8251A进行初始化编程,必须在系统复位之后,总是先使用方式选择控制字,并且必须紧跟在复位命令之后。如果定义8251A工作于异步方式,那么必须紧跟操作命令控制字进行定义,然后才可开始传送数据。在数据传送过程中,可使用操作命令字重新定义,或使用状态控制字读取8251A的状态,待数据传送结束,必须用操作命令控制字将IR位置“1”,向8251A传送内部复位命令后,8251A才可重新接收方式选择命令字、改变工作方式完成其他传送任务。如果是采用同步工作方式,那么在方式选择控制字之后应输出同步字符

17、,在一个或两个同步字符之后再使用操作命令控制字,以后的过程同异步方式。10.2.3 8251A串行接口应用举例采用8251A实现串行接口通信是在两台微机中各设置一个RS232串行接口。每个RS232串行接口采用一片8251A芯片,其通信结构流程图如图8.32所示。可采用异步或同步方式实现单工、双工或半双工通信。当采用查询方式,异步传送,双方实现半双工通信时,初始化程序由两部分组成。一部分是将一方定义为发送器,另一部分是将对方定义为接收器。发送器CPU每查询到TXRDY有效,则向8251A并行输出一个字节数据;接收端CPU每查询到RXRDY有效,则从8251A并行输入一个字节数据;一直进行到全部

18、数据传送完毕为止。图图8.32发送端初始化程序与发送控制程序如下所示:STT:MOVDX,8251A控制端口;MOVAL,7FHOUTDX,ALMOVAL,11HOUTDX,ALMOV DI,发送数据块首地址MOV CX,发送数据块字节数;NEXT:MOVDX,8251A控制端口IN AL,DXAND AL,01HJZ NEXTMOV DX,8251A控制端口;MOV AL,DIOUT DX,AL将将8251A定义为异步方式定义为异步方式;8位数据,位数据,1位停止位,偶校验位停止位,偶校验;取波特率系数为取波特率系数为64,允许发送,允许发送设置发送指针和计数值设置发送指针和计数值;查询;查

19、询TXRDY有效否有效否向向8251A输出一个字节数据输出一个字节数据INC DILOOP NEXTHLT接收端初始化程序和接收控制程序如下所示:SRR:MOV DX,8251A控制端口MOV AL,7FHOUT DX,AL ;初始化8251AMOV AL,04HOUT DX,ALMOV DL, 接收数据块首地址 ;置接收数据块指针和计数值MOV CX,接收数据字节数COMT:MOV DX,8251A控制端口IN AL,DXROR AL,1;查询RXRDY有效否ROR AL,1JNC COMTROR AL,1ROR AL,1;查询是否有奇偶校验错JC ERRMOV DX 8251A数据端口IN

20、 AL,DX;输入一个字节到接收数据块MOV DI,ALINC DILOOP COMTHLT10.3 可编程DMA控制器8237ADMA控制器8237A是Intel86系列微处理器的配套芯片,可用来接管CPU对总线的控制权,在存储器与高速外设之间建立直接进行数据块传送的高速通路。8237A必须与一个8位锁存器(8212或其他代用芯片)配套使用,才可形成完整的4通道DMA控制器。各通道可分别完成3种不同的操作:(1) DMA读操作读存储器送外设。(2) DMA写操作读外设写存储器。 (3) DMA校验操作通道不进行数据传送操作,只是完成校验功能。任一通道进入DMA校验方式时,不产生对存储器和I/

21、O设备的读/写控制信号,但是仍保持对系统总线的控制权,并且每一个DMA周期都将响应外部设备的DMA请求,发出DACKi信号,外设可使用这一响应信号对所得到的数据进行某种校验操作,因此,DMA校验操作并不是由8237A本身完成的。8237A可处于两种不同的工作状态,在8237A未取得总线控制权以前,CPU处于主控状态,而8237A处于从属状态,一旦8237A取得总线控制权后,8237A便上升为主控状态,完全在8237A控制下完成存储器和外设之间的数据传送功能,CPU不再参与数据传送的操作。10.3.1 8237A芯片内部结构8237A可编程DMA控制器由数据总线缓冲存储器、读写逻辑部件、工作方式

22、寄存器、状态寄存器、优先选择逻辑及四个DMA通道组成,内部结构如图10.9所示。8237A芯片有40条引脚,采用双列直插式封装,其引脚信号功能如图10.10所示。图图10.9图图10.101. DMA通道0通道3作为8237A芯片的主体是4个结构完全相同的DMA通道。每个通道内包含两个16位寄存器,它们是地址寄存器和终点计数寄存器,前者用来存放进行DMA操作的存储器区域的首地址的偏移地址值;后者的低14位(D13D0)用来存放要求传送的字节数n-1,n为本次DMA操作所需要执行的DMA周期数,因此,一个数据块的最大容量为214=16KB。在任何DMA操作周期内,这2位不允许修改,但是可在各个数

23、据块传送之间进行修改。这就是说,一旦被定义,任何一个通道的DMA写、DMA读或DMA校验操作就一直进行到整个数据块操作完成为止。每个通道各有一条DMA请求线和一条DMA认可线。DMA请求线DRQ0DRQ3,由请求传送数据的外部设备输入,高电平有效;DMA认可线DACK0DACK3,由8237A取得总线控制权后向发出请求的外部设备输出,低电平有效,它实际上是DRQi的回答信号。2. 数据总线缓冲存储器这是一个双向三态8位缓冲存储器,是与系统数据总线的接口,当8237A处于从属状态时,CPU通过这个缓冲存储器对8237A进行读/写操作。当8237A处于主控状态时,在DMA周期内,8237A将所选通

24、道的地址寄存器的高8位地址码(A15A8)经过这个缓冲存储器锁存到8212锁存器中,然后该缓冲存储器将处于浮空状态。3. 读/写逻辑部件当8237A处于从属状态时,用来接收由CPU输入的读/写控制信号和端口地址等信息;当8237A处于主控状态时,通过它发出读/写控制信号和地址信息。(1) I/OR读信号,双向三态,低电平有效。当8237A处于从属状态时, I/OR为输入线,是CPU向8237A发出的读命令,可读取8237A中某个通道内某个寄存器的内容。当8237A处于主控状态时, I/OR为输出线,是8237A向外部设备发出的读命令,可从外部设备中读取数据。(2) I/OW输入/输出写控制信号

25、,双向、三态,低电平有效。当8237A处于从属状态时, I/OW为输入线,是CPU向8237A发出的写命令,可向8237A写入控制字或通道数据。当8237A处于主控状态时, I/OW为输出线,是8237A向外部设备发出的写命令,可向外部设备写入数据。(3) A3A0输入/输出地址线。当8237A处于从属状态时,这是由CPU向8237A输入的低4位地址码,用来寻址8237A中的某个端口。当8237A处于主控状态时,这是8237A向存储器输出的低4位地址码。(4) CS选片信号,输入,低电平有效。当8237A处于从属状态时,由高位地址码(A15A2)译码得到对8237A的片选信号。当8237A处于

26、主控状态时,CS被自动禁止,以免8237A正在执行DMA传送期间重新被选。(5) CLK时钟输入,用来确定8237A的工作速率。(6) RESET复位信号,由外部输入,高电平有效。RESET有效时,清除所有寄存器的内容,控制线浮空,禁止DMA操作,复位之后,必须重新初始化,8237A才能工作。4. 控制逻辑部件控制逻辑部件主要用来向CPU发出总线请求,得到CPU认可进入主控状态后,由它发出各种控制信号。(1) HRQ(hold request)保持请求信号,向CPU输出,高电平有效。当任一通道收到外部设备的DMA请求时,8237A立即向CPU发出HRQ,表示要求使用总线。(2) HLDA(ho

27、ld acknowledge)保持响应信号,由CPU输入,高电平有效。CPU收到HRQ信号,待当前总线周期执行完,向8237A回送HLDA信号,表示将总线控制权交给8237A,此后,8237A进入主控状态,可开始DMA操作。(3) READY准备就绪信号,输入,高电平有效。8237A在主控状态下进行DMA的操作过程中,若存储器或外部设备来不及完全读/写操作,要求延长读/写操作周期时,可使READY线无效,8237A将在DMA周期中增设等待周期,直到READY有效为止。(4) MEMR和MEMW读/写存储器控制信号,三态输出,低电平有效。这是8237A处于主控状态时,向存储器输出的读/写控制信号

28、。当MEMR有效时,必然I/OW有效,完成从存储器向外部设备的数据传送。反之,MEMW有效时,必然I/OR有效,完成读外部设备写存储器的数据传送。(5) A7A4地址输出线。8237A处于主控状态时,在DMA周期中通过这条线输出的是16条存储器地址的A7A4位。(6) TC(terminal count)终点计数信号,输出,高电平有效。当所选通道的终点计数寄存器中的计数值为0时,TC输出有效,表示当前正在传送的是最后一个数据字节,可用来通知外设结束数据传送操作,使DRQi信号无效。(7) MARK(modulo 128 MARK)模128标记,输出,高电平有效。MARK有效可用来通知被选的外部设备,当前是上一次输出MARK有效后的第128个DMA周期。MARK总是在距数据块结束每隔128周期产生。至于第一个MARK距数据块开始是多少周期

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论