根据控制指令的实时性要求,系统设计每隔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并行处理能力,简化了无人机控制器的硬件结构,降低了遥控指令群延时,解决了测控设备的时序匹配问题,并且具有较好的功能可扩展性,该控制器已经在某型无人机系统中得到成功应用。