基于VisualDSP++的中频信号模拟器的软件设计

   2024-02-18 互联网1020
核心提示:  基于DSP技术、DDS技术的中频信号模拟器可以产生包括线性调频信号、相位编码信号、单频脉冲信号以及他们的组合在内的等多种雷

  基于DSP技术、DDS技术的中频信号模拟器可以产生包括线性调频信号、相位编码信号、单频脉冲信号以及他们的组合在内的等多种雷达信号,是雷达等电子设备生产的主要测试设备。

  1VisualDSP++简介

  VisualDSP++是美国模拟器件公司的DSP开发工具CrossCore系列中的一部分,是一种能提供有效项目管理的集成开发和调试环境,他使编程人员能够利用一个界面在编辑、编译连接和调试之间轻松切换。VisualDSP++的高级功能包括VisualDSP++内核(VDK)、C/C++编译器、先进的3D标绘工具、软件代码运行时间统计以及TCL脚本支持。VisualDSP++开发环境具有以下特点:

  (1)广泛的编辑功能

  通过使用多种语法高亮显示、拖放式、书签和别的标准编辑操作来创建和修改源文件。也可以查看由代码开发工具生成的文件。

  (2)灵活的工程管理

  规定一个工程定义,他是用来识别文件、相关文件和用来编译工程的工具。创建工程定义或者修改他来满足不同开发的需要。

  (3)易访问的代码开发工具

  AD公司提供如下的代码开发工具:C/C++编译器、汇编器、链接器和加载器。通过使用对话框而不是复杂的命令行脚本来规定选项。

  (4)灵活的工程编译选项

  控制文件级或工程级的编译。VisualDSP++能有选择地编译文件和工程、更新工程相关文件或者编译那些在初次编译后又修改的文件。观察工程编译进程的状态。

  (5)VisualDSP++内核(VDK)支持

  为工程增加VDK 支持来构造和安排开发应用。工程窗口的(Kernel)内核标签页能够操作事件、事件位、优先级、信标和线程。

  (6)灵活的工作区管理

  创建多达十个工作区并且在他们之间快速切换。为每一个工作区分配不同的工程便可以在一个会话框中编译和调试多个工程。

  同时VisualDSP++提供了以下的一些特性以缩短调试时间:

  (1)易用的调试环境

  对所有处理器的模拟器和仿真器或硬件评估和开发板都用一个共同的、方便的接口来调试。且可以在他们之间自由切换。

  (2)多语言支持

  可以调试用C/C++或汇编语言写的程序,用机器码观察程序。对于用C/C++写的程序,可以用C/C++或C/C++与汇编混合语言来观察源程序,并且显示局部变量的值和估计当前文本中的表达式(全局或局部)。

  (3)有效的调试控制

  在符号或地址处设置断点,然后单步调试程序以发现代码逻辑的问题。在寄存器、堆栈和存储器位置上设置watchpoint(条件断点)用来确定何时访问他们。

  (4)改善特性的工具

  使用跟踪、性能分析和线性或统计性能分析来鉴别DSP应用的瓶颈问题,用来确定程序中需要优化的地方。使用绘图来观察数据阵列。产生中断、输出和输入来模拟实时应用的情况。

  2复杂雷达信号中频模拟器的软件设计

  2.1模拟器系统介绍

  复杂雷达信号中频模拟器能够产生线性调频信号、相位编码信号及其相互组合形成的复杂雷达信号,解决了电子战设备性能测试中对复杂调制雷达信号的仿真问题。

  整个信号模拟器的核心部件为高速数字信号处理器ADSPBF535和高性能直接数字频率合成器AD9854,前者用于高速控制及波形参数的计算,后者用于中频信号的产生。

  系统计算机通过本地计算机接口将需要调整的参数发送给中频模拟器。这些可调的参数包括:同时工作的雷达个数,每部雷达信号的重复周期、脉冲宽度、起始频率以及带宽、信号的幅度以及天线扫描速度等。中频模拟器由ADSPBF535接收这些参数,对其进行判断、计算、整理,随后把他们转化为所需要的控制数据并最终用这些数据控制AD9854产生波形。系统的工作流程如图1所示。

  进一步抽象工作流程可以建立模拟器系统的软件工作机制(如图2所示):

  (1) 外来数据进入输入缓冲,经主程序判断、计算后被转换成控制数据。

  (2) 主程序将控制参数以固定的格式放入波形参数输出队列,并初始化输出缓冲。

  (3) 主程序给每部雷达分配定时器,并调用相应的波形模组。

  (4) 主程序不断更新波形参数输出队列内的数据。与此同时,定时器每隔一定时间产生中断。与该中断相对应的中断服务程序从输出缓冲里取出最新的控制参数并发送出去。

2.2基于ADSPBF535的复杂雷达信号中频模拟器的软件实现

  VisualDSP++for Blackfin的C/C++编译器有两种方法支持混合汇编语言和C/C++,可以把汇编源程序同一个C或C++程序连接起来:

  (1) 在C或C++程序中嵌入汇编源代码。

  (2) 将C或C++同汇编源程序链接起来。

  利用汇编器提供的数据伪指令和内部函数,可以使用具有C结构的高级编程功能。汇编器内部还包含一个预处理器,该预处理器允许在汇编源文件中使用C风格的预处理器命令。

  预处理器命令对于修改汇编代码很有用。例如,可以使用#include命令填充存储器、装载配置寄存器和设置DSP参数。可以使用#define命令定义常数和为经常使用的指令集定义别名。预处理器以相应的值和指令组代替每次出现的宏。这里以线性调频信号为例来说明C/C++编译器的这些功能。对于线性调频信号的一个脉冲,他的可见属性包括:脉冲宽度、起始频率、扫频带宽等。

  针对这些属性,首先在头文件里定义如下的结构体类型来描述这个脉冲:

  如果要执行变量的读取,把线性调频信号的一个参数,如“重复周期”,从内存读入到某一指定的寄存器内,那么要编写的代码如下所示:

  在数据段中定义的结构体Str_chirp经编译后会自动在内存区中开辟一块以Str_chirp命名的数据存储区。在程序段中,前两条指令是将结构体Str_chirp 的头地址赋给地址寄存器P0,由于ADSPBF535不支持32位立即赋值,所以P0的赋值要分两次进行,即要分别对P0寄存器的高16位和低16位赋值。第三条语句是将结构体中变量_span的值读入数据寄存器R0, 其中OS_Schirp_span 是预先定义的宏,他的意思是变量_span相对于结构体Str_chirp 的头地址的偏移地址。代码如下:

  3结语

  综上所述,得益于编译器的支持,在编写代码时使用了结构体的声明,这样既简化了代码又提高了程序的可靠性。采用上述软件运行机制的复杂雷达中频信号模拟器系统不仅可以准确的模拟一部雷达工作时产生的单一波形,而且还可以模拟两部或两部以上雷达同时工作时产生的组合波形,他可以满足电子战设备性能测试中对复杂调制雷达信号的仿真要求。


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