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