CN101383819B - 异步串行数据线信息收发方法及异步串行收发器 - Google Patents
异步串行数据线信息收发方法及异步串行收发器 Download PDFInfo
- Publication number
- CN101383819B CN101383819B CN2007102015853A CN200710201585A CN101383819B CN 101383819 B CN101383819 B CN 101383819B CN 2007102015853 A CN2007102015853 A CN 2007102015853A CN 200710201585 A CN200710201585 A CN 200710201585A CN 101383819 B CN101383819 B CN 101383819B
- Authority
- CN
- China
- Prior art keywords
- sequence
- length
- break
- idle
- asynchronous serial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及数据通信领域,特别涉及异步串行数据收发技术。本发明要解决的技术问题是:提供一种不依赖外部定时器,能定量收发非字符信息的方法及实现该方法的异步串行收发器。本发明所采用的技术方案是:一种异步串行数据线信息收发方法,异步串行收发器通过异步串行数据线收发字符数据信息,其特征在于,还包括收发非字符信息的步骤。本发明还提供了一种实现上述方法的异步串行收发器,包括字符收发器、中断控制器,中断控制器与字符收发器相连,还包括非字符信息识别器、定量接收单元。本发明的有益效果是,异步串行收发器能直接地收发非字符信息序列,其实现方法相比现有方法相比有效减小系统开销,降低软件的复杂度。
Description
技术领域
本发明涉及数据通信领域,特别涉及异步串行数据收发技术。
背景技术
异步串行数据信号线上的信息包括字符数据信息与非字符信息,非字符信息包括Idle序列、Break序列。Idle序列是连续的逻辑1,表示接口数据信号线空闲。Break序列是大于等于一个字符长度(含起始、停止位)的连续的逻辑0,作为带内控制信号。
已有的通用异步收发器不能独立地定量接收和发送非字符信息序列。如图1所示,通用异步收发器(UART)包括字符收发器、中断控制器,接收数据信号线(RXD)与字符收发器的输入端相连,字符收发器的输出端与发送数据信号线(TXD)相连,字符收发器的控制端与中断控制器相连,字符收发器与中断控制器分别通过局部总线(Local_bus)与系统通信。
具体地说,通用异步收发器接收Idle序列不直接产生任何接收动作,应用系统只能将无接收信息间接判断为收到Idle序列;通过停止发送的方法来间接发送Idle序列。通用异步收发器只能在接收Break序列的起点和终点产生报告信息;控制发送Break序列的起点和终点。
而一些通信协议需要直接地定量接收和发送Idle及Break序列,采用通用异步收发器实现这类通信协议需要配置外部定时器,在控制软件的配合下,间接地接收和发送Idle及Break序列。
目前使用外部定时器解决异步串行数据通信中接收和发送Idle序列及Break序列需要较大的系统开销,大幅度增加软件的复杂度,在控制多个异步串口时会严重降低系统的性能。
发明内容
本发明要解决的技术问题是:提供一种不依赖外部定时器,能定量收发非字符信息的方法及实现该方法的异步串行收发器。
本发明为解决上述技术问题所采用的技术方案是:提供一种异步串行数据线信息收发方法,异步串行收发器通过异步串行数据线收发字符数据信息,其特征在于,还包括收发非字符信息的步骤:
a、异步串行收发器从异步串行数据线接收非字符信息时,识别非字符信息的序列类型并统计非字符信息的序列长度,定量接收非字符信息,并向系统报告收到非字符信息事件;
b、异步串行收发器向异步串行数据线发送非字符信息时,根据从系统收到的发送非字符信息事件,定量发送非字符信息。
非字符信息为Idle序列或Break序列。
具体的,步骤a所述定量接收非字符信息,对于接收Idle序列时具体为:预先设定Idle序列最小值、Idle序列分段报告长度、Idle序列最大值;所述Idle序列最大值>Idle序列分段报告长度>Idle序列最小值;分类处理过程如下:
(1)如待接收的Idle序列长度≤Idle序列最小值,异步串行收发器统计完该Idle序列长度后,异步串行收发器忽略该Idle序列,不向系统报告收到Idle序列事件;
(2)如Idle序列最小值<待接收的Idle序列长度≤Idle序列分段报告长度,异步串行收发器定量接收的Idle序列长度等于统计的Idle序列长度,并向系统报告收到Idle序列事件;
(3)如Idle序列分段报告长度<待接收的Idle序列长度<Idle序列最大值,每当统计的Idle序列长度等于Idle序列分段报告长度时,异步串行收发器就向系统报告一次收到Idle序列事件并清零重新分段统计Idle序列长度,直至到本Idle序列的终点,最后一次向系统报告收到Idle序列事件;除最后一次报告收到Idle序列事件外,异步串行收发器定量接收的Idle序列长度等于Idle序列分段报告长度;最后一次报告收到Idle序列事件中,异步串行收发器定量接收的Idle序列长度等于最后一次分段统计的Idle序列长度;
(4)如Idle序列最大值≤待接收的Idle序列长度时,每当统计的Idle序列长度等于Idle序列分段报告长度时,异步串行收发器就向系统报告一次收到Idle序列事件并清零重新分段统计Idle序列长度,直至累计的Idle序列长度等于Idle序列最大值时,异步串行收发器停止统计并最后一次向系统报告收到Idle序列事件;除最后一次报告收到Idle序列事件外,异步串行收发器定量接收的Idle序列长度等于Idle序列分段报告长度;最后一次报告收到Idle序列事件中,异步串行收发器定量接收的Idle序列长度等于累计到Idle序列最大值时,最后一次分段统计的Idle序列长度;
所述待接收的Idle序列是指异步串行数据线上连续的一段Idle序列。
具体的,步骤b所述定量发送非字符信息,对于发送Idle序列时具体为:预先设定待发送的Idle序列长度;
当异步串行收发器发送完待发送的Idle序列,且根据系统发送事件队列顺序已有其它字符信息或非字符信息序列需要发送,则异步串行收发器根据系统发送事件队列顺序发送已有待发送的内容;
当异步串行收发器发送完待发送的Idle序列,且异步串行收发器无任何内容需要发送,则继续发送Idle序列直到收到系统发送事件。
具体的,步骤a所述定量接收非字符信息,对于接收Break序列时具体为:预先设定Break序列最大值、Break序列分段报告长度,所述Break序列最大值>Break序列分段报告长度;
(1)当待接收的Break序列长度等于一个字符的长度,异步串行数据收发器向系统报告收到Break序列事件,进入步骤(2);
(2)如待接收的Break序列长度≤Break序列分段报告长度,异步串行收发器统计完该Idle序列长度后,立即向系统报告收到Break序列和Break序列终止事件;异步串行收发器定量接收的Break序列长度等于统计的Break序列长度;
(3)如Break序列分段报告长度<待接收的Break序列长度<Break序列最大值,每当统计的Break序列长度等于Break序列分段报告长度时,异步串行收发器就向系统报告一次收到Break序列事件并清零重新分段统计Break序列长度,直至到本Break序列的终点,最后一次向系统报告收到Break序列事件和Break序列终止事件;除最后一次报告收到Break序列事件外,异步串行收发器定量接收的Break序列长度等于Break序列分段报告长度;最后一次报告收到Break序列事件中,异步串行收发器定量接收的Break序列长度等于最后一次分段统计的Break序列长度;
(4)如待接收的Break序列≥Break序列最大值;每当统计的Break序列长度等于Break序列分段报告长度时,异步串行收发器就向系统报告一次收到Break序列事件并清零重新分段统计Break序列长度,直至累计的Break序列长度等于Break序列最大值时,异步串行收发器停止统计并最后一次向系统报告收到Break序列事件,直到该Break序列终点才报告Break序列终止事件;除最后一次报告收到Break序列事件外,异步串行收发器定量接收的Break序列长度等于Break序列分段报告长度;最后一次报告收到Break序列事件中异步串行收发器定量接收的Break序列长度等于累计到Break序列最大值时,最后一次分段统计时的Break序列长度;
所述待接收的Break序列是指异步串行数据线上连续的一段Break序列。
具体的,步骤b所述定量发送非字符信息,对于发送Break序列时具体为:预先设定待发送的Break序列长度;
当异步串行收发器发送完待发送的Break序列,且根据系统发送事件队列顺序已有其它字符信息或非字符信息序列需要发送,则异步串行收发器根据系统发送事件队列顺序发送已有待发送的内容;
当异步串行收发器发送完待发送的Break序列,且异步串行收发器无任何内容需要发送,则异步串行收发器发送Idle序列直到收到系统发送事件。
本发明还提供了一种实现上述方法的异步串行收发器,包括字符收发器、中断控制器,中断控制器与字符收发器相连,还包括非字符信息识别器、定量接收单元;非字符信息识别器的输入端、字符收发器的输入端分别与接收数据信号线相连;非字符信息识别器与定量接收单元相连;定量接收单元的输出端连接中断控制器;
所述非字符信息识别器用于识别非字符信息的序列类型;
所述定量接收单元用于统计非字符信息的序列长度,定量接收非字符信息。
具体的,定量接收单元包括计数器、接收比较器、接收比较寄存器、非字符信息控制器、接收长度寄存器、接收队列控制器;非字符信息识别器与计数器相连;接收比较寄存器与接收比较器的一个输入端相连,接收比较器的另一个输入端与计数器相连;非字符信息控制器分别与接收比较器、计数器、非字符信息识别器相连;非字符信息控制器的控制端与计数器相连;非字符信息控制器的输出端分别与接收长度寄存器与接收队列控制器相连,接收队列控制器的输出端连接中断控制器;
所述计数器用于统计待接收的非字符信息的序列长度;
所述接收比较寄存器用于存储预先设定的控制接收序列长度值;
所述接收比较器用于比较待接收的非字符信息的序列长度与控制接收序列长度值,将比较结果输出到非字符信息控制器;
所述接收长度寄存器用于存储定量接收的非字符信息;
所述非字符信息控制器用于根据所述比较结果将定量接收的非字符信息写入接收长度寄存器,并向接收队列控制器报告接收到非字符信息事件;
所述接收队列控制器用于将来自于非字符信息控制器、字符收发器的报告事件组织成队列,按序向中断控制器发出事件报告信号。
具体的,所述定量接收单元包括Idle序列定量接收单元、Break序列定量接收单元,所述接收比较寄存器保存的预先设定的控制接收序列长度值包括:Idle序列最小值、Idle序列分段报告长度、Idle序列最大值。所述接收比较寄存器存储的预先设定的控制接收序列长度值还包括:Break序列分段报告长度、Break序列最大值。
进一步的,异步串行收发器还包括定量发送单元,定量发送单元输出端连接发送数据信号线相连。
定量发送单元包括发送队列控制器、发送长度寄存器;所述字符收发器与发送队列控制器的一个输入端相连;发送长度寄存器与发送队列控制器的另一个输入端相连;发送队列控制器的输出端连接发送数据信号线,发送队列控制器还与中断控制器相连;
所述发送长度寄存器用于保存已设定的待发送的非字符信息;
所述发送队列控制器用于将收到的发送事件组织成队列,根据已设定的待发送非字符信息序列长度,按序向发送数据信号线发送。
定量发送单元包括Idle序列定量发送单元、Break序列定量发送单元,所述发送长度寄存器保存的已设定的待发送的非字符信息包括Idle序列、Break序列。
本发明的有益效果是,异步串行收发器能直接地收发非字符信息序列,其实现方法相比现有方法相比有效减小系统开销,降低软件的复杂度。
附图说明
图1为通用异步收发器示意图;
图2为本发明异步串行收发器示意图;
图3为本发明异步串行收发器的实施例逻辑电路框图。
具体实施方式
为了能定量收发非字符信息,本发明在通用异步收发器(包括字符收发器、中断控制器)的基础上增加了非字符信息识别器、定量接收单元、定量发送单元。如图2所示,非字符信息识别器的输入端、字符收发器的输入端分别与接收数据信号线相连;非字符信息识别器与定量接收单元相连;定量接收单元、定量发送单元分别连接中断控制器。
非字符信息识别器用于识别非字符信息的序列类型;
定量接收单元用于统计非字符信息序列的序列长度;
定量接收单元包括计数器、接收比较器、接收比较寄存器、非字符信息控制器、接收长度寄存器、接收队列控制器;非字符信息识别器与计数器相连;计数器用于统计非字符信息识别器识别出的非字符信息序列(待接收的非字符信息)的序列长度;接收比较寄存器与接收比较器的一个输入端相连,接收比较器的另一个输入端与计数器相连;非字符信息控制器分别与接收比较器、计数器、非字符信息识别器相连;非字符信息控制器的控制端与计数器相连;
其中接收比较器、接收比较寄存器、非字符信息控制器用于定量接收非字符信息序列。
非字符信息识别器与计数器相连。非字符信息识别器输出一路信号到非字符信息控制器告知其已收到非字符信息;接收比较器一方面接收计数器统计出的非字符信息序列的序列长度,另一方面将接收比较寄存器中设定的长度值与计数器统计出的非字符信息序列的序列长度作比较,将比较结果送到非字符信息控制器,该比较结果用于控制非字符信息控制器从计数器直接获得的非字符信息序列的序列长度做出定量接收的处理,即控制非字符信息控制器将定量接收的非字符信息写入接收长度寄存器并向接收队列控制器报告收到非字符信息序列事件;字符收发器、非字符信息控制器的输出端与接收队列控制器相连,接收队列控制器将来自于非字符信息控制器、字符收发器的报告事件组织成队列,按序向中断控制器发出事件报告信号。
定量发送单元包括发送队列控制器、发送长度寄存器;字符收发器与发送队列控制器的一个输入端相连,发送长度寄存器保存有预先设定的非字符信息发送比较值;发送长度寄存器与发送队列控制器的另一个输入端相连;发送队列控制器的输出端连接发送数据信号线;发送队列控制器根据已设定的待发送非字符信息序列长度,控制对当前非字符信息序列的发送状态,定量按序向发送数据信号线发送异步串行数据,从而达到定量发送的目的。
当然,不设置定量发送单元也能实现定量收发非字符信息。定量接收单元向按序向中断控制器发出事件报告信号后,由系统发送异步串行数据。
实施例
以本发明定量收发Idle序列与Break序列的异步串行收发器为例,定量接收单元包括Idle序列定量接收单元、Break序列定量接收单元;定量发送单元包括Idle序列定量发送单元、Break序列定量发送单元。字符数据长度以字节为单位;因为Idle序列和Break序列都是重复的码元序列,所以Idle序列和Break序列长度以码元为单位。
对于Idle序列,定量收发是限定异步串行收发器从异步串行数据线接收Idle序列以及向异步串行数据线发送Idle序列的长度的最大值与最小值;对于Break序列为限定异步串行收发器从异步串行数据线接收Break序列以及向异步串行数据线发送Break序列的长度的最大值。
要实现Idle序列定量接收和发送需要下列5个寄存器和2个计数器:
1)Idle序列最小值寄存器:读写寄存器,是接收比较寄存器之一,用于由系统设置期望删除的Idle序列碎片的最大长度数值,即接收Idle序列的长度最小值,避免接收Idle序列碎片;
2)Idle序列最大值寄存器:读写寄存器,是接收比较寄存器之一,用于对一个长的Idle序列,由系统设置期望的限制长度数值,即接收Idle序列的长度最大值,限制接收长度;
3)Idle序列分段报告寄存器:读写寄存器,是接收比较寄存器之一,用于在接收Idle序列限制寄存器设置值较大时,由系统设置期望的报告间隔长度数值,本发明收发器分段向系统报告收到Idle序列事件,改善报告的实时性;
4)接收Idle序列长度寄存器:只读寄存器,用于所述收发器向系统报告收到Idle序列事件时,装入接收到的定量Idle序列长度值;
5)Idle序列报告计数器:内部计数器,用于统计上次报告收到Idle序列事件之后新接收到的Idle序列长度;收发器报告收到Idle序列事件时将接收Idle序列报告计数器的计数值装入接收Idle序列长度寄存器,清零接收Idle序列报告计数器,重新开始计数;
6)Idle序列累加计数器:内部计数器,用于从Idle序列起点累计连续Idle序列的长度;
7)Idle序列发送长度寄存器:读写寄存器,用于由系统设置要发送的Idle序列长度数值,控制异步串行收发器发送Idle序列的长度。
要实现Break序列的定量接收和发送部件需要下列4个寄存器和2个计数器:
1)Break序列最大值寄存器:读写寄存器,是接收比较寄存器之一,用于对一个长的Break序列,由系统设置期望的限制接收长度数值,即接收Break序列的长度最大值,限制接收长度;
2)Break序列分段报告寄存器:读写寄存器,是接收比较寄存器之一,用于在接收Break序列限制寄存器设置值较大时,由系统设置期望的报告间隔长度数值;异步串行收发器分段向系统报告收到Break序列事件,保证报告的实时性;
3)接收Break序列寄存器:只读寄存器,是接收比较寄存器之一,用于异步串行收发器向系统报告收到Break序列事件时,装入接收到的定量Break序列长度值;
4)Break序列报告计数器:内部计数器,用于统计上次报告收到Break序列事件之后新接收到的Break序列长度;异步串行收发器报告收到Break序列事件时将接收Break序列报告计数器的计数值装入接收Break序列寄存器,清零接收Break序列报告计数器,重新开始计数;
5)Break序列长度累加计数器:内部计数器,用于累计连续Break序列的长度;
6)Break序列发送长度寄存器:读写寄存器,用于由系统写入要发送的Break序列长度值,控制所述异步串行收发器发送Break序列的长度。
字符数据、Break序列和Idle序列在异步串行接口数据信号线上是先后串行出现的,本发明用接收事件队列来表达发生的收到字符、Break序列和Idle序列事件之间的时间顺序,用发送事件队列来表达需要发送的字符、Break序列和Idle序列的时间顺序。
异步串行收发器定量接收Idle序列具体包括如下处理过程:
预先设定Idle序列最小值、Idle序列分段报告长度、Idle序列最大值;将设定的Idle序列最小值保存于Idle序列最小值寄存器、Idle序列分段值保存于Idle序列分段报告寄存器、Idle序列最大值保存于Idle序列最大值寄存器中;所述Idle序列最大值>Idle序列分段报告长度>Idle序列最小值;待接收的Idle序列是指异步串行数据线上连续的一段Idle序列;
(1)如待接收的Idle序列长度≤Idle序列最小值,异步串行收发器统计完该Idle序列长度后,异步串行收发器忽略该Idle序列;不向系统报告收到Idle序列事件;
(2)如Idle序列最小值<待接收的Idle序列长度≤Idle序列分段报告长度,异步串行收发器定量接收的Idle序列长度等于统计的Idle序列长度,并向系统报告收到Idle序列事件;
(3)如Idle序列分段报告长度<待接收的Idle序列长度<Idle序列最大值,每当统计的Idle序列长度等于Idle序列分段报告长度时,异步串行收发器就向系统报告一次收到Idle序列事件并清零重新分段统计Idle序列长度,对于分为多段多次报告的Idle序列,累计的Idle序列长度不清零,从Idle序列起点继续累计本Idle序列长度,直至到本Idle序列的终点,最后一次向系统报告收到Idle序列事件;除最后一次报告收到Idle序列事件外,异步串行收发器定量接收的Idle序列长度等于Idle序列分段报告长度;最后一次报告收到Idle序列事件中,异步串行收发器定量接收的Idle序列长度等于最后一次统计的Idle序列长度;
(4)如Idle序列最大值≤待接收的Idle序列长度时,每当统计的Idle序列长度等于Idle序列分段报告长度时,异步串行收发器就向系统报告一次收到Idle序列事件并清零重新分段统计本Idle序列长度,对于分为多段多次报告的Idle序列,累计的Idle序列长度为不清零,从Idle序列起点继续累计本Idle序列长度,直至累计的Idle序列长度等于Idle序列最大值时,异步串行收发器停止统计并最后一次向系统报告收到Idle序列事件,之后异步串行收发器不再报告收到限长Idle序列事件,直到下一个Idle序列起点才重新计数;除最后一次报告收到Idle序列事件外,异步串行收发器定量接收的Idle序列长度等于Idle序列分段报告长度;最后一次报告收到Idle序列事件中,异步串行收发器定量接收的Idle序列长度等于累计到Idle序列最大值时最后一次分段统计的Idle序列长度。
异步串行收发器定量接收Break序列具体包括如下处理过程:预先设定Break序列最大值、Break序列分段报告长度,将设定的Break序列分段报告长度保存于Break序列分段报告寄存器,Break序列最大值保存于Break序列最大值寄存器中,所述Break序列最大值>Break序列分段报告长度;待接收的Break序列是指异步串行数据线上连续的一段Break序列;
(1)当待接收的Break序列长度等于一个字符的长度,异步串行数据收发器向系统报告收到Break序列事件,进入步骤(2);
(2)如待接收的Break序列长度≤Break序列分段报告长度,异步串行收发器统计完该Idle序列长度后,立即向系统报告收到Break序列和Break序列终止事件;异步串行收发器定量接收的Break序列长度等于统计的Break序列长度;
(3)如Break序列分段报告长度<待接收的Break序列长度<Break序列最大值,每当统计的Break序列长度等于Break序列分段报告长度时,异步串行收发器就向系统报告一次收到Break序列事件并清零重新分段统计Break序列长度,直至到本Break序列的终点,最后一次向系统报告收到Break序列事件和Break序列终止事件;除最后一次报告收到Break序列事件外,异步串行收发器定量接收的Break序列长度等于Break序列分段报告长度;最后一次报告收到Break序列事件中,异步串行收发器定量接收的Break序列长度等于最后一次分段统计的Break序列长度;
(4)如待接收的Break序列≥Break序列最大值;每当统计的Break序列长度等于Break序列分段报告长度时,异步串行收发器就向系统报告一次收到Break序列事件并清零重新分段统计Break序列长度,直至累计的Break序列长度等于Break序列最大值时,异步串行收发器停止统计并最后一次向系统报告收到Break序列事件,直到该Break序列终点才报告Break序列终止事件;除最后一次报告收到Break序列事件外,异步串行收发器定量接收的Break序列长度等于Break序列分段报告长度;最后一次报告收到Break序列事件中,异步串行收发器定量接收的Break序列长度等于累计到Break序列最大值时,最后一次分段统计的Break序列长度。
异步串行收发器定量发送Idle序列,包括如下步骤:根据发送长度寄存器中已预先设定的待发送的Idle序列长度;
当异步串行收发器发送完待发送的Idle序列,且根据系统发送事件队列顺序已有其它字符信息或非字符信息序列需要发送,则异步串行收发器根据系统发送事件队列顺序发送已有待发送的内容;
当异步串行收发器发送完待发送的Idle序列,且异步串行收发器无任何内容需要发送,则继续发送Idle序列直到收到系统发送事件。
异步串行收发器定量发送Break序列,包括如下步骤:根据发送长度寄存器中已预先设定的待发送的Break序列;
当异步串行收发器发送完待发送的Break序列,且根据系统发送事件队列顺序已有其它字符信息或非字符信息序列需要发送,则异步串行收发器根据系统发送事件队列顺序发送已有待发送的内容;
当待发送的Break序列长度等于设定的Break序列发送比较值,且异步串行收发器无任何内容需要发送,则发送Idle序列直到收到系统发送事件。
如图3所示,异步串行收发器与系统连接的接口包括中断请求信号线INT和局部总线Local_bus,与异步串行电平转换电路连接的接口包括发送信号线TXD和接收信号线RXD。图3未示出异步串行控制信号线,以下也不赘述。
异步串行收发器中接收数据信号线RXD分别与非字符信息识别器、字符收发器相连;非字符信息识别器分别通过Idle序列定量接收单元、Break序列定量接收单元相连;定量发送单元与中断控制器相连,定量发送单元还与字符收发器和发送数据信号线TXD相连。
图3中,Idle序列定量接收单元包括Idle序列报告计数器、Idle序列累加计数器、Idle序列分段报告寄存器、Idle序列最小值寄存器、Idle序列最大值寄存器、Idle序列控制器、接收Idle序列长度寄存器、接收队列控制器。
Idle序列定量发送单元包括Idle序列发送长度寄存器、发送队列控制器。
Break序列定量接收单元包括Break序列报告计数器、Break序列累加计数器、Break序列分段报告寄存器、Break序列最大值寄存器、Break序列控制器、接收Break序列长度寄存器、接收队列控制器。
Break序列定量发送单元包括Break序列发送长度寄存器、发送队列控制器。
字符收发器,用于收发异步字符数据,本发明所述异步串行收发器的接收字符的功能和使用方法与通用异步收发器相同。本发明所述字符收发器还增加输出一路信号:Rec_char信号(接收字符信号)。Rec_char信号从一个字符码元序列的起始位开始到停止位结束期间为逻辑0,其余时间为逻辑1,即在Rec_char信号为逻辑1时,表示从接收数据信号线RXD上收到非字符码元。
字符收发器从起始位开始,检测到数据位码元为全0,并且停止位码元也为0,即判断为Break序列,输出检测到Break序列信号至Break序列控制器。由于字符收发器检查整个字符码元长度后,才能识别出Break序列,因此在检查整个字符码元长度期间,字符收发器输出的Rec_char信号为逻辑0,即在出现Break序列时,字符收发器输出Rec_char信号为逻辑1的起始位置滞后于实际Break序列起始位置一个字符长度。
字符收发器从停止位结束开始,检测到数据线码元为1,即判断为Idle序列,输出的Rec_char信号由逻辑0变为逻辑1,因此在出现Idle序列时,字符收发器输出的Rec_char信号为逻辑1的起始位置与实际Idle序列起始位置同步。
非字符信息识别器,用于识别接收数据信号线RXD上收到的非字符码元是Idle序列还是Break序列。非字符信息识别器输出Idle信号和Break信号,输出信号为逻辑1期间表示收到相应的序列,输出信号为逻辑0期间表示没有收到相应的序列。
Idle信号输出至Idle序列报告计数器和Idle序列累加计数器。Idle序列报告计数器和Idle序列累加计数器在所述非字符信息识别器输出所述Idle信号为逻辑1期间进行计数,计数所用时钟信号频率与字符波特率相同。
Idle序列报告计数器的计数输出作为比较器1的一个输入值,Idle序列分段报告寄存器的设置值作为所述比较器1的另一个输入值,一旦所述Idle序列报告计数器的计数输出值大于等于Idle序列分段报告寄存器的设置值,比较器1的比较结果信号即为逻辑1,否则为逻辑0。所述比较器1的比较结果信号输出至Idle序列控制器。
Idle序列累加计数器的计数输出作为比较器2的一个输入值,Idle序列最小值寄存器的设置值作为比较器2的另一个输入值,一旦所述Idle序列长度累加计数器的计数输出值大于等于Idle序列最小值寄存器的设置值,比较器2的比较结果信号即为逻辑1,否则为逻辑0。比较器2的比较结果信号输出至Idle序列控制器。
Idle序列累加计数器的计数输出作为比较器3的一个输入值,Idle序列最大值寄存器的设置数值作为所述比较器3的另一个输入数值,一旦Idle序列长度累加计数器的计数输出值大于等于Idle序列最大值寄存器的设置值,比较器3的比较结果信号即为逻辑1,否则为逻辑0。比较器3的比较结果信号输出至Idle序列控制器。
Idle序列控制器的输入信号除比较器1、比较器2和比较器3输出的比较结果信号外,还包括非字符信息识别器输出的Idle信号和Idle序列长度报告计数器的计数输出信号。
非字符信息识别器输出的Idle信号状态为逻辑1时,当比较器1的比较结果信号状态为逻辑1、比较器3的比较结果信号状态为逻辑0、比较器2的比较结果信号状态由逻辑0变为逻辑1,表明目前接收的Idle序列长度达到分段长度但未达到Idle序列最大值,Idle序列控制器将Idle序列长度报告计数器的计数输出值写入接收Idle序列长度寄存器,并向接收队列控制器报告收到Idle序列事件。Idle序列控制器同时通过清零信号1(逻辑0电平信号)清零Idle序列长度报告计数器。
非字符信息识别器输出的Idle信号状态为逻辑1时,当比较器3的比较结果信号状态由逻辑0变为逻辑1,表明当前接收的Idle序列长度达到Idle序列最大值,Idle序列控制器将Idle序列长度报告计数器的计数输出值写入接收Idle序列长度寄存器,并向接收队列控制器报告收到Idle序列事件。Idle序列控制器发出清零信号1(逻辑0电平信号)清零并封锁Idle序列长度报告计数器,发出清零信号2清零并封锁所述接收Idle序列长度累加计数器,在该Idle序列后续期间一直保持所述清零并封锁状态,直到该Idle序列终止,Idle序列控制器才发出清零信号1(逻辑1电平信号)和清零信号2(逻辑1电平信号)解除对Idle序列长度报告计数器和Idle序列长度累加计数器的封锁。
当比较器1的比较结果为逻辑0,表明本Idle序列是碎片,所述接收Idle序列报告控制器无动作。
非字符信息识别器输出的Idle信号状态由逻辑1变为逻辑0时,表明Idle序列终止。
由于Break信号的起始位置滞后于实际Break序列起始位置一个字符长度,因此以下对于Break序列长度的计数均不含实际Break序列头部一个字符长度的数值。
Break信号输出至Break序列报告计数器和接收Break序列累加计数器。Break序列报告计数器和Break序列累加计数器在非字符信息识别器输出Break信号为逻辑1期间进行计数,计数所用时钟信号频率与字符波特率相同。
Break序列报告计数器的计数输出作为比较器4的一个输入值,Break序列分段报告寄存器的设置值作为比较器4的另一个输入值,一旦Break序列报告计数器的计数输出值大于等于所述接收Break序列分段报告寄存器的设置值,比较器4的比较结果信号即为逻辑1,否则为逻辑0。比较器4的比较结果信号输出至Break序列控制器。
Break序列累加计数器的计数输出作为比较器5的一个输入值,Break序列最大值寄存器的设置值作为比较器5的另一个输入值,一旦Break序列累加计数器的计数输出值大于等于Break序列最大值寄存器的设置值,比较器5的比较结果信号即为逻辑1,否则为逻辑0。比较器5的比较结果信号输出至Break序列控制器。
接收Break序列控制器的输入信号除比较器4和比较器5输出的比较结果信号外,还包括非字符信息识别器输出的Break信号和Break序列报告计数器的计数输出信号、以及字符收发器输出的Break序列检测信号。
字符收发器输出的Break序列检测信号状态为逻辑1时,表明字符收发器检测到一个字符长度的Break序列,Break序列控制器向接收队列控制器报告收到一个字符长度Break序列事件,写入接收Break序列长度数据寄存器的数值为一个字符长度,同时通过清零信号5清零字符收发器中Break序列检测信号。
非字符信息识别器输出的Break信号状态为逻辑1时,当比较器4的比较结果信号状态由逻辑0变为逻辑1,比较器5的比较结果信号状态为逻辑0,表明当前Break序列长度达到分段长度但未达到Break序列最大值,Break序列控制器将Break序列报告计数器的计数输出值写入接收Break序列长度寄存器,并向接收队列控制器报告收到持续Break序列事件。Break序列控制器同时通过清零信号3清零Break序列长度报告计数器。
非字符信息识别器输出的Break信号状态为逻辑1时,当比较器5的比较结果信号状态由逻辑0变为逻辑1,表明当前Break序列长度达到Break序列最大值,Break序列控制器将Break序列报告计数器的计数输出值写入接收Break序列长度寄存器,并向接收队列控制器报告收到持续Break序列事件。Break序列控制器发出清零信号3(逻辑0电平信号)清零并封锁Break序列报告计数器,发出清零信号4(逻辑0电平信号)清零并封锁接收Break序列累加计数器,在本Break序列后续期间一直保持所述清零并封锁状态,直到本Break序列终止Break序列控制器才发出清零信号3(逻辑1电平信号)和清零信号4(逻辑1电平信号)解除对Break序列报告计数器和Break序列累加计数器的封锁,并报告收到Break序列终止事件。
非字符信息识别器输出的Break信号状态由逻辑1变为逻辑0时,表明Break序列终止。当比较器5的比较结果信号状态为逻辑0,表明当前接收的Break序列长度未达到Break序列最大值,Break序列控制器将Break序列报告计数器的计数输出值写入接收Break序列寄存器,并向接收队列控制器报告收到Break序列终止事件。Break序列控制器同时发出清零信号3清零Break序列报告计数器,发出清零信号4清零Break序列累加计数器。
所述接收队列控制器接收的报告事件包括:
字符收发器报告的收到字符事件;
字符收发器报告的所述检测到Break序列事件;
接收Idle序列报告控制器报告的所述收到Idle序列事件;
接收Break序列报告控制器报告的所述收到一个字符长度Break序列事件;
接收Break序列报告控制器报告的所述收到持续Break序列事件;
Break序列报告控制器报告的接收Break序列终止事件。
接收队列控制器将其收到的所述各种报告事件组织成队列,按序向中断控制器发出事件报告信号,中断控制器接收到事件报告信号后产生中断请求信号INT。中断控制器在已有中断请求信号INT未被响应的情况下,控制接收队列控制器暂不发出新的事件报告信号。
Idle序列发送长度寄存器,用于控制所述异步串行收发器发送Idle序列的长度,由系统向Idle序列发送长度寄存器设置要发送的Idle序列长度数值。
Break序列发送长度寄存器,用于控制所述异步串行收发器发送Break序列的长度,由系统向Break序列发送长度寄存器写入要发送的Break序列长度数值。
发送队列控制器,将其收到的各种发送事件组织成队列,按序向发送数据信号线TXD发送。当发送队列控制器发送完字符数据、Break序列或Idle序列,或者余下的未发送完部分达到设置水平时,发送队列控制器向中断控制器发出发送事件报告信号,中断控制器接收到发送事件报告信号后产生中断请求信号INT。所述中断控制器在已有中断请求信号INT未被响应的情况下,控制所述发送队列控制器暂不发出新的发送事件报告信号。
以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明揭露的技术范围以内,可以轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (2)
1.异步串行数据线信息收发方法,异步串行收发器通过异步串行数据线收发字符数据信息,其特征在于,还包括收发非字符信息的步骤:
a、异步串行收发器从异步串行数据线接收非字符信息时,识别非字符信息的序列类型并统计非字符信息的序列长度,定量接收非字符信息,并向系统报告收到非字符信息事件;
b、异步串行收发器向异步串行数据线发送非字符信息时,根据从系统收到的发送非字符信息事件,定量发送非字符信息;
所述非字符信息为Idle序列、Break序列;
当步骤a定量接收接收Idle序列时,具体为:预先设定Idle序列最小值、Idle序列分段报告长度、Idle序列最大值;所述Idle序列最大值>Idle序列分段报告长度>Idle序列最小值;分类处理过程如下:
(1)当待接收的Idle序列长度≤Idle序列最小值,异步串行收发器统计完该Idle序列长度后,异步串行收发器忽略该Idle序列,不向系统报告收到Idle序列事件;
(2)当Idle序列最小值<待接收的Idle序列长度≤Idle序列分段报告长度,异步串行收发器定量接收的Idle序列长度等于统计的Idle序列长度,并向系统报告收到Idle序列事件;
(3)当Idle序列分段报告长度<待接收的Idle序列长度<Idle序列最大值,每当统计的Idle序列长度等于Idle序列分段报告长度时,异步串行收发器就向系统报告一次收到Idle序列事件并清零重新分段统计Idle序列长度,直至到本Idle序列的终点,最后一次向系统报告收到Idle序列事件;除最后一次报告收到Idle序列事件外,异步串行收发器定量接收的Idle序列长度等于Idle序列分段报告长度;最后一次报告收到Idle序列事件中,异步串行收发器定量接收的Idle序列长度等于最后一次分段统计的Idle序列长度;
(4)当Idle序列最大值≤待接收的Idle序列长度时,每当统计的Idle序列长度等于Idle序列分段报告长度时,异步串行收发器就向系统报告一次收到Idle序列事件并清零重新分段统计Idle序列长度,直至累计的Idle序列长度等于Idle序列最大值时,异步串行收发器停止统计并最后一次向系统报告收到Idle序列事件;除最后一次报告收到Idle序列事件外,异步串行收发器定量接收的Idle序列长度等于Idle序列分段报告长度;最后一次报告收到Idle序列事件中,异步串行收发器定量接收的Idle序列长度等于累计到Idle序列最大值时,最后一次分段统计的Idle序列长度;
所述待接收的Idle序列是指异步串行数据线上连续的一段Idle序列;
当步骤b定量发送Idle序列时,具体为:根据发送长度寄存器中系统已预先设定待发送的Idle序列长度,当异步串行收发器发送完待发送的Idle序列,且根据系统发送事件队列顺序已有其它字符信息或非字符信息序列需要发送,则异步串行收发器根据系统发送事件队列顺序发送已有待发送的内容;当异步串行收发器发送完待发送的Idle序列,且异步串行收发器无任何内容需要发送,则继续发送Idle序列直到收到系统发送事件;
当步骤a定量接收Break序列时,具体为:预先设定Break序列最大值、Break序列分段报告长度,所述Break序列最大值>Break序列分段报告长度;
(1)当待接收的Break序列长度等于一个字符的长度,异步串行数据收发器向系统报告收到Break序列事件,进入步骤(2);
(2)当待接收的Break序列长度≤Break序列分段报告长度,异步串行收发器统计完该Break序列长度后,立即向系统报告收到Break序列和Break序列终止事件;异步串行收发器定量接收的Break序列长度等于统计的Break序列长度;
(3)当Break序列分段报告长度<待接收的Break序列长度<Break序列最大值,每当统计的Break序列长度等于Break序列分段报告长度时,异步串行收发器就向系统报告一次收到Break序列事件并清零重新分段统计Break序列长度,直至到本Break序列的终点,最后一次向系统报告收到Break序列事件和Break序列终止事件;除最后一次报告收到Break序列事件外,异步串行收发器定量接收的Break序列长度等于Break序列分段报告长度;最后一次报告收到Break序列事件中,异步串行收发器定量接收的Break序列长度等于最后一次分段统计的Break序列长度;
(4)当待接收的Break序列长度≥Break序列最大值,每当统计的Break序列长度等于Break序列分段报告长度时,异步串行收发器就向系统报告一次收到Break序列事件并清零重新分段统计Break序列长度,直至累计的Break序列长度等于Break序列最大值时,异步串行收发器停止统计并最后一次向系统报告收到Break序列事件,直到该Break序列终点才报告Break序列终止事件;除最后一次报告收到Break序列事件外,异步串行收发器定量接收的Break序列长度等于Break序列分段报告长度;最后一次报告收到Break序列事件中异步串行收发器定量接收的Break序列长度等于累计到Break序列最大值时,最后一次分段统计时的Break序列长度;
所述待接收的Break序列是指异步串行数据线上连续的一段Break序列;
当步骤b定量发送Break序列时,具体为:根据发送长度寄存器中系统已预先设定待发送的Break序列长度,当异步串行收发器发送完待发送的Break序列,且根据系统发送事件队列顺序已有其它字符信息或非字符信息序列需要发送,则异步串行收发器根据系统发送事件队列顺序发送已有待发送的内容;当待发送的Break序列长度等于设定的Break序列发送的长度数值,且异步串行收发器无任何内容需要发送,则发送Idle序列直到收到系统发送事件。
2.异步串行收发器,包括字符收发器、中断控制器,中断控制器与字符收发器相连,其特征在于,还包括非字符信息识别器、定量接收单元、定量发送单元;非字符信息识别器的输入端、字符收发器的输入端分别与接收数据信号线相连;非字符信息识别器与定量接收单元相连;定量接收单元的输出端连接中断控制器;字符收发器与定量发送单元相连,定量发送单元与中断控制器相连,定量发送单元输出端连接发送数据信号线;
所述非字符信息识别器用于识别非字符信息的序列类型;所述非字符信息为Idle序列、Break序列;
所述定量接收单元用于统计非字符信息的序列长度,定量接收非字符信息;包括计数器、接收比较器、接收比较寄存器、非字符信息控制器、接收长度寄存器、接收队列控制器;非字符信息识别器与计数器相连;接收比较寄存器与接收比较器的一个输入端相连,接收比较器的另一个输入端与计数器相连;非字符信息控制器分别与接收比较器、非字符信息识别器相连;非字符信息控制器的控制端与计数器相连;非字符信息控制器的输出端分别与接收长度寄存器和接收队列控制器相连,接收队列控制器的输出端连接中断控制器;
所述计数器用于统计待接收的非字符信息的序列长度;
所述接收比较寄存器用于存储预先设定的控制接收序列长度值;
所述接收比较器用于比较待接收的非字符信息的序列长度与控制接收序列长度值,将比较结果输出到非字符信息控制器;所述接收比较寄存器保存的预先设定的控制接收序列长度值包括:Idle序列最小值、Idle序列分段报告长度、Idle序列最大值、Break序列分段报告长度、Break序列最大值;
所述接收长度寄存器用于存储定量接收的非字符信息;
所述非字符信息控制器用于根据所述比较结果将定量接收的非字符信息写入接收长度寄存器,并向接收队列控制器报告接收到非字符信息事件;
所述接收队列控制器用于将来自于非字符信息控制器、字符收发器的报告事件组织成队列,按序向中断控制器发出事件报告信号;
定量发送单元包括发送队列控制器、发送长度寄存器;所述字符收发器与发送队列控制器的一个输入端相连;发送长度寄存器与发送队列控制器的另一个输入端相连;发送队列控制器的输出端连接发送数据信号线,发送队列控制器还与中断控制器相连;
所述发送长度寄存器用于保存已设定的待发送的非字符信息;
所述发送队列控制器用于将收到的发送事件组织成队列,根据已设定的待发送非字符信息序列长度,按序向发送数据信号线发送。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007102015853A CN101383819B (zh) | 2007-09-05 | 2007-09-05 | 异步串行数据线信息收发方法及异步串行收发器 |
PCT/CN2008/071466 WO2009030129A1 (fr) | 2007-09-05 | 2008-06-27 | Procédé d'émission-réception d'informations de ligne de données série asynchrone et émetteur-récepteur série asynchrone |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007102015853A CN101383819B (zh) | 2007-09-05 | 2007-09-05 | 异步串行数据线信息收发方法及异步串行收发器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101383819A CN101383819A (zh) | 2009-03-11 |
CN101383819B true CN101383819B (zh) | 2012-02-01 |
Family
ID=40428461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007102015853A Active CN101383819B (zh) | 2007-09-05 | 2007-09-05 | 异步串行数据线信息收发方法及异步串行收发器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101383819B (zh) |
WO (1) | WO2009030129A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102882754B (zh) * | 2012-09-29 | 2015-08-05 | 南京国电南自轨道交通工程有限公司 | 重复中断方式485方向控制方法 |
CN105893291B (zh) * | 2014-11-18 | 2020-06-09 | 刘伯安 | 一种异步接收串行数据的方法及装置 |
US9825754B2 (en) * | 2015-06-22 | 2017-11-21 | Microchip Technology Incorporated | Independent UART BRK detection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1052582A (zh) * | 1989-12-15 | 1991-06-26 | 日本电气株式会社 | 具有时间片调度装置的高速异步传送方式包交换网络系统 |
CN1311592A (zh) * | 2000-05-25 | 2001-09-05 | 深圳市中兴通讯股份有限公司 | 一种全双工异步串行通信方法及其通信系统 |
CN1361888A (zh) * | 1999-07-16 | 2002-07-31 | 汤姆森许可公司 | 用于生成一个控制信号位流的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2830953A1 (fr) * | 2001-10-15 | 2003-04-18 | St Microelectronics Sa | Dispositif de synchronisation a chaud d'un recepteur de trames asynchrones |
FR2830955A1 (fr) * | 2001-10-15 | 2003-04-18 | St Microelectronics Sa | Recepteur asynchrone de type uart a deux modes de fonctionnement |
-
2007
- 2007-09-05 CN CN2007102015853A patent/CN101383819B/zh active Active
-
2008
- 2008-06-27 WO PCT/CN2008/071466 patent/WO2009030129A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1052582A (zh) * | 1989-12-15 | 1991-06-26 | 日本电气株式会社 | 具有时间片调度装置的高速异步传送方式包交换网络系统 |
CN1361888A (zh) * | 1999-07-16 | 2002-07-31 | 汤姆森许可公司 | 用于生成一个控制信号位流的方法和装置 |
CN1311592A (zh) * | 2000-05-25 | 2001-09-05 | 深圳市中兴通讯股份有限公司 | 一种全双工异步串行通信方法及其通信系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101383819A (zh) | 2009-03-11 |
WO2009030129A1 (fr) | 2009-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101047615B (zh) | 一种以太网数据流量控制方法 | |
CN101322357A (zh) | 千兆比特/10千兆比特以太网系统中的显式流控制 | |
CN101227366B (zh) | 总线传输数据防冲突方法 | |
CN109062847B (zh) | 片上系统、用于rs485串口通讯的ip核及其控制方法 | |
CN113904762B (zh) | 一种带环形缓冲区的全双工485总线通信系统及方法 | |
CN101383819B (zh) | 异步串行数据线信息收发方法及异步串行收发器 | |
CN101146090B (zh) | 一种基于usart总线的发送接收数据的方法及其装置 | |
CN101924679A (zh) | 一种以太网口报文限速方法、装置及数据通信设备 | |
CN108304335A (zh) | 一种通过dma接收串口不定长报文的方法 | |
CN101052938B (zh) | 低等待时间的数据分组的接收和处理 | |
US6778551B1 (en) | Collision control systems and methods utilizing an inter-frame gap code counter | |
CN101438245A (zh) | 网络上事件发生顺序的管理 | |
CN102148743B (zh) | 一种数据流量的控制方法、装置及移动终端 | |
CN101841476A (zh) | 报文处理方法、装置和网络设备 | |
US4975907A (en) | Method and device for the asynchronous transmission of data by packets | |
CN106708761A (zh) | 一种业务报文的处理方法及装置 | |
CN101052937B (zh) | 从数据队列中丢弃部分接收的消息 | |
CN100578971C (zh) | 通过通用串行总线通道进行传输的装置及方法 | |
CN110865891B (zh) | 一种异步消息编排方法和装置 | |
CN110099028A (zh) | 一种串口数据传输的方法及装置 | |
CN113794713A (zh) | Fc-ae-1553协议桥接mil-std-1553和uart的通讯处理方法 | |
CN110532110A (zh) | 一种在多核场景中自动切换外送数据的uart主控系统 | |
US5793803A (en) | Underrecovery system and method for block processing modems | |
CN111124969B (zh) | 一种基于fpga的改进型串口转换模块 | |
EP1518364A2 (en) | Method and system for optimizing the design of a network controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |