接收來自多個發射器的信號的方法和裝置的製作方法
2023-06-29 04:26:41 1
專利名稱:接收來自多個發射器的信號的方法和裝置的製作方法
技術領域:
本發明涉及一種用來對多個發射器,例如象視聽裝置的遙控器之類的紅外發射器,發射的信號進行接收的方法和裝置。同時本發明還涉及一種與上述裝置一起使用的遙控器和一個包含一接收裝置和多個發射器的系統。本發明在圖像和電視領域有重要應用。
人們通常使用的一些電子設備可以通過一無線遙控器來控制,該遙控器向安裝於被控電子設備上的接收器發射控制信號。這種發射通常採用紅外、超聲或者無線電信號,數據由一種適當的載波信號攜帶。
在某些情況下,對於同一個的接收器能夠同時使用多個這樣的遙控器是很有益的。於是便出現了這些同時接收的信號之間的幹擾問題,以及接收器對每個遙控器的識別問題。
實用新型(Utility Certificate application)n°FR 2698979號介紹了一種包括多個遙控器和單一接收器的系統。
本發明的目的是提供一種能夠從至少兩個發射器(RCi)接收信號的方法,其中每個發射器發射數據項(「0」,「1」),該數據項由該發射器發射的兩個連續脈衝之間的時間間隔(T0i,T1i)來表示,每一發射器以所述時間間隔和脈衝寬度(Tpi)為特徵,其中所述方法包括以下步驟接收作為來自所述發射器的信號總和的合成信號;
確定所述合成信號的參數,這些參數包括脈衝的寬度和間隔;分析所述參數並向所述發射器中的一個分配一數據項。
每個發射器以不同的脈衝寬度和時間間隔為特徵這一事實使得將所述合成信號有效地分解為其分量信號成為可能。
在一具體實施例中,數據由具有兩個數值的二進位碼組成。
在一具體實施例中,對第一發射器進行狀態變量管理,該變量表示了從發射器接收的信息的當前狀態。
在一具體實施例中,所述狀態變量的可能值為「等候一條信息的第一二進位碼」、「等候更多的二進位碼」、「等候該條信息的結束」以及「等候兩條信息之間弛豫時間(relax time)的結束」。
在一具體實施例中,噹噹前脈衝和先前接收到的一個脈衝之間的時間間隔等於對所述指定的發射器規定了二進位碼數值的一個時間間隔時,並且當所述先前接收到的脈衝的寬度等於所述指定發射器的脈衝寬度時,該指定發射器的第一個二進位碼就被檢測到了。
在一具體實施例中,通過增大定義了一數據項的間隔,對存在於所述兩脈衝之間的時間間隔和對於所述發射器定義了二進位碼數值的間隔進行比較,對於每一定義了二進位碼數值的間隔,先前所接收到並存儲的所有脈衝都被進行檢測。
在一具體實施例中,定義二進位碼數值的間隔有兩個,如果與一個二進位碼數值相關的最短持續時間等於將當前脈衝和先前接收到的脈衝分隔的時間間隔,且除此之外沒有二進位碼被檢測,則所檢測的二進位碼數值與該最短期間相對應。
在一具體實施例中,只有噹噹前脈衝的寬度大於或等於指定發射器的脈衝寬度時,該發射器被視為一信息的第一二進位碼的來源。
在一具體實施例中,當將至少一個二進位碼分配給一發射器時,如果最後脈衝與當前脈衝之間的間隔與該發射器的二進位碼間隔(bit intercal)一致,其中最後脈衝將一二進位碼分配給該發射器,則另一個二進位碼分配給同一發射器。
在一具體實施例中,只有噹噹前脈衝的寬度大於或等於指定發射器的脈衝寬度時,該發射器被視為一信息的補充二進位碼(Supplementary bit)的來源。
在一具體實施例中,如果對一當前脈衝的分析不能使一二進位碼分配給一發射器,則該脈衝按脈衝寬度遞減的順序分配給未分配二進位碼的第一個發射器,於是所述的如此分配的脈衝定義了一二進位碼的起點,該二進位碼的第二脈衝將隨後來到。
在一具體實施例中,當分配給一發射器的二進位碼的數量等於一信息中的二進位碼的最大數量時,儘管如此,但該發射器的另一二進位碼仍被檢測,則該信息的第一二進位碼被刪除,且檢測的最後二進位碼加到所述信息上。
在一具體實施例中,如果對當前脈衝的分析不能使一二進位碼分配給一發射器,但是該當前脈衝與已存儲的倒數第二個脈衝一起形成一個與指定發射器的一二進位數值相應的間隔,並且如果至少有一個二進位碼已經分配給該發射器,則分配給該發射器的最後二進位碼被新檢測值代替。
在一具體實施例中,如果一當前脈衝從未使用過,於是我們尋找一個只分配了一個二進位碼的發射器,並確定當前脈衝與分配給所述發射器的第一脈衝之間的間隔是否與所述發射器的一二進位碼數值相對應,如果是這樣則將該二進位碼數值分配給所述發射器。
在一具體實施例中,接收到的每一脈衝的參數在脈衝分析完成後被存儲下來。
在一具體實施例中當檢測到一二進位碼時,從「等候第一二進位碼」狀態轉換為「等候更多二進位碼」狀態;當根據一條信息的二進位碼的最大數目分配給一發射器時,從「等候更多二進位碼」狀態轉換為「等候信息結束」狀態;如果在一段時間之後沒有接收到根據所述發射器的二進位碼,該段時間超過了根據該發射器發出的一二進位碼的最長間隔,則從「等候信息結束」狀態轉換為「等候弛豫時間」狀態;當接收到最後的二進位碼之後的時間超過所述發射器的弛豫時間(Trn)時,從「等候弛豫時間」狀態轉換為「等候第一二進位碼」狀態;在第一二進位碼分配之後,當超過所述發射器發出數據的最長間隔的時間後沒有接收到其他與該發射器相應的二進位碼時,從「等候更多二進位碼」狀態轉換為「等候第一二進位的」狀態。
本發明的另一個目的是提供一種用來接收發射器特徵信號的設備,包括接收合成信號的裝置,該合成信號至少是兩個發射器發出的信號的總和,來自每一發射器的數據(0,1)由兩個連續脈衝之間的時間間隔確定,該時間間隔以及脈衝寬度表示每一發射器的特徵;根據在合成信號中所檢測的脈衝寬度以及這些脈衝之間的時間間隔,用來對所述合成信號進行分析的裝置。
在一具體實施例中,檢測到的脈衝寬度等於由所述發射器發射的脈衝寬度,或與其成比例。
在一具體實施例中,所述接收裝置包括一紅外接收器,發射紅外信號的所述發射器,以及採用同樣載波方式的所有裝置。
在一具體實施例中,所述分析裝置包括一微處理器,一用來存儲接收脈衝的數據的存儲器,和其他一些用於存儲來自所述發射器的與信息相應的二進位碼的存儲器。
在一具體實施例中,所述接收裝置採用根據本發明的信號接收方法。
本發明的另一個目的是提供一種紅外遙控器,它與根據本發明的接收裝置一同使用。該紅外遙控器包括調節脈衝寬度的裝置,該脈衝寬度表示發射給所述接收裝置的數據,這種調節使得所述脈衝寬度相對於可能同時使用的其他遙控器的脈衝寬度始終具有獨特性。
在一具體實施例中,所述遙控器還包括調節兩脈衝之間時間間隔的裝置,該兩脈衝表示所發射的數據(0、1)。
本發明的另一個目的是提供一信號接收系統,包括至少兩個發射器,每一發射器以脈衝的形式來表示數據,其脈衝寬度為所述發射器的特徵,數據由將該發射器發出的兩連續脈衝分開的時間間隔確定,所述間隔也是每一發射器的特徵;一接收器,包括接收合成信號的裝置,該合成信號是來自所述發射器的信號總和;根據在所述合成信號中檢測的脈衝寬度和這些脈衝之間的時間間隔對所述合成信號進行分析的裝置。
在一具體實施例中,所述信號接收系統採用根據本發明的信號接收方法。
結合附圖,通對下文對一實施例的描述,將對本發明有更好的理解,且其其他優點和特徵將更加明了,該實施例僅作為一非限定性的例子。在附圖中
圖1中的a和b表示在本發明一實施例中由兩遙控器發射的信號,c表示由接收器接收的合成信號,該信號為圖1a和圖1b中信號的疊加;圖2是根據本發明實施例的一接收裝置的框圖;圖3是實施例中使用的一例遙控器的框圖;圖4是根據本發明實施例,用來存儲與來自一遙控器的信息相應的二進位碼的存儲棧狀態圖,每一個遙控器有一個堆棧;圖5是用來獲取和分析由紅外接收器接收的數據的過程的總流程圖;圖6表示圖5所示過程的第一子程序(「確定第一二進位碼」)的流程圖;圖7為一時序圖,表示由兩個遙控器發出的信號的特別結構;圖8是與圖5所示過程的第二子程序(「分析當前二進位碼」)相應的流程圖;圖9a和9b一起表示圖5所示過程中第三子程序(「檢測最後二進位碼」)的流程圖;圖10表示在圖9所示子程序中使用的一程序(「分配脈衝」)的流程圖;圖11a表示由多個遙控器發射的信號的一種特別結構,其可產生由圖9中子程序糾正的第一錯誤;圖11b表示由多個遙控器發射的信號的一種特別結構,其可產生由圖9中子程序糾正的第二錯誤;圖11c表示由多個遙控器發射的信號的一種特別結構,其可產生由圖9中子程序糾正的第三錯誤;圖12表示圖9所示子程序中使用的一程序(「假啟動」)的流程圖;圖13表示用來檢測信息的中斷和結束的程序(「信息結束」)的流程圖。
在下文的描述中,為清楚起見,有時參照泛指的N個遙控器的情況,有時參照N=2這一特定的情況。
在本實施例中使用兩個遙控器RC1和RC2,他們以相同的載波頻率(例如歐洲的400kHz或者美國56.8kHz)發射紅外信號,並且使用相同的通訊協議(communication protocol)。數據作為載波調製信號發出。本發明顯然不僅局限於紅外發射。
圖1描繪了第一遙控器RC1使用的信息編碼(以一系列二進位碼的形式)。以下四個參數用來描述由RC1發射的信號的特徵持續時間Tp1定義了脈衝寬度(持續時間);兩個連續脈衝上升沿之間的持續時間T01定義了邏輯值「0」;兩個連續脈衝上升沿之間的持續時間T11定義了邏輯值「1」;持續時間Tr1定義了兩信息之間最小時間間隔的暫停或「弛豫時間」。
圖1b與圖1相似它描繪了第二遙控器RC2的編碼信息。按通常寫法,係數n代表遙控器RCn。
在本實施例中,我們假設Tp1<Tp2(這可以說總是正確的,僅需將遙控器按脈衝寬度增加的順序編號)。
圖1c描繪了由一單一紅外傳感器接收的信號;它與圖1a和1b的疊加信號相對應。我們發現RC1的第一脈衝被RC2的第一脈衝遮蓋,而RC1和RC2的第二脈衝部分疊加形成一較寬脈衝。
如同我們在下文將詳細了解到的,不同遙控器之間的脈衝寬度的差異在對每個遙控器的數據的疊加信號的提取中是十分重要的。
圖2是本發明實施例採用的接收裝置的框圖。該裝置包括一由專門接收器電路2控制的紅外傳感器1。該電路2輸出一信號,在下文中該信號假設與圖1c中的信號相似。專門的接收器電路2與處理單元3相連,處理單元3可以是例如ST 90E 30型的微控制器(由SGSThomson製造)。電路1和2的功能可由例如一GPIU 527Y的電路(由Sharp製造)來提供。
在一具體實施例中,當接收器電路2從紅外傳感器1接收到一脈衝時,它輸出一個脈衝,其持續時間與所接收到的脈衝的持續時間基本成比例。換言之,由一遙控器發出的持續時間為T的脈衝作為持續時間為μT的脈衝被接收,此處μ為校正係數。在信號處理過程中,在接收器的輸入端保持了不同寬度脈衝之間的順序關係。如果係數μ的精確值不知道,例如μT在一數值範圍內,則應預先通過適當選取每一發射器的脈衝寬度來避免這些數值範圍的重疊。
處理單元3除了管理別的部分外,還管理3個隨機存取存儲器(RAM)4至6。這些存儲器在圖中被分別示出,但它們可以實際上為同一電路的幾部分。
第一存儲器4用來存儲來自紅外接收器的數據。每一脈衝記錄兩個數據項脈衝的持續時間(表示為Pulse_mem[i]),和該脈衝上升沿到來的絕對時間(表示為Start_mem[i])。這兩個數據項完全確定了所接受的信號。
在本實施例中,存儲器4可至少存儲2×(N-1)個脈衝,在先進先出(FIFO)的形式下使用;對於最後存儲的脈衝,係數i的值為0,且其值隨早先接收到的脈衝而遞增。
另外兩個存儲器5和6,每個分配給遙控器的一個。在寫入存儲器4之前(其內容記錄了所接收到的脈衝的順序),數據由處理單元3處理。該分析結果通常是對某一特別遙控器的一些信息的識別,隨後分析結果存儲到與該遙控器相對應的存儲器中。然而,如果之後發現先前接收的數據被錯誤分析了,有必要在一個存儲器中刪除一二進位碼。
圖3表示了一個遙控器的框圖。一鍵盤7與處理器8相通,該處理器8以一已知的方式對帶有發射二極體10的調製器接口9進行管埋。處理器8是例如一Motorola 68 HC 05C8的微控制器。一振蕩器11向調製器接口9提供載波頻率。
在一特殊變型的實施例中,遙控器的鍵盤具有改變由其發射的脈衝的寬度的裝置,和/或改變用來編譯一二進位碼的兩脈衝上升沿之間的時間間隔的裝置。通過在N個不同位置之一設置開關12可實現這種改變。對於開關的不同位置,脈衝寬度Tp,持續時間T0i和T1i被存入由微控制器8管理的一存儲器13。採用這種方式,僅通過選擇與其他遙控器不同的參數便可在一現有系統中較容易地與許多遙控器一起使用一新遙控器。
處理單元3為每一遙控器分配一狀態和計數器。有四種不同狀態(A)等候一信息的第一二進位碼
(B)等候一信息的更多的二進位碼(C)等候一信息的結束(D)等候弛豫時間計數器表示存儲在相應存儲器中二進位碼的數目。
狀態和計數器由處理單元3管理。
圖4表示四個不同狀態之間的轉換。
在A狀態,尚未檢測到來自遙控器的二進位碼,因此沒有信息開始。
在B狀態,至少第一二進位碼已被檢測到,但是所期望的每條信息的二進位碼的數目(N_Bits)還未收到。例如,N_Bits為8位。
在C狀態,信息中所期望的二進位碼的數目(N_Bits)已接收到。如果對於該信息此後又有另一二進位碼被檢測到,則此前必出現了分析錯誤,於是對存儲的信息進行改動。
在D狀態,我們試圖檢測弛豫時間Trn,該弛豫時間是在來自一指定遙控器的一條信息結束後,而在另一信息之前的最短時間。
對於與遙控器n相關的狀態,當檢測到該遙控器的一二進位碼時,就發生狀態A到狀態B的轉換。二進位碼計數器此時為1。
當二進位碼計數器達到N_Bits時,發生狀態B到狀態C的轉換。
如果在等候一時間Tan後,這裡Tan=max(T0n,T1n),沒有識別到該遙控器的二進位碼,則發生狀態C到狀態D的轉換。在本實施例中,Tan=T1n。
當接收到最後二進位碼之後經過的時間大於弛豫時間Trn時,發生狀態D到狀態A的轉換。
如果在接收到第一二進位碼之後的一段時間Tan裡,沒有接收到該遙控器的另一二進位碼,則也可能發生從狀態B到狀態A的轉換。
圖5是本實施例用來得到並分析由紅外接收器2輸出的數據的方法的流程圖。該流程圖為一總圖,各種子程序此後將參照其他圖進行詳細描述。
階段E1到E4是關於接收信號特徵參數的採集。在第一階段,處理單元3檢測一起始脈衝(上升沿)。在E2階段,一實時鐘的狀態存儲於一變量「start」中。處理單元一直等到該脈衝結束(下降沿)並確定其寬度(變量「Duration」)。一布爾變量(「Pulse_Used」)表明該脈衝是否被分配給一特別遙控器,並用來分配一二進位碼。
我們記得遙控器是以它們脈衝寬度Tpn遞增的順序來編號的。在E5到E10階段,處理單元試圖將一檢測到的脈衝分配給多個遙控器之一(按其編號一個接一個選擇遙控器)。
E5階段將所檢測的脈衝寬度「Duration」與有關當前遙控器的脈衝寬度Tpn進行比較。
如果「Duration」嚴格地小於Tpn,則所檢測的脈衝肯定不能被分配給遙控器n,所以如果所有的遙控器還尚未被考慮那麼我們就應考慮下一個遙控器(E6階段,有可能E7階段)。
若「Duration」大於或者等於Tpn,可能保持這樣一種分配或者脈衝與Tpn完全對應,或者被較寬的脈衝Tpn遮蓋。
在這種情況下,我們檢測遙控器n的狀態(E8階段)。如果該狀態為「等候第一二進位碼」(A狀態),則處理單元調用第一子程序「確定第一二進位碼」(E9階段)。否則,我們檢測「等候信號結束」狀態(C狀態)。如果是這種情況,我們考慮下一遙控器,如先前所描述的那樣(E6和E7階段);如果不是,則使用第二子程序「分析當前二進位碼」(E10階段)對脈衝進行分析。參照圖6和7,下文將詳述這兩個子程序。
E6階段在E9和E10階段之後,其確定是否全部的遙控器已被考慮過。如果是這種情況,步驟轉移到E11階段。隨後在一特別的子程序中,對參數「Pulse_Used」進行檢測,以確定通過分析該當前脈衝的參數,是否可能將當前分析的脈衝分配給一遙控器。如果不是,則意味著先前的二進位碼被不正常中斷了。採用一第三子程序(「檢測最後二進位碼」,E12階段)來糾正這一反常狀態。
一旦E11和E12階段完成,當前脈衝的參數便存儲於存儲器4中。
圖6所示流程圖描述了子程序「確定第一二進位碼」。當其狀態為「等候第一二進位碼」,且當剛剛接收到的脈衝的持續時間能夠包括對應遙控器n的一脈衝持續時間Tpn時,則對該遙控器執行該子程序。
該子程序使用的規則如下在本實施例中脈衝寬度T0n小於T1n,我們首先試圖確定當前脈衝的開始是否可與先前存儲在存儲器4中的一脈衝一起形成「0」,該「0」可作為遙控器n的第一二進位碼;此操作在E101和E109階段進行。若沒有檢測到「0」,則我們在E111和E118階段尋找「1」。
因此,我們不只是試圖分析最近的脈衝(該脈衝尚未存儲於存儲器4)。在「確定第一二進位碼」的子程序中,我們對該最近脈衝的上升沿特別感興趣。為形成一二進位碼,須要兩個脈衝。
E119至E121階段與處理一特殊情況相對應,在該特殊情況中,我們選擇識別「0」,儘管這種識別的正規條件並不十分滿足。如圖7所示,該特殊情況通過名為「PossibleZero」的變量的值來標記。如果該變量值為0,則表明我們未處於特別情況下(PossibleZero的初始值為0)。
此後,我們可以從一二進位碼(T0n或T1n)的持續時間識別出脈衝寬度(Tpn)。
E101階段是關於環路的初始化,它用來對「0」的出現進行檢查。每一存儲的脈衝,從最近的一個開始(係數i=0),被系統地分析。我們記得在存儲器4中存儲的數據給出了脈衝寬度和其上升沿到來的時間。
如果脈衝寬度i嚴格地小於Tpn,該脈衝不會是由遙控器n發出,因為脈衝太窄了(E102)。在該情況下,我們轉移至下一個脈衝(E106)。相反,如果脈衝寬度Tpn被包含在脈衝i之內,則我們確定相應二進位碼的持續時間。該持續時間(表示為Bit_Duration)等於當前脈衝的上升沿到來時間(變量「Start」)與脈衝i的上升沿到來時間(變量「Start_mem[i]」)之間的差(E103階段)。
如果對於遙控器n,該二進位碼寬度不等於「0」二進位碼的持續時間(在寬度誤差範圍之內,處理單元3在進行比較時總要進行這種考慮),則該脈衝被忽略並且對下一個脈衝進行分析(E104階段,然後E106和E107階段)。但是如果T0n等於Bit_Durafion,則我們再次檢查是否脈衝是從一弛豫間隔Trn內開始的(E105)。
如果是這樣,該脈衝被忽略,通過增加i繼續進行搜尋(E106)。
如果不是這樣,我們檢查是否脈衝i的寬度等於遙控器n的脈衝寬度(同樣在寬度誤差範圍內)(E108)。如果是,則我們識別「0」(E109階段);相反,即脈衝i的寬度嚴格大於T0n,於是與「0」相對應的脈衝的前沿有可能,但不一定,被更寬的脈衝遮蓋。隨後變量「PossibleZero」被置為1,並開始對「1」的搜尋。(E111階段)。
圖7所示的時序圖描述了我們想通過該機制解決的特殊情況。該圖的第一條線對應於由第一遙控器發射的第一二進位碼,其脈衝寬度為Tpa,其值小於如圖7中第二條線所示的第二遙控器的脈衝寬度Tpb。間隔T1a和T0a對應於第一遙控器的二進位碼持續時間。
如果第二遙控器的一脈衝A落於第一遙控器脈衝B和C的兩上升沿之間,使得A的上升沿與C的上升沿之間的時間為T0a,在缺乏對脈衝A的持續時間的檢查(E108階段)的情況下,我們可能錯誤地檢測一「0」二進位碼。
如果脈衝A遮蓋了來自第一遙控器的一脈衝,這並不造成問題,但是,如圖7所示,當其持續時間長於「0」的「1」必須被檢測時,便會造成問題,這就是我們為什麼試圖檢測「1」出現的原因。如果檢查完存儲器4之後這種檢測沒有實現,且如果變量「Possible-Zero」的值為真(=1),則一「0」被檢測。
對「1」的檢測與對「0」的檢測很相似E101至E107階段與E111至E117相對應。利用E108比較階段的糾錯機制不用於對「1」的檢測。E115階段的檢測(與E108階段相應)直接用於識別「1」(E118階段)。
當所有對「1」的可能的檢測都進行了而並沒有檢測到「1」(在E117階段的檢查為正)時,則進行變量「PossibleZero」狀態的檢查,且如果該變量值為1,識別一「0」二進位碼。如果檢查為負,則我們通過E122階段直接退出程序。
在二進位碼「0」或「1」都被識別的三種情況之後,一些參數就必須更新。首先,同遙控器n相關的二進位碼計數器N_Bits_n就必須被設為1,這表明此時該遙控器的第一二制碼已被檢測到。
下一步,與遙控器相聯繫的狀態(State_n)從「等候第一二進位碼」(A)轉換到「等候更多二進位碼」(B)。
另外,可對最後存儲的脈衝進行分配。變量Pulse_Used於是置為「真」。
最後,我們將當前脈衝的上升沿的時間(「Start」)存入變量Last_time_n。
該更新過後,我們前進至E122階段。
回到圖5的總流程圖,假設在E8階段與遙控器n相關聯的狀態不是「等候第一二進位碼」。隨後我們檢查該狀態是否符合「等候更多二進位碼」。例如對於遙控器n已經預先檢測到一二進位碼就屬於這種情況。如果該檢測為正,則在E10階段對存儲於存儲器4中的脈衝和當前脈衝的上升沿進行分析以確定對遙控器n分配「0」或「1」二進位碼。
圖8是對應於「分析當前二進位碼」程序的流程圖。
當對於遙控器n調用此程序時,該遙控器的狀態一定為「等候更多二進位碼」。至少一二進位碼已分配給該遙控器n,並存儲於相關的存儲器中。而且,我們從變量「Last_time_n」知道用來分配給最後所存儲的二進位碼的上升沿的檢測時間。得到該信息且知道當前脈衝的上升沿的到達時間,我們便可確定二進位碼寬度Bit_Duration(E201階段)。其他階段的目的是用來確定該二進位碼是否與遙控器n所發出的補充的二進位碼相對應。
首先,對於遙控器1我們將二進位碼寬度Bit_Duration與T1n(邏輯「1」)進行比較(在某一誤差範圍內)(E202)。如果兩個寬度一樣,則識別邏輯「1」,並將其插入對應於遙控器n的存儲堆棧中(E203階段)。
如果「1」沒有被識別,則二進位碼的寬度與T0n(邏輯0)進行比較(E204)。如果兩個寬度一致,則識別邏輯「0」,並存入相應的存儲器中(E205階段)。
在邏輯「1」或邏輯「0」識別之後,二進位碼計數器N_Bits_n進行累加計數,變量Last_time_n被更新,且通過將變量Pulse_used置1,當前脈衝已被使用這一事實被記錄下來(E208階段)。
隨後我們確定接收到並存儲的信息是否包括最大數目的二進位碼(N_Bits)(E210)。如果是,遙控器n的狀態被置為「等候信息結束」(E209)。然後程序轉移到圖5所示的步驟。
如果對E202和E204階段的檢測證明為負,則在E206階段進行第三次檢測。如果二進位碼的寬度Bit_Duration嚴格大於T1n(T1n在本實施例中比T0n長),則二進位碼寬度不能與來自遙控器n的一二進位碼相對應,在這種情況下,我們假定遙控器n的信息被中斷,且遙控器n的狀態變為「等候第一二進位碼」(E207)並且存儲堆棧被清零。變量「Pulse_assigned_n同樣被置1以表明遙控器n已接收到其第一脈衝(但尚未接收到其第一二進位碼,一二進位碼由兩個脈衝來確定)。
如果E206階段的檢測證明為負,則程序將控制轉給圖5中的步驟(E211)。
回到圖5,我們會發現所有的狀態E5、E8、E9、E10和E14對每一遙控器都是重複的。
如果E5階段的檢測結果為負,或者如果E14階段的檢測結果為正或在上述兩子程序E9和E10之後,則我們確定係數n是否與其最大值N相對應(E6)。如果不是這種情況,則係數遞增(E7)且重複E5階段。
一旦對全部遙控器進行了處理,我們就確定是否已使用當前脈衝將一二進位碼分配給一個遙控器(E11)。如果不是,我們則假設對於先前寫入一存儲器的一二進位碼,出現一中斷錯誤。
第三子程序「檢查最後二進位碼」的作用是改正這種中斷錯誤。隨後,與該脈衝相關的參數被存入存儲器4(E13)。
圖9a和9b描繪了該「檢查最後二進位碼」程序總的原理。
首先,在E301階段,我們檢查當前的脈衝是否是由一遙控器發出的信息的第一脈衝。在E9和E10之中的一個子程序中,該脈衝尚未被用來分配一二進位碼。由於一二進位碼是由二個連續脈衝的上升沿之間的時間間隔確定的,分配給一遙控器的第一脈衝不能分配一二進位碼。採用變量「Pulse_assigned_i」能使一脈衝分配給其狀態為「等候第一二進位碼」的單一遙控器。
由此,E301階段避免了一些需後來糾正的情況。
E301階段將通過圖10所示的流程圖作詳細介紹。
對於每一遙控器,要經過下列階段首先,我們檢查與遙控器相關聯的狀態是否為「等候第一二進位碼」(E401)。若不是,我們由E402/E406環路(E407階段用來啟動該環路)移至下一遙控器;否則,我們檢查脈衝寬度Tp是否與當前處理的遙控器的脈衝寬度相對應,或者前者是否能遮蓋後者(E403)。如果比較的結果的為負值,則我們移至下一遙控器;如果比較的結果為正值,我們檢查是否已向該遙控器分配了一脈衝(E404)。
一指定脈衝只具有一個超始脈衝。這一條件由變量Pulse_ass-igned_i來存儲;若該變量表明一脈衝已被分配(在本實施例中,即表示其值為0),則我們推斷當前處理的脈衝不是由所考慮的遙控器發出的,移至下一個遙控器,如果還有的話(E404)。相反,若還沒有脈衝分配給所考慮的遙控器,則將脈衝分配給該遙控器(E405)。隨後該脈衝標記為曾使用過。另外,變量Pulse_assigned_i被置1以表明一脈衝已分配給遙控器i。如果進行了一次分配,則表明已到達圖10所示步驟的結尾。
E301階段的環路以脈衝寬度Tpi值遞減的方式工作。在這種方式下,脈衝將分配給最可能的遙控器。
一旦圖10所示步驟完成,我們轉至圖9所示的步驟。假設所有脈衝來自n個遙控器中的一個,若在E301階段設有實現分配,則我們得出結論先前脈衝中存在一不正確中斷。在這種情況下,對已分配了二進位碼的遙控器進行更為細緻的分析。
必須考慮三種情況,分別如圖11a、11b和11c所示。
在第一種結構中,我們考慮其狀態為「等候信息結束」(c)的遙控器,並確定當前脈衝是否能由先前被分配給這些遙控器的脈衝構成「0」或「1」。如果是這樣,則我們假設遙控器發出信息的第一二進位碼被錯誤分配了。該第一二進位碼被刪除並在信息結尾加上新的二進位碼。圖11a表示能造成這種錯誤的遙控器信號的結構。
圖11a中的第一和第二條線分別對應於第一和第二遙控器發出的信號。脈衝B對應於由第一遙控器發出的第一脈衝。脈衝A由第二遙控器發射,其上升沿與由第一遙控器發出的脈衝B的上升沿之間的時間間隔對應於時間T01。對於第一遙控器,在分析脈衝B過程中,先前描述的「確定第一二進位碼」程序將檢測「0」。於是,一二進位碼在信息實際開始之前被檢測。這是因為這樣的事實,即第一遙控器發出的脈衝可被較寬的脈衝A遮蓋。
在這種情況下,所檢測的該第一二進位碼被刪除,根據在對最近檢測的脈衝的分析中檢測的二進位碼,對整個信息進行轉換並加上「0」或「1」。
該第一結構與這樣的情況相對應,即遙控器的狀態為「等候信息結束」,而對於該遙控器還沒有檢測到另一二進位碼。
圖11b表示第二結構,對於第一遙控器,其發出的脈衝(脈衝D)的上升沿與第二遙控器發出的一連續脈衝(脈衝E)上升沿一起形成「0」二進位碼。對「分析當前二進位碼」程序進行分析,將「0」二進位碼分配給第一遙控器(遙控器處於「等候更多二進位碼」狀態)。如果脈衝E不能遮蓋由第一遙控器發出的脈衝,則脈衝F的上升沿與脈衝D的上升沿形成「1」。「0」將被檢測到,而不是「1」。
這種糾錯與圖6所示的E119階段很相似,但圖6中的子程序僅檢測第一二進位碼,而在本情況下,遙控器的狀態可以不是「等候第一二進位碼」。
在圖11C中所示的第二結構中,在某一錯誤時刻,「0」被檢測。我們假設由第一遙控器發出的兩個脈衝(脈衝G和H)的上升沿形成「0」。如已經提到的,用來確定一二進位碼的持續時間是否與T0i相對應的檢測考慮了關於T0i值的誤差範圍±Δ,如果由第二遙控器發出的脈衝I的上升沿和脈衝G的上升沿之間的時間間隔落在此範圍內,則檢測「0」。「0」值本身並不錯(因為脈衝I和H產生相同結果),但變量「Last_time_i」將包含一錯誤值,該值可導致隨後所接收的二進位碼的錯誤中斷。
該第三結構可同樣導致錯誤地檢測「1」二進位碼。
為第二和第三結構所進行的糾錯包括在分析脈衝F的過程中檢測該脈衝是否對指定遙控器n提供有關倒數第二二進位碼的不變的數據。如果該信息對應於「1」或「0」,則分配給該遙控器的最後二進位碼被該信息替代。
回到圖9,我們可看到所使用方法的更多細節。E301階段現在已完成,在E302階段我們測試脈衝是否在E301階段被分配。如果是,則上述三個結構不需要被糾錯,且程序完成(E303)。
與先前一樣,採用一環路(通過E304、E305和E306階段)來按順序檢測每一遙控器。
首先(E304),我們確定所分析的脈衝是否與來自遙控器i的一脈衝相同或能將其遮蓋。如果不是,通過遞增遙控器的係數(E306)我們移至下一遙控器;否則,我們根據正在分析的脈衝的上升沿與為遙控器存儲的最後上升沿(Last_time_i)之間的時間間隔來確定二進位碼寬度(Bit_Duration)。
首先,通過E309到E313階段,我們測試一下是否處於上述第一結構(圖11a)。測試時,我們首先檢測所考慮的遙控器的狀態是否是「等候信息結束」。若不是,則檢測該條件是否滿足第二和第三結構。若是,E310或E312分別檢測二進位碼寬度是否與「1」或「0」相對應。如果兩測試之一為正,則為正在檢測的遙控器所記錄的信息被轉換,並分別加上「1」或「0」(E311和E313階段)。在最接近的脈衝作為已使用過的脈衝被遮蓋後,程序在E303階段結束。
如果未檢測到第一結構,或者遙控器的狀態為「等候更多二進位碼」(E314),則我們檢測該條件是否滿足第二或第三結構(圖11b和11c)。
然後我們確定為所檢測遙控器存儲的最後二進位碼的值(E316)。我們計算正分析的脈衝的上升沿(例如在圖11b和11c中脈衝F或H的上升沿,其到達時間由變量Start存儲)與所存儲的倒數第二個脈衝的上升沿(例如在圖11b和11c中的脈衝D或G)之間的時間間隔。該計算通過計算Duration與Last_time_i之間的時間間隔,並根據存儲的最後二進位碼的值加上T0i或T1i來進行(分別是階段E317或E318)。
然後,對於正在檢測的遙控器,我們將該時間間隔與「0」和「1」二進位碼的持續時間相比較。(在E319和E320階段的持續時間T0i和T1i)。如果這些持續時間中的一個與先前計算的時間間隔相對應,則為遙控器存儲的最後二進位碼被刪除,且由新確定值替代。另外,表示一脈衝的最後上升沿的變量被更新(Last_time_i),該脈衝使一二進位碼分配給遙控器。
在對應於上述三種結構的檢測完成後,如果一脈衝不能分配給任何一遙控器,則調用稱為「假啟動」的另一程序。僅對於分配了第一二進位碼的遙控器執行該程序(E321)。相應的流程圖如圖12所示。我們注意到已描述過的「確定第一二進位碼」程序被調用。
回到圖5所示的主流程圖,所有要做的就是使存儲的信息生效,如有必要,確定這些信息在傳輸過程中是否已經被中斷過。
圖13表示在本實施例中使用的有關過程的流程圖(稱為「信息結束」)。當未檢測到脈衝時,調用該程序(E1階段)。也可以在其他情況下調用該程序。
如前所述,採用一環路來按順序考慮每一遙控器(E501、E502和E503階段)。
對於每個遙控器,通過計算系統時鐘與last_time_i(E504階段)之間的差值,我們確定從分配給該遙控器的最後脈衝的上升沿過去之後的時間。然後我們檢查(E505)該持續時間是否超過該遙控器的最大二進位碼寬度(在本實施例中為T1i)。如果不是這種情況,我們就不能考慮將全部收到的信息,因為它不是象所需要的那樣完整或正確,且指定遙控器的脈衝仍被接收器接收。於是,我們轉到下一遙控器(E502)。
在另一方面,如果對E505階段的檢測為正,則已確定將沒有脈衝分配給所考慮的遙控器。根據信息的狀態,然後認為是完整的還是中斷的。首先我們確定信息的狀態是否是「等候信息結束」。若不是,我們檢測自從最後的脈衝分配給遙控器之後的時間是否大於該遙控器的弛豫時間。如果是這種情況,則該信息認為被中斷,且其狀態重置為「等候第一二進位碼」(E508)。如果持續時間小於弛豫時間,我們將轉至下一遙控器(E502)。
如果信息的狀態為「等候信息結束」,則該狀態轉變為「等候弛豫時間」(E508)。然後該信息認為是完全的,且能以一已知方式進行分析以確定其意義(E509)。當之後再次調用圖13所示程序時,信息狀態將重置為「等候第一二進位碼」,這便能夠接收新的信息。
上述實施例包括對各種信號結構的糾錯組合。根據設備和所進行的處理的複雜性的需要,可從不同的實施例中省略某些糾錯。這樣可使過程簡單化,儘管對其功能會有不利的影響。
最後,雖然所述實施例使用兩個時間間隔(T0i和T1i)來說明二進位碼值的編碼,但本發明不局限於這類編碼。
本發明有許多潛在的應用,包括視頻遊戲、交互電視機、通過一個傳感器從許多遙控器接收信號來控制許多裝置,等等。
權利要求
1.一種從至少兩個發射器(RCi)接收信號的方法,其中每個發射器發射數據項(「0」,「1」),所述數據項通過由發射器發射的兩個連續脈衝之間的時間間隔(T0i,T1i)來表示,所述時間間隔和脈衝寬度(Tpi)為每一發射器的特徵,其中所述方法包括以下步驟接收合成信號,其為來自所述多個發射器的信號的總和;確定所述合成信號的參數,這些參數包括寬度和脈衝跨度;分析所述參數,並將一數據項分配給多個所述發射器之一。
2.根據權利要求1所述的方法,其中所述數據由二進位碼的兩個可能值構成。
3.根據權利要求2所述的方法,其中對於每個發射器進行一狀態變量的管理,該變量代表從發射器接收的信息的當前狀態。
4.根據權利要求3所述的方法,其中所述狀態變量的可能值為「等候信息的第一二進位碼」、「等候更多二進位碼」、「等候信息結束」和「等候兩信息之間的弛豫時間的結束」。
5.根據權利要求2所述的方法,其中噹噹前脈衝和先前所接收的脈衝中的一個之間的時間間隔等於為所述發射器定義了一二進位碼值的間隔(T0i,T1i)中的一介時,且當所述先前接收到的脈衝的寬度等於所述指定的發射器的脈衝寬度時,對一指定發射器檢測第一二進位碼。
6.根據權利要求5所述的方法,其中通過增加定義了一數據項的間隔,將具有為所述發射器定義了一二進位碼值的間隔同所述兩脈衝之間的時間間隔進行比較,對定義了一二進位碼值的每一間隔檢測所有先前所接收並存儲的脈衝。
7.根據權利要求6所述的方法,其中定義一二進位碼值的間隔(T0i,T1i)有兩個,若沒有檢測到二進位碼,但根據一二進位碼值(T0i)的最短持續時間同當前和先前接收到的脈衝間的時間間隔相等,則所檢測二進位碼值對應該最短持續時間。
8.根據權利要求5所述方法,其中只有噹噹前脈衝的寬度大於或等於指定發射器的脈衝寬度時,該發射器被認為是一信息的第一二進位碼的來源。
9.根據權利要求2所述的方法,其中當至少一個二進位碼已經分配給一發射器時,如果使一二進位碼分配給該發射器的最後脈衝與當前脈衝之間的間隔與該發射器的二進位碼間隔相對應,則另一二進位碼被分配給同一發射器。
10.根據權利要求9所述的方法,其中只有噹噹前脈衝的寬度大於或等於指定發射器的脈衝寬度時,該發射器被認為是一信息的補充二進位碼的來源。
11.根據權利要求5所述的方法,其中如果當前一脈衝不能使一二進位碼分配給一發射器,則該脈衝以脈衝寬度遞減的順序分配給尚未被分配二進位碼的第一發射器,所述分配的脈衝然後定義一二進位碼的起點,此二進位碼的第二脈衝將隨後到達。
12.根據權利要求5所述的方法,其中當分配給一發射器的二進位碼的數目等於信息中二進位碼的最大數目,但對於該發射器檢測到另一二進位碼時,信息的第一二進位碼被刪除,且最後檢測到的二進位碼加到所述信息上。
13.根據權利要求5所述的方法,其中如果對當前脈衝的分析不能使一二進位碼分配給一發射器,但該當前脈衝與所存儲的倒數第二脈衝一起形成同一指定發射器的一二進位碼值相關的間隔,且如果已向該發射器分配了至少一個二進位碼,則分配給該發射器的最後二進位碼被所檢測的新值代替。
14.根據權利要求13所述的方法,其中如果一當前脈衝以前未曾使用過,則我們尋找只分配了一個二進位碼的一發射器,並確定當前脈衝與分配給所述發射器的第一脈衝之間的間隔是否與所述發射器的二進位碼值相對應,如果是這樣,則將二進位碼值分配給所述發射器。
15.根據權利要求5所述的方法,其中每一接收到的脈衝的參數在對其進行分析之後被存儲起來。
16.根據權利要求4所述的方法,其中當檢測到一二進位碼時,進行「等候第一二進位碼」狀態到「等候更多二進位碼」狀態的轉換;當最大數目的二進位碼被分配給一發射器時,進行「等候更多二進位碼」狀態到「等候信息結束」狀態的轉換;如果在一段時間之後,該段時間超過了同來自該發射器一二進位碼相關的最長間隔,沒有接收到對應於所考慮的發射器的二進位碼,則進行「等候信息結束」狀態到「等候弛豫時間」狀態的轉換;當所接收的最後二進位碼之後的時間超過了所考慮的發射器的弛豫時間(Trn)時,進行「等候弛豫時間」狀態到「等候第一二進位碼」狀態的轉換;在第一二進位碼分配之後,當超過了來自一發射器的數據的最長間隔的一段時間過後,未接收到所考慮的發射器的其他二進位碼時,則進行「等候更多二進位碼」狀態到「等候第一二進位碼」狀態的轉換。
17.用來接收多個發射器的特徵信號的設備包括用來接收一合成信號的裝置,該合成信號是由至少兩個發射器發射的信號的總和,來自每一發射器的數據(0,1)由兩連續脈衝之間的時間間隔定義,所述時間間隔與脈衝寬度為每一發射器的特徵;根據從合成信號中檢測的脈衝寬度和這些脈衝之間的時間間隔來分析所述合成信號的裝置。
18.根據權利要求17所述的裝置,其中所檢測的脈衝寬度等於由所述發射器發射的脈衝寬度,或者與其成比例。
19.根據權利要求17所述的裝置,其中所述接收裝置包括一紅外接收器,所述發射器發射紅外信號和採用同樣載波的其他發射器和接收器。
20.根據權利要求17所述的裝置,其中所述分析裝置包括一微處理器,一用來存儲所接收的脈衝參數的存儲器,和用來存儲同來自所述發射器的信息相關的二進位碼的其他存儲器。
21.根據權利要求17所述的裝置,其採用權利要求1所述的信號接收方法。
22.與權利要求17中的裝置一起使用的紅外遙控器(RC1,RC2),它包括可調整脈衝寬度的裝置,這些脈衝用來表示向所述接收裝置提供的數據,這種調節使得所述脈衝寬度始終與可能同時使用的其他遙控器的脈衝寬度不同。
23.根據權利要求22所述的遙控器,其還包括用來調節表示所發射的數據(0,1)的兩脈衝之間的時間間隔的裝置。
24.信號接收系統包括至少兩個發射器,每一發射器以脈衝的形式來表示數據,該脈的寬度(Tpi)表示所述發射器的特徵,數據由該發射器發出的兩連續脈衝的時間間隔(T0i,T1i)來定義,所述間隔也是每一發射器的特徵。一接收器,包括接收合成信號的裝置,該合成信號為由所述發射器發射的信號的總和;根據在合成信號中檢測的脈衝寬度和這些脈衝之間的時間間隔來分析合成信號的裝置。
25.根據權利要求24所述系統,其中所述發射器包括一與權利要求23一至的遙控器。
全文摘要
一種從至少兩個發射器(RCi)接收信號的方法,其中由一發射器發出的兩連續脈衝之間的時間間隔(T0i,T1i)表示該發射器的數據(「0」,「1」),所述時間間隔和脈衝寬度(Tpi)為每一發射器的特徵,其中所述方法包括接收合成信號;確定合成信號參數;分析所述參數並向所述發射器分配一數據項。本發明還涉及一接收裝置,一遙控器和一接收系統。本發明在電視及圖像領域有重要應用。
文檔編號H04Q9/14GK1142145SQ9610811
公開日1997年2月5日 申請日期1996年5月23日 優先權日1995年5月23日
發明者埃裡克·迪爾, 伊維斯·梅茲, 諾爾-埃丁尼·泰茲尼 申請人:湯姆森多媒體公司