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