专利名称:基于fpga的串行通信分配装置及通信方法
技术领域:
本发明涉及一种基于FPGA的串行通信分配装置及通信方法,更具体的说,尤其涉及一种对多个节点同时进行控制的基于FPGA的串行通信分配装置及通信方法。
背景技术:
随着通信技术的发展,串口通信在工业控制及实时通信方面的应用已经非常广泛;尤其是对于一个主控点对多个节点的控制来说,应用十分普及。目前采用的串行分配装置大部分都是有集成电路构成,一般由微控制器和外围的处理模块构成,这种构成形式,采用的元器件数量多,存在造价高、体积大、能耗高的缺点。FPGA芯片作为一种半定制电路,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,有利于提高系统集成度、可靠性。
发明内容
本发明为了克服上述技术问题的缺点,提供了一种对多个节点同时进行控制的基于FPGA的串行通信分配装置及通信方法。本发明的基于FPGA的串行通信分配装置,串行通信分配装置由FPGA芯片构成,其特别之处在于所述FPGA芯片的引脚被设置为可与上位机、控制设备相连接的多个通讯端口,FPGA芯片内设置有均与通讯端口数目相等的波特率发生器、接收数据缓冲区、状态寄存器、发送数据缓冲区、控制寄存器、接收控制器和发送控制器,波特率发生器实现不同速率下数据的收发;接收控制器用于取出接收数据缓冲区内的数据,发送控制器用于将发送数据缓冲区内的数据发出,状态寄存器中包含接收中断标志位RI、发送中断标志位TI ;FPGA芯片内还设置有将不同的通讯端口连通的多路模拟开关。采用现场可编程门阵列FPGA可实现串行通信分配装置的硬件设置,使FPGA芯片的引脚形成多个通讯端口,以便与上位机和多个控制设备连接通讯。为了实现数据的接收和转发功能,一组波特率发生器、接收数据缓冲区、状态寄存器、发送数据缓冲区、控制寄存器、接收控制器和发送控制器用于管理一个通讯端口的数据接收和发送。多路模拟开关实现不同通讯端口之间的连通。本发明的基于FPGA的串行通信分配装置,所述通讯端口采用RS232串行通讯。RS232为较为常用的串行通讯形式。本发明的基于FPGA的串行通信分配装置,所述通讯接口通过电平转换器连接有RS485或RS422通讯模块。如果需要采用RS485或RS422通讯,需要增加电平转换器,以便转化为RS485或RS422电平。本发明的基于FPGA的串行通信分配装置的通讯方法,所述通讯端口包括COMl COMn共η个端口,设要进行数据收发的上位机、控制设备分别接COMa、COMb通讯端口,a<b^n ;数据收发方法包括以下步骤a.接收状态判断,判断COMa通讯端口的接收中断标志位RI是否被置“1”,如没有被置I,则继续检测;如被置I,则表示上位机的数据接收完成,执行步骤b ;b.接收数据和RI清零,将COMa通讯端口的数据接收缓冲区内的数据取出,将COMa通讯端口的接收中断标志位RI清零,释放接收缓冲区,以便接收新的数据;c.转移发送数据,将从COMa的数据接收缓冲区内取出的数据存入到COMb的数据发送缓冲区;
d.发送至控制设备,判断与控制设备相连接的COMb通讯端口是否有发送请求,如果没有,则继续等待;如果有请求,则将COMb的数据发送缓冲区内的数据发送至与COMb端口相连的控制设备上,执行步骤e ;e.判断TI是否置1,判断COMb端口的发送中断标志位TI是否被置“ I ”,如果没有被置1,继续等待;如果被置1,则将COMb通讯端口的发送中断标志位TI清零,以便发送新的数据,COMb通讯端口发送数据完成;f.接收状态判断,判断COMb通讯端口的接收中断标志位RI是否被置“1”,如没有被置1,则继续检测;如被置1,则表示上位机的数据接收完成,执行步骤g ;g.接收数据和RI清零,将COMb通讯端口的数据接收缓冲区内的数据取出,将COMb通讯端口的接收中断标志位RI清零,释放接收缓冲区,以便接收新的数据;h.转移发送数据,将从COMb的数据接收缓冲区内取出的数据存入到COMa的数据发送缓冲区发送至控制设备,判断与控制设备相连接的COMa通讯端口是否有发送请求,如果没有,则继续等待;如果有请求,则将COMa的数据发送缓冲区内的数据发送至与COMa 端口相连的控制设备上,执行步骤j ;j.判断TI是否置1,判断COMa端口的发送中断标志位TI是否被置“1”,如果没有被置1,继续等待;如果被置1,则将COMa通讯端口的发送中断标志位TI清零,以便发送新的数据,COMa通讯端口发送数据完成。本发明的有益效果是(I)本发明的基于FPGA的串行通信分配装置,通过采用FPGA芯片来制作形成串行通信分配装置,且每个通讯端口均配置有各自的数据收发缓冲区、收发控制器、状态和控制寄存器、波特率发生器以及接通不同通讯端口的多路模拟开关,有效地实现了上位机与多个控制设备之间的相互通讯,使得整个通讯分配装置具有电路结构简洁、布局合理、通讯端口数据收发稳定的优点。(2)由于每个通讯端口有自己独立的波特率发生器,可有效地实现不同速率下数据的收发。(3)本发明的基于FPGA的串行通信分配装置的通信方法,通过检测中断标志位TI和RI的状态、数据接收和发送缓冲区对数据的暂存、收发控制器对接收和发送的控制,有效地实现了上位机与控制设备之间的通讯。同时,本发明的串行通信分配装置和方法还具有简单、实用、可靠、稳定、通信速率高的优点;可以对多达几十个节点的数据同时发送。通信速率最高可达115200 bit/s。
图I、图2为本发明的串行通信分配装置的内部结构原理 图3为上位机利用本发明的串行通信分配装置、电平转换器与控制设备相连接的原理示意 图4为上位机利用本发明的串行通信分配装置直接与控制设备相连接的原理示意图。图5为COMa端口上的上位机与COMb端口上的控制设备相通信的程序流程图。图中1波特率发生器,2接收数据缓冲区,3状态寄存器,4发送数据缓冲区,5控制寄存器,6接收控制器,7发送控制器,8多路模拟开关,9电平转换器,10 RS485或RS422通讯模块,11上位机,12控制设备,13通讯端口。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。如图I、图2所示,给出了本发明的串行通信分配装置的内部结构原理图,FPGA芯片的引脚被设置为多个与上位机11、控制设备12相连接的通讯端口 13,以便实现数据的收发。FPGA芯片的内部电路被设置为波特率发生器I、接收数据缓冲区2、状态寄存器3、发送数据缓冲区4、控制寄存器5、接收控制器6、发送控制器7以及多路模拟开关8,且每个通讯端口 13都有各自的波特率发生器I、接收和发送数据缓冲区、状态和控制寄存器、接收和发送控制器,以便实现数据的接收和转发功能。多路模拟开关8用于将不同的通讯端口 13接通,实现数据由一个端口转发到另一个端口。
由于每一个通讯端口 13有各自的波特率发生器I,故不同的通讯端口 13可采用不同的速率进行数据的收发。接收控制器6用于将接收到的数据从接收数据缓冲区2中取出,发送数据缓冲区4内的数据在发送控制器7的作用下进行发送。状态寄存器3中设置有接收中断标志位RI、发送中断标志位TI,以便对数据接收和发送的状态进行检测。如通讯端口采用RS232进行通讯,则上位机11、控制设备12与通讯端口相连接即可;如果采用RS485或RS422通讯,则需要增加电平转换器9。如图3和图4所示,均给出了上位机利用本发明的串行通信分配装置与控制设备相连接的原理示意图;图3中增设有电平转换器9,以便实现RS485或RS232总线形式的通讯。图4中,本发明的串行通信分配装置的COMl COMn通讯端口 13分别与η个控制设备12相连接,上位机11也通过I个通讯端口 13与串行通信分配装置相连接。如图5所示,给出了 COMa端口上的上位机与COMb端口上的控制设备相通信的程序流程图;设要进行数据收发的上位机(11 )、控制设备(12)分别接COMa、COMb通讯端口,a<b^n ;数据收发方法包括以下步骤
a.接收状态判断,判断COMa通讯端口的接收中断标志位RI是否被置“1”,如没有被置1,则继续检测;如被置1,则表示上位机的数据接收完成,执行步骤b ;
b.接收数据和RI清零,将COMa通讯端口的数据接收缓冲区内的数据取出,将COMa通讯端口的接收中断标志位RI清零,释放接收缓冲区,以便接收新的数据;
c.转移发送数据,将从COMa的数据接收缓冲区内取出的数据存入到COMb的数据发送缓冲区;
d.发送至控制设备,判断与控制设备相连接的COMb通讯端口是否有发送请求,如果没有,则继续等待;如果有请求,则将COMb的数据发送缓冲区内的数据发送至与COMb端口相连的控制设备上,执行步骤e;
e.判断TI是否置1,判断COMb端口的发送中断标志位TI是否被置“1”,如果没有被置1,继续等待;如果被置1,则将COMb通讯端口的发送中断标志位TI清零,以便发送新的数据,COMb通讯端口发送数据完成;
f.接收状态判断,判断COMb通讯端口的接收中断标志位RI是否被置“1”,如没有被置1,则继续检测;如被置1,则表示上位机的数据接收完成,执行步骤g ;
g.接收数据和RI清零,将COMb通讯端口的数据接收缓冲区内的数据取出,将COMb通讯端口的接收中断标志位RI清零,释放接收缓冲区,以便接收新的数据;
h.转移发送数据,将从COMb的数据接收缓冲区内取出的数据存入到COMa的数据发送缓冲区;i.发送至控制设备,判断与控制设备相连接的COMa通讯端口是否有发送请求,如果没有,则继续等待;如果有请求,则将COMa的数据发送缓冲区内的数据发送至与COMa端口相连的控制设备上,执行步骤j;
j.判断TI是否置1,判断COMa端口的发送中断标志位TI是否被置“ 1”,如果没有被置1,继续等待;如果被置1,则将COMa通讯端口的发送中断标志位TI清零,以便发送新的数据,COMa通讯端口发送数据完成。本发明能够将接收到的上位机数据通过处理后,进行线路分配,实现向多个节点发送串行数据;同时,可以根据中断优先级,接收多个节点返回的数据信息,将数据存入接收缓冲区,并将数据反馈到上位机,方便工作人员对节点的监控操作。整个装置简单、实用、可靠、稳定,成本低廉,易于实现,适合多种场合、多个节点的串行通信使用。
权利要求
1.一种基于FPGA的串行通信分配装置,串行通信分配装置由FPGA芯片构成,其特征在于所述FPGA芯片的引脚被设置为可与上位机(11)、控制设备(12)相连接的多个通讯端口(13),FPGA芯片内设置有均与通讯端口数目相等的波特率发生器(I)、接收数据缓冲区(2)、状态寄存器(3)、发送数据缓冲区(4)、控制寄存器(5)、接收控制器(6)和发送控制器(7),波特率发生器实现不同速率下数据的收发;接收控制器用于取出接收数据缓冲区内的数据,发送控制器用于将发送数据缓冲区内的数据发出,状态寄存器中包含接收中断标志位RI、发送中断标志位TI ;FPGA芯片内还设置有将不同的通讯端口连通的多路模拟开关 (8)。
2.根据权利要求I所述的基于FPGA的串行通信分配装置,其特征在于所述通讯端口(13)采用RS232串行通讯。
3.根据权利要求I所述的基于FPGA的串行通信分配装置,其特征在于所述通讯接口(13)通过电平转换器(9)连接有RS485或RS422通讯模块。
4.一种基于权利要求I所述的串行通信分配装置的通信方法,其特征在于,所述通讯端口( 13)包括COMl COMn共η个端口,设要进行数据收发的上位机(11)、控制设备(12)分别接COMa、COMb通讯端口,a < b彡η ;数据收发方法包括以下步骤 a.接收状态判断,判断COMa通讯端口的接收中断标志位RI是否被置“1”,如没有被置1,则继续检测;如被置1,则表示上位机的数据接收完成,执行步骤b ; b.接收数据和RI清零,将COMa通讯端口的数据接收缓冲区内的数据取出,将COMa通讯端口的接收中断标志位RI清零,释放接收缓冲区,以便接收新的数据; c.转移发送数据,将从COMa的数据接收缓冲区内取出的数据存入到COMb的数据发送缓冲区; d.发送至控制设备,判断与控制设备相连接的COMb通讯端口是否有发送请求,如果没有,则继续等待;如果有请求,则将COMb的数据发送缓冲区内的数据发送至与COMb端口相连的控制设备上,执行步骤e; e.判断TI是否置1,判断COMb端口的发送中断标志位TI是否被置“1”,如果没有被置1,继续等待;如果被置1,则将COMb通讯端口的发送中断标志位TI清零,以便发送新的数据,COMb通讯端口发送数据完成; f.接收状态判断,判断COMb通讯端口的接收中断标志位RI是否被置“1”,如没有被置1,则继续检测;如被置1,则表示上位机的数据接收完成,执行步骤g ; g.接收数据和RI清零,将COMb通讯端口的数据接收缓冲区内的数据取出,将COMb通讯端口的接收中断标志位RI清零,释放接收缓冲区,以便接收新的数据; h.转移发送数据,将从COMb的数据接收缓冲区内取出的数据存入到COMa的数据发送缓冲区; i.发送至控制设备,判断与控制设备相连接的COMa通讯端口是否有发送请求,如果没有,则继续等待;如果有请求,则将COMa的数据发送缓冲区内的数据发送至与COMa端口相连的控制设备上,执行步骤j; j.判断TI是否置1,判断COMa端口的发送中断标志位TI是否被置“ 1”,如果没有被置1,继续等待;如果被置1,则将COMa通讯端口的发送中断标志位TI清零,以便发送新的数据,COMa通讯端口发送数据完成。
全文摘要
本发明的基于FPGA的串行通信分配装置,串行通信分配装置由FPGA芯片构成,特征在于FPGA芯片的引脚被设置为可与上位机、控制设备相连接的多个通讯端口,FPGA芯片内设置有均与通讯端口数目相等的波特率发生器、接收数据缓冲区、状态寄存器、发送数据缓冲区、控制寄存器、接收控制器和发送控制器,波特率发生器实现不同速率下数据的收发;状态寄存器中包含接收中断标志位RI、发送中断标志位TI;FPGA芯片内还设置有将不同的通讯端口连通的多路模拟开关。本发明的通信分配装置,实现了上位机与多个控制设备之间的相互通讯,可进行不同速率下数据的收发。整个装置简单、实用、可靠、稳定,成本低廉,易于实现,适合多种场合、多个节点的串行通信使用。
文档编号G05B19/418GK102915010SQ20121034726
公开日2013年2月6日 申请日期2012年9月19日 优先权日2012年9月19日
发明者丁鉴彬, 徐玉惠 申请人:山东神戎电子股份有限公司