O 引言
紅外遙控器在家電產(chǎn)品中被廣泛應(yīng)用,,但各產(chǎn)品的遙控器采用了不同的頻率或編碼方式,導(dǎo)致這些遙控器不能相互通用,這給人們的生活帶來(lái)了諸多不便,。針對(duì)這個(gè)問(wèn)題,很多廠家設(shè)計(jì)和生產(chǎn)了一種稱為萬(wàn)能遙控器的紅外信號(hào)遙控裝置,這類遙控器大多數(shù)采用復(fù)制遙控器紅外波形達(dá)到學(xué)習(xí)目的,,其方法簡(jiǎn)單,,實(shí)現(xiàn)起來(lái)較方便,通過(guò)對(duì)不同普通遙控器發(fā)出的紅外線編碼進(jìn)行學(xué)習(xí)和存儲(chǔ),,可以對(duì)多個(gè)家用電器進(jìn)行遙控,,從而可以減少家庭中遙控器的數(shù)目。但是,,這類遙控器通常采用專用 ASIC或單片機(jī)" title="單片機(jī)">單片機(jī)來(lái)實(shí)現(xiàn),,并且只能接收單一載波的紅外信號(hào)編碼,導(dǎo)致實(shí)際使用時(shí)有諸多局限,,主要體現(xiàn)在:如果家用電器遙控裝置的載波頻率不同,,萬(wàn)能遙控器將無(wú)能為力;不同的家用電器使用單一的遙控器界面,,容易產(chǎn)生混淆和誤操作,;受存儲(chǔ)空間的限制,能夠支持的遙控器數(shù)目有限,。
因此,,本文設(shè)計(jì)了一種基于NiosⅡ的紅外學(xué)習(xí)型遙控器,把載波頻率測(cè)量,、紅外信號(hào)解調(diào),、脈寬測(cè)量、調(diào)制發(fā)送IP核集中到FPGA" title="FPGA">FPGA器件上,,極大地簡(jiǎn)化外圍硬件電路,,利用了Nios軟核CPU的32位處理器,可以很好地對(duì)脈寬進(jìn)行精確測(cè)量,,同時(shí)提高處理速度,,能夠精確地對(duì)載波頻率進(jìn)行測(cè)量,并將原始的紅外信號(hào)進(jìn)行最大程度上無(wú)失真還原,,解決了單片機(jī)因時(shí)鐘頻率低無(wú)法對(duì)載波頻率進(jìn)行測(cè)量的瓶頸,,實(shí)現(xiàn)了對(duì)各種各樣紅外遙控的學(xué)習(xí),真正完成了學(xué)習(xí)型遙控器的學(xué)習(xí)功能,。
1 整體設(shè)計(jì)方案
系統(tǒng)主要由NiosⅡ處理器,、Avalon總線、EPCS控制器,、SDRAM控制器,、FLASH控制器、輸入輸出I/O口,、等精度測(cè)量載波頻率IP核,、紅外信號(hào)解調(diào)IP核,、紅外編碼脈寬測(cè)量IP核、紅外發(fā)送調(diào)制邏輯電路,、中斷控制器等組成,,如圖1所示。上電后,,系統(tǒng)通過(guò)EPCS調(diào)用系統(tǒng)配置信息,系統(tǒng)進(jìn)行初始化,。當(dāng)“學(xué)習(xí)”鍵按下時(shí),,通過(guò)I/O口中斷產(chǎn)生一個(gè)測(cè)量紅外載波頻率請(qǐng)求信號(hào),此時(shí)“學(xué)習(xí)”指示燈亮,。當(dāng)檢測(cè)到外部遙控紅外信號(hào)時(shí),,處理器通過(guò)Avalon總線調(diào)用等精度測(cè)量載波頻率IP核開始測(cè)量頻率,“學(xué)習(xí)”指示燈熄滅表示學(xué)習(xí)載波頻率成功,。接下來(lái)通過(guò)“家電”按鍵即可將該載波頻率儲(chǔ)存到該家電紅外編碼FLASH載波頻率存儲(chǔ)區(qū)域,。對(duì)應(yīng)的“家電”指示燈亮,表示可以進(jìn)入該家電紅外遙控信號(hào)學(xué)習(xí)或發(fā)送階段,。學(xué)習(xí)時(shí),,只需將家電遙控器發(fā)送窗對(duì)準(zhǔn)學(xué)習(xí)型遙控器的接收窗,發(fā)送紅外遙控信號(hào),。此時(shí)Nios軟核處理器會(huì)通過(guò)Avalon總線調(diào)用紅外信號(hào)解調(diào)IP核和紅外編碼脈寬測(cè)量IP核,,完成紅外信號(hào)的解調(diào)和一幀完整編碼脈寬高低電平時(shí)間測(cè)量(此過(guò)程中處理的所有數(shù)據(jù)存儲(chǔ)在SDRAM中)。當(dāng)“學(xué)習(xí)”燈再次亮起,,表示該信號(hào)已得到確認(rèn),。按下學(xué)習(xí)型遙控器的任一功能鍵,即可將該信號(hào)送到指定的該家電按鍵FLASH存儲(chǔ)區(qū)域,;發(fā)送時(shí),,先選擇“家電”選擇鍵(即選定了載波頻率),然后按下“功能鍵”時(shí),,NiosⅡ處理器會(huì)自動(dòng)調(diào)用FLASH存儲(chǔ)數(shù)據(jù),,通過(guò)紅外發(fā)送邏輯電路調(diào)制到載波上,完成紅外信號(hào)還原,。
2 硬件電路設(shè)計(jì)
2. 1 主控制電路設(shè)計(jì)
主控制電路主要以Altera FPGA系列Cyclone EPlCl2Q240C8器件為載體,,通過(guò)SoPC技術(shù)構(gòu)建嵌入式軟核NiosⅡ處理器平臺(tái),運(yùn)用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì)等精度測(cè)量載波頻率IP核,、紅外信號(hào)解調(diào)IP核,、紅外編碼脈寬測(cè)量IP核和紅外發(fā)送調(diào)制邏輯電路,以實(shí)現(xiàn)載波的精確測(cè)量,,紅外信號(hào)解調(diào),、脈寬測(cè)量和調(diào)制功能。復(fù)位電路采用了專用看門狗芯片CATl025,以避免電路的死循環(huán),,同時(shí)也可以通過(guò)手動(dòng)按下復(fù)位鍵,,使系統(tǒng)重新啟動(dòng)。時(shí)鐘是采用外部時(shí)鐘方式,,其頻率為50 MHz,。主控制電路圖如圖2所示。
2.2 外圍硬件電路設(shè)計(jì)
2.2.1 按鍵與指示電路
為了簡(jiǎn)化軟件程序,,結(jié)合FPGA多I/O口的優(yōu)勢(shì),,本設(shè)計(jì)采用獨(dú)立按鍵方式,當(dāng)按鍵按下時(shí),,F(xiàn)PGA對(duì)應(yīng)的I/O口會(huì)檢測(cè)到低電平,;按鍵彈起時(shí),F(xiàn)PGA 對(duì)應(yīng)的I/O口會(huì)檢測(cè)到高電平,。對(duì)于指示電路,,采用不同顏色的發(fā)光二極管來(lái)指示不同的狀態(tài)或控制不同的家用電器,當(dāng)其中的一個(gè)指示燈閃爍時(shí),,表示正在學(xué)習(xí)對(duì)應(yīng)的家電遙控器或者是發(fā)送對(duì)應(yīng)的家電遙控信號(hào),。
2.2.2 紅外接收和發(fā)送電路
紅外接收電路由紅外二極管、三極管9014及電阻組成,。當(dāng)未檢測(cè)到紅外信號(hào)時(shí),,紅外接收二極管電阻很大(近似于斷路),三極管9014處手截止?fàn)顟B(tài),,此時(shí) IR_RECEIVE端檢測(cè)到高電平,;當(dāng)檢測(cè)到紅外信號(hào)時(shí),紅外接收二極管電阻較小,,這時(shí)三極管9014發(fā)射極正偏,,集電極反偏,三極管處于放大狀態(tài),。紅外信號(hào)通過(guò)共發(fā)射極電路放大后輸入到FPGA的I/O口18腳,,交給Nios軟核進(jìn)行處理。發(fā)送時(shí),,經(jīng)過(guò)紅外發(fā)送調(diào)制邏輯電路調(diào)制后的紅外信號(hào)從FPGA I/O口16腳輸出,,紅外信號(hào)通過(guò)三極管9014再次倒相放大后從集電極輸出,驅(qū)動(dòng)紅外發(fā)射管輻射出紅外調(diào)制信號(hào),,從而實(shí)現(xiàn)紅外遙控信號(hào)的再生,。紅外發(fā)送和接收電路如圖3所示。
2.2.3 存儲(chǔ)電路
存儲(chǔ)電路主要由AM29LV320DT(4 MB 16位并行總線)FLASH芯片和K4S641632H(64 MB 16位并行總線)SDRAM芯片組成,。其中的SDRAM芯片起緩沖數(shù)據(jù)的作用,,保存處理器及外部交換的數(shù)據(jù)信息,,掉電或復(fù)位后數(shù)據(jù)丟失。FLASH閃速存儲(chǔ)器,,用于SoPC系統(tǒng)的程序存放和需要掉電保存的數(shù)據(jù)存放,,但是,F(xiàn)LASH的讀操作比SDRAM慢,,寫速度更加緩慢(相對(duì)于SDRAM而言),。 NiosⅡ系統(tǒng)啟動(dòng)后,在NiosⅡ的Boot程序把存放在FLA-SH中的程序復(fù)制到SDRAM后,,再運(yùn)行,。
3 軟件設(shè)計(jì)
當(dāng)系統(tǒng)上電后進(jìn)入等待狀態(tài)。當(dāng)檢測(cè)到學(xué)習(xí)鍵按下時(shí)候,,系統(tǒng)進(jìn)入學(xué)習(xí)狀態(tài)。在學(xué)習(xí)過(guò)程中,,Nios處理器寫入頻率測(cè)量控制字,,通過(guò)A-valon總線調(diào)用頻率測(cè)量IP核對(duì)載波頻率進(jìn)行測(cè)量。測(cè)量完成后,,檢測(cè)到有啟動(dòng)解調(diào)控制字和測(cè)量脈寬控制字寫入,,即開始對(duì)紅外信號(hào)解調(diào)同時(shí)對(duì)解調(diào)后的信號(hào)的脈寬進(jìn)行測(cè)量。測(cè)量完成后,,處理器會(huì)將數(shù)據(jù)寫入對(duì)應(yīng)存儲(chǔ)區(qū)域,,完成本次學(xué)習(xí)過(guò)程。如圖4所示,。還原信號(hào)時(shí),,處理器寫入發(fā)送調(diào)制控制字,通過(guò)Avalon總線控制紅外發(fā)送調(diào)制邏輯電路,,發(fā)送完成后返回等待狀態(tài),,等待下一次發(fā)送。如圖5所示,。
4 系統(tǒng)功能仿真" title="仿真">仿真
為了驗(yàn)證該學(xué)習(xí)型遙控器的原理,、硬件系統(tǒng)和軟件系統(tǒng),選用21K8型飛利浦電視遙控器,,RMFDLC7461型NEC電視遙控器和RM-687C型索尼電視遙控器作為實(shí)驗(yàn)對(duì)象,,分別按這三個(gè)遙控器的“電源" title="電源">電源”功能鍵,發(fā)送紅外遙控信號(hào),,它們對(duì)應(yīng)的載波頻率分別為36 kHz,,38 kHz和40k-Hz,學(xué)習(xí)型遙控器的紅外接收二極管接收到紅外信號(hào),,并通過(guò)三極管9014放大,,送入FPGA的I/O口18腳,,利用QuartusⅡ軟件中的集成仿真器可對(duì)學(xué)習(xí)型遙控器進(jìn)行功能仿真。首先建立一個(gè)工程,,全部編譯通過(guò)后,,然后對(duì)其功能和時(shí)序進(jìn)行仿真測(cè)試,如圖6~圖8所示,。通過(guò)比較圖6~圖8中的已經(jīng)濾掉載波紅外信號(hào)High_En和紅外發(fā)送調(diào)制邏輯電路輸出的信號(hào)IR_code的波形可看出,,接收和發(fā)射的高低電平維持的時(shí)間相同,數(shù)據(jù)一致,,電平也一致,。
由仿真結(jié)果表明,21K8型飛利浦電視遙控器,、RM-FDLC7461型NEC電視遙控器和RM-687C型索尼電視遙控器的“電源”功能鍵代碼和學(xué)習(xí)型遙控器發(fā)出的代碼,,兩者相同,表示學(xué)習(xí)成功,。同時(shí)也表明該遙控器可以精確地測(cè)量不同載波的紅外遙控信號(hào),,解決了單片機(jī)因時(shí)鐘頻率低而無(wú)法對(duì)載波頻率進(jìn)行測(cè)量的瓶頸。
5 結(jié)語(yǔ)
該學(xué)習(xí)型遙控器通過(guò)SoPC技術(shù)構(gòu)建嵌入式軟核NiosⅡ處理器平臺(tái),,運(yùn)用Verilog HDL語(yǔ)言設(shè)計(jì)等精度測(cè)量載波頻率IP核,、紅外信號(hào)解調(diào)IP核、紅外編碼脈寬測(cè)量IP核和紅外發(fā)送調(diào)制邏輯電路,,把載波的精確測(cè)量,,紅外信號(hào)解調(diào)、脈寬測(cè)量和調(diào)制集中到Ahera FPGA系列Cyclone-EPICl2Q240C8器件上,,極大地簡(jiǎn)化外圍硬件電路,。實(shí)驗(yàn)表明,該遙控器解決了單片機(jī)因時(shí)鐘頻率低而無(wú)法對(duì)載波頻率進(jìn)行測(cè)量的瓶頸,,實(shí)現(xiàn)了對(duì)任何一款普通遙控器的按鍵編碼學(xué)習(xí),,真正完成了學(xué)習(xí)型遙控器的學(xué)習(xí)功能。