首页> 中国专利> 一种多模式高速智能异步串口通信模块及实现方法

一种多模式高速智能异步串口通信模块及实现方法

摘要

本发明公开了一种多模式高速智能异步串口通信模块及实现方法,其所基于的硬件架构是CPCI总线模块,该模块硬件包括可编程逻辑单元、大容量存储单元、通用异步收发控制器、高速数字隔离器件和接口电平转换器件等。其优点是(1)可根据用户实际需要通过软件选择智能模式和非智能模式。(2)工作于智能模式时,可通过软件灵活设置各串口的数据帧格式。(3)工作于智能模式时,模块接收数据时将根据设定的数据帧格式自动判断数据帧头、数据长度、校验和、帧尾等信息。

著录项

  • 公开/公告号CN102420877A

    专利类型发明专利

  • 公开/公告日2012-04-18

    原文格式PDF

  • 申请/专利号CN201110392553.2

  • 发明设计人 唐俊;龙小军;陶翼;

    申请日2011-12-01

  • 分类号H04L29/10;

  • 代理机构武汉金堂专利事务所;

  • 代理人胡清堂

  • 地址 430074 湖北省武汉市洪山区珞喻路718号

  • 入库时间 2023-12-18 04:59:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-08

    未缴年费专利权终止 IPC(主分类):H04L29/10 专利号:ZL2011103925532 申请日:20111201 授权公告日:20141119

    专利权的终止

  • 2014-11-19

    授权

    授权

  • 2012-05-30

    实质审查的生效 IPC(主分类):H04L29/10 申请日:20111201

    实质审查的生效

  • 2012-04-18

    公开

    公开

说明书

技术领域

本发明属于通信接口技术领域,具体来说是基于硬件逻辑实现多模式高速智能异步串口通信的方法。

背景技术

串口通信以其简单、可靠性高和编程容易等特点在系统控制和数据通信中一直占有重要的地位,它不仅没有因为时代的进步而淘汰,反而在规格上越来越完善,应用也越来越广泛。

但由于串口通信的特点:通用异步收发控制器与上位机(CPU)的数据交换是按字节收发的,即通用异步收发控制器收到1个字节的报文就给CPU发出一个中断信号告知CPU来取数据,由CPU对数据的正确性(报文头尾标识,校验和等)进行判断并处理,因此串口收发数据越快,其单位时间内向CPU申请的中断就越多。在一般系统中,CPU往往还要处理网络数据,作图形显示和处理等,这样就严重影响了CPU的处理能力,因此也成为串口通信速率的瓶颈。

利用我们多年来在计算机通信接口领域的成果与经验,自主设计开发的基于硬件逻辑实现的多模式高速智能异步串口通信模块可以通过软件设置工作于智能模式(通过板上微处理器对数据进行判别处理,只把符合要求的数据发送给CPU)和非智能模式(传统串口通信模式,不对数据作处理,收到数据就传送给CPU,由CPU来对数据进行解析),并支持多种串口通信协议标准,可以在不占用CPU资源的情况下提高串口通信速度,能够满足不同领域用户对异步串口通信的要求。

发明内容

本发明目的是提供一种多模式高速智能异步串口通信模块及实现方法,以满足不同控制系统和数据通信的要求。

本发明的硬件架构是基于CPCI总线的智能异步串口通信模块,该模块硬件包括可编程逻辑单元、大容量存储单元、通用异步收发控制器、高速数字隔离器件和接口电平转换器件。所述的可编程逻辑单元通过CPCI总线与CPU连接,并向CPU提交数据和接收CPU的下发数据;所述的大容量存储单元通过RAM接口与所述的可编程逻辑单元连接,进行接收数据的暂存处理;所述的通用异步收发控制器通过局部总线与所述的可编程逻辑单元连接,进行通信数据的收发处理;所述的高速数字隔离器件两端分别与所述的通用异步收发控制器和所述的接口电平转换器件连接,进行通信信号的传输;所述的接口电平转换器件一端与外设通过RS232/RS485/RS422接口连接,另一端与所述的高速数字隔离器件连接,进行通信信号的逻辑电平转换和传输。

所述的可编程逻辑单元是本发明的核心组成部分,其内部集成了嵌入式微处器及由Verilog硬件描述语言设计的各种功能模块,主要实现本板与CPU的数据交换,与通用异步收发控制器的数据交换以及本板所有逻辑控制。所述的Verilog硬件描述语言设计的各种功能模块包括模式选择寄存器、接口选择寄存器、串口数据收发模块、数据帧接收识别模块、数据搬移模块和CPCI转局部总线模块等。

