异步串行通信控制器1. 目的l 掌握状态机的原理与设计方法;l 了解异步通信的原理和特点;l 掌握异步通信接口的设计方法2. 异步通信原理简介我们主要以接收端为例来说明异步通信的工作原理,发送端可依此类推异步通信的特点是数据路上的传输是不连续的,线路上数据是以一个字符为单位来传输的异步传输时,各个字符可以是连续传输,也可以是间隔传输,这完全由发送方根据需要来决定另外,在异步传输时,同步时钟信号并不传送到接收端,即收发双方各用自己的时钟来控制发送和接收由于字符的发送是随机进行的,因此,对于接收端来说就有一个判断何时有字符来,何时是新的一个字符开始的问题因此,在异步通信时,对字符必须规定统一的格式1) 异步信息传输格式一个字符通常由四部分组成:起始位、数据位、奇偶校验位和停止位一个字符由起始位开始,停止位结束奇偶校验位只占一位,为了简化分析我们暂且规定不用奇偶校验位起始位为0信号,占用一位,来通知接收端一个新的字符开始来到线路上不传输字符时,应保持为1接收端不断检测线路的状态,若连续为1以后又开始测到一个0,就知道是发来一个新字符,马上应准备接收字符的起始位还被用来同步接收端的时钟,以保证以后的接收能正确进行。
接收时钟信号RXC的频率是数据率的N倍,一般N=8,16,32,64等由于异步通信双方各用自己的时钟源,若是时钟频率等于波特率,则频率稍有偏差便会产生接收误差,因此,采用较高频率的时钟,就能保证正确地捕获到信号起始位后面紧接着的是数据位,它可以是5位、6位、7位和8位我们这里规定采用8位的数据位注意在发送时,总是低位先发送(最低位LSB,最高位MSB)停止位用来表征字符的结束,它一定是高电平1停止位可以是1位或2位接收端收到停止位时,就表示这一字符的结束同时,也为接收下一个字符做好准备,即只要再收到0就是新字符的起始位若停止位以后不是紧接着传输下一个字符,则让线路上保持位1DATA …... 起始位 LSB …… MSB 停止位 RXC ……………..异步信息传输格式示意图2) 同步原理 比如,N=8在‘起始位’前沿(下降沿),启动接收时钟从0计数,当计到4时(差不多在信息位的中间),输出‘采样时钟’SCLK此后,每8个RXC,输出一个SCLK,以对接收数据RXD进行串-并变换,直到收到‘停止位’ 若在应该是停止位的地方收到逻辑‘0’,则表示出现‘帧错误’——FE(Frame Error)。
应等待下一个高电平‘1’,把它作为停止位继续接收这样就可以实现‘帧对准’(Frame Align)3) 系统构成我们以接收8位串行数据为例,串——并变换至少需要9级移位寄存器,最后一级作为一帧数据完整接收的指示信号so来用这里还需要一个8位寄存器缓存接收数据其框图如下:接收端系统框图其中,LDSR是接收移位寄存器置初始值的置位信号在收到‘起始位’的前沿时,它把移位寄存器置成全’1’,这样,当‘起始位’移到so后,就知道整个的接收字符全部进入了移位寄存器这样就可以省去‘接收位计数器’(否则,应该使用位计数,来指示‘接收完成’)SCLK是采样(移位)时钟,(它应处在RXD每位数据的中间位置)LDRB是接收缓存的‘装入’命令,它把移位寄存器的接收数据装入到缓存,以便接收设备把它取走是接收设备的‘取数据’命令,它是低电平有效可以看出,这里需要一个设备来产生LDSR,SCLK,LDRB及其它一些标志信号FE等,这个设备称为 ‘接收控制器’,它的特点是:l 它按我们预定的原理工作,自动实现‘位同步’和‘帧对准’;l 依据不同的外部条件,进入不同状态,不同状态完成不同的动作接收控制器实际是状态机,关于状态机最准确的描述莫过于‘流程图’。
接收控制器的流程图如下所示:接收控制器的流程图根据流程图,可以进行电路设计常用的方法有两种:人工设计和计算机辅助设计a) 人工设计l 确定所需状态数和触发器级数K,按‘顺序编码’设计状态码;l 确定状态转移表;l 画出每一级触发器的卡诺图,并列出状态方程;l 画出逻辑电路图;l 验证必要时修改设计同学们可用D-或JK触发器设计,或74163设计实现,并验证b) 计算机辅助设计高级硬件描述语言(如VHDL,AHDL)都有关于状态机的表述方法可参阅有关资料而以AHDL语言的‘表格法’ 最为简洁3. 实验内容1) 基本要求l 设计‘接收控制器’编译通过后,可把它变成逻辑‘符号’备用;l 设计‘数据通路’,并与‘接收控制器’合在一起,构成‘异步接收器’,并编译;l 输入仿真文件,进行仿真;l 稍稍改变RXC的频率,看能否正确接收若仍有余地,使RXC变化再大一些,看仿真结果,并总结‘异步接收’的优点2) 提高要求首先完成异步发送电路的设计l 发送双缓冲:包括‘发送缓冲寄存器TB(Tx Buffer)’和‘发送移位寄存器TS(Tx Shifter)’;l 发送字长=8位,最高位是‘奇校验位’;l 停止位至少1位;l 发送速率由TCLK输入确定,是TCLK频率的1/8;l 发送缓冲器的指示位‘TBE(Tx Buff. Empty)’=1,表示‘发送缓冲器空,请求下一发送数据’。
若允许发送中断(ETBE=1),则可产生发送中断请求;l 现行数据发送出去之后,若TBE=0(发送缓冲器满),则把TB中的数据‘装入’TS,把TBE置位,并开始发送若TBE=1,则继续发送停止位,直到TBE=0.然后完成接收电路的设计l 接收双缓冲,包括‘接收移位寄存器RS(Rx Shifter)’和‘接收缓冲器RB(Rx Buffer)’;l RBF指示‘接收缓冲器(RB)’的状态:RBF=1,表示RB内的数据有效,0表示无效;l 应有状态寄存器,指示FE,PE,OE,RBF,TBE等若ERBF=1,且RBF=1,则可产生‘接收中断’读RB可使RBF=0接收逻辑对接收字符进行‘奇校验’,若不合规律,则使PE置1;否则,置0若发生FE,则FE置1,指示‘起止格式错’若下一次产生‘LDRB’时,RBF=1,则产生OE=1,表示‘接收字符丢失’当读接收数据后,使RBF清零,而读状态寄存器后,使OE,PE,FE清零最后把发送和接收电路组合在一起,构成异步通信控制器通信控制器操作功能表:/CS A0 /RD /WR功能 1 X X XD[7..0]输出高阻 0 0 0 1Dout读出接收数据(RB) 0 0 1 0Din写数据到TB 0 1 0 1Dout读状态寄存器 0 1 1 0Din写命令寄存器读写数据寄存器格式:XB6B5B4B3B2B1B0命令寄存器格式(只写寄存器)00000ERXEETBEERBF其中,ERBF=1,允许接收中断,0,不允许;ETBE=1,允许发送中断, 0,不允许;ERXE=1,若OE,PE,FE任一个是1,就产生‘接收错误中断’。
状态寄存器格式(只读寄存器)000FEOEPETBERBF其中,上电后,FE,OE,PE,RBF为0,TBE=1;写数据寄存器使TBE=0,装载TS(Load Tx Shifter)使TBE=1;读数据寄存器使RBF=0,装载RXB(Load Rx Buff)使RBF=1;读命令后,使FE,OE,PE清零,置位条件已如上述。