基于FPGA的频谱分析仪功率触发模块设计

2010-06-20 05:34刘健秦开宇阎啸
电子测试 2010年8期
关键词:开方乘法器延时

刘健,秦开宇,阎啸

(电子科技大学空天科学技术研究院,成都 610054)

0 引言

本文介绍了一种基于Xilinx FPGA 的功率触发技术的算法实现,此设计可在无缝采集的同时进行数字下变频(DDC),并将数据送入内存存储。在功率触发模块中计算数字下变频后的I,Q两路信号的功率,可以设置成每隔滤波的I/Q样点与用户设置的功率值进行比较触发,也可以设置成在整个跨度上包含的总功率超过预设触发功率电平时触发。触发时将内存中对应数据送出显示。

1 功率触发总体设计方案

触发系统在模数转换之后,首先对数字信号进行数字下变频(DDC),功率触发在数字下变频模块后,计算滤波和采样后的信号功率。每个滤波的I/Q样点对的功率,与用户选择的功率设置门限进行比较。设置使用dB表示,而对数屏幕上显示的则是全标(dBfs)。0 dBfs 设置把触发电平放在顶部格线上,在跨度中包含的总功率超过该触发门限时,将生成触发。在跨度中的总功率达到比顶部格线低10 dB 的电平时,-10 dBfs 的设置将触发采集。

功率触发模块的框图1所示。

图1 功率触发模块结构框图

如图所示,功率触发单元首先根据数字下变频器输出的两路基带正交信号I、Q计算信号功率,然后将计算出的功率值与用户设置的阈值比较产生触发信号。由一个功率检波器和一个比较器构成。

2 功率触发模块的存储器管理

功率触发将数字下变频变换后的数据分两路处理,一路数据实时无缝捕捉到内存MT8HTF6464HY-667D3 ,另外一路数据送入功率触发判决模块计算其功率,然后与用户设置的功率触发门限做比较,触发条件一旦满足立刻寄存满足触发条件的内存地址,然后根据触发地址控制帧给出的功率触发前读取帧数和功率触发后读取帧数可以计算出功率触发的首地址和末地址,当内存写入地址为功率触发的末地址时,数据写入DDR2 SDRAM过程停止,并冻结触发段的数据。内存由写状态切换到读状态,首先加载初始读地址,然后按帧读取并将数据传入后级进行FFT变换。数据写入和读取过程和普通实时频谱分析模式类似,数据读取完毕后,需要判决触发类型,如果触发类型是连续触发则将功率判决模块的数据清零,完成后再次进入内存写入和判决阶段进行下一次功率触发,如果触发类型是单次触发则在读取完全后进入等待状态,准备接收下一个控制帧命令进行操作。

2.1 触发存储器工作原理

MT8HTF6464HY-667D3内存容量为512MB,一共可存储 个样点,从形式上说,内存此时工作原理类似于FIFO,工作原理图如图2所示:

图2 触发存储器系统工作原理

存储器实时捕获样点数据,新样点连续输送到内存中,最老的样点将离开内存。从操作上讲,数据按照地址由低到高的顺序依次写入,DDR2 SDRAM写满时,则从最低地址开始覆盖以前写入的数据。触发到达时,触发控制器记录下触发条件满足时的帧地址,然后根据控制帧发出的触发前读取帧数和触发后读取帧数计算出需要读取的N帧的内存地址,当最后一个帧读取完毕时,存储器停止采集数据,并将N帧frame地址和数据冻结,这样便可以支持在触发前发生的事件及在捕获后出现的事件。

2.2 功率触发地址管理特例

触发时由于触发发生的随机性,使得地址控制需要更为灵活,需要对以下三种特例进行处理。

◆数据开始采集立即触发

这种情况很常见,比如信号本身功率较大,而触发门限设置较低,使得信号刚进入触发判决模块时,触发就已经生成,但是由于触发发生太快 ,触发前数据采集量不足,无法满足功率触发前读取帧数的条件。

解决方案:读取所有触发前的帧(所读帧数小于功率触发前读取帧的条件), 功率触发后读取帧的条件读取帧数不变;

◆触发地址接近DDR2 SDRAM地址末尾