a.  所述的模式选择寄存器可通过写入不同的值实现本板智能模式与非智能模式的选择。

b.  所述的接口选择寄存器可通过写入不同的值实现本板各串口的接口标准(RS232,RS422,RS485等)选择。

c.  所述的串口数据收发模块在接收时首先判断通用异步收发控制器接收缓冲区是否有数据,若有,则取出一个字节数据并将其送往数据帧识别模块;在发送时判断发送标志位看通用异步收发控制器是否允许发送,若允许发送则将FIFO中要发送的数据写入通用异步收发控制器发送寄存器,等待发送。

d.  所述的数据帧接收识别模块可设置各串口的数据帧鉴别格式,它们只接收符合各自设定的数据帧格式的数据,而剔除掉不符合自己的数据帧格式的数据。

e.  所述的数据搬移模块在接收时负责将接收FIFO中的数据搬移到大容量存储单元中暂存,并查询双口RAM是否处于可写状态且剩余存储空间是否大于数据帧的大小,若满足要求,又将暂存于所述大容量存储单元内的帧数据搬移到双口RAM内,并向CPU发出中断请求;在发送时,接收到CPU的发送中断请求后,将要发送的数据从双口RAM快速转移到内部FIFO,并通知串口数据收发模块将数据发送出去。

f.  所述的CPCI转局部总线模块主要将CPCI总线转换为本板使用的局部总线,以实现CPU与本板的数据交换。

本发明一种多模式高速智能异步串口通信模块的实现方法,包括设备初始化设置、智能模式下数据收发处理和非智能模式下数据收发处理。

    (1)所述的设备初始化设置包括以下内容:

a.  接口标准设置:RS232、RS422或RS485。

b.  串口工作模式设置:智能模式或非智能模式。

c.  若工作为所述的智能模式,则进行数据帧格式设置,包括:报文头、报文尾等。

d.  串口参数设置:包括波特率、数据位(5~8位)、校验位(奇校验、偶校验或无校验位)、停止位(1位、1.5位或2位)等。

(2)所述的智能模式相对于CPU来说为数据帧传输模式,其数据的接收流程如附图3所示,包括以下步骤:

步骤101:远方设备将数据流发送到某个串口,所述的接口电平转换器将IEA232/IEA485/IEA422通信的电气信号转换为TTL信号,经过所述的高速数字隔离器传输到所述的通用异步收发控制器,进入步骤102;

步骤102:可编程逻辑单元内的串口数据收发模块定时查看所述通用异步收发控制器各串口的接收寄存器是否有数据,若有,则进入步骤103;

步骤103:串口数据收发模块读出接收寄存器内的字节数据,并将该字节数据送往数据帧识别模块,进入步骤104;

步骤104:数据帧识别模块根据初始化设置的数据帧格式对收到的字节数据进行判别,若数据符合数据帧格式要求,则进入步骤105;若不符合,则进入步骤106,丢掉该字节数据并将之前收到的此帧其他数据从接收FIFO中清空,重新回到步骤102;

步骤105:将数据存入可编程逻辑单元内部相应串口的接收FIFO内,并进入步骤107; 

步骤107:判断所述的FIFO内是否为完整的一帧数据,若是,则进入步骤108;

步骤108:将该帧数据存入所述的大容量存储单元内,进入步骤109;

步骤109:数据搬移模块判断可编程逻辑单元内为该串口开设的双口RAM区是否处于可写状态且剩余存储空间是否大于数据帧的大小,若是,则进入步骤110。若判断为否,则数据继续存在大容量存储单元内;

步骤110:数据搬移模块将数据从大容量存储单元内转移到双口RAM内并向CPU发出一个硬件中断请求,进入步骤111;

步骤111:CPU收到中断请求后,通过CPCI转局部总线模块将此帧数据读入CPU内存。

至此,一个完整的数据帧接收过程就结束了。

其数据的发送流程如附图4所示,包括以下步骤:

步骤201:CPU将要发送的一帧数据通过CPCI转局部总线模块写入某串口双口RAM区,并给数据搬移模块送出一个发送中断请求,进入步骤202;

步骤202:数据搬移模块收到中断请求信号后将该帧数据从双口RAM内快速搬移到该串口发送FIFO区,进入步骤203; 

步骤203:可编程逻辑单元内的串口数据收发模块查询通用异步收发控制器对应串口是否为允许发送状态,若是,则进入步骤204;

步骤204:串口数据收发模块读出FIFO中一个字节数据,将其写入通用异步收发控制器发送寄存器,进入步骤205;

步骤205:通用异步收发控制器将数据转化为串行数据后经高速数字隔离器件和接口电平转换器件发送给外设,进入步骤206;

