在同一模拟输出卡上产生多路不同频率模拟信号的方法

文档序号:6438500阅读:433来源:国知局
专利名称:在同一模拟输出卡上产生多路不同频率模拟信号的方法
技术领域
本发明涉及模拟信号的生成,特别涉及一种采用一块模拟输出卡产生多路不同频率模拟信号的方法。
背景技术
在卫星测试过程中,需要地面测试设备按测试需要向卫星同时提供不同波形的信号,用于模拟卫星在轨运行时姿态敏感器或其他设备测量到姿态信号、探测信号,进而测试星上姿态测量系统、信息处理系统的功能。一般卫星姿态敏感器的精度均较高(信号精度在0.01度左右),对上星的信号的精度和信号之间有严格的相位要求、信号的频率稳定度要求较高,而且所需信号的频率多样,信号的幅度、频率等参数在测试过程中要根据测试需要动态改变。在本发明应用之前,当需要产生多路信号时,通常可以采用以下几种实现方案1、通过模拟RC、RLC、LC等形式的振荡电路,配合使用运算放大器、有源或无源滤波器电路产生模拟信号;2、通过多谐振荡器、晶体振荡器等脉冲信号发生器产生脉冲信号,再通过计数器分频产生一定占空比和频率的脉冲信号,而后通过运算放大器、有源或无源滤波器电路、数字滤波电路滤波后产生模拟信号;3、通过多谐振荡器、晶体振荡器等产生脉冲信号,再通过计数器分频产生固定频率的脉冲信号,将需要生成的模拟信号先量化,而后存储于ROM芯片中,再采用CPU控制将存储在ROM中的信号通过D/A转换,最终生成的模拟信号。4、通过标准的PXI/PCI模拟输出卡(AO卡),通过编制板卡控制程序调用板卡驱动控制板卡生成所需模拟信号,当需要生成不同频率信号时,需要配置多块模拟输出卡,一种频率的信号对应一张板卡。以上方案中,1方案只适合生成正弦波、三角波、梯形波等相对简单的波形,对于复杂的模拟信号的输出,无能为力,而且用该方案生成的波形的精度较低,易受外部环境干扰,信号参数会随时间发生飘移。2方案主要用于生成脉冲信号和其他相对简单的信号,也同样会存在1方案的缺陷。3方案可以实现复杂的多路模拟信号的输出,但需要自己开发板卡或线路,而且由于波形的数据点需要固化于ROM中,无法对波形的参数进行动态更改,对于复杂波形的生成、所需的D/A转换采样点数据的产生也较困难;对于不同指标要求,需要开发不同的线路,通用性差;自己开发的电路、需要经验、电路调试也很繁琐、可靠性设计较差。4方案相比3方案通用性提高,不用自己设计电路,调试电路,由于为工业成熟产品,出厂前均进行了严格测试、可靠性高;但各通道的采样频率相同,只依靠板卡硬件资源无法获得多频率模拟信号,需要多块板卡才能产生不同频率的信号。

发明内容
本发明的目的在于克服现有技术中同一块模拟输出卡只能输出一种频率的模拟信号的缺陷,从而提供一种在同一块模拟输出卡上输出多种频率模拟信号的方法。为了实现上述目的,本发明提供了一种在同一模拟输出卡上产生多路不同频率模拟信号的方法,包括步骤1)、创建一用于保存所述模拟输出卡所要输出的多路不同频率的模拟信号的采样数据的二维数组;所述二维数组的列数表示了所述多路信号的路数,所述二维数组的每一列数据表示了对应路信号的波形,所述二维数组中每一行数据代表了同一时刻的输出电压值;步骤2、、确定所述模拟输出卡在工作时的采样频率;步骤幻、所述模拟输出卡按采样周期从所述二维数组读取数据,并对所读取的数据做数/模转换,生成波形;其中,该步骤包括步骤3-1)、在从所述二维数组读取数据时,按照所述多路模拟信号中频率最高的信号所对应的采样周期从所述二维数组的每一列读取大小为η的数据;步骤3- 、对于所述二维数据中数据大小为N且N大于η的列,将该列中最后第 Ν-η个数据取出并予以缓存;步骤3-3)、为所述二维数据补入数据;其中,对于数据大小为N且N大于η的列, 当所述Ν-η的值大于或等于η,将该Ν-η个数据作为该列的新的数据,当所述Ν_η的值小于 η,在所述最后第Ν-η个数据之后补入完整的N个数据,将其作为该列的新的数据;步骤3-4)、重新执行步骤3-1),直到满足终止条件。上述技术方案中,所述的步骤1)包括步骤1-1)、根据模拟输出卡的最大采样率指标和所需生成模拟输出信号的最高频率确定二维数组中用于代表频率最高的一路输出信号的某一列的数据数量上限
Γ π Μ _ ^maxnmax
J max上式中Smax为所述模拟输出卡具有的最大采样率,fmax为所需生成信号的最高频率,Hfflax为模拟输出卡能够产生的数据点的最大个数;步骤1- 、根据步骤1-1)确定的数据数量上限以及信号精度确定所述二维数组中某一列数据的数量ns;步骤1-3)、根据不同频率的信号间的比值以及步骤1-2)中确定某一列数据的数量,确认其他列数据的数量。本发明的优点在于1、本发明在一块模拟输出卡上实现了多路不同频率高精度模拟信号的输出,解决了现有技术需要多块板卡才能实现的功能,降低了实现成本,提高了信号间的同步性能。2、采用本发明的方法后,不同通道输出的模拟信号当频率相同或相差整数倍时, 其信号间的相位差始终保持不变,即满足相位同步;不同通道输出的模拟信号当频率不同或相差非整数倍时,信号在第一个周期内的初始相位差相同,即满足初始相位同步。


图1为本发明方法的程序流程图。图2以生成3路模拟信号为例,显示了生成多路同频率信号原始采样数据点二维数组数据在计算机内存中的映射情况。图3以生成2路频率和1路f2频率信号为例,显示了生成多路不同频率信号时, 在第一个信号周期,其原始采样数据点组成的二维数组在计算机内存中数据映射形式。图4在图3所示步骤基础上,显示了在第二个信号周期,在计算机将第一个信号周期的数组数据送往PXI或PCI模拟输出卡进行D/A转换,生成波形时,将第一个信号周期中第3序列中最后N-n个数据点从第3列中取出、缓存的示意图。图5在图4所示操作的基础上,显示了如何为二维数组补充数据的示意图。图6在图5所示操作的基础上,在生成第三个信号周期,当样本数据被送入D/A 进行转换的时候,将图5所示操作中新的第3列的剩余数据2(N-n)数据从第3列中取出、 缓存的示意图。图7在图6所示操作的基础上,显示了如何为二维数组补充数据的示意图。图8显示了在生成第K个信号周期,当样本数据被送入D/A进行转换的时候, 将k-Ι步操作中新的第3列的剩余数据k(N-n)数据从第3列中取出、缓存的示意图。图9在图8所示操作的基础上,显示了如何为二维数组补充数据的示意图。
具体实施例方式下面结合

