2.2.1 RAM数据段划分
本文设计了双端口RAM数据结构,承载采集控制系统的重要数据。依据通信协议,针对512 B的RAM区,细致地进行了数据段的划分,如图4所示。按照发送频次以及组帧要求,合理分配数据帧的存储顺序。这样设计会使控制器读写更可靠安全,也使代码编写调试更简捷。
2.2.2 数据发送状态机设计
信息传送模块是连接地面指挥系统和数据采集系统的纽带。在临空恶劣环境下,为了将采集到的数据和系统状况相关信息实时准确地传送到地面指挥站,在软件上进行了可靠性研究和处理。
首先对传送的数据做了校验处理,可通过上位机软件测试传输数据帧是否正确,如果校验失败,可丢弃此帧。本系统的发送模块既要发送主板信息又要发送从板信息,既要传送给机载计算机又要传送给北斗卫星,发送帧的类型也有差异,因此,设计三段式状态机稳定地传送数据,以免数据发送紊乱。在状态机的空闲任务中,FPGA等待各种数据类型帧的触发信号,一旦接收到启动发送信号,进入到相应的发送状态中,将对应的数据帧发送到UART串口上,串口的触发信号也因数据信息的差异而不同。在空闲任务中,接收到触发信号后,需要实时对RAM区执行写操作,写操作完成后再进入发送状态,不免会引起程序死锁。为了解决这个问题,提高程序的鲁棒性,在等待写操作的部分加入看门狗程序,一旦死锁,可以强行将程序拉回到原始等待状态。图5为UART串口发送模块的状态机示意图。
3 系统仿真与调试
数据系统的测试主要通过两种手段:软件仿真和借助上位机联调。本系统用到的仿真工具有Quartus II开发环境提供的在线逻辑分析仪、信号探针、逻辑分析仪接口等,还有外部安装性能强大的Modelsim仿真工具。例如,在调试具有读写应答的IIC通信的传感器和基于SPI通信的传感器时,使用在线逻辑分析仪直接观察数据波形特征,能够快速诊断并排查错误。利用Modelsim仿真工具时,需要先编写对应模块的testbench代码,并添加到仿真工具中,运行仿真软件。图6为调试UART通信模块波形图,可观察RAM的读写地址值与数据值的对应关系,验证代码的逻辑。尤其在调试状态机的运行情况时,能够很直观地查看状态时序逻辑的正确性。