步骤206:重复步骤203~步骤205,直到该帧数据全部发送完。

至此,一个完整的数据帧发送过程就结束了。

(2)所述的非智能模式为常规的串口通信模式,即CPU通过CPCI总线直接与通用异步收发控制器以字节为单位交互数据,此时所述的可编程逻辑单元内部只有CPCI转局部总线模块工作,其余单元均不参加工作。其数据的接收流程如附图5所示,包括以下步骤: 

步骤301:远方设备将数据流发送到某个串口,所述的接口电平转换器将IEA232/IEA485/IEA422通信的电气信号转换为TTL信号,经过所述的高速数字隔离器传输到所述的通用异步收发控制器,进入步骤302;

步骤302:所述的通用异步收发控制器收到一字节数据后将其存入接收寄存器内并向CPU发出一个硬件中断请求,进入步骤303;

步骤303:CPU收到中断请求后通过CPCI转局部总线模块读出该字节数据,进入步骤304;

步骤304:CPU判断数据是否符合报文格式要求,若符合,则进入步骤305;若不符合,则进入步骤306,丢掉该字节数据并将之前收到的此帧其他数据从内存中清空,并返回步骤303;

步骤305:CPU将该字节数据写入内存,进入步骤307;

步骤307:重复步骤301~步骤306,直到该帧数据接收完成。

至此,一个完整的数据帧接收过程就结束了。

其数据的发送流程如附图6所示,包括以下步骤: 

步骤401:CPU首先查看通用异步收发控制器相应串口是否处于允许发送状态,若允许发送,则进入步骤402;

步骤402:CPU将要发送的1个字节数据写入通用异步收发控制器发送寄存器,进入步骤403;

步骤403:通用异步收发控制器将数据转化为串行数据后经高速数字隔离器件和接口电平转换器件发送给外设,进入步骤404;

步骤404:重复步骤401~步骤403,直到该帧数据全部发送完。

至此,一个完整的数据帧发送过程就结束了。

    本发明一种多模式高速智能异步串口通信模块及实现方法的优点是:

(1)可根据用户实际需要通过软件选择智能模式和非智能模式;

(2)工作于智能模式时,可通过软件灵活设置各串口的数据帧格式;

(3)工作于智能模式时,模块接收数据时将根据设定的数据帧格式自动判断数据帧头、数据长度、校验和、帧尾等信息,如果有符合所设定帧格式的数据,则将数据放入缓冲区并通知CPU;模块发送数据时,CPU将完整的一帧数据放入缓冲区并通知板上微处理器将数据发送出去。采用这种模式时,CPU不再直接与通用异步收发控制器以字节为单位传输数据,而是与板上微处理器通信,因此传输速率得到了大大提高,CPU的利用率也得到了提高;

(4)工作于智能模式时,由于接收的数据会暂存于所述的外部大容量存储单元内,因此可通过配置大容量存储单元的大小来达到在对串口数据实时性要求不高的系统中,接收N帧数据后再向CPU发送中断或者由CPU在系统空闲时来自动查询串口数据的要求,只要接收缓冲区大小满足要求,就不会出现丢数据的现象。

因此,采用本发明方案可以满足不同领域用户对异步串口通信的需求。

附图说明

图1是本发明所基于的硬件原理框图。

图2是本发明提供的可编程逻辑单元内部逻辑框图。

图3是本发明智能模式下的数据帧接收流程图。

图4是本发明智能模式下的数据帧发送流程图。

图5是本发明非智能模式下的数据帧接收流程图。

图6是本发明非智能模式下的数据帧发送流程图。

具体实施方式

下面结合附图对本发明进行详细说明。

如附图1所示,本发明所基于的硬件架构是CPCI总线模块,该模块硬件包括可编程逻辑单元、大容量存储单元、通用异步收发控制器、高速数字隔离器件和接口电平转换器件等。

所述的可编程逻辑单元是Altera公司的EP3C40或Xilinx公司的XC5VLX30等,主要实现本板与CPU的数据交换,与通用异步收发控制器的数据交换以及本板所有逻辑控制。

所述的大容量存储单元是Samsung公司的K4S511632E 或Hynix公司的HY57V561620等,其作为所述的可编程逻辑单元的扩展存储区,主要为各路串口提供可配置的大容量接收缓冲区,以满足不同系统对数据吞吐量的要求。

所述的通用异步收发控制器是EXAR公司的ST16C554或TI公司的TL16C754B等,主要实现所述的接口电平转换器件与所述的可编程逻辑单元之间的串←→并数据转换,以及控制数据传输速率等功能。

