一种使用双控制字传送消息的方法
本发明涉及通信技术,更具体地说,涉及需要消息交换的通信、监控等应用技术。
如图1所示,双端口RAM(随机存取存储器)作为一种特殊类型的RAM,在双CPU(中央处理单元)之间高速数据交换以及一些高速数据采集与处理系统中得到广泛应用。它具有两个独立的端口,各自拥有一套相应的数据总线、地址总线和控制总线,允许两个端口独立、异步地对存储器中的任何存储单元进行存取操作。当两个端口同时对存储器中的同一单元进行存取操作时,可由其内部仲裁逻辑决定哪一方的操作有效。目前使用较多的双口RAM为IDT7132/IDT7142等,均为高速2K×8位双端口静态RAM。
双端口RAM在使用中需要注意的是数据冲突问题。虽然在硬件上,其内部具有仲裁逻辑,当两个端口同时对存储器的同一单元进行存取操作时能给出优先级别,但优先级的决定与某些引脚上信号的时序有关。因此,对双端口RAM进行存取操作的方法不同于一般的RAM。参见“双端口RAM在主从并行处理系统中的应用”,陈卫东等,哈尔滨工业大学机器人研究所,《微电子学与计算机》,1996年第3期,和“双端口存储器”,李小忠,《电信交换》,1996年第2期,实际应用中可以使用中断法和查询法:当CPU有空闲的中断管脚时,可以采用中断法,直接将BUSY信号的上升沿作为中断源;在采用查询法时,由于BUSY的典型有效时间为20ns,而一般单片机机器指令周期均为μs量级,所以必须通过加触发器扩展BUSY的有效时间,使得CPU可以识别,或者由BUSY的上升沿使触发器状态反转,通过比较触发器前后状态来判断本次操作是否有效。
以上两种硬件处理方法,虽然可靠,但效率比较低,而且在相当多的设计中,中断资源紧张,电路板的PCB(印刷电路板)布板已经没有添加触发器的空间,中断法及查询法都无法使用。因此,为简化对中断源的管理、简化硬件电路并提高效率,最重要的是为了保证信道消息传递的可靠性,我们采用了一种特殊的处理方法:保证可靠收发信道消息的双控制字操作方式。
通过软件处理可以有很多种方式,如采用单控制字技术、存储器单元分区技术或者内存访问区分区并交叉切换访问技术,参见“双端口RAM存取操作的处理方法”,赵建荣等,哈尔滨工业大学339信箱,《电子技术应用》,1996年第6期,但软件的处理方法大多根据应用系统中双口RAM的实际存取操作情况来设计,所以开发人员必须根据自己的应用设计出存取操作简单、有效且可靠的操作方式。
本发明的目的在于提供一种通信技术中信道交换消息的通讯方法,以保证收发方之间消息传递的可靠性。
本发明的目的还在于避开比较烦琐的硬件改造,尽量从软件的角度达到提高消息传递可靠性的目的,从而能适应更多的通信系统。
本发明的目的还在于提供一种通信技术中信道交换消息的通讯方法,以能够节省CPU中断资源,简化硬件电路,提高系统运行效率。
本发明的目的是这样实现的,一种使用双控制字传送消息的方法,采用两个控制字作为控制标志,其中一个是主控控制字,另一个是确认控制字。控制字的位数要能够表示预设的状态数。当发方向收方发送消息时,所述方法包括如下步骤:1)发方首先查询主控控制字,如主控控制字的标志表明现在信道消息区空,再查询确认控制字,若确认控制字的标志表明收方已经正确收到发方发出的上一条消息,则发方可以写入本条消息,发方写入消息到信道消息区之后,先将确认控制字改写为预设标志,再将主控控制字改写为预设标志,表明发方已经写入消息,但收方还未读走;如果查询到主控控制字的标志表示收方接收消息错误,发方应马上重发上一条消息;如果查询到主控控制字的标志表明现在信道消息区中的数据还没有被收方读走,发方需等待收方读走上一条消息,才能写本条消息;2)收方查询主控控制字,若主控控制字的标志表示此时发方没有发消息,信道消息区为空,则收方不作动作;若主控控制字的标志表示此时信道消息区中已经存入了发方发出的消息,则收方可以读走信道消息区中的数据;主控控制字的标志还可以设定为表示发方还未发出收方要求发方重发的消息;3)收方对读出数据进行消息类型判断,如果类型正确,首先回写确认控制字为设定标志,然后回写主控控制字为设定标志,表示收方正确接收到消息;若类型超出消息范围,则回写主控控制字为设定标志,表示收方接收消息错误,要求发方重发消息。
在本发明的表述中,称双控制字为主控控制字和确认控制字,但这仅是一种表述方式,本发明包含了不这么称呼双控制字但采用了双控制字以及与本发明相同或相类似的处理的通讯方法。
本发明的优点在于提高了收发方之间消息传递的可靠性。
双控制字的操作方式较之单控制字的方式进一步提高了消息收发的可靠性,原因在于双控制方式下,写消息时,先写确认控制字、后写主控控制字,而读消息时,先读主控控制字、后读确认控制字,同时读写控制字的机率要比单控制方式低很多,从根本上降低了双口RAM读写操作的冲突机率,从而提高了信道消息交换的可靠性。在系统调试和运行的实际应用中,验证了这一点。
以后文实施例中无线接入系统中基站主控板CPU与用户板CPU之间的交换消息为例,用户板向主控板示闲时发送的示闲消息,如果主控板没有收到,该信道将被吊死,现象表现为:主控板认为该信道仍处于忙状态,而实际上该信道已经向主控板示闲,且主控板认为原先在该信道上接续或通话的无线和有线用户正忙,不再响应它们的任何接续请求,而且不再给该信道分配任务,造成该信道及相应用户死锁的严重后果。在使用单控制字时,偶然会出现信道被吊死的情况,经查证发现原因是用户板发送的示闲消息主控板没有正确收到,针对这种情况,采用双控制字方式,用户板向主控板发送完示闲消息后,主控板若收到该示闲消息,必须回写该确认控制字为预设标志,用户板查询确认控制字,如果确认控制字的标志表明主控板已收到示闲消息,则用户板确认后才离开,这样就保证了信道不会被死锁。
从主控板和用户板的主从关系来看,主控板发送的消息,一旦用户板未收到,而主控板认为用户板已经收到且进入相应状态,这将造成信道状态的混乱,所以必须保证主控板发出的消息,用户板必须正确收到。为确保用户板收到主控板发送的消息,主控板软件与用户板软件协调,采用双控制字方式,即附加一个用户板收到消息确认控制字,用户板在收到主控板发送的消息后,首先回写该确认控制字为预设标志,然后再回写主控控制字为预设标志,向主控板确认用户板已收到消息,然后才离开,这样主控板能够准确掌握各信道的状态,从而保证了所有信道能够正确完成接续过程。
在无线接入基站系统中设计使用的双控制字操作方式,是对双端口RAM进行存取操作的软件处理方案中更为先进、有效、可靠的一种操作方式,它避开了硬件处理方法占用CPU中断资源以及运行效率较低的弱点,节省了CPU中断资源,简化了硬件电路,并且提高了系统运行效率。
本发明的优点还在于避开了比较烦琐的硬件改造,基本上从软件的角度达到了提高消息传递可靠性的目的,从而能适应更多的通信系统。
本发明的优点还在于能够节省CPU中断资源,简化硬件电路,提高了系统运行效率。
在中断源较多、CPU中断管脚资源已被占用,而且需要提高效率的系统中,和适用于双CPU通过双端口RAM进行高速消息交换的通信、监控等应用中,该双控制字操作方式的优点体现得尤其明显。
附图说明:
图1是双端口RAM结构方框图。
图2是用户板发送主控板接收信道消息示意框图。
图3是主控板发送用户板接收信道消息示意框图。
下面结合附图进一步说明本发明。
以无线接入系统中基站主控板CPU与用户板CPU之间的交换消息为例,其收发操作包括:
A.用户板向主控板发送消息,主控板接收相应消息;
B.主控板向用户板发送消息,用户板接收相应消息。
在无线接入本地环路系统的基站无线用户板上,使用IDT7132完成主控板与无线用户板之间的信息交换。
这里取主控和确认控制字各取八位二进制数,即一个二进制字节(byte)。主控控制字可以是十六进制数#00H、#0FFH、#0AAH三种,确认控制字可以是十六进制数#00H、#0FFH两种。这里将十六进制数0表示为#00H,其他十六进制数的表示类似。
图2是用户板发送主控板接收信道消息示意框图,这里主控板CPU采用8031,用户板CPU采用89C55;主控控制字为一个字节,确认控制字也为一个字节,信道消息区为若干字节;图中示出的是双口RAM寄存器A组。当用户板需要发送消息给主控板时,按如下过程进行操作:
(1)用户板首先查询主控控制字,主控控制字为#00H,表明现在信道消息区空,再查询确认控制字,若确认控制字为#99H,表明主控板已经正确收到用户板发出的上一条消息,用户板可以写入本条消息,用户板写入消息到信道消息区之后,将确认控制字改写为#00H,再将主控控制字改写为#0FFH,表明用户板已经写入消息,但主控板还未读走;如果查询到主控控制字为#0AAH,表示主控板接收消息错误,用户板应马上重发上一条消息;如果查询到主控控制字为#0FFH,表明现在信道消息区中的数据还没有被主控板读走,需等待主控板读走上一条消息,才能写本条消息。
(2)主控板查询主控控制字,若为#00H,表示此时用户板没有发消息,信道消息区空,主控板不作动作;若为#0FFH,表示此时信道消息区中已经存入了用户板发出的消息,主控板可以读走信道消息区中数据;若为#0AAH,表示主控板要求用户板重发的消息,用户板还未发出。
(3)主控板对读出数据进行消息类型判断,如果类型正确,首先回写确认控制字#99H,然后回写主控控制字#00H,表示主控板正确接收到消息;若类型超出消息范围,回写主控控制字#0AAH,表示主控板接收消息错误,要求用户板重发消息。
上述过程1、2、3依次循环往复,完成用户板发送,主控板接收信道消息的过程。
图3是主控板发送用户板接收信道消息示意框图,这里主控板CPU采用8031,用户板CPU采用89C55;主控控制字为一个字节,确认控制字也为一个字节,信道消息区为若干字节;图中示出的是双口RAM寄存器B组。当用户板需要发送消息给主控板时,按如下过当主控板需要发送消息给用户板时,按如下过程进行操作:
(1)主控板首先查询主控控制字,主控控制字为#00H,表明现在信道消息区空,再查询确认控制字,若确认控制字为#99H,表明用户板已经正确收到主控板发出的上一条消息,主控板可以写入本条消息,主控板写入消息到信道消息区之后,将确认控制字改写为#00H,再将主控控制字改写为#0FFH,表明主控板已经写入消息,但用户板还未读走;如果查询到主控控制字为#0AAH,表示用户板接收消息错误,主控板应马上重发上一条消息;如果查询到主控控制字为#0FFH,表明现在信道消息区中的数据还没有被用户板读走,需等待用户板读走上一条消息,才能写本条消息。
(2)用户板查询主控控制字,若为#00H,表示此时主控板没有发消息,信道消息区空,用户板不作动作;若为#0FFH,表示此时信道消息区中已经存入了主控板发出的消息,用户板可以读走信道消息区中数据;若为#0AAH,表示用户板要求主控板重发的消息,主控板还未发出。
(3)用户板对读出数据进行消息类型判断,如果类型正确,首先回写确认控制字#99H,然后回写主控控制字#00H,表示用户板正确接收到消息;若类型超出消息范围,回写主控控制字#0AAH,表示用户板接收消息错误,要求主控板重发消息。
上述过程1、2、3依次循环往复,完成主控板发送,用户板接收信道消息的过程。