本发明的优选实施例。在对本发明的方法做详细说明前,首先对本发明方法所涉及的硬件进行说明。要实现本发明的方法需要有计算机、模拟输出卡,所述模拟输出卡包括有一板载 FIFO缓存器,且该缓存器支持DMA传输模式。所述模拟输出卡有多个输出通道,这些输出通道具有D/A转换功能,可用于将多路信号由数字格式转换为模拟格式并输出。模拟输出卡包括有标准PXI (或PCI)总线接口,以实现与所述计算机之间的通信。所述PXI (或 PCI)总线接口为一种基于PC的工业标准计算机总线规范,其总线宽度为32位,工作电压 3. 3V/5. 5V,频率为 66MHz/132MHz。正如背景技术中所提到的,一般而言,一个模拟输出卡中的各个输出通道具有相同的采样频率,因此,在同一时间内只能输出同一频率的一路或多路信号,不能输出不同频率的多路信号,否则所输出的信号的完整性会受到影响。这就使得现有技术中若要输出多频率模拟信号就需要多个模拟输出卡。参考图1,本发明通过下列步骤实现了在同一张模拟输出卡输出多路不同频率的模拟信号。步骤1)、创建一二维数组,用于保存模拟输出卡所要输出的多路模拟信号的采样数据。在本步骤中,所要创建的二维数组的列数表示了需要产生的信号的路数,二维数组的每一列数据表示了该路信号的波形,二维数组中每一行数据代表了同一时刻的输出电压值。在图2、图3中分别给出了所述二维数组的示意图。该步骤包括以下子步骤步骤1-1)、首先根据模拟输出卡的最大采样率指标和所需生成信号的最高频率确定二维数组中用于代表频率最高的一路输出信号的某一列的数据数量上限,即某一路的最大数据点数计算方法为
上式中^iax为模拟输出卡具有的最大采样率,fmax为所需生成信号的最高频率,nmax 为模拟输出卡能够产生的数据点的最大个数。步骤1- 、根据上步确定的数据数量上限,综合考虑所需信号精度确定二维数组中某一列数据的数量,一般可以选择上一步骤中所得到的最大数据点数的70% 80%,此处取为75%。即ns = 75% nfflax对于同频率信号,各路信号的采样数据点数均按照上式确定,对于其他频率信号的数据点数需要按照下式确定Ns=^rns
J 2上式中Ns为其他频率信号所需要的数据点数,对于不同频率信号所需的采样点数均不同,记为Nsl,Ns2,... Nsn 代表前面提到的最高频率,f2代表其他频率。以图2为例,该图所表示的实施例中,有三路同频信号,因此按照上述步骤所得到的分别代表三路同频信号的一维数组数组I、数组II、数组III中的数据量相同,都可以用 η表示;而在图3所表示的实施例中,也有三路信号,但第三路信号的频率不同于第一、第二路信号,因此,数组I、数组II的数据量相同,都用η表示,而数组III的数据量用N表示,N
> Πο本步骤所形成的二维数组可保存在计算机的缓存或内存中。步骤2、、确定模拟输出卡工作时的采样频率。根据确定的信号数据数组的数据量和所需生成信号频率,确定模拟输出卡工作时的采样频率。计算方法如下fs = nsfsignal上式中fs为模拟输出卡工作时的采样频率,ns为实际的一维数组的数据数量, fsignal为所需生成信号频率。之前提到,若多路模拟信号中存在不同频率的模拟信号,那么实际的一维数组的数据数量会有所不同,正如图3中所示的那样,在此情况下,所述的1取数据数量最小的一维数组的数据量大小。如图3中所示,N >n,因此\的取值为η。若多路模拟信号中存在不同频率的模拟信号,那么fsignal为多路模拟信号中频率最高的信号所对应的频率。步骤幻、模拟输出卡按周期从所述二维数组中读取数据,将所读取的数据做D/A 转换,生成波形。当所要输出的信号频率相同时,按周期将步骤1)创建的与所有信号对应的二维数组中的数据传输到所述模拟输出卡的对应通道,完成D/A转换,生成波形。此类情况在现有技术中已经解决,不是本发明所要讨论的范围,因此不在此处做详细说明。下面重点就当所要输出的信号有多个频率时,模拟输出卡如何按周期读取数据的过程进行说明。在一个实施例中,以图3为例,所要输出的模拟信号有三路,其中两路是频率信
号,另外一路是f2频率信号。按照之前的步骤,在第一个信号周期,其原始采样数据点所形成的二维数组如图3所示,该二维数组中第1、2序列为频率信号样本点数据,共η个数据;第3序列为f2频率信号样本点数据,共N个数据。在第二个信号周期,计算机将第一个信号周期的数组数据送往模拟输出卡进行D/A转换,生成波形。在传输的过程中,对于二维数组中的每一列都传输大小为η的数据量,因此如图4所示,需要将第一个信号周期中第3序列中最后N-n个数据点从第3列中取出并缓存。接着,如图5所示,再为所述二维数组补入新的数据。对于第一路、第二路信号,由于之前已经将数组I、数组II中的所有数据都读出,因此只要将新生成的数据覆盖原有数据即可。但对于第三路信号,之前缓存了最后N-n个数据点,此时需要判断N-n是否小于n,如小于则在其后补入完整的第3路信号对应的N个样本数据点,构成一个新的长度为2N-n的新序列,然后将该列新数据与频率为f\的信号的两列数据合并,组成一个新的二维数组,从该二维数组中取出前η行数据送模拟输出卡进行D/A转换。如果取出的N-n个数据数量大于或等于n,则在其后不补入N个样本点,直接将其与数组的前两列组成新的二维数组,同样的,从该二维数组中取出前η行数据送模拟输出卡进行D/A转换。第三个信号周期,保存在二维数组中的样本数据继续被传输到模拟输出卡,如图6所示,需要将图5中新的第3列的剩余的2 (N-n)数据从第3列中取出并缓存。接着继续为所述二维数组补充新的数据。如图7所示,在为第三列补充数据时,将之前从第3列中取出并缓存的剩余数据2 (N-n)的数据长度是否小于η进行判断,若小于,则在其后补入完整的第3路信号对应的N个样本数据点,构成一个新的长度为3Ν-2η的新序列,然后将该列新数据与信号的两列数据合并,组成一个新的二维数组,从该二维数组中取出前η行数据送模拟输出卡进行D/A转换。如果取出的2(Ν-η)个数据数量大于η,则在其后不补入N 个样本点,直接将其与数组的前两列组成新的二维数组,同样的,从该二维数组中取出前η 行数据送模拟输出卡进行D/A转换。在第K个信号周期,如图8所示,当样本数据被送入D/A进行转换的时候,将 k-Ι步操作中新的第3列的剩余数据k(N-n)数据从第3列中取出并缓存。接着,继续为所述二维数组补充新的数据。如图9所示,在为第三列补充数据时,判断剩余数据k(N-n)是否小于n,如小于则在其后补入完整的第3路信号对应的N个样本数据点,构成一个新的长度为KN-(k-l)n的新序列,然后将该列新数据与信号的两列数据合并,组成一个新的二维数组,从该二维数组中取出前η行数据送模拟输出卡进行D/A转换。如果取出的k(N-n) 个数据数量大于n,则在其后不补入N个样本点,直接将其与数组的前两列组成新的二维数组,同样的,从该二维数组中取出前η行数据送模拟输出卡进行D/A转换。重复进行以上数组数据的更新重构和D/A转换,可以连续不断的输出不同频率的模拟信号。在上述实施例中,对本发明方法的实现过程作了说明。虽然在上述实施例中,多路模拟信号只有两种频率值,但在其他实施例中,若存在更多种频率的输出信号,参考对频率为f2的信号的处理过程,也可实现对相应频率的模拟信号的输出。本发明的方法已成功运用到风云二号气象卫星姿控系统地面测试设备中。该设备通过单块NI公司PXI-6733模拟输出卡实现了 8路姿态激励信号的产生,其中有两路信号频率为其他6路信号频率的0. 54倍。8路输出信号精度均优于指标要求,6路同频信号间相位同步,另2路同频信号(为另6路信号频率的0. 54倍)相位同步,并且8路信号间在设备启动后初始相位同步。该设备经验收测试和专家验收评审,投入实际卫星测试一年多, 应用情况良好,输出信号完全满足风云二号卫星姿控系统测试要求。
权利要求
1.一种在同一模拟输出卡上产生多路不同频率模拟信号的方法,包括步骤1)、创建一用于保存所述模拟输出卡所要输出的多路不同频率的模拟信号的采样数据的二维数组;所述二维数组的列数表示了所述多路信号的路数,所述二维数组的每一列数据表示了对应路信号的波形,所述二维数组中每一行数据代表了同一时刻的输出电压值;步骤2)、确定所述模拟输出卡在工作时的采样频率;步骤;3)、所述模拟输出卡按采样周期从所述二维数组读取数据,并对所读取的数据做数/模转换,生成波形;其中,该步骤包括步骤3-1)、在从所述二维数组读取数据时,按照所述多路模拟信号中频率最高的信号所对应的采样周期从所述二维数组的每一列读取大小为η的数据;步骤3- 、对于所述二维数据中数据大小为N且N大于η的列,将该列中最后第Ν-η个数据取出并予以缓存;步骤3-3)、为所述二维数据补入数据;其中,对于数据大小为N且N大于η的列,当所述Ν-η的值大于或等于η,将该Ν-η个数据作为该列的新的数据,当所述Ν_η的值小于η,在所述最后第Ν-η个数据之后补入完整的N个数据,将其作为该列的新的数据;步骤3-4)、重新执行步骤3-1),直到满足终止条件。
2.根据权利要求1所述的在同一模拟输出卡上产生多路不同频率模拟信号的方法,所述的步骤1)包括步骤1-1)、根据模拟输出卡的最大采样率指标和所需生成模拟输出信号的最高频率确定二维数组中用于代表频率最高的一路输出信号的某一列的数据数量上限
全文摘要
本发明公开了一种在同一模拟输出卡上产生多路不同频率模拟信号的方法,包括创建一用于保存所述模拟输出卡所要输出的多路不同频率的模拟信号的采样数据的二维数组;确定所述模拟输出卡在工作时的采样频率;所述模拟输出卡按采样周期从所述二维数组读取数据,并对所读取的数据做数/模转换,生成波形。本发明已成功应用到卫星姿控测试设备中,实践证明该方法可靠、完备,输出的信号频率稳定、信号间相位关系严格同步,信号参数可动态调整,性能完全满足测试设备指标要求。
文档编号G06F17/00GK102495824SQ201110362379
公开日2012年6月13日 申请日期2011年11月15日 优先权日2011年11月15日
发明者梁永红 申请人:上海卫星工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1