所述的高速数字隔离器件是TI公司的ISO7221或AD公司的ADuM5241等,主要实现所述的通用异步收发控制器与所述的接口电平转换器件之间的电气隔离,以保护所述的通用异步收发控制器及内部系统不会因为极端情况下出现的外部瞬态高电压而损坏。

所述的接口电平转换器件是Sipex公司的SP526、Maxim公司的MAX3088或AD公司的AD7306JRZ等,主要实现外部传输的RS232/RS422/RS485电气信号与通用异步收发控制器能识别的TTL信号之间的电平和逻辑关系的变换。

如附图2所示,本发明的核心单元为可编程逻辑单元,其内部集成了嵌入式微处理器及由Verilog硬件描述语言自主设计的各种功能模块,包括模式选择寄存器、接口选择寄存器、串口数据收发模块、数据帧接收识别模块、数据搬移模块和CPCI转局部总线模块等,其主要实现本板与CPU的数据交换,与通用异步收发控制器的数据交换以及本板所有逻辑控制。各功能模块的说明如下:

(1)模式选择寄存器,可通过对模式寄存器写入不同的值实现本板智能模式与非智能模式的选择;

(2)接口选择寄存器,可通过对接口选择寄存器写入不同的值实现本板各串口的接口标准(RS232,RS422,RS485等)选择;

(3)串口数据收发模块,串口数据收发模块在接收时首先判断通用异步收发控制器接收缓冲区是否有数据,若有,则取出一个字节数据并将其送往数据帧识别模块;在发送时判断发送标志位看通用异步收发控制器是否允许发送,若允许发送则将FIFO中要发送的数据写入通用异步收发控制器发送寄存器,等待发送。

串口数据收发模块在对8个串口进行数据的接收和发送时采用了轮询的工作方式,即对发送数据和接收数据采用分时作业方式。按照此模块的最高工作波特率614400bps计算,发送或者接收一字节数据(按10位计,1个起始位,8个数据位,1个停止位)需要16.3us,也就是说,对8路串口的发送寄存器和接收寄存器轮询扫描一遍,并且将相应的数据从接收寄存器读取出来和将相应的数据写入发送寄存器的时间总和不能大于16.3us,才能不影响到数据的正常收发。这样看来,虽说实际上内部收发处在一种串行工作模式下,但对每路串口之间的通信,依然可以看做是并行工作方式,它们之间的数据通信互不影响。

(4)数据帧接收识别模块。在接收数据时,可编程逻辑单元会对数据进行甄别,可编程逻辑单元里有8个由Verilog硬件描述语言构成的数据帧接收识别模块,他们独立工作,可设置各串口的数据帧鉴别格式,它们只接收符合各自设定的数据帧格式的数据,而剔除掉不符合自己的数据帧格式的数据。当这个数据帧符合要求时,就将其存入相应串口的接收FIFO,当接收到一个完整的数据帧后,将其转移到外部大容量的数据缓存区。为了数据的不丢失,FIFO采用乒乓操作,即一个串口设置了2个接收FIFO,第一帧数据存入FIFO1,并通知数据搬移模块将数据从FIFO1中取出,在取数据的同时,下一帧数据将不再写入FIFO1,而是存入FIFO2,这样就防止了FIFO未读完即写入的状况发生。

(5)数据搬移模块。数据搬移模块在接收时负责将接收FIFO中的数据搬移到大容量存储单元中暂存,并查询双口RAM是否处于可写状态且剩余存储空间是否大于数据帧的大小,若满足要求,又将暂存于所述大容量存储单元内的帧数据搬移到双口RAM内,并向CPU发出中断请求;在发送时,接收到CPU的发送中断请求后,将要发送的数据从双口RAM快速转移到内部FIFO,并通知串口数据收发模块将数据发送出去。为什么要将数据从双口RAM转移到FIFO呢?因为通用异步收发控制器发送数据的速度相对于CPU往双口RAM写入数据的速度来说是很慢的,对于一个待发送的数据帧而言,若串口数据收发模块直接从双口RAM取数据的话,则其将长时间占据双口RAM的控制权,而禁止CPU向双口RAM写入下一帧待发送数据,这样就影响了发送效率。所以先将数据快速搬移到FIFO,释放双口RAM的控制权,以便CPU对双口RAM进行操作。

(6)CPCI转局部总线模块。由于CPCI总线地址线和数据线是复用的,其不能直接与通用异步收发控制器和大容量存储单元等进行数据交换,所以通常的CPCI扩展卡都需要使用PCI桥接芯片,将CPCI总线转换为本板使用的局部总线。本发明采用可编程逻辑单元,以硬件描述语言来实现PCI桥的功能。

