一种频谱直方图的实时统计方法
技术领域
本发明涉及测试仪器领域,特别涉及一种频谱直方图的实时统计方法。
背景技术
获得微波瞬变信号的频谱直方图是现代实时频谱分析仪的主要功能之一,实时频谱分析仪的频谱直方图功能对于观测频谱动态变化的信号非常有用。频谱直方图的实时统计通常采用FPGA或ASIC器件,通过可编程逻辑实现。频谱直方图通常采用伪彩色编码方式的位图图像形式显示,像素可以采用(x,y,z)三维坐标表示,可以同时给出一段时间内信号不同频谱分量的幅度和幅度命中次数的三维信息,其中x表示实时频谱轨迹的频率分量,y表示该频率分量对应得信号幅度,z表示该幅度命中次数。
由于实时频谱分析仪计算FFT频谱的速度越来越高,FFT频谱数据流的速率达到了每秒几百兆的频谱数据,对实时统计FFT频谱的处理速度要求也更高。为了获得频谱直方图中的某一像素对应的命中次数,在得到某一频谱数据(x,y)时,首先需要读取其对应像素点映射的命中次数z,然后z进行加1操作,然后将z重新写入该像素对应的地址,以上操作过程需要至少3个时钟周期才能完成。
如图1所示,现有的频谱直方图实时统计装置中,第一位图缓冲区412和第二位图缓冲区413用于频谱直方图统计数据的保存,采用乒乓方式操作。实时频谱计算单元403,将连续输入的时域数据402通过傅立叶变换转换成一帧一帧的频谱数据。实时频谱计算单元403输出端口包括频谱数据430,和对应频谱数据的序号440,频谱数据和序号进入地址映射单元404,地址映射单元404将数据映射成第一位图缓冲区412和第二位图缓冲区413的某个地址,分别与地址输入端口A和地址输入端口C相连,该地址存储的数据是其命中次数。实时频谱计算单元403和地址映射单元404均工作在时钟CLK10下。第一位图缓冲区412的地址输入端口A和数据端口A在时钟信号CLK30的驱动下工作,第二位图缓冲区413的地址输入端口C和数据端口C同样在时钟信号CLK30的驱动下工作,其中时钟CLK30的速率是时钟CLK10的三倍。第一数据运算单元407将读出地址输入端口A对应的数据418经过加1运算后,重新写入到该地址中。第二数据运算单元408将读出地址输入端口C对应的数据409经过加1运算后,重新写入到该地址中。第一位图缓冲区412的数据端口B和第二位图缓冲区413的数据端口D通过另外的处理器(例如显示处理器)在时钟CLK20的控制下进行访问,将这两个位图缓冲区的频谱直方图数据读出,或者将其数据清空。
现有的技术方案存在的主要问题是:
(1)由于频谱数据是以CLK10的速率输出的,第一位图缓冲区412的数据端口A和第二位图缓冲区413的数据端口C的工作时钟CLK30要求至少是工作时钟CLK10的三倍。只有这样,每得到一个频谱数据,才可以完成对其映射地址命中次数的统计和存储。而目前FPGA器件的***工作时钟最高也只能达到550MHz左右,在CLK10的速度达到几百兆Hz时,在FPGA器件中几乎不可能完成对位图缓冲区的操作。
(2)第一位图缓冲区412和第二位图缓冲区413的端口均是可读可写的,这样对FPGA器件的资源占用率高。
(3)其他处理器(例如显示处理器)对两个位图缓冲区在时钟CLK20的控制下进行访问,通常时钟CLK20的速度要比CLK10的速度慢。当进行N帧频谱数据的统计时间内,显示处理器必须完成对位图缓冲区所有地址的读操作和清零操作,因此N的取值需要足够大,才能利用对两个位图缓冲区的乒乓操作实现频谱数据的无间断统计。
发明内容
本发明提出一种频谱直方图的实时统计方法,解决了高速频谱数据的实时统计问题。
本发明的技术方案是这样实现的:
一种频谱直方图的实时统计方法,包括以下步骤:
步骤(a),首先由第一位图缓冲区101和第二位图缓冲区102进行清零操作,将存储器空间全部置成零;
步骤(b),启动一个计数器,用于记录已经处理的频谱数据的帧数,将该计数器初值置为零;将第一位图缓冲区101的操作设置成工作状态,将第二位图缓冲区102的操作设置成空闲状态,同时启动频谱直方图统计运算,实时频谱计算单元将时域数据连续无间断的进行离散傅立叶变换,转变成连续帧的频谱数据;
步骤(c),并发执行以下操作:地址映射单元将频谱数据映射成第一位图缓冲区的地址,通过第一总线选择器4选择与第一地址总线51连接到一起,第二总线选择器131选择成第一地址总线51,通过第一延迟单元211连接到第一地址端口,第二地址端口通过第六总线选择器135选择成第一地址总线51,第二数据端口的输出通过第五总线选择器134与第一数据总线91连接,第一数据端口的输入通过第四总线选择器133与第一数据总线91连接,在时钟的控制下,依次将一帧数据写入第一位图缓冲区中;
步骤(d),等待写完一帧数据后,计数器数据加1;
步骤(e),继续等待直到计数器的计数值达到预定帧数;
步骤(f),并发执行如下操作:将第一位图缓冲区的数据通过第二数据端口输出,同时将第一位图缓冲区的数据清除,第一位图缓冲区的第二地址端口输入选择成第一地址发生器201中包含的地址累加器的输出71,第二数据端口的输出121通过第五总线选择器134与第四数据总线111连接,最终的数据输出端口15通过第十总线选择器139选择成第四数据总线111的输出;所述第一地址发生器的地址数据是从零开始,依次将第一位图缓冲区的所有数据读出,同时,第一位图缓冲区的第一地址端口的输入则选择成第一地址发生器201的输出61,第一位图缓冲区101的第一数据端口的输入则选择成第三总线141,通过对第一位图缓冲区101的第一地址端口和第一数据端口的操作实现清零操作,计数器的值置成零;
步骤(g),并发执行如下操作:在处理第一位图缓冲区101的数据的同时,控制地址映射单元3的输出映射成第二位图缓冲区102的第三地址端口,即第一总线选择器4将第二地址总线52与地址映射单元3的输出连接到一起;第三总线选择器132选择成第二地址总线52,通过第二延迟单元212连接到第二位图缓冲区102的第三地址端口,第四地址端口通过第九总线选择器138选择成第二地址总线52,第四数据端口的输出通过第八总线选择器137与第二数据总线92连接,第三数据端口的输入通过第七总线选择器136与第二数据总线92连接,在时钟的控制下,依次将一帧数据写入第二位图缓冲区102中;
步骤(h),等待写完一帧数据后,计数器数据加1;
步骤(i),继续等待直到计数器的计数值达到预定帧数;
步骤(j),并发执行如下操作:将第二位图缓冲区102的结果通过第四数据端口输出,同时将第二位图缓冲区102的数据清除,第二位图缓冲区102的第三地址端口输入选择成第二地址发生器202中地址累加器的输出72,第四数据端口的输出通过第八总线选择器137与第三数据总线112连接,最终的数据输出端口15选择成第三数据总线112的输出;第二地址发生器的地址数据是从零开始,依次将第二位图缓冲区102的所有数据读出;第二位图缓冲区102的第三地址端口的输入则选择成第二地址发生器202的输出62,第二位图缓冲区102的第三数据端口的输入则选择成第四总线142,通过对第二位图缓冲区102的第三地址端口和第四数据端口的操作实现清零操作,同时计数器的值恢复到零。
可选地,所述步骤(a)具体为:第一位图缓冲区的第一数据端口选择输入数据为零,第一地址端口选择成第一地址发生器的输出;第二位图缓冲区的第三数据端口选择输入数据为零,第三地址端口选择成第二地址发生器的输出;地址发生器产生从零开始的递增数据,在时钟的驱动下,同时完成对两个位图缓冲区的清零操作。
本发明的有益效果是:
(1)工作时钟只需要和实时频谱数据的输出速率相同即可,无需在更高的工作时钟下工作;
(2)第一位图缓冲区101和第二位图缓冲区102的操作端口无需设计成既可读又可写,减少了对FPGA器件的资源利用率;
(3)读取位图缓冲区的数据和清除位图缓冲区的数据是同时进行的,工作效率更高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有的频谱直方图实时统计装置的原理图;
图2为本发明的频谱直方图实时统计方法的原理图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种采用FPGA器件进行频谱直方图的实时统计方法,实时统计处理的工作时钟只需要和频谱数据速率相同,即可完成频谱数据的实时统计,用于解决高速频谱数据的实时统计问题。以下结合图2对本发明频谱直方图的实时统计方法作进一步详细说明。
如图2所示,本发明公开的频谱直方图的实时统计方法,第一位图缓冲区101和第二位图缓冲区102用于频谱直方图统计数据的保存,采用乒乓方式操作。实时频谱计算单元100,将连续输入的时域数据2通过傅立叶变换转换成频谱数据。实时频谱计算单元100输出端口包括频谱数据和对应频谱数据的序号,频谱数据和序号进入地址映射单元3,将数据映射成第一位图缓冲区101和第二位图缓冲区102对应的地址,每一个地址代表的是频谱直方图的位图像素,存储的数据是其命中次数,所有单元均工作在时钟CLK1下。多个总线选择器开关可以在某一工作状态下,进行地址总线和数据总线的切换。
针对图2所示的技术方案,下面给出一个具体实施例,该实施例将N帧频谱数据计算一幅频谱直方图位图,依照以下步骤进行操作:
步骤(a):在启动频谱直方图统计之前,首先由第一位图缓冲区101和第二位图缓冲区102进行清零操作,将存储器空间全部置成零。此时第一位图缓冲区101的数据端口A81选择输入数据141为零,地址端口A选择成地址发生器201的输出,第二位图缓冲区102的数据端口C82选择输入数据142为零,地址端口C选择成地址发生器202的输出,地址发生器产生从零开始的递增数据。在时钟CLK1的驱动下,同时完成对两个位图缓冲区的清零操作。
步骤(b):启动一个计数器,用于记录已经处理了多少帧的频谱数据,将该计数器初值置为零。将第一位图缓冲区101的操作设置成工作状态,将第二位图缓冲区102的操作设置成空闲状态。同时启动频谱直方图统计运算,实时频谱计算单元100将时域数据2连续无间断的进行离散傅立叶变换,转变成连续帧的频谱数据。
步骤(c):并发执行以下操作:地址映射单元3将频谱数据映射成第一位图缓冲区101的地址。通过总线选择器4选择与地址总线51连接到一起。总线选择器131选择成地址总线51,通过延迟单元211连接到地址端口A,地址端口B通过总线选择器135选择成地址总线51,数据端口B121的输出通过总线选择器134与数据总线91连接,数据端口A81的输入通过总线选择器133与数据总线91连接。在时钟CLK1的控制下,依次将一帧数据写入第一位图缓冲区101中。
步骤(d):等待写完一帧数据后,计数器数据加1。
步骤(e):继续等待直到计数器的计数值达到N。
步骤(f):并发执行如下操作:将第一位图缓冲区101的数据通过数据端口B输出,同时将第一位图缓冲区101的数据清除,第一位图缓冲区101的地址端口B输入选择成地址发生器201中包含的地址累加器的输出71,数据端口B的输出121通过总线选择器134与数据总线111连接,最终的数据输出端口15通过总线选择器139选择成数据总线111的输出。地址发生器的地址数据是从零开始,依次将第一位图缓冲区101的所有数据读出。同时,第一位图缓冲区101的地址端口A的输入则选择成地址发生器201的输出61,第一位图缓冲区101的数据端口A的输入则选择成总线141,从而通过对第一位图缓冲区101的地址端口A和数据端口A的操作实现清零操作。计数器的值置成零。
步骤(g):并发执行如下操作:在处理第一位图缓冲区101的数据的同时,控制地址映射单元3的输出映射成第二位图缓冲区102的地址端口C,即总线选择器4将地址总线52与地址映射单元3的输出连接到一起。总线选择器132选择成总线52,通过延迟单元212连接到第二位图缓冲区102地址端口C,地址端口D通过总线选择器138选择成总线52,数据端口D122的输出通过总线选择器137与数据总线92连接,数据端口C82的输入通过总线选择器136与数据总线92连接。在时钟CLK1的控制下,依次将一帧数据写入第二位图缓冲区102中。
步骤(h):等待写完一帧数据后,计数器数据加1。
步骤(i):继续等待直到计数器的计数值达到N。
步骤(j):并发执行如下操作:将第二位图缓冲区102的结果通过数据端口D输出,同时将第二位图缓冲区102的数据清除,第二位图缓冲区102的地址端口C输入选择成地址发生器202中地址累加器的输出72,数据端口D122的输出通过总线选择器137与数据总线112连接,最终的数据输出端口15选择成数据总线112的输出。地址发生器的地址数据是从零开始,依次将第二位图缓冲区102的所有数据读出。第二位图缓冲区102的地址端口C的输入则选择成地址发生器202的输出62,第二位图缓冲区102的数据端口C的输入则选择成总线142,从而通过对第二位图缓冲区102的地址端口C和数据端口D的操作实现清零操作,同时计数器的值恢复到零。
依次按照步骤(c)到步骤(i)进行操作,即可完成频谱直方图的实时统计。
本发明频谱直方图实时统计方法的优点是:(1)工作时钟只需要和实时频谱数据的输出速率相同即可,无需在更高的工作时钟下工作;(2)第一位图缓冲区101和第二位图缓冲区102的操作端口无需设计成既可读又可写,减少了对FPGA器件的资源利用率;(3)读取位图缓冲区的数据和清除位图缓冲区的数据是同时进行的,工作效率更高。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。