-1-基于TPC-USB实验系统的串行通信协议研究第一部分概论随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。在计算机领域内,有两种数据通信方式:并行通信和串行通信。并行通信是把一个字符的各数位用几条线同时进行传输,传输速度快,信息率高。但它比串行通信所用的电缆多,故常用在传输距离较短、数据传输率较高的场合。串行通信是指数据一位一位地依次传输,每一位数据占据一个固定的时间长度。随着通信技术和计算机网络技术的发展、Internet网的普及,计算机远程通信已渗透到国民经济的各个领域,而远程通信绝大多数采用串行通信的方式。其只要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信,但串行通信的速度比较慢。串行通信逐位依次顺序传送,通信双方需严格同步。目前串行通信中数据传输的同步方法有两种,即异步方式和同步方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高。异步方式通信ASYNC(AsynchronousDataCommunication),又称起止式异步通信,是计算机通信中最常用的数据信息传输方式。异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。串行异步通信时,接收方不断地检测或监视串行输入线上的电平变化,当检测到有效起始位出现时,便知道接着是有效字符位的到来,并开始接收有效字符,当检测到停止位时,就知道传输的字符结束了。经过一段随机时间间隔之后,又进行下一个字符的传送过程。在设计中,串行异步通信的数据格式,包括数据位的位数、校验位的设置以及停止位的位数根据实际需要,通过可编程串行接口(如:8251A)电路,用软件命令的方式进行设置。在不同传输系统中,这些通信格式的设定完全可以不同;但在同一个传输系统的发送方和接收方的设定必须一致,否则将会由于收、发双方约定的不一致而造成数据传输的错误与混乱。本文基于TPC-USB实验系统,利用8251A接口芯片实现两个实验设备间的异步串行通信。经实验验证,该设计方案是完全可行的。第二部分硬件设计1.硬件基础1.1TPC-USB实验系统简介TPC-USB通用微机接口实验系统是清华大学计算机系研制,清华大学科教仪器厂生产的学生实验系统。该系统由一块USB总线接口模块、一个扩展实验台及软件集成实验环境组成。USB总线接口模块直接通过USB总线电缆与PC机相连,模块与实验台之间由一条50芯扁平电缆连接。(1)50芯总线信号插座及总线信号插孔-2-50芯总线信号插座在实验台左上方,总线插座信号安排如上表。各总线信号采用“自锁紧”插孔在标有“总线”的区域引出,有数据线D0-D7、地址线A19-A0、I/O读写信号IORIOW、存储器读写信号MEMRMEMW、中断请求IRQ、DMA申请DRQ、DMA回答DACK、AEN等。(2)时钟电路如下图所示,输出1MHZ、2MHZ两种信号,供定时器/计数器、A/D转换器、串行接口实验使用。1.28251A芯片1.2.18251A芯片简介825IA是改进型可编程的串行通信接口芯片,既可用于8080/8085微型计算机系统,又可用于8086微型计算机系统,其输出输人和TTL电平兼容。使用单一的+5V电源。逻辑结构由五部分组成:发送器、接受器、数据总线缓冲器、调制懈调控制器和读/写控制电路。发送器用以完成把从CPU传来的并行数据转化成串行数据发出;接受器则是把接到的串行数据转化为并行数据交给CPU;调制解调控制器用以连接调制解调器;读、写控制器用以管理CPU与825IA之间的信息传送;数据总线缓冲器完成8251A内部总线和8086(或808018085)的系统数据总线接口。8251A的内部结构框图如图1.1所示:-3-图1.1:8251内部结构图1.2.28251A芯片的基本性能可工作在同步方式,也可工作在异步方式。同步方式下波特率为0~64000波特,异步方式下波特率为0~19200波特;在同步方式时,每个字符可定义为5、6、7或8位。两种方法实现同步,由内部自动检测同步字符或由外部给出同步信号。允许同步方式下增加奇/偶校验位进行校验;在异步方式下,每个字符可定义为5、6、7或8位,用1位作奇偶校验。时钟速率可用软件定义为波特率的l、16或64倍。另外,8251A在异步方式下能自动为每个被输出的数据增加1个起始位,并能根据软件编程为每个输出数据设置1位、1.5位或2位停止位;能进行出错检测。带有奇偶、溢出和帧错误等检测电路,用户可通过输入状态寄存器的内容进行查询;接口的输入和输出均为TTL电平,单一+5V电源;与Intel8080、8085、8088CPU兼容。1.2.38251A芯片的结构(1)接收缓冲器:从RxD引脚接收串行数据,并将其转换成并行数据。(2)接收控制电路:配合接收缓冲器工作,管理有关接收的所有功能。(3)发送缓冲器:将来自CPU的并行数据加上相应的控制信息,然后转换成串行数据从TxD引脚发出去。(4)发送控制电路:配合发送缓冲器工作,管理有关串行发送的所有功能。数据总线缓冲器:把8251A和系统数据总线相连,传输数据和控制信息。(5)读/写控制电路:配合数据总线缓冲器工作。(6)调制解调控制电路:当计算机进行远程通信时,要用调制器将串行接口传来的数字信号变为模拟信号,再通过电话线发送出去。接收器则是将接收到的模拟信号经解调器变成数字信号,再由串行接口送入计算机。1.2.48251A芯片的引脚功能8251A外部引脚如图1.2所示,它的接口信号可以分为七类,具体如下:-4-图1.2:8251A外部引脚(1)双向的数据信号线D7~D0825lA有8条数据线D7~D0。825lA通过这8根线和CPU的数据总线相连接,实际上,数据线上不只是传输数据,还传输CPU对825lA的编程命令字和825lA送往CPU的状态信息。(2)片选信号/CS低电平有效,芯片被选中才能工作,如果8251A未被选中,数据线D7~D0将处于高阻状态,读/写信号对芯片都不起作用。(3)读/写控制信号RD:读信号,低电平有效。当该信号有效时,并且/CS也为低电平,CPU可以从8251A读取数据或状态信息。WR:写信号,低电平有效。当该信号有效时,并且/CS也为低电平,CPU可以向8251写入数据或控制字。C/D:控制/数据信号,分时复用。用来区分当前读/写的是数据还是控制信息或状态信息。当C/D为高电平时,系统处理的是控制信息或状态信息,从D7~D0端写入8251A的必须是方式字、控制字或同步字符。当C/D为低电平时,写入的是数据。RESET:复位信号,高电平有效。当该信号为高时,8251A实现复位功能,内部所有的寄存器都被置为初始状态。CLK:主时钟信号,用于芯片内部的定时。对于同步方式,它的频率必须大于发送时钟TxC和接收时钟RxC的30倍。对于异步方式,必须大于它们的4.5倍。8251A的时钟频率规定在0.74~3.1MHz的范围内。(4)与发送有关的联络信号TxRDY:发送器准备好信号,高电平有效。当该信号为高电平时,通知CPU,8251A已经准备好发送一个字符,表示CPU可以输入数据。(5)与接收有关的联络信号。RxRDY:接收器准备好信号,高电平有效。当该信号为高时,表示825lA已从外部设备或调制解调器中收到一个字符,等待CPU取走。它可以作为中断请求信号或查询联络信号与CPU联系。(6)8251A与外部设备之间的连接信号8251A与外部设备之间的连接信号分为两类:收发联络信号:-5-DTR:数据终端准备好信号,通知外部设备,CPU当前已经准备就绪。DSR:数据设备准备好信号,表示当前外设已经准备好。RTS:请求发送信号,表示CPU已经准备好发送。CTS:允许发送信号,是对的响应,由外设送往8251A。实际使用时,这4个信号中通常只有CTS必须为低电平,其它3个信号可以悬空。数据信号:TXD:发送器数据输出信号。当CPU送往8251A的并行数据被转变为串行数据后,通过TXD送往外设。RXD:接收器数据输入信号。用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。(7)电源和地VCC:电源输入GND:地2.硬件设计2.1基于TPC-USB实验系统总线与8251A的连接基于TPC-USB实验系统总线和8251A实现相距较近的两台微型计算机相互通信的系统连接简化框图2.1如下:图2.1:系统连接简化框图(1)如图2.1所示,CPU发送指令,甲机发送数据,8251A将数据送到发送缓冲器,经过并串转换后通过TXD发送出去;乙机监视其RXD,有数据发到时,8251A将数据经过串并转换后发送到接收缓冲器,等待CPU来读取。(2)主要信号线连接论述:D0~D7:TPC-USB实验系统上的D0~D7是8088上的数据线,用来传送数据;而8251A是I/O芯片,它的数据线是用于CPU与8251间传送数据的,因此可以把8251A上的数据线直接与TPC-USB实验系统上的D0~D7相连。RD与WR:8251A对于CPU来说是I/O设备,要使8251A上的RD和WR信号有效,必须使CPU的I/O与WR、RD同时有效,而PC/XT总线上的IOR和IOW是-6-I/O读和I/O写,所以只要把8251A上的WR、RD分别与PC/XT总线上的IOR和IOW直接相连就可以了。当CPU执行外设写操作时,WR有效;当CPU执行外设读操作时,RD有效。CTS:当CTS=0时,引脚信号TxD变位为高电平,CPU可以8251A发送数据,,本设计把CTS的引脚直接接地。CLK:TPC-USB实验系统上提供了1MHZ和2MHZ的时钟,因此,只需把TPC-USB系统板上的2MHZ直接连接到8251A的CLK信号,将TPC-USB系统板上的1MHZ经过二分频后连接到8251A的TXC和RXC上,根据8251的参数规定,这是满足8251A的工作要求的。RESET:RESET为复位信号,当该信号有效时,8251A实现复位功能,内部所有的寄存器都被置为初始状态。将8251A上的RESET信号直接连在TPC-USB实验系统上提供的RESET信号上,只要TPC-USB实验系统开启时,就对8251A进行了初始化。C/D:C/D是控制/数据信号,分时复用。用来区分当前读/写的是数据还是控制信息或状态信息。将A0直接与C/¯D相连,通过改变A0的值可以实现片内选。当A0=0(偶地址),选中8251的数据口;当A0=1(奇地址)时,选中8251的数据口。2.2地址译码电路:译码电路的目的是当CPU访问某个I/O系统时,产生对应的片选信号CS。在一个I/O系统中,往往有多个端口,所以译码电路应根据需要对一个地址区间产生片选信号。一般把地址信号分为两部分:一部分是高位地址与CPU或总线的控制信号组合,经过译码电路产生一个片选信号,选择某个I/O接口芯片;另一部分是低位地址线直接连到I/O接口芯片,以实现接口芯片的片内寻址。按照地址译码电路采用的元器件来分,可分为门电路译码,译码器译码;按照译码电路形式来分,又可分为固定式和可选式端口地址译码。(1)方案一:结合本设计,考虑到为系统以后扩充留有余地,因此我们选择了可选式端口地址译码,并且使用8位比较器74LS688和地址开关实现地址译码,译码电路如图2.2所示:-7-图2.2:地址译码电路如图2.2:74LS688将来自系统的AEN和A2,A3,A7~A9,即P7~P0与DIP开关设定的数据Q7~Q0进行比较,输出到74LS138的控制端G2B上。根据比较器的特性,当输入端P7~P0的地址和Q7~Q0的开关状态一致时,输出低电平,使译码器进行译码。