当触发生成时,DDR2 SDRAM即将写满,此时触发地址接近DDR2 SDRAM末地址,按照正常计算方式会生成地址溢出,无法满足功率触发后读取帧的条件。

解决方案:首先需要计算出DDR2 SDRAM写满后,还需要从DDR2 SDRAM初始地址开始写入以满足功率触发后读取帧的条件的帧数,并据此计算出DDR2 SDRAM本次功率触发写入的末地址,在本次触发需要捕获的数据采集完成后进入读状态。读取时从本次功率触发初始读取地址开始依次读取内存数据,一直到DDR2 SDRAM的末尾地址,即第8层,第213行,第210-4列,然后从最低地址开始读取数据,一直到开始计算出的本次功率触发末地址。

◆DDR2 SDRAM写满后,在初始地址附近触发

当DDR2 SDRAM数据写满后,按照系统设计要求,需要从内存的初始地址开始重新写入数据,如果在内存的初始地址附近触发,根据计算将不满足功率触发前读取帧数条件。

解决方案:首先计算出需要在DDR2 SDRAM末尾地址读取的帧数,由此计算出本次功率触发读取的初始地址。读取时从本次功率触发初始读取地址开始依次读取内存数据,一直到DDR2 SDRAM的末尾地址,然后从DDR2 SDRAM的初始地址开始继续读取数据直到本次功率触发的末地址。

3 功率触发判决模块设计

在功率触发判决模块中需要使用Multiplier v9.0、Adder、Cordic square_root三种类型的CORE,分别实现乘法,加法,和开方运算。判决流程如图3所示。

图3 功率触发判决流程图

首先将经过数字下变频变换的正交I/Q数据送入乘法器CORE做平方,然后把平方送入加法器CORE完成加运算,这样可以得到信号功率值,最后在考虑触发门限精度要求、定标难度以及系统误差等问题后,将功率值送入开方CORE做开方处理后再进行判决。

3.1 几种IP CORE的介绍与仿真

◆Multiplier v9.0 CORE

功率触发判决模块中,采用Multiplier v9.0 CORE的并联乘法器模式。该CORE的信号列表如表1所示。Clk为系统输入时钟,上升沿有效;ce为时钟锁定信号,高有效,仅在ce为高时,功率触发判决模块的乘法器才工作;sclr为乘法器的异步复位信号,高有效,用于系统初始化和连续功率触发模式下用于重置乘法器时使用;在系统设计中需要使用两个Multiplier v9.0 CORE,其中1个Multiplier v9.0 CORE的A,B两路输入总线均设置为有符号数, P是输出总线,在延时一定时间后输出。

表1 Multiplier v9.0接口定义图

这个延时时间对功率触发设计很重要,因为I,Q信号同时写入内存和判决模块,而写入内存时的地址立即被寄存,而功率触发判决模块需要乘法、加法、开方以及最后比较4次操作,中间肯定会产生固定的延时。在触发生成时,当时写入内存的地址和触发数据的地址肯定不同,为了保证读取的触发数据的准确性,需要计算出功率触发判决延时,然后对寄存内存写入地址也做相应的延时,触发生成时直接提取经过延时的内存地址,此时触发时写入内存的地址和触发数据便可完整对应。

Multiplier v9.0 CORE为达到最佳性能,采用5级流水线设置,经过计算数据进入Multiplier v9.0 CORE到结果输出的延时为5周期,图4触发模块的乘法器仿真图,为方便验证,仿真数据将I,Q数据设置为固定累加数据,由图4可知延时为5周期,证明计算延时正确,同时数据计算也完全正确。

◆Adder CORE

功率触发判决模块中,采用Adder Subtracter CORE的Adder模式以达到最小延时,该CORE的接口定义如表2所示。

图4 乘法器仿真图

表2 Adder接口定义表

Clk和ce的功能与Multiplier v9.0功能完全一致;A输入总线与用于计算I2的Multiplier v9.0输出P[47:0]相连;B输入总线与用于计算Q2的Multiplier v9.0输出P[47:0]相连;Q输出总线用于表征I2+ Q2。

Adder在设计中将其延时设置为1,仿真验证图如图5所示。

图5 Adder仿真图

由图可知,信号经过Adder CORE计算后,延时为1个周期,同时也验证了计算结果正确性。

◆Cordic Square CORE

