摘要:文中分析了紅外線遙控器系統(tǒng)的數(shù)據(jù)編碼和傳輸機制,并用VerilogHDL" title="VerilogHDL">VerilogHDL語言設(shè)計了基于FPGA" title="FPGA">FPGA的紅外接收模塊硬件電路,在VCS和VirSim仿真工具中進行了仿真測試;用Xilinx ISE" title="ISE">ISE 10.1軟件進行了綜合、適配和FPGA器件下栽測試,結(jié)果表明該電路實現(xiàn)了數(shù)據(jù)接收和顯示的目的,符合紅外遙控" title="紅外遙控">紅外遙控數(shù)據(jù)傳輸協(xié)議。
關(guān)鍵詞:紅外通信協(xié)議;Verilog;FPGA
紅外遙控技術(shù)已經(jīng)在日常家用電器中得到了廣泛應用,其使用方便、功耗低、抗干擾能力強的優(yōu)點也越來越在智能儀器系統(tǒng)中受到重視。市場上的各種家電紅外遙控系統(tǒng)技術(shù)成熟、成本低廉,但都是針對各自的遙控對象(彩電、冰箱、空調(diào)等),不能直接用于智能儀器。本文探討了如何借鑒家電紅外遙控系統(tǒng)的原理,自行設(shè)計解碼電路,使智能儀器具有遙控功能。該模塊是建立在遙控器內(nèi)部使用的芯片為HS622 1的基礎(chǔ)上的。紅外接收頭型號為IRM3638,輸出為IR管腳。而該模塊則是對IR的輸出信號進行譯碼處理,并從中提取紅外發(fā)射包中的有效數(shù)據(jù),然后并行輸出8位數(shù)據(jù)以及8位遙控器用戶碼(地址碼)供別的模塊調(diào)用。
1 紅外接收控制模塊設(shè)計原理
遙控器發(fā)射的信號由一串0和1的二進制代碼組成。不同的芯片對0和1的編碼有所不同,通常有曼徹斯特編碼和脈沖寬度編碼。HS6221的0和1采用PWM方法編碼,即脈沖寬度調(diào)制,0碼由0.56ms低電平和0.565ms高電平組合而成,脈沖寬度為1.125ms。1碼由0.56ms低電平和1.69ms高電平組合而成,脈沖寬度為2.25ms。在編寫解碼程序時,通過判斷脈沖的寬度,即可得到0或1。HS6221以及同類的芯片的數(shù)據(jù)格式包括引導碼(起始碼),用戶碼(地址碼),用戶反碼(地址反碼),數(shù)據(jù)碼,數(shù)據(jù)反碼,編碼總共32位,數(shù)據(jù)反碼是數(shù)據(jù)碼取反后的編碼,用戶反碼原理一樣,可以用來對數(shù)據(jù)的糾錯。具體格式見圖1。
當按下遙控器的按鍵時。遙控器將發(fā)出如圖1的一串二進制代碼,稱它為一幀數(shù)據(jù)。根據(jù)各部分的功能,可將它們分為5部分,分別為引導碼、用戶碼、用戶反碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。遙控器發(fā)射代碼時,均是低位在前,高位在后。紅外接收頭會將高低電平變反,所以實際從IR端出來的電平是上述格式圖中的波形取反,即停止狀態(tài)時IR為高電平,然后接收到9ms左右的低電平后進入準備狀態(tài)。由圖中分析可以得到,引導碼高電平為9ms,低電平為4.5ms,當接收到此碼時,表示一幀數(shù)據(jù)的開始,F(xiàn)PGA可以準備接收下面的數(shù)據(jù)。用戶碼(地址碼)由8位二進制組成,共256種,圖中用戶反碼(地址反碼)主要是加強遙控器的可靠性,不同的設(shè)備可以擁有不同的用戶碼(地址碼)。因此,同種編碼的遙控器只要設(shè)置用戶碼(地址碼)不同,也不會相互干擾。在同一個遙控器中,所有按鍵發(fā)出的地址碼都是相同的。數(shù)據(jù)碼為8位,可編碼256種狀態(tài),代表實際所按下的鍵。數(shù)據(jù)反碼是數(shù)據(jù)碼的各位求反,通過比較數(shù)據(jù)碼與數(shù)據(jù)反碼,可判斷接收到的數(shù)據(jù)是否正確。如果數(shù)據(jù)碼與數(shù)據(jù)反碼之間的關(guān)系不滿足相反的關(guān)系,則本次遙控接收有誤,數(shù)據(jù)應丟棄。在同一個遙控器上,所有按鍵的數(shù)據(jù)碼均不相同。
2 紅外接收控制模塊的HDL設(shè)計
2.1 紅外接收控制模塊功能簡介
紅外接收控制模塊是基于遙控器內(nèi)部使用的芯片為HS6221。在紅外接收控制方面,抗干擾能力強、使用靈活。紅外接收控制模塊的功能包括消除時鐘的延時、頻率的合成、時鐘相位的調(diào)整等系統(tǒng)方面的需求。紅外接收控制模塊的主要優(yōu)點在于以下四點:
(1)實現(xiàn)紅外數(shù)據(jù)譯碼功能,提取數(shù)據(jù)包中有效內(nèi)容并并行輸出;
(2)由于紅外收發(fā)協(xié)議中利用了PWM協(xié)議,更加增強了數(shù)據(jù)的抗干擾能力;
(3)可以通過改變地址參數(shù)實現(xiàn)對不同地址發(fā)射器的接收;
(4)將數(shù)據(jù)包中的數(shù)據(jù)與數(shù)據(jù)包中的數(shù)據(jù)反碼進行比較從而確保接收過程中沒有出錯。
對于紅外接收控制模塊來說,其關(guān)鍵參數(shù)為起始碼、數(shù)據(jù)1、數(shù)據(jù)0的各自高低電平的脈寬以及本地地址等。
2.2 紅外接收控制模塊組成
紅外接收控制模塊共由2部分組成,如圖2所示。主要由時鐘分頻器和紅外接收控制模塊組成。圖中的[15:0] Data是由8位數(shù)據(jù)以及8位地址組成。
2.3 紅外接收控制模塊各組成部分說明
時鐘分頻器:主要是將系統(tǒng)時鐘(50MHz)分頻成0.01MHz的時鐘以驅(qū)動紅外接收控制模塊正常工作。PERIOD時鐘分頻模塊的分頻周期,當為15’d2500時分頻得到周期為0.1ms的irda_clk時鐘信號;仿真時候取15’d2是為了縮短仿真周期,減少工作量,產(chǎn)生周期為80ns的irda_clk時鐘信號[2,3]。
注意:同時只能取一個值,仿真用15’d2,下到FPGA時用15’d2500數(shù)據(jù)處理模塊:該模塊是紅外接收控制模塊的核心部分主要由狀態(tài)機構(gòu)成(FSM),如圖3所示。
FSM各個狀態(tài)說明如表1所列。
3 電路仿真、FPGA實現(xiàn)及應用測試
編寫測試向量文件,在VCS和VirSim仿真工具中進行功能仿真,經(jīng)檢驗完全符合設(shè)計要求。仿真結(jié)果圖如圖4所示。本設(shè)計的實現(xiàn)平臺采用Xilinx公司的SPARTANIII OFP封裝的XC3S400" title="XC3S400">XC3S400-4PQ208C,總邏輯門為400k門。經(jīng)綜合、適配、仿真、布局布線后僅占用比較少的器件資源。整個系統(tǒng)下載到FPGA后在50MHz時鐘頻率下能正常工作,在RM-139C超級版萬能電視機遙控器遙控下,按下不同的按鍵,LED七段四位數(shù)碼管經(jīng)過譯碼后顯示不同的按鍵遙控碼。
4 結(jié)束語
用HDL和可編程邏輯器件(FPGA/CPLD)設(shè)計數(shù)字系統(tǒng)有傳統(tǒng)方法無可比擬的優(yōu)越性,它已經(jīng)成為大規(guī)模集成電路設(shè)計最有效的一種手段。本文采用VerilogHDL設(shè)計了紅外遙控信號接收模塊電路。為簡單起見,本設(shè)計中只對遙控傳輸?shù)臄?shù)據(jù)部分進行解碼,不失一般性。本文提出的基于FPGA的紅外遙控信號接收模塊的設(shè)計方案經(jīng)過電路仿真、FPGA實現(xiàn)及應用測試驗證該模塊完全符合紅外遙控通信協(xié)議的要求。