新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的紅外遙控信號接收模塊的設計

        基于FPGA的紅外遙控信號接收模塊的設計

        作者: 時間:2011-06-30 來源:網絡 收藏

        摘要:文中分析了紅外線遙控器系統的數據編碼和傳輸機制,并用VerilogHDL語言設計了基于的紅外接收硬件電路,在VCS和VirSim仿真工具中進行了仿真測試;用XilinxISE 10.1軟件進行了綜合、適配和器件下栽測試,結果表明該電路實現了數據接收和顯
        示的目的,符合數據傳輸協議。
        關鍵詞:紅外通信協議;Verilog;

        技術已經在日常家用電器中得到了廣泛應用,其使用方便、功耗低、抗干擾能力強的優點也越來越在智能儀器系統中受到重視。市場上的各種家電系統技術成熟、成本低廉,但都是針對各自的遙控對象(彩電、冰箱、空調等),不能直接用于智能儀器。本文探討了如何借鑒家電紅外遙控系統的原理,自行設計解碼電路,使智能儀器具有遙控功能。該是建立在遙控器內部使用的芯片為HS622 1的基礎上的。紅外接收頭型號為IRM3638,輸出為IR管腳。而該則是對IR的輸出信號進行譯碼處理,并從中提取紅外發射包中的有效數據,然后并行輸出8位數據以及8位遙控器用戶碼(地址碼)供別的模塊調用。

        1 紅外接收控制模塊設計原理
        遙控器發射的信號由一串0和1的二進制代碼組成。不同的芯片對0和1的編碼有所不同,通常有曼徹斯特編碼和脈沖寬度編碼。HS6221的0和1采用PWM方法編碼,即脈沖寬度調制,0碼由0.56ms低電平和0.565ms高電平組合而成,脈沖寬度為1.125ms。1碼由0.56ms低電平和1.69ms高電平組合而成,脈沖寬度為2.25ms。在編寫解碼程序時,通過判斷脈沖的寬度,即可得到0或1。HS6221以及同類的芯片的數據格式包括引導碼(起始碼),用戶碼(地址碼),用戶反碼(地址反碼),數據碼,數據反碼,編碼總共32位,數據反碼是數據碼取反后的編碼,用戶反碼原理一樣,可以用來對數據的糾錯。具體格式見圖1。

        本文引用地址:http://www.104case.com/article/191115.htm

        b.JPG


        當按下遙控器的按鍵時。遙控器將發出如圖1的一串二進制代碼,稱它為一幀數據。根據各部分的功能,可將它們分為5部分,分別為引導碼、用戶碼、用戶反碼、數據碼、數據反碼。遙控器發射代碼時,均是低位在前,高位在后。紅外接收頭會將高低電平變反,所以實際從IR端出來的電平是上述格式圖中的波形取反,即停止狀態時IR為高電平,然后接收到9ms左右的低電平后進入準備狀態。由圖中分析可以得到,引導碼高電平為9ms,低電平為4.5ms,當接收到此碼時,表示一幀數據的開始,FPGA可以準備接收下面的數據。用戶碼(地址碼)由8位二進制組成,共256種,圖中用戶反碼(地址反碼)主要是加強遙控器的可靠性,不同的設備可以擁有不同的用戶碼(地址碼)。因此,同種編碼的遙控器只要設置用戶碼(地址碼)不同,也不會相互干擾。在同一個遙控器中,所有按鍵發出的地址碼都是相同的。數據碼為8位,可編碼256種狀態,代表實際所按下的鍵。數據反碼是數據碼的各位求反,通過比較數據碼與數據反碼,可判斷接收到的數據是否正確。如果數據碼與數據反碼之間的關系不滿足相反的關系,則本次遙控接收有誤,數據應丟棄。在同一個遙控器上,所有按鍵的數據碼均不相同。
        2 紅外接收控制模塊的HDL設計
        2.1 紅外接收控制模塊功能簡介
        紅外接收控制模塊是基于遙控器內部使用的芯片為HS6221。在紅外接收控制方面,抗干擾能力強、使用靈活。紅外接收控制模塊的功能包括消除時鐘的延時、頻率的合成、時鐘相位的調整等系統方面的需求。紅外接收控制模塊的主要優點在于以下四點:
        (1)實現紅外數據譯碼功能,提取數據包中有效內容并并行輸出;
        (2)由于紅外收發協議中利用了PWM協議,更加增強了數據的抗干擾能力;
        (3)可以通過改變地址參數實現對不同地址發射器的接收;
        (4)將數據包中的數據與數據包中的數據反碼進行比較從而確保接收過程中沒有出錯。
        對于紅外接收控制模塊來說,其關鍵參數為起始碼、數據1、數據0的各自高低電平的脈寬以及本地地址等。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青海省| 福鼎市| 内乡县| 荔浦县| 普宁市| 旬阳县| 蛟河市| 工布江达县| 龙海市| 七台河市| 岚皋县| 古丈县| 乡城县| 潼关县| 磐安县| 卢湾区| 承德县| 中西区| 林芝县| 临湘市| 永定县| 盘锦市| 邯郸县| 康乐县| 资溪县| 崇明县| 呼图壁县| 蓝山县| 浮梁县| 吴旗县| 桑植县| 乐都县| 义马市| 行唐县| 沾化县| 泸州市| 安康市| 包头市| 东辽县| 海伦市| 明光市|