新闻中心

EEPW首页>嵌入式系统>设计应用> 基于DSP的内嵌PCI总线的卫星信号仿真器设计方案

基于DSP的内嵌PCI总线的卫星信号仿真器设计方案

作者: 时间:2012-04-20 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257561.htm

3.3应用程序框图及相应PCI驱动的关键代码分析

根据的总体设计,需要在PC机上实现二个功能模块;

数字信号处理模块该模块是的核心模块,实时仿真导航电文,计算卫星伪距、各通道的频率字和码控制字等。

通信模块 该模块主要是将PC机计算得到的相关信息通过PCI传递给

考虑到整个仿真器数据要求的实时性,通过中断函数实现PC机中的程序传输数据,当需要数据时,通过RSTSRC寄存器INTREQ位写1产生一个中断信号发送给PC机,但要使该中断有效,必须要求主机状态寄存器(HSR)中的INTAM位为0。因此在上位机程序中,初始化阶段必须把该中断使能位打开。应用程序的结构如图7所示。

中断处理步骤如下:

(1)应用程序打开中断使能,系统等待中断;

(2)如果中断到来,则清除中断标志,取消中断源;

(3)在中断函数中执行数据传输;

(4)数据传输完后给发中断,实现与DSP的握手;

(5)重新开启中断源。

第(2)步和第(5)步在中断使能函数中实现。

中断响应函数的关键代码如下:

PCI主机给DSP发中断是通过将HDCR寄存器的DSPINT位置1实现的,要注意产生该中断的有效前提条件是PCI的中断使能寄存器(PCIIEN)HOSTSW位被使能,即HOSTSW=1。

为了便于使用PCI的驱动函数和以后驱动程序发布的需要,将驱动函数封装在动态链接库DLL中,它们中主要函数的关键代码如下:

为了使PC机能够正确地捕获到由DSP传来的中断,在动态链接的DSP6416_IntEnable()函数中,必须设置内核模式下的中断传输命令,因为它的优先级比用户模式下的中断响应函数高,因而一旦DSP产生中断,首先执行的是内核模式下的中断传输命令。由于DSP6416内嵌PCI产生的中断属于电平敏感中断,如果不清除中断它将一直有效,这将会导致中断响应函数不断执行而死机。因此,必须在中断使能函数设置中断传输命令。在该例中,先从HSR中读取一个DWORD,然后在中断传输命令中设置CMD_MASK位。如果前面从HSR中读出的值为0x04,则屏蔽DSP所产生的中断,否则不执行屏蔽命令,然后在中断传输命令中向DSP的RSTSRC写入0x10清除中断。图6中用到的关闭中断使能和关闭设备2个函数可分别通过调用WinDriver中 WDC_IntDisable(),WDC_PciDe_viceClose(),WDC_DriverClose()的函数等实现。此外,调用这些函数之前要判断中断是否存在,设备是否打开,否则会出现严重错误。

3.4仿真器实验验证

设置仿真器场景:用户位置为北纬60°0000,东经100°0000,高程300 m,静止状态。GG24接收机的解算结果如图8所示。

GG24接收机解算结果是北纬59°5959.867 52,东经99°5957.636 24,高程为308.02 m,与设置的场景,即北纬60°0000,东经100°0000,高程300 m相当吻合。因此,这说明了仿真器的正确性和有效性。

4 结 语

在此设计的基于DSP6416内嵌PCI数据传输硬件平台和驱动开发方案已用于多模卫星信号仿真器中,该方案数据传输稳定,速度快(可达115 MB/s),采用WinDriver软件工具包开发DSP6416内嵌的PCI设备驱动程序,不但可以极大地缩短开发周期,而且还提高了卫星信号仿真器的开发效率和整体性能。 function ImgZoom(Id)//重新设置图片大小 防止撑破表格 { var w = $(Id).width; var m = 650; if(w


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