中图分类号:TP311文献标识码:A文章编号:1009-3044(2013)33-7430-03 实现串口数据的协议以及波特率的转换,传统的实现方法是用单片机与串口扩展芯片直接相连,其缺点是实现需用较多芯片,容易死机;目前关注的实现方法是用一片CPLD芯片来接收串行数据,其优势是CPLD为逻辑电路,不会死机,效率高,基于CPLD的串口网关能高效的实现串口数据的协议以及波特率的转换[1]、[4]。这里简单介绍一种串口网关的简单设计及其测试应用。 1硬件结构 1.1串口网关的硬件设计 串口网关中的核心设备就是其选用的控制器,它的选用直接关系到目标的实现与否。根据设计要求,我们可以选用单片机和CPLD,在综合考虑两者的性能后,我们最终选用了EPM7128做主处理芯片,EPM7128SLC84-10内含128个宏单元(或2500个可用门),其引脚到引脚的最短传输延时为7ns,采用单+5V电源供电,可通过JTAG接口实现在线编程,并带有可供84个用户使用的I/O脚(其中4个为专用输入脚)。该器件采用PLCC-84封装。其中TDI、TDO、TMS、TCLK脚为编程脚;GCLK、GOE、GCLEAR、REDIN脚为专用输入脚;VCCINT、VCCIO脚接+5V电源;GND脚接地;I/O为用户可编程输入输出脚。在I/O脚作输出使用时,可由用户设定为0,1和Z三种状态,外围器件直接选用MAX232做电平转换芯片。其硬件结构如图1所示。 图1串口网关硬件结构框 在上面的结构框图有两个重要的部分:串口部分和CPLD主处理部分。串口部分主要完成的功能就是对串口数据流的电平转换,这里采用是通用的串行接口芯片:MAX232/MAX483。CPLD主处理部分主要就是处理的是来自串口的数据包,处理完后就可以直接发送出去。 1.2CPLD主处理部分 基于CPLD的串口网关中,CPLD主处理部分是整个硬件系统中的核心处理设备:同速率不同类型的串行数据的接收;实现各种速率串行数据的相互转换;实现不同长度串行数据的相互转换;用数字电路实现奇偶检验;实现各个串口间的相互转发。基于CPLD的串口网关,是利用CPLD实现多个串口数据的协议转换。并且能够实现不同波特率间的数据转发或协议转换。其工作原理是:RS-232经过电平处理转换成TTL电平,然后进入CPLD进行处理,最后将处理后的结果从其他的串口发送出去。 该部分设计主要涉及3个子环节,即:波特率发生器的设计,串行电路接收部分的设计,串行电路发送部分的设计。这三个部分全是通过VHDL语言实现。其主处理部分结构如图2所示。 图2CPLD主处理结构框图 1.3串口网关的工作流程 首先CPLD设置好分频电路,此分频电路给接收和发送部分提供采样频率,当有数据从串口传过来时,接收部分对数据的下降沿进行检测以判断数据的到来,主要就是下降沿的检测[2-3]。当检测到下降沿后便可以知道第一位是起始字节的起始位的到来,然后在3倍于采样频率对数据进行采样,将采样到的数据存放于字长为3的数组中,然后在采样频率的上升沿对数组中的数进行判断,即Q(Num)<=(N(0)andN(1))or(N(1)andN(2))or(N(0)andN(2));其中Q也是一数组,里面存放的是接收到的各个数据位。当接收完一个字节后便可以产生一使能信号来通知发送部分将数组中的数据一位一位的发出去。当使用同一种波特率来控制接收和发送部分时,此时收发便是处于同一波特率。当接收使用低波特率,发送处于高波特率时,此时收发便是处于不同波特率。在高波特率到低波特率的发收过程中,我们定义了数据帧是重复发几次的,以防止丢包。 在上面的接收和处理过程中只不过是同一种数据的波特率的转换或者是处于同一波特率的数据转发,另外通过此模块还可以实现协议的转换,其实现过程如下:A协议的数据通过串口发送后,CPLD接收到该协议的数据后,在发送部分进行处理,通过处理变成B协议要求的数据格式和内容。然后另一串口便可以接收到B协议数据,这样便可以实现两种协议不同数据的转换。 |