短波通信主要通过电离层反射实现,而电离层的随机起伏变化导致了短波通信的不稳定,使得通信可靠性降低[1]。为了研制新型短波通信系统和提高短波通信可靠性,需要对电离层状态、物理特征以及电离层中电波传播规律进行研究。我国的电离层返回斜向探测研究始于20世纪50年代末,并取得了一定成果[2]。1990年以后,国内从事电离层信道特性研究的学者主要是武汉大学的教授[3-4]。随着通信技术的快速发展,有必要研制新的电离层(短波信道)斜向探测系统(IOSS),探测短波信道的特性,为下一代短波通信装备的研制提供理论基础。
近年来,数字信号处理器(DSP)芯片运算能力不断提高,在通信、电子、图形图像处理、自动控制等各个领域得到广泛应用[5-6]。DSP的软件设计通常有三种方法[7]:C语言开发、汇编语言开发、C语言和汇编语言混合编程开发。软件的算法表示方法[8]主要有:算法流程图、盒图、PAD图和伪码。本文采用算法流程图表示算法。
1 IOSS系统硬件结构和软件结构
IOSS系统硬件主要由DSP信号处理模块、CPLD时序控制模块、ADC/DAC模块、电台工作模式和频率控制模块、GPS模块、GPS导航电文接收模块、USB模块、时钟电路模块、PLL模块、PC终端和短波电台组成,其整体框图如图1所示。DSP信号处理模块主要负责探测数据、GPS导航电文数据、电台控制命令的中转传输,在GPS秒脉冲触发下实现收发系统间的同步等。
IOSS系统软件包括发送端系统软件和接收端系统软件。发送端和接收端系统软件由PC端软件、DSP端软件、GPS导航电文的接收模块软件和电台工作模式与频率控制模块软件四部分组成。
2 DSP端软件的设计
收发DSP端软件主要完成GPS导航电文的传输、探测数据,同步传输、电台工作模式和频率的传输等功能,其中,发端DSP软件整体结构如图2所示。
2.1 主程序的设计
发端主程序主要包括“向PC请求数据”函数、“读PC发来的命令头”函数、“读PC发来的数据包号”函数、“接收PC发来的数据”函数、“接收PC发来的控制电台命令”函数、“接收控制电台命令成功信息反馈给PC”函数、“发控制电台命令给电台状态控制模块”函数、“接收GPS电文”函数、“发GPS电文给PC”函数、“清空缓存”函数。“向PC请求数据”函数向PC发送数据请求命令头0x3131和请求发送的数据包号,告诉PC可以将所请求的包号数据发给DSP。“读PC发来的命令头”函数和“读PC发来的数据包号”函数是同一个函数,主要是读取PC发来的命令头和数据包号,供后面的程序条件判断使用。“接收PC发来的数据”函数将PC发来的短波信道探测数据按顺序存入DSP片外RAM,等待发给DAC。“接收PC发来的控制电台命令”函数,接收PC发来的电台工作模式和频率控制命令,将其存入DSP片上缓存,由发控制电台命令给电台状态控制模块函数拆分成电台能识别的格式后发给电台工作模式和频率控制模块,同时由接收控制电台命令成功信息反馈函数告诉PC控制电台命令接收成功。“接收GPS电文”函数主要通过DSP的HPI口接收GPS导航电文接收模块发来的、由GPS接收的格林威治时间和本地经纬度信息数据。“发GPS电文给PC”函数将格林威治时间和本地经纬度信息数据发给PC。“清空缓存”函数负责在每分钟的第50 s和第56 s或与PC通信超时时将数据缓存区清空。发端主程序算法流程图如图3所示。
收端主程序主要包括“读PC发来的命令头”函数、“读PC发来的数据包号”函数、“接收PC数据请求”函数、“发数据给PC”函数、“接收PC发来的控制电台命令”函数、“接收控制电台命令成功信息反馈给PC”函数、“发控制电台命令给电台状态控制模块”函数、“接收GPS电文”函数、“发GPS电文给PC”函数、“清空缓存”函数。“接收PC数据请求”函数主要是将数据块号累加,保证与PC通信的实时性;读取缓冲区数据,保证与PC的数据传输在本环节能正常进行。“发数据给PC”函数将ADC采集到的短波信道探测数据按包号发送给PC,其余函数与发端功能相同。
2.2 中断的设计
IOSS系统的DSP中断主要有外部中断1、外部中断3、定时器中断和缓冲串口中断。
外部中断1由GPS导航电文接收模块在每分钟的00 秒发出的脉冲触发,在发端用于将准备启动发数据给DAC控制变量置位;在收端用于将准备启动接收ADC数据控制变量置位,并将发送的数据包号变量清零。外部中断3直接由GPS模块输出的秒脉冲触发,在发端将准备启动发数据给DAC控制变量复位,将向PC请求数据控制变量置位,将开始发数据给DAC控制变量置位;在收端将准备启动接收ADC数据控制变量复位,将向PC发送数据控制变量置位,将开始接收ADC数据控制变量置位,将当前向PC发送的数据包指示变量置位。其中,发端外部中断3算法流程如图4所示。在外部中断1和外部中断3的共同作用下,实现同步收发,同步误差在10-9 s数量级。
定时器中断主要负责DSP与PC通信的计时。
缓冲串口中断由ADC/DAC触发,在发端负责将短波信道探测数据发给DAC,在收端负责将ADC采集的短波信道探测数据存入DSP片外缓存区。其中,发端缓冲串口中断算法流程如图5所示。
3 DSP端软件的实现和实测
在CCS5000编译环境中,采用混合编程开发方法,通过汇编语言实现DSP的初始化,用C语言实现具体数据处理函数和中断响应函数的编写。DSP与GPS导航电文接收模块、PC终端、电台工作模式和频率控制模块之间的数据通信分别采用不同的协议实现。协议采用应答方式,以不同的命令头实现与不同模块的通信。
将设计的软件通过编译器编译后,下载到DSP芯片进行测试。测试阶段主要解决以下问题:
(1)各模块的兼容问题。由于程序是按功能模块逐个编写的,虽然模块独立工作良好,但在整合的过程中会出现某些模块不能正常工作的问题。规范化各模块变量的命名,并详细分析模块间参数的传递,画出工作流程图,找出原因,解决问题。
(2)起始段数据发不出去的问题。原因是中断响应函数中变量的置位、复位时间节点出了差错,导致程序没有协调好DSP与DAC之间、DSP与PC之间的数据传输。对中断中变量的置位、复位时间节点重新进行整理和分析,理清先后顺序,并解决问题。
(3)收发同步的问题。有时由于天气不好导致收发两个GPS模块输出的秒脉冲之间误差较大,进而影响DSP的中断响应,导致收发不能同步。
目前,所设计软件已经应用在IOSS系统中,在长达5天的远程实验过程中,该软件工作一切正常。研制新的IOSS系统探测短波信道特性对下一代短波通信的研制具有重要意义。本文首先介绍了IOSS系统的硬件和软件结构,设计了IOSS系统DSP端收发软件功能结构,给出了软件设计算法流程图,详细阐述了各子函数模块的功能,采用C语言和汇编语言混合编程开发的方法在CCS5000平台上实现了软件程序的编写,对软件测试阶段遇到的主要问题进行了分析,说明了解决的办法。测试和使用结果表明,软件实现了所设计的功能,能可靠工作。
参考文献
[1] 陈曦,赵正予,时雨,等.电离层斜向返回探测系统的主控制器研制[J]. 电波科学学报,2005,20(5):598-603.
[2] 管荣生,谢树果,赵正予.我国电离层返回斜向探测研究40年[J]. 电波科学学报,1999,14(4):479-484.
[3] 陈雪涛,赵正予,刘进华,等.电离层斜向返回探测系统软件结构[J]. 电波科学学报,2003,18(6):673-678.
[4] 杨国斌, 赵正予, 李世鹏.新体制电离层探测系统中频接收模块设计[J]. 电波科学学报,2009,31(4):816-821.
[5] 谭立志. 基于DSP-MCU的HPI口通信[J].现代电子技术,2009(13):83-85.
[6] 邹翼,曾文海,陈续喜.基于TMS320VC5402DSP的HPI方式自举的设计与实现[J].计算机系统应用,2009(3):152-155.
[7] 郑红, 吴冠. TMS320C54x DSP应用系统设计[M]. 北京:北京航空航天大学出版社,2002.
[8] 吕国英,任瑞征,钱宇华. 算法设计与分析(第二版)[M]. 北京:清华大学出版社,2009.