專利名稱:一種使用雙控制字傳送消息的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),更具體地說(shuō),涉及需要消息交換的通信、監(jiān)控等應(yīng)用技術(shù)。
如圖1所示,雙端口RAM(隨機(jī)存取存儲(chǔ)器)作為一種特殊類型的RAM,在雙CPU(中央處理單元)之間高速數(shù)據(jù)交換以及一些高速數(shù)據(jù)采集與處理系統(tǒng)中得到廣泛應(yīng)用。它具有兩個(gè)獨(dú)立的端口,各自擁有一套相應(yīng)的數(shù)據(jù)總線、地址總線和控制總線,允許兩個(gè)端口獨(dú)立、異步地對(duì)存儲(chǔ)器中的任何存儲(chǔ)單元進(jìn)行存取操作。當(dāng)兩個(gè)端口同時(shí)對(duì)存儲(chǔ)器中的同一單元進(jìn)行存取操作時(shí),可由其內(nèi)部仲裁邏輯決定哪一方的操作有效。目前使用較多的雙口RAM為IDT7132/IDT7142等,均為高速2K×8位雙端口靜態(tài)RAM。
雙端口RAM在使用中需要注意的是數(shù)據(jù)沖突問(wèn)題。雖然在硬件上,其內(nèi)部具有仲裁邏輯,當(dāng)兩個(gè)端口同時(shí)對(duì)存儲(chǔ)器的同一單元進(jìn)行存取操作時(shí)能給出優(yōu)先級(jí)別,但優(yōu)先級(jí)的決定與某些引腳上信號(hào)的時(shí)序有關(guān)。因此,對(duì)雙端口RAM進(jìn)行存取操作的方法不同于一般的RAM。參見(jiàn)“雙端口RAM在主從并行處理系統(tǒng)中的應(yīng)用”,陳衛(wèi)東等,哈爾濱工業(yè)大學(xué)機(jī)器人研究所,《微電子學(xué)與計(jì)算機(jī)》,1996年第3期,和“雙端口存儲(chǔ)器”,李小忠,《電信交換》,1996年第2期,實(shí)際應(yīng)用中可以使用中斷法和查詢法當(dāng)CPU有空閑的中斷管腳時(shí),可以采用中斷法,直接將BUSY信號(hào)的上升沿作為中斷源;在采用查詢法時(shí),由于BUSY的典型有效時(shí)間為20ns,而一般單片機(jī)機(jī)器指令周期均為μs量級(jí),所以必須通過(guò)加觸發(fā)器擴(kuò)展BUSY的有效時(shí)間,使得CPU可以識(shí)別,或者由BUSY的上升沿使觸發(fā)器狀態(tài)反轉(zhuǎn),通過(guò)比較觸發(fā)器前后狀態(tài)來(lái)判斷本次操作是否有效。
以上兩種硬件處理方法,雖然可靠,但效率比較低,而且在相當(dāng)多的設(shè)計(jì)中,中斷資源緊張,電路板的PCB(印刷電路板)布板已經(jīng)沒(méi)有添加觸發(fā)器的空間,中斷法及查詢法都無(wú)法使用。因此,為簡(jiǎn)化對(duì)中斷源的管理、簡(jiǎn)化硬件電路并提高效率,最重要的是為了保證信道消息傳遞的可靠性,我們采用了一種特殊的處理方法保證可靠收發(fā)信道消息的雙控制字操作方式。
通過(guò)軟件處理可以有很多種方式,如采用單控制字技術(shù)、存儲(chǔ)器單元分區(qū)技術(shù)或者內(nèi)存訪問(wèn)區(qū)分區(qū)并交叉切換訪問(wèn)技術(shù),參見(jiàn)“雙端口RAM存取操作的處理方法”,趙建榮等,哈爾濱工業(yè)大學(xué)339信箱,《電子技術(shù)應(yīng)用》,1996年第6期,但軟件的處理方法大多根據(jù)應(yīng)用系統(tǒng)中雙口RAM的實(shí)際存取操作情況來(lái)設(shè)計(jì),所以開(kāi)發(fā)人員必須根據(jù)自己的應(yīng)用設(shè)計(jì)出存取操作簡(jiǎn)單、有效且可靠的操作方式。
本發(fā)明的目的在于提供一種通信技術(shù)中信道交換消息的通訊方法,以保證收發(fā)方之間消息傳遞的可靠性。
本發(fā)明的目的還在于避開(kāi)比較煩瑣的硬件改造,盡量從軟件的角度達(dá)到提高消息傳遞可靠性的目的,從而能適應(yīng)更多的通信系統(tǒng)。
本發(fā)明的目的還在于提供一種通信技術(shù)中信道交換消息的通訊方法,以能夠節(jié)省CPU中斷資源,簡(jiǎn)化硬件電路,提高系統(tǒng)運(yùn)行效率。
本發(fā)明的目的是這樣實(shí)現(xiàn)的,一種使用雙控制字傳送消息的方法,采用兩個(gè)控制字作為控制標(biāo)志,其中一個(gè)是主控控制字,另一個(gè)是確認(rèn)控制字??刂谱值奈粩?shù)要能夠表示預(yù)設(shè)的狀態(tài)數(shù)。當(dāng)發(fā)方向收方發(fā)送消息時(shí),所述方法包括如下步驟1)發(fā)方首先查詢主控控制字,如主控控制字的標(biāo)志表明現(xiàn)在信道消息區(qū)空,再查詢確認(rèn)控制字,若確認(rèn)控制字的標(biāo)志表明收方已經(jīng)正確收到發(fā)方發(fā)出的上一條消息,則發(fā)方可以寫入本條消息,發(fā)方寫入消息到信道消息區(qū)之后,先將確認(rèn)控制字改寫為預(yù)設(shè)標(biāo)志,再將主控控制字改寫為預(yù)設(shè)標(biāo)志,表明發(fā)方已經(jīng)寫入消息,但收方還未讀走;如果查詢到主控控制字的標(biāo)志表示收方接收消息錯(cuò)誤,發(fā)方應(yīng)馬上重發(fā)上一條消息;如果查詢到主控控制字的標(biāo)志表明現(xiàn)在信道消息區(qū)中的數(shù)據(jù)還沒(méi)有被收方讀走,發(fā)方需等待收方讀走上一條消息,才能寫本條消息;2)收方查詢主控控制字,若主控控制字的標(biāo)志表示此時(shí)發(fā)方?jīng)]有發(fā)消息,信道消息區(qū)為空,則收方不作動(dòng)作;若主控控制字的標(biāo)志表示此時(shí)信道消息區(qū)中已經(jīng)存入了發(fā)方發(fā)出的消息,則收方可以讀走信道消息區(qū)中的數(shù)據(jù);主控控制字的標(biāo)志還可以設(shè)定為表示發(fā)方還未發(fā)出收方要求發(fā)方重發(fā)的消息;3)收方對(duì)讀出數(shù)據(jù)進(jìn)行消息類型判斷,如果類型正確,首先回寫確認(rèn)控制字為設(shè)定標(biāo)志,然后回寫主控控制字為設(shè)定標(biāo)志,表示收方正確接收到消息;若類型超出消息范圍,則回寫主控控制字為設(shè)定標(biāo)志,表示收方接收消息錯(cuò)誤,要求發(fā)方重發(fā)消息。
在本發(fā)明的表述中,稱雙控制字為主控控制字和確認(rèn)控制字,但這僅是一種表述方式,本發(fā)明包含了不這么稱呼雙控制字但采用了雙控制字以及與本發(fā)明相同或相類似的處理的通訊方法。
本發(fā)明的優(yōu)點(diǎn)在于提高了收發(fā)方之間消息傳遞的可靠性。
雙控制字的操作方式較之單控制字的方式進(jìn)一步提高了消息收發(fā)的可靠性,原因在于雙控制方式下,寫消息時(shí),先寫確認(rèn)控制字、后寫主控控制字,而讀消息時(shí),先讀主控控制字、后讀確認(rèn)控制字,同時(shí)讀寫控制字的機(jī)率要比單控制方式低很多,從根本上降低了雙口RAM讀寫操作的沖突機(jī)率,從而提高了信道消息交換的可靠性。在系統(tǒng)調(diào)試和運(yùn)行的實(shí)際應(yīng)用中,驗(yàn)證了這一點(diǎn)。
以后文實(shí)施例中無(wú)線接入系統(tǒng)中基站主控板CPU與用戶板CPU之間的交換消息為例,用戶板向主控板示閑時(shí)發(fā)送的示閑消息,如果主控板沒(méi)有收到,該信道將被吊死,現(xiàn)象表現(xiàn)為主控板認(rèn)為該信道仍處于忙狀態(tài),而實(shí)際上該信道已經(jīng)向主控板示閑,且主控板認(rèn)為原先在該信道上接續(xù)或通話的無(wú)線和有線用戶正忙,不再響應(yīng)它們的任何接續(xù)請(qǐng)求,而且不再給該信道分配任務(wù),造成該信道及相應(yīng)用戶死鎖的嚴(yán)重后果。在使用單控制字時(shí),偶然會(huì)出現(xiàn)信道被吊死的情況,經(jīng)查證發(fā)現(xiàn)原因是用戶板發(fā)送的示閑消息主控板沒(méi)有正確收到,針對(duì)這種情況,采用雙控制字方式,用戶板向主控板發(fā)送完示閑消息后,主控板若收到該示閑消息,必須回寫該確認(rèn)控制字為預(yù)設(shè)標(biāo)志,用戶板查詢確認(rèn)控制字,如果確認(rèn)控制字的標(biāo)志表明主控板已收到示閑消息,則用戶板確認(rèn)后才離開(kāi),這樣就保證了信道不會(huì)被死鎖。
從主控板和用戶板的主從關(guān)系來(lái)看,主控板發(fā)送的消息,一旦用戶板未收到,而主控板認(rèn)為用戶板已經(jīng)收到且進(jìn)入相應(yīng)狀態(tài),這將造成信道狀態(tài)的混亂,所以必須保證主控板發(fā)出的消息,用戶板必須正確收到。為確保用戶板收到主控板發(fā)送的消息,主控板軟件與用戶板軟件協(xié)調(diào),采用雙控制字方式,即附加一個(gè)用戶板收到消息確認(rèn)控制字,用戶板在收到主控板發(fā)送的消息后,首先回寫該確認(rèn)控制字為預(yù)設(shè)標(biāo)志,然后再回寫主控控制字為預(yù)設(shè)標(biāo)志,向主控板確認(rèn)用戶板已收到消息,然后才離開(kāi),這樣主控板能夠準(zhǔn)確掌握各信道的狀態(tài),從而保證了所有信道能夠正確完成接續(xù)過(guò)程。
在無(wú)線接入基站系統(tǒng)中設(shè)計(jì)使用的雙控制字操作方式,是對(duì)雙端口RAM進(jìn)行存取操作的軟件處理方案中更為先進(jìn)、有效、可靠的一種操作方式,它避開(kāi)了硬件處理方法占用CPU中斷資源以及運(yùn)行效率較低的弱點(diǎn),節(jié)省了CPU中斷資源,簡(jiǎn)化了硬件電路,并且提高了系統(tǒng)運(yùn)行效率。
本發(fā)明的優(yōu)點(diǎn)還在于避開(kāi)了比較煩瑣的硬件改造,基本上從軟件的角度達(dá)到了提高消息傳遞可靠性的目的,從而能適應(yīng)更多的通信系統(tǒng)。
本發(fā)明的優(yōu)點(diǎn)還在于能夠節(jié)省CPU中斷資源,簡(jiǎn)化硬件電路,提高了系統(tǒng)運(yùn)行效率。
在中斷源較多、CPU中斷管腳資源已被占用,而且需要提高效率的系統(tǒng)中,和適用于雙CPU通過(guò)雙端口RAM進(jìn)行高速消息交換的通信、監(jiān)控等應(yīng)用中,該雙控制字操作方式的優(yōu)點(diǎn)體現(xiàn)得尤其明顯。
圖1是雙端口RAM結(jié)構(gòu)方框圖。
圖2是用戶板發(fā)送主控板接收信道消息示意框圖。
圖3是主控板發(fā)送用戶板接收信道消息示意框圖。
下面結(jié)合附圖進(jìn)一步說(shuō)明本發(fā)明。
以無(wú)線接入系統(tǒng)中基站主控板CPU與用戶板CPU之間的交換消息為例,其收發(fā)操作包括A.用戶板向主控板發(fā)送消息,主控板接收相應(yīng)消息;B.主控板向用戶板發(fā)送消息,用戶板接收相應(yīng)消息。
在無(wú)線接入本地環(huán)路系統(tǒng)的基站無(wú)線用戶板上,使用IDT7132完成主控板與無(wú)線用戶板之間的信息交換。
這里取主控和確認(rèn)控制字各取八位二進(jìn)制數(shù),即一個(gè)二進(jìn)制字節(jié)(byte)。主控控制字可以是十六進(jìn)制數(shù)#00H、#0FFH、#0AAH三種,確認(rèn)控制字可以是十六進(jìn)制數(shù)#00H、#0FFH兩種。這里將十六進(jìn)制數(shù)0表示為#00H,其他十六進(jìn)制數(shù)的表示類似。
圖2是用戶板發(fā)送主控板接收信道消息示意框圖,這里主控板CPU采用8031,用戶板CPU采用89C55;主控控制字為一個(gè)字節(jié),確認(rèn)控制字也為一個(gè)字節(jié),信道消息區(qū)為若干字節(jié);圖中示出的是雙口RAM寄存器A組。當(dāng)用戶板需要發(fā)送消息給主控板時(shí),按如下過(guò)程進(jìn)行操作(1)用戶板首先查詢主控控制字,主控控制字為#00H,表明現(xiàn)在信道消息區(qū)空,再查詢確認(rèn)控制字,若確認(rèn)控制字為#99H,表明主控板已經(jīng)正確收到用戶板發(fā)出的上一條消息,用戶板可以寫入本條消息,用戶板寫入消息到信道消息區(qū)之后,將確認(rèn)控制字改寫為#00H,再將主控控制字改寫為#0FFH,表明用戶板已經(jīng)寫入消息,但主控板還未讀走;如果查詢到主控控制字為#0AAH,表示主控板接收消息錯(cuò)誤,用戶板應(yīng)馬上重發(fā)上一條消息;如果查詢到主控控制字為#0FFH,表明現(xiàn)在信道消息區(qū)中的數(shù)據(jù)還沒(méi)有被主控板讀走,需等待主控板讀走上一條消息,才能寫本條消息。
(2)主控板查詢主控控制字,若為#00H,表示此時(shí)用戶板沒(méi)有發(fā)消息,信道消息區(qū)空,主控板不作動(dòng)作;若為#0FFH,表示此時(shí)信道消息區(qū)中已經(jīng)存入了用戶板發(fā)出的消息,主控板可以讀走信道消息區(qū)中數(shù)據(jù);若為#0AAH,表示主控板要求用戶板重發(fā)的消息,用戶板還未發(fā)出。
(3)主控板對(duì)讀出數(shù)據(jù)進(jìn)行消息類型判斷,如果類型正確,首先回寫確認(rèn)控制字#99H,然后回寫主控控制字#00H,表示主控板正確接收到消息;若類型超出消息范圍,回寫主控控制字#0AAH,表示主控板接收消息錯(cuò)誤,要求用戶板重發(fā)消息。
上述過(guò)程1、2、3依次循環(huán)往復(fù),完成用戶板發(fā)送,主控板接收信道消息的過(guò)程。
圖3是主控板發(fā)送用戶板接收信道消息示意框圖,這里主控板CPU采用8031,用戶板CPU采用89C55;主控控制字為一個(gè)字節(jié),確認(rèn)控制字也為一個(gè)字節(jié),信道消息區(qū)為若干字節(jié);圖中示出的是雙口RAM寄存器B組。當(dāng)用戶板需要發(fā)送消息給主控板時(shí),按如下過(guò)當(dāng)主控板需要發(fā)送消息給用戶板時(shí),按如下過(guò)程進(jìn)行操作(1)主控板首先查詢主控控制字,主控控制字為#00H,表明現(xiàn)在信道消息區(qū)空,再查詢確認(rèn)控制字,若確認(rèn)控制字為#99H,表明用戶板已經(jīng)正確收到主控板發(fā)出的上一條消息,主控板可以寫入本條消息,主控板寫入消息到信道消息區(qū)之后,將確認(rèn)控制字改寫為#00H,再將主控控制字改寫為#0FFH,表明主控板已經(jīng)寫入消息,但用戶板還未讀走;如果查詢到主控控制字為#0AAH,表示用戶板接收消息錯(cuò)誤,主控板應(yīng)馬上重發(fā)上一條消息;如果查詢到主控控制字為#0FFH,表明現(xiàn)在信道消息區(qū)中的數(shù)據(jù)還沒(méi)有被用戶板讀走,需等待用戶板讀走上一條消息,才能寫本條消息。
(2)用戶板查詢主控控制字,若為#00H,表示此時(shí)主控板沒(méi)有發(fā)消息,信道消息區(qū)空,用戶板不作動(dòng)作;若為#0FFH,表示此時(shí)信道消息區(qū)中已經(jīng)存入了主控板發(fā)出的消息,用戶板可以讀走信道消息區(qū)中數(shù)據(jù);若為#0AAH,表示用戶板要求主控板重發(fā)的消息,主控板還未發(fā)出。
(3)用戶板對(duì)讀出數(shù)據(jù)進(jìn)行消息類型判斷,如果類型正確,首先回寫確認(rèn)控制字#99H,然后回寫主控控制字#00H,表示用戶板正確接收到消息;若類型超出消息范圍,回寫主控控制字#0AAH,表示用戶板接收消息錯(cuò)誤,要求主控板重發(fā)消息。
上述過(guò)程1、2、3依次循環(huán)往復(fù),完成主控板發(fā)送,用戶板接收信道消息的過(guò)程。
權(quán)利要求
1.一種使用雙控制字傳送消息的方法,其特征是采用兩個(gè)控制字作為控制標(biāo)志,其中一個(gè)是主控控制字,另一個(gè)是確認(rèn)控制字。
2.根據(jù)權(quán)利要求1所述的一種使用雙控制字傳送消息的方法,其特征是控制字的位數(shù)要能夠表示預(yù)設(shè)的狀態(tài)數(shù)。
3.根據(jù)權(quán)利要求1所述的一種使用雙控制字傳送消息的方法,其特征是當(dāng)發(fā)方向收方發(fā)送消息時(shí),所述方法包括如下步驟1)發(fā)方首先查詢主控控制字,如主控控制字的標(biāo)志表明現(xiàn)在信道消息區(qū)空,再查詢確認(rèn)控制字,若確認(rèn)控制字的標(biāo)志表明收方已經(jīng)正確收到發(fā)方發(fā)出的上一條消息,則發(fā)方可以寫入本條消息,發(fā)方寫入消息到信道消息區(qū)之后,先將確認(rèn)控制字改寫為預(yù)設(shè)標(biāo)志,再將主控控制字改寫為預(yù)設(shè)標(biāo)志,表明發(fā)方已經(jīng)寫入消息,但收方還未讀走;如果查詢到主控控制字的標(biāo)志表示收方接收消息錯(cuò)誤,發(fā)方應(yīng)馬上重發(fā)上一條消息;如果查詢到主控控制字的標(biāo)志表明現(xiàn)在信道消息區(qū)中的數(shù)據(jù)還沒(méi)有被收方讀走,發(fā)方需等待收方讀走上一條消息,才能寫本條消息;2)收方查詢主控控制字,若主控控制字的標(biāo)志表示此時(shí)發(fā)方?jīng)]有發(fā)消息,信道消息區(qū)為空,則收方不作動(dòng)作;若主控控制字的標(biāo)志表示此時(shí)信道消息區(qū)中已經(jīng)存入了發(fā)方發(fā)出的消息,則收方可以讀走信道消息區(qū)中的數(shù)據(jù);主控控制字的標(biāo)志還可以設(shè)定為表示發(fā)方還未發(fā)出收方要求發(fā)方重發(fā)的消息;3)收方對(duì)讀出數(shù)據(jù)進(jìn)行消息類型判斷,如果類型正確,首先回寫確認(rèn)控制字為設(shè)定標(biāo)志,然后回寫主控控制字為設(shè)定標(biāo)志,表示收方正確接收到消息;若類型超出消息范圍,則回寫主控控制字為設(shè)定標(biāo)志,表示收方接收消息錯(cuò)誤,要求發(fā)方重發(fā)消息。
全文摘要
本發(fā)明是一種使用雙控制字傳送消息的方法針對(duì)消息交換可靠性的問(wèn)題,采取了雙控制字的標(biāo)志方法,其中一個(gè)作為主控控制字,另一個(gè)作為確認(rèn)控制字,并采用了相應(yīng)的處理流程。本發(fā)明提高了通訊系統(tǒng)中交換消息的可靠性,節(jié)省了CPU(中央處理單元)資源,簡(jiǎn)化了硬件電路,適用于CPU中斷資源緊張或雙CPU通過(guò)雙端口RAM(隨機(jī)存取存儲(chǔ)器)進(jìn)行高速消息交換的通信、監(jiān)控系統(tǒng)。
文檔編號(hào)H04L29/06GK1261236SQ9911601
公開(kāi)日2000年7月26日 申請(qǐng)日期1999年1月19日 優(yōu)先權(quán)日1999年1月19日
發(fā)明者王躍, 孫旭東, 楊林 申請(qǐng)人:深圳市中興通訊股份有限公司