侯繼紅
(廣州科技貿易職業學院,廣東 廣州 511442)
由于紅外遙控其體積小、功耗低、功能強、成本低等特點,在日常的家電(如電視、音響設備、空調、電風扇等)都采用紅外線遙控[1-2]。在有輻射、高壓、有毒氣體等危險環境下工作的工業設備普遍采用紅外線遙控來完成設備的操作[3]。紅外線遙控是目前使用最廣泛的一種通信和遙控手段。
近幾年隨著可編程邏輯器件性能的快速提高,它廣泛應用于各個電子信息領域的前沿,已經由傳統的通信應用領域向消費電子、汽車電子、工業控制等領域發展,電子工程師對它的認知度越來越高[4-5]。因此,采用可編程邏輯器件的開發語言VHDL語言設計紅外遙控解碼器,具有一定的應用價值。文章分析了由創芯微電子有限公司設計的用于紅外遙控系統中的專用發射集成電CX6122的編碼原理,并針對其編碼原理提出用VHDL語言編程設計解碼電路,該電路已通過綜合驗證,并在 CPLD芯片(EPM3128ATC100)的實驗系統板上通過硬件測試,工作穩定,解碼準確,不會出現誤碼。
CX6122 是一塊用于紅外遙控系統中的專用發射集成電路。CX6122 所發射的一幀碼含有一個引導碼,16 位的用戶編碼和8 位的鍵數據碼及數據碼的反碼構成。幀碼的結構如圖1[6]示。

圖1 CX6122發射的幀碼結構
引導碼由一個 9 ms 的載波波形和4.5 ms 的關斷時間構成,它作為隨后發射的碼的引導。這樣當接收系統是由微處理器構成的時候,能更有效地處理碼的接收與檢測及其它各項控制之間的時序關系。當一個鍵按下時間超過36 ms 后,輸出一幀包含引導碼、用戶碼和數據碼的幀,超過108 ms 后,輸出連發碼的數據幀。遙控發射的波形如圖2[6]示。圖2中的第一段波形就是第一幀的數據編碼部分的波形;第二段是第一幀完整的波形;第三段是連碼幀的波形。這種遙控編碼也是采用PPM, 以脈寬為0.56 ms、間隔0.565 ms、周期為1.125 ms的組合表示二進制的“0”;以脈寬為0.56 ms、間隔1.69 ms、周期為2.25 ms的組合表示二進制的“1”。如圖3所示[6]。

圖2 CX6122發射的波形[6]

圖3 CN6122遙控的編碼原理[6]
紅外信號的接收使用的是一體化紅外接收器HS0038,此接收器的功能是完成紅外線的接收、放大及解調[7],還原成同發射格式相同,但相位相反的脈沖信號。紅外線一體化接收頭輸出的脈沖信號經CPLD的其中一個I/O腳輸入到內部由VHDL語言設計的解碼電路解出數據碼。
識別引導碼方法很簡單,只需要兩段延時即可。數據解碼的核心是如何識別二進制數碼“0”和“1”。從上述可知紅外線接收頭輸出的電平信號相位相反,即以0.56 ms的低電平和0.565 ms高電平組合表示“0”;以0.56 ms的低電平跟1.69 ms高電平組合表示“1”,它們都是以0.56 ms的低電平開始,以不同的高電平寬度來區分“0”和“1”。如果從0.56 ms低電平過后,開始延時0.565 ms,隨后檢測輸入的狀態,若讀到的為低電平,則說明該位為“0”,反之則為“1”,為了可靠起見,延時時間應該大于0.565 ms,但不能超過1.125 ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此取(1.125 ms+0.56 ms)/2=0.842 ms最為可靠,一般取0.84左右即可[8]。因此,可以用VHDL語言的有限狀態機來檢測輸入電平,實現狀態轉換和判斷,并結合延時電路來識別“0”和“1”。
該控制電路采用VHDL語言的有限狀態機設計方法來描述和實現,其狀態轉換圖如圖4所示。復位信號RES有效時,電路進入系統初始狀態S0,在S0狀態下時鐘信號CLK,以一定的頻率采樣跟紅外線接收頭輸出相連的CPLD I/O口輸入信號Din,如果采樣到Din=“1”,則沒有接受到紅外信號,即遙控按鍵沒有操作,停留在S0狀態,并繼續采樣Din輸入信號的狀態,一旦采樣到輸入信號Din= “0”,則遙控信號輸出引導碼低電平部分,并轉入S1狀態,在S1狀態下經過9 ms延時轉入狀態S2,在S2狀態下如果檢測到Din=“1” 則引導碼進入的高電平部分,并轉入狀態S3,在S3狀態下延時,當時間到4.5 ms時轉入狀態S4,從S4開始狀態機進入數據解碼狀態,在S4下檢測到Din=“0”,可知遙控編碼信號輸出正是PPM編碼的0.56 ms的脈寬(0.56 ms載波),然后轉入狀態S5,用S5來判斷0.56 ms的脈寬是否已結束,如果Din=“1”則脈寬已結束,轉入狀態S6,在S6狀態下延時0.84 ms ,然后轉入S7狀態,在狀態S7下判斷該位是“0”,還是“1”,如果Din=“0” 則確定該位是“0”,否則是“1”,并使解碼位數計數器CNT32加1,隨后進入S8狀態,在S8下將解出的數據移入32位移位寄存器,并通過解碼位數計數器CNT32的值判斷遙控信號的32位數據是否解碼完,如果CNT32<33則仍未解完,轉入S9狀態,在S9下判斷遙控信號PPM編碼的下位0.56 ms的脈寬,當Din=“0”時,則是下一位數據脈寬,隨即轉回狀態S5,又通過S5、S6、S7、S8、S9狀態完成數據的解碼;如果在S8狀態下CNT32>33,則32位數據已解碼完,轉入狀態S10,在狀態S10進行解碼數據的輸出,并轉入狀態S11,在狀態S11延時20 ms,然后返回狀態S0,至此完成一個數據幀解碼過程。

圖 4紅外遙控解碼器的狀態轉換
詳細地分析了用VHDL語言有限狀態機設計紅外遙控解碼器的原理和方法,并在CPLD器件上通過硬件測試,試驗結果表明這種解碼方法可靠。隨著FPGA/CPLD器件的性能不斷提高,其應用領域也越來越廣泛,這種方法在要求紅外控制的可編程邏輯系統設計中有一定的應用價值。
[1] 張建軍,穆遠祥, 韓江洪. 一種16位碼紅外遙控器解碼方法[J].合肥工業大學學報:自然科學版,2008(02):171-174.
[2] 錢敏.基于 FPGA/HDL 的紅外遙控接收信號解碼器設計[J].通信技術,2009,42(08):219-224.
[3] 丁躍華,陳艷峰. 基于 EDA技術的紅外遙控系統設計[J].電子元器件應用,2006(09):78-80.
[4] 黃如建.紅外遙控器解碼設計[J]. 電子元器件應用,2006(07):90-92.
[5] 廖超平.EDA技術與 VHDL實用教程[M]. 北京:高等教育出版社,2007.
[6] 無錫創芯電子有限公司.CX6122-001產品手冊. [DB/OL] (2009-05-04)[2009-09-10].http://www.si- core.com/product/remote.htm.
[7] 潘松,黃繼業. EDA技術與VHDL[M].北京:清華大學出版社,2005.
[8] 戴培山,馮成德.基于Keilc51的紅外遙控器解碼設計[J].自動化與儀器儀表, 2003(06):11-13.