本实用新型涉及电力电子技术领域,具体涉及一种基于总线通信的多通道UART串行收发控制器。
背景技术:
用电侧的计量计费终端主要包含:集中器、电能表、采集器、厂站终端等设备。这些设备间的数据抄读及通信,都是通过RS-485接口。终端间互联的设备较多,同时又对通信的速率有一定要求,这对RS-485通道的数量提出了要求。如:厂站终端,它的RS-485通路多达20个通道。对于基于ARM平台开发的设备来说,处理器自带的UART串行通信接口通常是5-7个通道,远远达不到20路串行通信接口的要求。设备厂商在硬件设计上通常采用扩展方式,以达到多路UART串行收发器的目的。常见的扩展方式是采用通用异步收发器16C554进行多通道扩展。
采用16C554的方式扩展多路UART收发器,当要求达到16个收发通道以上时,板件需要放置4片以上芯片(单片只具备4通道UART)。这样大大增加了设计复杂性,增加了PCB布线难度。由于扩展的多个芯片需增加匹配的供电、外围电路等元器件,降低了产品的可靠性、可维护性。同时由于需要使用的芯片较多,增加了产品的成本,不利于产品市场竞争力。
技术实现要素:
有鉴于此,为了解决现有技术中的上述问题,本实用新型提出一种基于总线通信的多通道UART串行收发控制器。
本实用新型通过以下技术手段解决上述问题:
一种基于总线通信的多通道UART串行收发控制器,包括处理器CPU、FPGA内部逻辑单元;
所述处理器CPU与FPGA内部逻辑单元进行总线通信连接,用于处理FPGA内部逻辑单元的数据;
所述FPGA内部逻辑单元又与外部的多路UART收发器进行串行通信连接,用于读取并处理外部的多路UART收发器的数据。
进一步地,所述FPGA内部逻辑单元包括总线数据读写单元、通道选择单元、逻辑控制单元、数据缓存单元、数据分发单元、至少一个模拟16C554异步串口单元;
所述处理器CPU与FPGA内部逻辑单元进行总线通信连接,用于处理FPGA内部逻辑单元的数据;
所述总线数据读写单元分别与处理器CPU、通道选择及逻辑控制单元、数据缓存及数据分发单元进行总线通信连接,用于满足处理器CPU的读写时序;
所述通道选择及逻辑控制单元分别与每个模拟16C554异步串口单元进行通信连接,用于对每个模拟16C554异步串口单元中的通道进行选择,用于控制每个模拟16C554异步串口单元的数据流,使数据流在多通道同时进行数据收发时避免错位;
所述数据缓存及数据分发单元分别与每个模拟16C554异步串口单元进行通信连接,用于将总线数据读写单元所接收的数据、模拟16C554异步串口单元所接收的数据进行缓存,用于按照通道选择及逻辑控制单元的控制流程将数据缓存区的数据分发至模拟16C554异步串口单元相应的功能块;
所述模拟16C554异步串口单元用于模拟标准的16C554芯片的功能。
进一步地,所述每个模拟16C554异步串口单元包括接收模块、发送模块、波特率发生器、状态控制模块及配置寄存器、中断逻辑控制模块、数据总线缓冲模块;
所述处理器CPU分别与中断逻辑控制模块、数据总线缓冲模块进行通信连接;
所述波特率发生器分别与接收模块、发送模块、数据总线缓冲模块进行总线通信连接,用于提高接收数据的准确性,减少误码率;
所述数据总线缓冲模块分别与接收模块、发送模块、波特率发生器进行总线通信连接,用于分发各个UART通道待发送的数据,接收各个UART通道待上传的接收数据,分发各个UART通道与波特率发生器的分频系数;
所述中断逻辑控制模块分别与接收模块、发送模块、波特率发生器进行通信连接,用于判断接收或发送数据是否触发阈值或溢出从而执行对应的中断模式,用于判断发送及接收数据时接收模块与发送模块的状态控制器是否正常工作从而执行相应的中断模式;
所述状态控制模块及配置寄存器分别与接收模块、发送模块、波特率发生器进行通信连接,用于定义相关的寄存器控制表,使处理器CPU通过外部总线配置FPGA内部逻辑单元的功能来获取状态信息;
进一步地,所述接收模块包括FIFO接收器、接收缓冲寄存器、接收移位寄存器、接收状态控制器;
所述FIFO接收器分别与接收缓冲寄存器、接收移位寄存器进行通信连接,用于设置触发中断的数据深度;
所述接收移位寄存器分别与外部的UART收发器的UART通道、接收状态控制器进行通信连接,用于从外部的UART收发器的UART通道输入RX数据。
所述接收缓冲寄存器分别与数据总线缓冲模块、FIFO接收器、FIFO发送器、波特率发生器进行总线通信连接,用于使所述接收模式的接收数据匹配总线的发送速率后输出,并产生所述数据总线缓冲模块的读写控制标志位信号;
所述接收状态控制器分别与波特率发生器、接收移位寄存器进行通信连接,用于控制接收移位寄存器的状态,匹配不同波特率下的数据接收过程,对接收到的RX信号起始位、数据位、奇偶校验位、停止位进行检测;
所述状态控制模块及配置寄存器分别与FIFO接收器、接收缓冲寄存器、接收移位寄存器、接收状态控制器进行通信连接;
所述中断逻辑控制模块分别与FIFO接收器、接收缓冲寄存器、接收移位寄存器、接收状态控制器进行通信连接;
进一步地,所述发送模块包括FIFO发送器、发送保持寄存器、发送移位寄存器、发送状态控制器;
所述发送保持寄存器分别与FIFO发送器、发送移位寄存器进行通信连接,用于从FIFO发送器取出1Byte数据,保持发送数据,并输出到所述发送移位寄存器,防止发送的数据顺序错位;
所述FIFO发送器分别与数据总线缓冲模块、波特率发生器、接收缓冲寄存器进行总线通信连接,用于存储通过发送移位寄存器配置的触发中断的深度数据;
所述发送状态控制器分别与波特率发生器、发送移位寄存器进行通信连接,用于控制发送移位寄存器的状态,匹配不同波特率下的数据发送过程,产生发送TX数据信号的起始位、奇偶校验位、停止位;
所述发送移位寄存器分别与发送状态控制器、外部的UART收发器的UART通道进行通信连接,用于直接对UART通道输出TX数据;
所述状态控制模块及配置寄存器分别与FIFO发送器、发送保持寄存器、发送移位寄存器、发送状态控制器进行通信连接;
所述中断逻辑控制模块分别与FIFO发送器、发送保持寄存器、发送移位寄存器、发送状态控制器进行通信连接。
与现有技术相比,本实用新型基于总线通信的多通道UART串行收发控制器,通过扩展一个FPGA芯片并改变其内部逻辑结构,从而使一个控制芯片与多路的UART连接进行串口通信,代替原有的多个16C554芯片与多路UART串口连接的技术方案,节省了生产成本,方便了后续硬件升级,解决了应用多芯片所产生的总线占用及冲突问题。
附图说明
为了更清楚地说明本实用新型实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本实用新型的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本实用新型基于总线通信的多通道UART串行收发控制器的结构示意图;
图2是本实用新型的模拟16C554异步串口单元的结构示意图。
具体实施方式
为使本实用新型的上述目的、特征和优点能够更加明显易懂,下面将结合附图和具体的实施例对本实用新型的技术方案进行详细说明。需要指出的是,所描述的实施例仅仅是本实用新型一部分实施例,而不是全部的实施例,基于本实用新型中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本实用新型保护的范围。
实施例
如图1所示,一种基于总线通信的多通道UART串行收发控制器,包括处理器CPU、FPGA内部逻辑单元;
所述处理器CPU与FPGA内部逻辑单元进行总线通信连接,用于处理FPGA内部逻辑单元的数据;
所述FPGA内部逻辑单元又与外部的多路UART收发器进行串行通信连接,用于读取并处理外部的多路UART收发器的数据;
所述FPGA内部逻辑单元包括总线数据读写单元、通道选择单元、逻辑控制单元、数据缓存单元、数据分发单元、至少一个模拟16C554异步串口单元;
所述处理器CPU与FPGA内部逻辑单元进行总线通信连接,用于处理FPGA内部逻辑单元的数据;
所述总线数据读写单元分别与处理器CPU、通道选择及逻辑控制单元、数据缓存及数据分发单元进行总线通信连接,用于满足处理器CPU的读写时序;
所述通道选择及逻辑控制单元分别与每个模拟16C554异步串口单元进行通信连接,用于对每个模拟16C554异步串口单元中的通道进行选择,用于控制每个模拟16C554异步串口单元的数据流,使数据流在多通道同时进行数据收发时避免错位;
所述数据缓存及数据分发单元分别与每个模拟16C554异步串口单元进行通信连接,用于将总线数据读写单元所接收的数据、模拟16C554异步串口单元所接收的数据进行缓存,用于按照通道选择及逻辑控制单元的控制流程将数据缓存区的数据分发至模拟16C554异步串口单元相应的功能块;
所述模拟16C554异步串口单元用于模拟标准的16C554芯片的功能。
如图2所示,所述每个模拟16C554异步串口单元包括接收模块、发送模块、波特率发生器、状态控制模块及配置寄存器、中断逻辑控制模块、数据总线缓冲模块;
所述处理器CPU分别与中断逻辑控制模块、数据总线缓冲模块进行通信连接;
所述波特率发生器分别与接收模块、发送模块、数据总线缓冲模块进行总线通信连接,用于提高接收数据的准确性,减少误码率,波特率发生器的接收时钟为标准clk的16倍,采用中间时刻的采样数据;
所述数据总线缓冲模块分别与接收模块、发送模块、波特率发生器进行总线通信连接,用于分发各个UART通道待发送的数据,接收各个UART通道待上传的接收数据,分发各个UART通道与波特率发生器的分频系数;
所述中断逻辑控制模块分别与接收模块、发送模块、波特率发生器进行通信连接,用于判断接收或发送数据是否触发阈值或溢出从而执行对应的中断模式,用于判断发送及接收数据时接收模块与发送模块的状态控制器是否正常工作从而执行相应的中断模式;
当接收数据FIFO达到设置的数据深度则触发接收数据中断模式,当发送数据FIFO达到设置的数据深度则触发发送数据中断模式,当接收数据溢出时则触发数据溢出中断模式,当接收模块与发送模块的状态控制器循环计数溢出时则触发数据溢出中断模式;
所述状态控制模块及配置寄存器分别与接收模块、发送模块、波特率发生器进行通信连接,用于定义相关的寄存器控制表,使处理器CPU通过外部总线配置FPGA内部逻辑单元的功能来获取状态信息;
所述状态信息如:波特率控制、中断使能控制、接收数据触发深度、数据奇偶校验位配置、数据帧停止位配置、数据溢出校验;
所述接收模块包括FIFO接收器、接收缓冲寄存器、接收移位寄存器、接收状态控制器;
所述FIFO接收器分别与接收缓冲寄存器、接收移位寄存器进行通信连接,用于设置触发中断的数据深度;
当FIFO接收器的数据堆栈低于设定的数据深度后,将触发接收中断信号,所述FIFO接收器的最大存储深度为16Byte;
所述接收移位寄存器分别与外部的UART收发器的UART通道、接收状态控制器进行通信连接,用于从外部的UART收发器的UART通道输入RX数据。
所述接收缓冲寄存器分别与数据总线缓冲模块、FIFO接收器、FIFO发送器、波特率发生器进行总线通信连接,用于使所述接收模式的接收数据匹配总线的发送速率后输出,并产生所述数据总线缓冲模块的读写控制标志位信号;
所述接收状态控制器分别与波特率发生器、接收移位寄存器进行通信连接,用于控制接收移位寄存器的状态,匹配不同波特率下的数据接收过程,对接收到的RX信号起始位、数据位、奇偶校验位、停止位进行检测;
所述状态控制模块及配置寄存器分别与FIFO接收器、接收缓冲寄存器、接收移位寄存器、接收状态控制器进行通信连接;
所述中断逻辑控制模块分别与FIFO接收器、接收缓冲寄存器、接收移位寄存器、接收状态控制器进行通信连接;
所述发送模块包括FIFO发送器、发送保持寄存器、发送移位寄存器、发送状态控制器;
所述发送保持寄存器分别与FIFO发送器、发送移位寄存器进行通信连接,用于从FIFO发送器取出1Byte数据,保持发送数据,并输出到所述发送移位寄存器,防止发送的数据顺序错位;
所述FIFO发送器分别与数据总线缓冲模块、波特率发生器、接收缓冲寄存器进行总线通信连接,用于存储通过发送移位寄存器配置的触发中断的深度数据;
所述FIFO发送器的深度数据为16Byte;
所述发送状态控制器分别与波特率发生器、发送移位寄存器进行通信连接,用于控制发送移位寄存器的状态,匹配不同波特率下的数据发送过程,产生发送TX数据信号的起始位、奇偶校验位、停止位;
所述发送移位寄存器分别与发送状态控制器、外部的UART收发器的UART通道进行通信连接,用于直接对UART通道输出TX数据;
所述状态控制模块及配置寄存器分别与FIFO发送器、发送保持寄存器、发送移位寄存器、发送状态控制器进行通信连接;
所述中断逻辑控制模块分别与FIFO发送器、发送保持寄存器、发送移位寄存器、发送状态控制器进行通信连接。
与现有技术相比,本实用新型基于总线通信的多通道UART串行收发控制器,通过扩展一个FPGA芯片并改变其内部逻辑结构,从而使一个控制芯片与多路的UART连接进行串口通信,代替原有的多个16C554芯片与多路UART串口连接的技术方案,节省了生产成本,方便了后续硬件升级,解决了应用多芯片所产生的总线占用及冲突问题。
以上所述实施例仅表达了本实用新型的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本实用新型专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本实用新型构思的前提下,还可以做出若干变形和改进,这些都属于本实用新型的保护范围。因此,本实用新型专利的保护范围应以所附权利要求为准。