困扰无线单信道通信的一个公知的问题是,接收机部分总是会不
希望地接收到同一设备或系统的发射机发送的信号。用来避免这种不
应有的接收问题的一种方案是在一个信道中发送信号,而在不同的信
道中接收响应。然而,按照这种技术,有时候无法或不可能使用不同的
信道来发送和接收信号。
防止不希望的信号接收过程的另一种方案是发送一部分数据,然
后删除在发送数据之后很短时间内接收到的同等数量的数据。然而,
为了确定哪些接收的数据需要清除或是刷新,设备必须要对数据发送
的定时保持跟踪,因而会使这种方案变得非常复杂。
使用发送数据的数字信号格式可以简化刷新数据的问题。这当然
是因为可以知道发送的准确数据量,因而可以删除等量的数据。例如,
设备可以确定它已经发送了N个字节。因此,在从另一个设备接收到
响应之前,现有的设备必须要删除它接收到的最后N个字节。由此可
见,按照这种实施例,一个设备可以接收它发送的数据,但是通过精确
的数据管理就可以在从另一个设备接收实时数据之前删除这种数
据。然而,实现这种系统的一个障碍在于必须很快地删除接收的数据,
不能干扰对另一个设备发送的实际信号的接收。
受到上述问题困扰的一种设备是产生非相干光的红外发射机/接
收机,这种光倾向于发散而不是按照直线的路径。在一种采用公知的
红外数字信号协议,例如是红外数字组合(INFRARED DIGITAL
ASSOCIATION(IrDA))的设备中,信号的发送和接收是在同一个“信
道”上进行的,这是因为在频域中发送的信号不能象来自诸如VHF或
UHF等其他频谱中的其他电磁波那样很容易分成多个信道。因此,如
果周非相干光作为信号媒体,同一系统或是设备的光滤波器就会频繁
地接收到发送的信号。因此通常是采用单信道红外系统来消除每次发
送之后接收到的数据,因为这种接收信号正是刚刚发送的信号。
然而,如上所述,消除由同一设备的红外发射机发送的不希望的
接收信号的困难在于用来消除数据的响应时间很短,因为接收机必须
随时准备接收来自另一个设备的立即应答。
因此,在那些采用发光二极管(LED)并且用光检测器作为接收机
的系统或是其他各种形式的无线单信道通信系统中,确实存在着接收
到设备本身发送的信号的问题。因此需要有一种能够防止设备自身的
接收机接收到设备本身发送的信号的装置和方法,这种装置和方法需
要节省处理资源,并且占用的执行时间应该更短,这样才能尽量避免
错过由另一个设备作为响应而发送的数据块中的起始部分。
本发明公开了一种装置和方法,其中的双向通信是在单个通信信
道中执行的,它可以避免不必要的处理,并且可以在单一信道的环境
下实现更加有效的数据传输过程。本发明的装置包括一个逻辑电路,
它可以自动地关闭和启动UART(通用异步收发信机)的接收机部分,
以避免UART接收到设备本身的发射机发送的数据。采用这种逻辑电
路至少可以获得两个特别的优点。
第一,不会由于不必要地接收到UART本身的发射机发送的数据
而产生和处理在接收数据时由UART的接收机部分产生的、和必须进
行处理的软件中断处置。这样就能明显地减少必须进行处理的不必要
的软件中断次数。第二,由于UART总是需要在一个很短并且精确的时
间内准备从另一个系统中接收临近的立即响应,在实际的时间限制内
消除不应有的数据不会再成为问题,因为实际上没有必要消除这种数
据。本发明的装置和方法回避了在实时系统中必须快速消除不需要的
数据的时间限制,其方法是采用这样一种电路和方法,使得可以在发
送过程中自动地关闭接收机,并且在出现发送间断时启动接收机进行
接收。
在一个实施例中公开了一种UART内部的UART控制电路,这种
UART控制电路包括一个用来接收半双工模式信号的输入端。如果接
收到半双工模式的操作指示,UART控制电路就使UART按照半双工操
作模式工作。在半双工的操作模式下,如果在至少一个输入端接收到
至少一个信号,UART就关闭其接收机,并且指示出UART正在发送数
据。
在一个实施例的UART控制电路中包括来自FIFO寄存器组和数
据存储器的输入,分别用来指示其中有没有需要由UART发送的数
据。逻辑单元中还包括来自处理单元的输入,表示是否设置了一个标
准的UART接收机启动标记。UART控制电路还包括一个用来接收上述
半双工启动模式信号的输入端。如果规定了半双工的操作模式,并且
发射机的FIFO和发射机的数据存储器都是空的,就启动UART接收
机。在还没有确定半双工的操作模式时仍然启动接收机。否则就关闭
接收机。
本发明的方法包括:如果处理单元没有设置接收机启动标记,就
关闭接收机。如果设置了接收机启动标记,而外部的处理器没有确定
半双工的操作模式或者发射机的数据存储器和FIFO寄存器组都是空
的,就启动接收机。否则,如果确定了半双工操作模式并且发射机的数
据存储器或是FIFO寄存器组不是空的,就关闭接收机。
通过参照附图对最佳实施例的详细说明可以更加全面地理解本
发明的方法和系统,在附图中:
参见图1,在图中表示了一个实施例的UART 100,它通过数据总
线102连接到一个CPU 110。如图所示,发送数据存储器120的作用
是为准备由发射机140发送的数据排队。分别通过线路104和106
将发送FIFO 130连接在数据存储器120和发射机140之间。FIFO 130
向UART处理单元150提供一个信号,表示FIFO 130是否包含通过线
路108发送的数据。当发射机140发出一个信号160时,接收机170
就接收这一信号,接收机170通过线路112向存储器180发送该信
号。然后,存储器180通过线路114向处理单元150指示出已经从接
收机170接收到一个数据块。然后,作为对此的响应,处理单元150
就通过线路116指令存储器180删除这个数据块。如果在发射机140
发送一个信号160之后的很短时间内接收到一个作为信号的数据块,
处理单元150通常就会指示存储器180删除这个数据块。具体地说,
由发射机140产生一个中断,每当其发送信号160时就通过线路118
将中断发送给处理单元150。与此类似,由接收机170产生一个中断,
每当其接收到一个信号160时就通过线路122将中断发送给处理单元
150。因此,如图所示,每当发射机140发送一个信号160时,处理单元
150必须要处理从接收机170接收到的中断,因为接收机170会接收
到这同一个信号。此处还应该注意到,PU124通过线路124向接收机
170发送一个接收机启动标记,以允许接收机170接收信号。当发射
机140正在发送以及发射机140没有发送但是系统接通时,线路124
上通常就会建立这一接收机启动标记。
如上所述,使用数字信号格式可以简化信号的刷新。其原因当然
在于可以知道准确的发送数据量,因而就可以删除等量的数据。例如,
设备可以确定已经发送的字节数N。因此,在从另一个设备接收到一
个响应之前,当前的设备必须要删除最后接收到的N个字节。如图所
示,按照本实施例,设备可以接收它发送的数据,但是,通过精确的数
据管理,就可以在从另一个设备接收真实数据之前删除这种数据。然
而,实现这种系统的障碍在于必须要快速删除接收到的数据,这样才
不会干扰对另一个设备发送的实际信号的接收。
图2表示包括逻辑电路的一个UART的框图。具体地说,通过数据
总线202和模式控制线路204将UART 200连接到外部CPU 210。用
线路206将发送数据存储器220连接到发送FIFO 230。另外用线路
208将发送FIFO 230连接到发射机240。这样,当UART 200通过数
据总线202从CPU 210接收到用于发送的数据时,发送数据存储器220
就开始为准备发送的存储数据排队。然后,发送数据存储器220向发
送FIFO 230发送准备由发射机240发送的数据。按照公知的技术,
发送FIFO 230的作用是为发射机240提供数据发送的定时。如图所
示,当发射机240通过线路208从发送FIFO 230接收到一字节的数据
时,就将该字节的数据当作信号250发送。同时,通过线路212连接到
处理单元260的发射机240将通过线路212向处理单元260发送一个
软件中断,表示已经发送了一字节的数据。
同样,当接收机270接收到信号250时,就产生一个软件中断,通
过线路214将这一软件中断发送给处理单元260。接收机270还通过
线路216将接收的信号发送给接收数据存储器280。
如上文所述,在图1的UART中,处理单元150通过线路124向接
收机170发送一个接收机启动标记。可用这一接收机启动标记来启动
或是关闭接收机。无论UART是正在发送还是正在接收信号,接收机总
是使启动标记设定在逻辑1。然而,在图2所示的本发明的实施例中,
接收机启动标记是通过线路218发送给逻辑单元290的,而不是象现
有技术那样发送给接收机。逻辑单元290同时还通过线路222接收一
个输入信号,该信号表示发送数据存储器220是不是空的,并且通过
线路224接收一个信号,该信号表示发送FIFO 230是不是空的。根据
从线路222,224,218以及模式控制线路204上接收到的各个信号的逻
辑状态,逻辑单元290就能确定是否通过线路226启动或是关闭接收
机270。
在图2的实施例中,只有当线路218上设定的接收机启动标记为
是、并且模式控制线路204上的信号指示出全双工操作模式而不是半
双工操作模式时,逻辑单元290才启动接收机270接收一个信号250,
如果该信号代表半双工操作模式,则从线路222和224上接收的信号
就分别表示发送数据存储器220和发送FIFO 230是空的。因此,举例
来说,如果在线路218上接收到的接收机启动标记被设定在是、并且
模式控制线路204反映出已经启动了半双工操作模式,只有当线路
222和224上指示出发送数据存储器220和发送FIFO 230都是空的
时,逻辑单元290才会通过线路226启动接收机270接收一个信号
250。因此,按照数据存储器220或发送FIFO 230内具有用于直接发
送的数据的指示,当UART 200处在发送的操作模式时,如果外部CPU
210已经通过线路204规定了半双工的操作模式,接收机270就自动
关闭。
图2的UART 200包括一个包含在UART 200内部的处理单元260。
这一处理单元260所执行的功能和CPU 210是完全相同的。在本实施
例中,向处理单元260提供信号的每条线路上的信号和提供给外部
CPU 210处理的信号是相同的。
参见图3,在图中表示了图2所示实施例的逻辑单元290的逻辑
框图。如图所示,图3的逻辑单元300是由一个AND门310、一个OR
门320、以及第二AND门330构成的。AND门310的两个输入端接收
线路222和224上承载的来自图2的发送数据存储器220和发送FIFO
230的信号,这些信号分别反映出数据存储器220和发送FIFO 230是
不是空的。AND门310的逻辑输出通过线路312传送给OR门320的
一个输入端。通过图2中的线路204从CPU 210提供给UART 200的
半双工模式的操作信号被连接到一个反向器340,它在信号被发送给
OR门320的第二输入端之前改变信号的状态。然后通过线路314将
OR门320的逻辑输出传送给AND门330的一个输入端。从图中可
见,AND门330包括两个输入端,一个是OR门320的输出,另一个输入
端在图2的线路218上接收Rx启动标记。AND门330的输出是一个
Rx启动信号,它通过图2的线路226提供给接收机270,用来启动或是
关闭接收机270。如图所示,接收机270是按照以下的逻辑表达式由
图3中的逻辑单元来启动的:
Rx Enable=((Data Store Empty AND Transmit FIFO Emety)
OR Half Dupl ex Di sable)AND Rx Enable Flag
很显然,上述的表达式以及图3的电路可以有许多能够获得同样
结果的逻辑等效物。例如,半双工关闭信号就等于半双工启动信号的
逻辑非。本领域的技术人员很容易根据本发明的提示来实现等效的逻
辑电路和表达式。
以下参见图4,在图中表示了本发明方法的一个实施例。步骤410
包括确定是否已经设置了Rx启动标记。如果没有,就在步骤420关闭
接收机。如果设置了Rx启动标记,在步骤430中包括确定是否已经规
定了半双工操作模式。如果没有,就在步骤440启动接收机。然而,
如果已经规定了半双工操作模式,本发明的方法就包括在步骤450中
确定发送数据存储器是不是空的。如果数据存储器不是空的,就在步
骤460关闭接收机。然而,如果发送数据存储器是空的,本发明的方法
就包括在步骤470中确定发送FIFO是不是空的。如果发送FIFO不是
空的,就在步骤460关闭接收机。然而,如果发送FIFO是空的,就在步
骤440启动接收机。然而,在不脱离本发明精神的条件下,本领域的技
术人员很容易用不同的顺序安排上述的步骤。例如,步骤470可以放
在步骤450前面。在另一个实施例中,步骤410可以最后执行。
根据上述的说明,本领域的技术人员应该能够充分地认识到本发
明的装置和方法可以明显地减少软件中断处理,并且能减少处理器的
负担。根据上述的说明,本发明的优点还包括加快UART从另一个系统
接收一个响应时的读出速度,因此,不会有接收不到输入信号的可能
性。
尽管在上文中已经参照附图详细地说明了本发明的方法和装置
的实施例,此处还应该指出,本发明并不仅限于上述的实施例,在不脱
离以下的权利要求书所限定的本发明的精神和范围的条件下还可以
实现各式各样的改动,修改和替换。