微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 一种基于DSP的软件无线电调制解调实验平台

一种基于DSP的软件无线电调制解调实验平台

时间:07-30 来源:互联网 点击:
DSP程序设计

系统要实现多种制式的调制和解调,这部分功能通过DSP软件完成,本系统实现了FM,DSB,QPSK,DQPSK等多种制式的调制和解调。为了提高程序的灵活性和可移植性,把多种制式的调制解调程序编写在同一个工程文件并编译下载到DSP中,在MODEM板卡工作时,通过PC前台发送的控制字,选择不同的程序入口点和调用不同的调制解调函数来选择不同的调制解调方式。在模拟调制与解调部分,根据不同调制方式的特性,选择了AM,DSB和FM3种调制方式加以实现。在数字调制与解调部分实现了QPSK和QAM。  

LabVIEW程序设计

由于在实现主机与DSK板通信的过程中涉及到先后顺序,即建立连接、复位板子、复位DSP、打开HPI端口、加载程序、执行读写操作、关闭HPI、最后关闭连接,这些操作依次执行。所以在软件设计时对程序采用顺序结构,同时由于子程序有涉及到写操作时要对多个变量进行写操作,也采用了顺序结构。  

而要实现能够在界面上选择调试的种类,再根据调试种类执行不同的程序,则要在程序框图中采用选择结构。该系统在labview界面设计中包含有供使用者选择调制方式的部分、一些程序框图调用的库文件函数输入、输出参数设置部分,还包括一个图形显示器件,实现对DSP存储器读出数据的显示。可以分5部分设计该界面:针对函数调用时的参数输入,设计1个5参数组成的模块,包括给DSK板定义句柄、定义复位DSP芯片时的端口模式以及导入模式、加载的 COFF文件名字、所使用板子配置文件的名称和存放位置;针对调制方式的选择和调制时变量的改变,同样设计1个5参数组成的模块,包括载波频率、直流分量、放大增益、调频指数以及调制方式;针对上一个模块中的调制时改变的变量,设计1个8参数组成的模块,这些参数是设置上一模块所写入的变量的长度和在 DSP中存放的地址;再针对读程序设计1个3参数的模块,要把DSP中的数据读出来需要,设定一个长度、初始地址和一个主机缓存;最后一个模块就是一个波形显示的模块。  

LabVIEW与DSP通信程序

显示界面在Lab VIEW软件下开发而成,可实现主机程序(Lab VIEW程序)与DSP通信,即DSP存储器进行读写操作。Lab VIEW程序由前面板、程序框图和图标\连接器组成。前面板是人机接触、交流窗口,模拟实际的仪器,主要由一些控件和指示器组成;程序框图是程序代码,是 LABVIEW程序的核心部位,程序运行时,前面板控件的值会传递给程序框图进行处理和运算,然后再把最后的处理结果传递给前面板的指示器显示,便于用户观察;图标/连接器是程序的图形标志,也是其他高层程序被调用时的图形代码和连接端口。  

由于使用CCS观察DSP的数据波形比较麻烦,而且用于观察修改变量后产生的作用,都要完成原始程序修改,然后再编译、加载到DSP中,最后采集波形这样一个完整的过程。因此该虚拟控制显示系统通过调用CCS提供的动态链接库函数dsk6x11hpi.dll,根据一定的通信顺序方法和思想设计程序框图,就可以方便地实现主机程序(LabVIEW程序)与DSP之间的通信。dsk6x11hpi.dll动态链接库函数包含了12个接口函数,这12个接口函数分别执行不同的功能,如实现与DSK板子建立连接、复位板子、关闭连接等,这些接口函数包含了一些参数,输入值不同,代表的含义也不相同。  

在LabVIEW中用库函数节点(Calling Library Function Node)调用dsk6x11hpi.dll动态链接库函数,实现与TMS320C6711DSK的DSP通信。只要设置准确、步骤完整(先建立连接,再复位板子、复位DSP、打开HPI端口、加载程序、执行读写操作、关闭HPI、最后才关闭连接),就可以实现通信了。当然,程序设计完成之后,要让 LabVIEW程序和DSK板子进行系统联调,把从DSP存储器中读到的一组数据显示在图形显示界面中,通过图形窗口观察数据是否完整、准确。  

系统实时处理功能的PC-DSP联合实现  

前面的软、硬件设计工作完成之后,接下来的工作就是完成主机与DSP联合实时数据处理。在用LabVIEW设计完前面板、程序框图和图标、连接器后,只要节点调用设置准确和连线正确,程序就可以运行了。给DSP板子上电并设置准确后,可以调试程序。  

首先,在联调前需要对节点(动态链接库函数)输入、输出参数和输入控件的设置进行检查。在调试过程中,我们可以使用探针来测量输入、输出数值,以观察程序是否运行正确。接下来 建立连接,将DSP程序加载到DSP芯片中,这时最好把调用库文件放到与COFF(.out文件)同一个目录下。如果程序加载成功,主机和DSP板子建立了连接后,调用dsk6x-hpi-write和dsk6x-hpi-read函数返回值不会是0,如果返回值是0,而且节点调用设置都没有问题,这时候就需要检查板子是否连接正常。  

对于调用dsk6x-hpi-write和dsk6x-hpi-read函数,其中的设置是非常重要的,只要有一小块设置不成功,程序就无法进行下去。这方面需要我们对该函数的输入、输出参数非常了解。这里指出p-length和dest-addr数据的Pass设置都应该设置成 Pointertovalue,也就是指向这个数的地址。而对于read模块的p-buffer的数据类型应该设置成Array(数组),Array Format(数组格式)应该设置成指针。这些设置成功了,程序才能够正常运行。程序加载成功,函数返回值不为零,就可以继绪工作。dsk6x-hpi- write和dsk6x-hpi-read函数的返回值显示了该操作是成功的,也就可以正常地把数据从HPIRAM中读出来送到PC虚拟仪器程序数据入口,然后再将其以图形方式显示出来。图3是PC-DSP联合工作时在虚拟仪器前面板中显示的QPSK调试方式工作下,从HPIRAM中读出的DSP中调制信号(在波形显示图中表示出来)。  


图3PC-DSP联调QPSK调制波形图  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top