在功率触发判决模块中不可避免地牵涉到开方运算。但是FPGA上直接实现开方运算是很困难的,所以这里采用了ISE里集成的CORDIC Core.

CORDIC(The Coordinate Rotational Digital Computer)算法是一种循环迭代算法,其基本思想是用一系列与运算基数相关角度的不断偏摆从而逼近所需旋转的角度。从广义上讲它是一个数值性计算逼近的方法,由于这些固定的角度与计算基数有关,运算只有移位和加减。可用该算法来计算的函数包括乘、除、平方根、正弦、余弦正切、向量旋转(即复数乘法)以及指数运算等。CORDIC的基本原理如图6。

将上面的迭代方程中的比例常数去掉, 即得到了矢量旋转的“移位-加法算法”。 Ki可看作是系统增益的一部分。当迭代次数趋向无穷大时, Ki大约为0.6073。因此,在矢量旋转迭代算法中存在一个增益 An,大约为1.647。精确的增益值 An由迭代次数决定,可根据下式求出。

由于每次旋转角度都要累加,在CORDIC算法中再加入一个差分方程:

显然,当矢量旋转计算完成时,Z应该趋近于0。

该CORE的信号列表如表3所示。

表3 Cordic 接口定义表

开方操作的延时为14个周期,仿真图如图7所示。

图7 Cordic Square仿真图

3.2 功率触发判决状态机及仿真结果

功率触发判决状态机设计如下:

系统完成复位后进入状态0;

◆状态0:触发有效信号清0,功率触发初始地址为0,功率触发末尾地址为内存地址最大值27'h7fffbfc,进入状态1;

◆状态2:根据触发条件满足时的内存写入地址和功率触发帧送入的功率触发前读取帧数和功率触发后读取帧数计算出此次功率触发需要读取内存初始读地址和末尾读地址,进入状态3;

◆状态5:等待内存写入地址为功率触发末地址,此时内存已经采集完毕,触发状态生成,功率触发判决停止,内存由写状态切换到读状态。

以上功率触发判决状态机用流程图表示如图8。

图8 功率触发判决流程图

数据经过平方,加法,开方3种运算后一共延时5+1+14=20个周期,因此在要讲寄存的数据写入地址也延时20个周期以保证触发数据和写入内存的地址完整对应。

从仿真结果可以看出,触发时地址锁定,触发完成信号发出,完成了触发功能。

未触发时的仿真结果如下:

图9 未触发时的仿真结果图

触发时的仿真结果如下:

图10 触发时的仿真结果图

4 结束语

本文介绍的功率触发模块的理论,及其存储器控制设计、判决单元的实现,在工程实践中都证明是有效可行的,能够有效捕捉功率触发信号。这对实时频谱分析具有重要意义,对其他类似的实时系统设计与实现也具有参考意义。

[1]Duhamel P. Algorithms meeting the lower bounds on the multiplicative complexity of length 2DFTs and their connection with practical algorithms [J].IEEE Trans.on ASSP,1990,38 (9): 1504-1511.

[2]孙航.Xilinx可编程逻辑器件的高级应用与设计技巧[M].北京:电子工业出版社,2004.

[3]Leon W. Couch, Ⅱ. Digital and Analog Communication System Sixth Edition. Prentice Hall,2001.

[4]任苙萍. RF发展激化“实时频谱分析仪”的成长—信号触发、捕获、分析 泰克RTSA一手搞定[J]. 电子与电脑, 2006(03).

[5]班万荣. 频谱分析仪的原理和发展[J]. 现代电子技术, 2005(07).

[6]张万英. 新型的RSA实时频谱分析仪[J]. 电气时代,2004(01).

[7]实时频谱分析仪RSA3300A 系列.Tektronix Ltd.

[8]Fundamentals of Real-Time Spectrum Analysis.Tektronix Inc.

猜你喜欢
开方乘法器延时
一种低开销的近似乘法器设计
数字监管 既能“看病”也能“开方”
基于级联步进延时的顺序等效采样方法及实现
日光灯断电关闭及自动延时开关设计
学习开方『四注意』
基于FPGA的流水线单精度浮点数乘法器设计*
Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
为公立医院“虚胖”把脉开方
专家开方:传统产业创新互动做强做大
桑塔纳车发动机延时熄火