文/陳韻文 肖順文 鄭瑞 王涌 羅春梅
(西華師范大學電子信息工程學院 四川省南充市 637009)
紅外遙控具有體積小、信息傳輸可靠、功耗低、成本低等顯著特點[1],廣泛應用于家用家電、工業(yè)控制等領域。紅外線為不可見光,不受電磁環(huán)境的干擾,方向性好,同時也具有不干擾其他用電設備工作,不影響周邊環(huán)境的良好優(yōu)點,因此,研究紅外遙控系統工作原理并設計實現顯得尤為必要。本文采用Verilog HDL來設計實現紅外遙控信號的解碼,這種基于FPGA實現的紅外解碼比傳統方式解碼速度更快、精確率更高。
紅外遙控系統一般分為發(fā)送端和接收端兩部分,如圖1所示。發(fā)送部分的發(fā)送元器件為紅外發(fā)光二極管,通過發(fā)送電路使其發(fā)出具有特定編碼信號的紅外線。接收電路接收光信號主要元件是紅外接收管,其接收到發(fā)送端發(fā)出的紅外線后經一系列光電轉換電路、放大電路后,轉換成相應電信號。
本系統采用的是基于NEC紅外通信協議而生產的HT6221遙控編碼芯片,其采用的PPM編碼方式,即脈沖相位調制。基于HT6221遙控芯片的遙控裝置發(fā)送的數據格式如圖2所示。數據幀由引導碼、8位低位地址碼、8位高位地址碼、8位數據碼、8位數據反碼構成[2]。
引導碼由9ms高電平和4.5ms低電平組成,代表一幀數據的起始,也即是幀頭[3]。地址碼前8位是低位,后8位為高位。所以,理論上NEC協議可以支持216個不同用戶。數據碼由8位二進制構成,理論上可知NEC協議支持28個用戶指令。數據反碼是由數據碼波形取反而得,主要是用于數據校驗,增強紅外遙控的可靠性。
在NEC協議中,區(qū)別邏輯“0”和邏輯“1”是根據高低電平持續(xù)時間的長短,邏輯“0”用0.56ms高電平加上0.56ms低電平表示;邏輯“1”則用0.56ms高電平加上1.69ms低電平表示[4]。
通過對NEC協議的認識,知道對引導碼和邏輯“0”邏輯“1”的識別是解碼的關鍵[5]。紅外線一體化接收頭接收到光信號后,經一系列轉換、放大電路后輸出與發(fā)送信號倒向的數據信號,即發(fā)送端發(fā)送的高電平信號,紅外線一體化接收頭輸出低電平信號,發(fā)送端發(fā)送的低電平信號,紅外線一體化接收頭輸出高電平信號。所以,要能解碼出正確的紅外信號,關鍵是識別出9ms的低電平、4.5ms的高電平、560us的低電平、1690us的高電平、560us的高電平[6]。因此需要4個計數器分別對9ms、4.5ms、0.56ms、1.69ms進行計數判斷,當然,因為不同遙控廠家精度不一定完全一致,這里給定計數器值的一定范圍來實現以兼容不同廠家生產的遙控設備。部分Verilog HDL源程序如下:
圖1:紅外遙控系統工作原理圖
圖2:NEC數據幀格式
圖3:紅外解碼狀態(tài)機跳轉圖
圖4:功能仿真波形
圖5:ISSP抓取數據
紅外解碼狀態(tài)機跳轉圖如圖3所示,從解碼流程分析,可以分為4個狀態(tài):
IDLE:空閑狀態(tài),等待一體化接收頭信號到來。
因此,以整體整合一體化自主調控為核心,整合基礎醫(yī)學各學科內容,構建了系統整合課程。例如將呼吸系統、心血管系統和血液系統充分整合,將消化系統、內分泌系統、泌尿生殖系統充分整合,課程以整體整合的理念,將形態(tài)結構、功能和治療緊密結合,密切結合臨床應用,希望打破傳統教學中學科間的壁壘,使醫(yī)學知識更加系統與完整,以求打破學科界限以實現各學科、各系統知識點的橫向整合,打通基礎課程與臨床課程界限,以實現融會貫通的縱向整合。
CHECK_T9:識別9ms低電平引導碼到來,如果識別成功則繼續(xù)識別4.5ms的高電平引導碼,識別不成功則返回IDLE空閑狀態(tài)。
CHECK_T4_5:識別4.5ms高電平引導碼到來,如果識別成功則進入數據碼解碼狀態(tài)REC_DATA,識別不成功則返回IDLE空閑狀態(tài)。
REC_DATA:數據碼解碼狀態(tài),32位碼字識別完成后,完成一次紅外解碼,回到IDLE空閑狀態(tài)。
在QuatursII軟件中編譯無誤后,設置好testbench腳本,然后調用OEM版本的仿真軟件Modelsim-Altera進行功能仿真,可以看到部分仿真波形數據,如圖4所示。從仿真波形看,一體化接收頭輸出數據iIR產生了一幀數據,在一幀數據傳輸完成后,解碼完成標志信號Rec_ok產生一個單時鐘高電平。Rec_ok產生一個單位時鐘后,可以看到解碼后的數據De_Data為1101_1010_0010_0101,高8位與低8位互為反碼,與NEC協議數據碼編碼規(guī)則一致。將低8位轉換為十六進制后為25H,與在激勵文件中設置的數據一致。得出該設計結果符合設計的要求。
為了更進一步檢驗紅外信號解碼的正確性,將進行板級驗證。首先在QuatursII中分配好引腳,進行全編譯,通過JTAG配置數據下載到FPGA芯片中。然后啟動QuatursII軟件中的ISSP進行數據抓取,將數據顯示格式調整為Hexadecimal,使用遙控器按“9”,FPGA解碼后,ISSP抓取的B54AFF00h,如圖5所示,從使用HT6221遙控芯片的遙控器鍵碼圖中,知道按鍵“9”對應鍵碼為4AH,計算出其反碼為B5H,與ISSP抓取的數據一致,符合設計要求。
本文介紹了紅外遙控信號解碼原理,分析了紅外遙控系統的組成以及紅外遙控信號的編碼規(guī)則,并采用硬件描述語言Verilog HDL完成了紅外遙控信號解碼電路的實現。通過紅外線接收頭接收遙控器發(fā)送的遙控信號,用FPGA對接收信號進行解碼。經過電路仿真,板級測試,符合設計要求。