基于FPGA的紅外遙控信號接收模塊的設計
摘要:文中分析了紅外線(xiàn)遙控器系統的數據編碼和傳輸機制,并用VerilogHDL語(yǔ)言設計了基于FPGA的紅外接收模塊硬件電路,在VCS和VirSim仿真工具中進(jìn)行了仿真測試;用XilinxISE 10.1軟件進(jìn)行了綜合、適配和FPGA器件下栽測試,結果表明該電路實(shí)現了數據接收和顯
示的目的,符合紅外遙控數據傳輸協(xié)議。
關(guān)鍵詞:紅外通信協(xié)議;Verilog;FPGA
紅外遙控技術(shù)已經(jīng)在日常家用電器中得到了廣泛應用,其使用方便、功耗低、抗干擾能力強的優(yōu)點(diǎn)也越來(lái)越在智能儀器系統中受到重視。市場(chǎng)上的各種家電紅外遙控系統技術(shù)成熟、成本低廉,但都是針對各自的遙控對象(彩電、冰箱、空調等),不能直接用于智能儀器。本文探討了如何借鑒家電紅外遙控系統的原理,自行設計解碼電路,使智能儀器具有遙控功能。該模塊是建立在遙控器內部使用的芯片為HS622 1的基礎上的。紅外接收頭型號為IRM3638,輸出為IR管腳。而該模塊則是對IR的輸出信號進(jìn)行譯碼處理,并從中提取紅外發(fā)射包中的有效數據,然后并行輸出8位數據以及8位遙控器用戶(hù)碼(地址碼)供別的模塊調用。
1 紅外接收控制模塊設計原理
遙控器發(fā)射的信號由一串0和1的二進(jìn)制代碼組成。不同的芯片對0和1的編碼有所不同,通常有曼徹斯特編碼和脈沖寬度編碼。HS6221的0和1采用PWM方法編碼,即脈沖寬度調制,0碼由0.56ms低電平和0.565ms高電平組合而成,脈沖寬度為1.125ms。1碼由0.56ms低電平和1.69ms高電平組合而成,脈沖寬度為2.25ms。在編寫(xiě)解碼程序時(shí),通過(guò)判斷脈沖的寬度,即可得到0或1。HS6221以及同類(lèi)的芯片的數據格式包括引導碼(起始碼),用戶(hù)碼(地址碼),用戶(hù)反碼(地址反碼),數據碼,數據反碼,編碼總共32位,數據反碼是數據碼取反后的編碼,用戶(hù)反碼原理一樣,可以用來(lái)對數據的糾錯。具體格式見(jiàn)圖1。
當按下遙控器的按鍵時(shí)。遙控器將發(fā)出如圖1的一串二進(jìn)制代碼,稱(chēng)它為一幀數據。根據各部分的功能,可將它們分為5部分,分別為引導碼、用戶(hù)碼、用戶(hù)反碼、數據碼、數據反碼。遙控器發(fā)射代碼時(shí),均是低位在前,高位在后。紅外接收頭會(huì )將高低電平變反,所以實(shí)際從IR端出來(lái)的電平是上述格式圖中的波形取反,即停止狀態(tài)時(shí)IR為高電平,然后接收到9ms左右的低電平后進(jìn)入準備狀態(tài)。由圖中分析可以得到,引導碼高電平為9ms,低電平為4.5ms,當接收到此碼時(shí),表示一幀數據的開(kāi)始,FPGA可以準備接收下面的數據。用戶(hù)碼(地址碼)由8位二進(jìn)制組成,共256種,圖中用戶(hù)反碼(地址反碼)主要是加強遙控器的可靠性,不同的設備可以擁有不同的用戶(hù)碼(地址碼)。因此,同種編碼的遙控器只要設置用戶(hù)碼(地址碼)不同,也不會(huì )相互干擾。在同一個(gè)遙控器中,所有按鍵發(fā)出的地址碼都是相同的。數據碼為8位,可編碼256種狀態(tài),代表實(shí)際所按下的鍵。數據反碼是數據碼的各位求反,通過(guò)比較數據碼與數據反碼,可判斷接收到的數據是否正確。如果數據碼與數據反碼之間的關(guān)系不滿(mǎn)足相反的關(guān)系,則本次遙控接收有誤,數據應丟棄。在同一個(gè)遙控器上,所有按鍵的數據碼均不相同。
2 紅外接收控制模塊的HDL設計
2.1 紅外接收控制模塊功能簡(jiǎn)介
紅外接收控制模塊是基于遙控器內部使用的芯片為HS6221。在紅外接收控制方面,抗干擾能力強、使用靈活。紅外接收控制模塊的功能包括消除時(shí)鐘的延時(shí)、頻率的合成、時(shí)鐘相位的調整等系統方面的需求。紅外接收控制模塊的主要優(yōu)點(diǎn)在于以下四點(diǎn):
(1)實(shí)現紅外數據譯碼功能,提取數據包中有效內容并并行輸出;
(2)由于紅外收發(fā)協(xié)議中利用了PWM協(xié)議,更加增強了數據的抗干擾能力;
(3)可以通過(guò)改變地址參數實(shí)現對不同地址發(fā)射器的接收;
(4)將數據包中的數據與數據包中的數據反碼進(jìn)行比較從而確保接收過(guò)程中沒(méi)有出錯。
對于紅外接收控制模塊來(lái)說(shuō),其關(guān)鍵參數為起始碼、數據1、數據0的各自高低電平的脈寬以及本地地址等。
評論