如附图3所示,所述的智能模式相对于CPU来说为数据帧传输模式,其数据的接收流程包括以下步骤:

步骤101:远方设备将数据流发送到某个串口,所述的接口电平转换器将IEA232/IEA485/IEA422通信的电气信号转换为TTL信号,经过所述的高速数字隔离器传输到所述的通用异步收发控制器,进入步骤102;

步骤102:可编程逻辑单元内的串口数据收发模块定时查看所述通用异步收发控制器各串口的接收寄存器是否有数据,若有,则进入步骤103;

步骤103:串口数据收发模块读出接收寄存器内的字节数据,并将该字节数据送往数据帧识别模块,进入步骤104;

步骤104:数据帧识别模块根据初始化设置的数据帧格式对收到的字节数据进行判别,若数据符合数据帧格式要求,则进入步骤105;若不符合,则进入步骤106,丢掉该字节数据并将之前收到的此帧其他数据从接收FIFO中清空,重新回到步骤102;

步骤105:将数据存入可编程逻辑单元内部相应串口的接收FIFO内,并进入步骤107;

步骤107:判断所述的FIFO内是否为完整的一帧数据,若是,则进入步骤108;

步骤108:将该帧数据存入所述的大容量存储单元内,进入步骤109;

步骤109:数据搬移模块判断可编程逻辑单元内为该串口开设的双口RAM区是否处于可写状态且剩余存储空间是否大于数据帧的大小,若是,则进入步骤110。若判断为否,则数据继续存在大容量存储单元内;

步骤110:数据搬移模块将数据从大容量存储单元内转移到双口RAM内并向CPU发出一个硬件中断请求,进入步骤111;

步骤111:CPU收到中断请求后,通过CPCI转局部总线模块将此帧数据读入CPU内存。

至此,一个完整的数据帧接收过程就结束了。

如附图4所示,智能模式下数据的发送流程包括以下步骤:

步骤201:CPU将要发送的一帧数据通过CPCI转局部总线模块写入某串口双口RAM区,并给数据搬移模块送出一个发送中断请求,进入步骤202;

步骤202:数据搬移模块收到中断请求信号后将该帧数据从双口RAM内快速搬移到该串口发送FIFO区,进入步骤203;

步骤203:可编程逻辑单元内的串口数据收发模块查询通用异步收发控制器对应串口是否为允许发送状态,若是,则进入步骤204;

步骤204:串口数据收发模块读出FIFO中一个字节数据,将其写入通用异步收发控制器发送寄存器,进入步骤205;

步骤205:通用异步收发控制器将数据转化为串行数据后经高速数字隔离器件和接口电平转换器件发送给外设,进入步骤206;

步骤206:重复步骤203~步骤205,直到该帧数据全部发送完。

至此,一个完整的数据帧发送过程就结束了。

如附图5所示,所述的非智能模式为常规的串口通信模式,即CPU直接与通用异步收发控制器以字节为单位交互数据,此时所述的可编程逻辑单元内部只有CPCI转局部总线模块工作,其余单元均不参加工作。其数据的接收流程包括以下步骤:

步骤301:远方设备将数据流发送到某个串口,所述的接口电平转换器将IEA232/IEA485/IEA422通信的电气信号转换为TTL信号,经过所述的高速数字隔离器传输到所述的通用异步收发控制器,进入步骤302;

步骤302:所述的通用异步收发控制器收到一字节数据后将其存入接收寄存器内并向CPU发出一个硬件中断请求,进入步骤303;

步骤303:CPU收到中断请求后通过CPCI转局部总线模块读出该字节数据,进入步骤304;

步骤304:CPU判断数据是否符合报文格式要求,若符合,则进入步骤305;若不符合,则进入步骤306,丢掉该字节数据并将之前收到的此帧其他数据从内存中清空,并返回步骤303;

步骤305:CPU将该字节数据写入内存,进入步骤307;

步骤307:重复步骤301~步骤306,直到该帧数据接收完成。

至此,一个完整的数据帧接收过程就结束了。

如附图6所示,非智能模式下数据的发送流程包括以下步骤: 

步骤401:CPU首先查看通用异步收发控制器相应串口是否处于允许发送状态,若允许发送,则进入步骤402;

步骤402:CPU将要发送的1个字节数据写入通用异步收发控制器发送寄存器,进入步骤403;

步骤403:通用异步收发控制器将数据转化为串行数据后经高速数字隔离器件和接口电平转换器件发送给外设,进入步骤404;

步骤404:重复步骤401~步骤403,直到该帧数据全部发送完。

至此,一个完整的数据帧发送过程就结束了。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号