根據控制指令的實時性要求,系統設計每隔40 ms分別對矩陣鍵盤和航向控制器進行一次行列掃描和AD采樣,當鍵盤上的按鍵被觸發時,啟動按鍵去抖識別程序,輸出滿足響應時間要求的按鍵16 bits鍵盤掃描碼。與此同時,將AD采集到的航向控制器模擬量串行數據進行串并轉換后輸出12 bits并行航向控制數據。該模塊的SignalTapII在線仿真結果如圖3所示。KB_RL和KB_Y分別為行掃描線和列掃描線,KB_SEN為鍵盤掃描使能信號,KEY_SCode為按鍵觸發后輸出的鍵盤掃描代碼,SAD_CS為芯片的采集使能信號,SAD_SDT為芯片串行數據輸入,SAD_PDT為串并轉換后的航向控制器結果數據。由圖3可知,一共有2個控制按鍵被順序觸發,共輸出了2個鍵盤掃描碼:7DFE和7EFE。航向控制器輸出數據位2EB,對應航向控制角度值約為66°。
2.2 指令編碼與顯示模塊
指令編碼與顯示模塊將接收到的16 bits鍵盤掃描碼和12 bits航向控制器數據按照數據傳輸協議進行指令和數據編碼,并將編碼后控制指令和數據發送至指令發送模塊,與此同時,為確保指令代碼和航向控制器數據正確傳輸,模塊驅動6個16進制數碼顯示管實時顯示編碼后的指令數據和航向控制器數據。指令編碼與顯示模塊的SignalTapII在線仿真結果及數碼管顯示結果如圖4所示。KB_INS為指令有效標志,KB_ EDAT為編碼后的指令代碼,SAD_EDT為編碼后的角度值。LED_LE為數碼管數據鎖存信號,LED_BL為數碼管使能信號,LED_DL為數碼管數據輸入端,由圖4可知,編碼后的控制指令代碼和航向控制器角度分別為033H和66°,數碼管顯示結果為033和066。
2.3 指令發送模塊
指令發送模塊接收到編碼后的控制指令和航向控制器數據后,將編碼后的指令數據轉換為遙控幀數據,并按照異步串行通信協議(UART)將遙控幀數據輸出到MAX3387進行電平轉換,遙控幀數據串行波特率選取19 200,8位數據位,1位起始位,1位停止位,無奇偶校驗位。指令發送模塊SignalTapII在線仿真結果及計算機接收到的遙控幀數據結果如圖5所示。YK_SEND_EN為數據發送使能信號,Test_Vara為發送的8 bits并行遙控數據,YK_UART_Out為異步串行數據FPGA輸出端波形信號。
3 實驗應用
無人機控制器安裝于某型無人機地面控制站中。地面站加電后,控制器數據處理板開始工作,每間隔40 ms分別對8x8矩陣鍵盤和無人機航向控制器進行鍵盤掃描與AD采樣,并實時將采集到數據轉換成相應的遙控指令代碼,一路驅動數碼顯示管將指令代碼實時顯示,一路將指令代碼轉換成RS232異步串行數據通過測控設備發送至無人機,控制器數據處理板實物如圖6所示。實際應用結果表明,采用基于FPGA設計的無人機控制器的各項技術指標滿足使用要求,控制指令群時延小于80 ms,設備運行穩定可靠。
4 結論
根據無人機的控制特點,文中提出了一種基于FPGA的無人機控制器設計方案,該方法充分利用FPGA并行處理能力,簡化了無人機控制器的硬件結構,降低了遙控指令群延時,解決了測控設備的時序匹配問題,并且具有較好的功能可擴展性,該控制器已經在某型無人機系統中得到成功應用。