渠海榮
【摘要】 本文主要研究基于FPGA的紅外遙控器解碼實(shí)現(xiàn)研究。主要介紹紅外遙控器的工作協(xié)議,通過紅外接收頭接收紅外遙控器發(fā)送的紅外波形,用FPGA對(duì)其進(jìn)行解調(diào)和編碼模擬紅外遙控器的工作時(shí)序,并用Modelsim進(jìn)行仿真驗(yàn)證與實(shí)際的信號(hào)進(jìn)行比較判斷。
【關(guān)鍵詞】 紅外遙控器 VS1838B FPGA Modelsim
一、引言
紅外遙控器已被廣泛使用在各種類型的家電產(chǎn)品上,它的出現(xiàn)給使用電器提供了極大便利,因此研究紅外遙控器的實(shí)現(xiàn)原理有其必要性。紅外遙控系統(tǒng)一般由紅外發(fā)射裝置和紅外接收設(shè)備兩大部分組成,如圖1所示。
二、紅外遙控器協(xié)議
目前的紅外遙控器大多數(shù)采用NEC協(xié)議,該協(xié)議采用脈寬調(diào)制的傳行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“O”;以脈寬為0.565ms、
當(dāng)遙控器按下按鍵時(shí),遙控器將發(fā)出一串二進(jìn)制代碼,稱為一幀數(shù)據(jù)??蓪⑺鼈兎譃?部分,分別為引導(dǎo)碼、用戶碼、用戶反碼、數(shù)據(jù)碼和數(shù)據(jù)反碼,共32bit。
遙控器發(fā)射代碼時(shí),均是低位在前。高位在后。其中引導(dǎo)碼高電平為9ms,低電平為4.5ms,當(dāng)接收到此碼時(shí),表示一幀數(shù)據(jù)的開始。解碼的關(guān)鍵是如何識(shí)別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“O”和“l(fā)”均以0.565ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“O”和“l(fā)”。
三、FPGA紅外解碼
本文采用的的是VS1838B通用一體化紅外接收頭,將一體化紅外接收頭VS1838B的輸入引腳接至FPGA的一個(gè)管腳,由于VS1838B的反相作用,在無紅外信號(hào)時(shí)為高電平,一旦檢測(cè)到有紅外信號(hào),起始輸入變成低電平。系統(tǒng)便進(jìn)入接收狀態(tài),檢測(cè)到FPGA引腳點(diǎn)平變化,并計(jì)算每一個(gè)高、低電平的脈沖寬度。通過脈沖寬度來識(shí)別引導(dǎo)碼、用戶碼和數(shù)據(jù)碼。
對(duì)紅外信號(hào)的解碼本文主要是通過狀態(tài)機(jī)來實(shí)現(xiàn),狀態(tài)機(jī)主要依據(jù)紅外編碼規(guī)則,實(shí)現(xiàn)紅外編碼的解碼,利用狀態(tài)轉(zhuǎn)換方式區(qū)分不同區(qū)域的紅外編碼,實(shí)現(xiàn)相應(yīng)的譯碼。通過分析可以將紅外信號(hào)分為6個(gè)狀態(tài)過程,分別是idel,red_posedge,check_9ms,red_negedge,check_4ms,red_c.ode.
狀態(tài)圖工作流程:系統(tǒng)上電復(fù)位后進(jìn)入idel狀態(tài),等待紅外信號(hào)的到來,一旦到來進(jìn)入red_posedge狀態(tài),等待紅外信號(hào)上升沿的到來,一旦到來,將進(jìn)入check_9ms狀態(tài),判斷時(shí)間是否達(dá)到9ms,如果沒有達(dá)到9ms,將回到idel狀態(tài),如果是將進(jìn)入red_negedge狀態(tài),在red_negedge狀態(tài)等待紅外信號(hào)下降沿的到來,一旦到來,將進(jìn)入check_4ms狀態(tài),判斷時(shí)間是否達(dá)到4ms,如果沒有達(dá)到4ms,將回到idel狀態(tài),如果是將進(jìn)入red_code狀態(tài),在red_code狀態(tài)下實(shí)現(xiàn)對(duì)紅外信號(hào)的解碼。
四、紅外解碼的仿真實(shí)現(xiàn)
為了保證FPGA紅外解碼的正確性,需要用Modelsim對(duì)代碼進(jìn)行仿真驗(yàn)證,在Modelsim中模擬紅外信號(hào)作為輸入,在FPGA中獲得輸入,進(jìn)行仿真驗(yàn)證,引導(dǎo)碼仿真結(jié)果如圖5所示。
從圖5可以看出在時(shí)鐘的作用下先產(chǎn)生9ms的低電平在產(chǎn)生4ms的高電平。
在產(chǎn)生引導(dǎo)碼之后,還需對(duì)紅外數(shù)據(jù)進(jìn)行仿真驗(yàn)證,如圖6所示
從圖6可以看出產(chǎn)生用戶碼Ox00、用戶反碼Ox00、數(shù)據(jù)碼Oxll和數(shù)據(jù)反碼Oxll,共一幀數(shù)據(jù)。
仿真整體結(jié)果如圖7所示。從圖7可以看出,紅外信號(hào)的代碼是正確的,符合紅外信號(hào)的數(shù)據(jù)規(guī)則。
五、小結(jié)
基于FPCA的紅外遙控器解碼實(shí)現(xiàn)研究,對(duì)紅外信號(hào)的工作過程進(jìn)行詳細(xì)的說明,實(shí)現(xiàn)紅外信號(hào)的F'PCA代碼,并對(duì)FPCA代碼進(jìn)行了仿真驗(yàn)證,實(shí)現(xiàn)紅外遙控器的解碼。