你的位置:论文发表 >> 论文下载 >> 计算机论文 >> 计算机应用 >> 详细内容 在线投稿

基于LabViEW FPGA 的正弦脉冲信号检测

浏览154次 时间:2015年1月26日 16:26

高 明 中船重工七五试验场 云南昆明 650106

【文章摘要】

本文介绍了一种基于LabViEW FPGA 的正弦脉冲信号的检测方法。这种方法是在FPGA 中进行自功率谱的计算,然后确定信号的频率和幅值, 判断出信号是否符合要求,最后将满足要求的信号上传至上位机。该种方法可以在实际中完成对于正弦脉冲信号的检测。

【关键词】

LabVIEW FPGA ;正弦脉冲信号

正弦脉冲信号在实际工程当中有着非常广泛的应用,比如,飞机和舰船的黑匣子上就装有这种信标。本文中待检测的信号是周期为一秒,脉冲宽度为10 毫秒,频率42kHz 的正弦脉冲信号。目的是需要将信号的正弦部分检测到并提取出来,送到上位机,留作后续计算处理。理论上要求的采样率为大于84kS/s,但是为了满足未来可能的更高频率正弦脉冲信号的检测要求,将采样率定在500kS/s。因为需要对采集到的信号数据做实时FFT,所以运算量会非常大。于是,我们选择基于LabVIEW FPGA 的方式进行采集和处理。

FPGA 可以进行真正意义上并行运算,而且,由于是基于硬件,所以运算速率非常高,非常适合用于底层的数据检测采集。LabVIEW 是图形化编程语言,自带函数丰富。采用LabViEW FPGA 的方式可以在底层通过硬件完成大量的数据运算,只将运算结果和有效信号数据传递到上位机,从而节省上位机的CPU 时间和数据传输的带宽。

1 系统原理

系统首先对采集到的信号每2048 个点进行鉴频和鉴幅,若鉴频鉴幅未通过,则将这未通过的2048 个点的数据缓存到存储器1 中,并覆盖原有数据;若通过,则将通过的2048 个点的数据缓存到存储器2 中,同时,将后续采集到的4096 个点分别缓存到存储器3 和存储器4 中。这样,就会缓存下来一共8192 个点,也就是16ms 的数据,大于有效数据长度10ms。最后,要将这16ms 的数据传到上位机。

2 鉴频和鉴幅检测

鉴频和鉴幅检测是本系统最为重要也是运算量最大的工作。对数据的鉴频和鉴幅检测方式是求取数据的自功率谱,然后判断自功率谱的最大值是否达到门限要求(鉴幅);同时要判断最大值出现的频率点是否在42kHz 处(鉴频)。在实际工程中运用这种方法的前提是信号有良好的滤波或者是假设噪声幅值不大于信号幅值。

自功率谱的计算方法是先对采集到的数据做FFT,然后将计算所得的实部和虚部求平方和。计算FFT 是利用LabVIEW 自带的FFT 计算VI (函数)。这个VI 计算的是逐点FFT,所以首先要设定FFT 的长度,如前所述,设长度为2048。当收到2048 个点的数据以后,FFT 计算VI 会算出FFT 的值,并把结果逐点输出,这时,再使用LabVIEW 的高吞吐率数学VI FFT 的结果逐点求平方和,即可得到自功率谱。

由于计算所得的自功率谱是对称的, 也就是说数据的后半部分实际上对于整个鉴频鉴幅检测是没有意义的。为了节省运算时间,当自功率谱输出前1024 个点的数据时,将这1024 个点的数据缓存到一个存储器当中去;当自功率谱输出后1024 个点的数据时,将前1024 个点的数据通过一个FIFO 输出到鉴频鉴幅函数中, 完成对数据的鉴频鉴幅。

鉴频鉴幅函数实际上是通过一个while 循环嵌套if 循环完成的(图1),原理类似于冒泡法排序。While 循环每次向if 循环送一个点的自功率谱值和这个值对应的序号,if 循环判断选取这个值与上一个值中较大的一个,然后将这个较大的值和对应的序号分别保存到两个功能全局变量中。当1024 个点的数据都送027

实验研究

Experimental Research

电子制作

到这个函数以后,就能确定最大值与其对应的序号了,这时再判断幅值是否达到门限,就可以完成鉴幅。鉴频检测比鉴幅稍微麻烦,因为程序记录的是频率点,而不是频率值,频率点转换成频率值的公式如下,频率值是42k,采样率是500k,采样点是2048。计算后判断频率点是否对应在42kHz,也就完成了鉴频检测。

频率值 = 频率点× 采样率/采样点数﹚


3 并行性的利用与代价

整个系统实际上是以流水的方式在并行工作,每个循环(线程)只完成相对少量的检测计算工作,然后将数据传递到下一个循环(线程)当中,本循环(线程)继续进行原来的工作;收到数据的循环(线程)同时也会得到上一个循环(线程)传递的标志位,然后开始自己的工作,而工作结束后,同样将处理后的数据和一个标志位传递到下一个循环(线程),最后关闭得到的标志位。这样,在任意一个时间点,可能有很多个循环(线程)在工作,但是从硬件的角度来看,它们各自占用自己的资源,互不干涉,从而实现了真正意义上的并行工作(图2)。

流水式运行的好处就是可以最大可能的提高系统的工作速率。系统实际上是把整个检测采集的任务分成了几个模块,各个模块间通过FIFO 进行数据交流,把原本串行的工作变成了并行。但是,这样付出的代价就是片上资源的占用。各个循环之间是通过FIFO 来传递数据的,而FIFO 本身占用很大的片上资源。除此以外,循环与循环间的逻辑自锁与互锁也会加大资源的开销。另外,编程的难度也大大增加,多进程本身就是编程的难点,而且编译时间增长,这都是提高系统工作速率带来的影响。这就需要设计人员在设计这个片上系统之前就系统有一个整体的考虑。

4 结论

本系统实现了对正弦脉冲信号的检测采集,通过水中实际测试,可以完成信号的检测,采集到要求的波形(图3)。

【参考文献】

软奇桢. 我和LabVIEW :一个NI 工程师的十年编程经验[M]. 北京: 北京航空航天大学出版社,2012.

1 鉴频鉴幅函数

2 系统流水工作原理

3 采集到的信号028

TAG: 检测
上一篇 下一篇

论文发表与咨询

论文发表 写作指导 职称论文 毕业论文 客服联系方式:
投稿信箱:lunww@126.com
在线咨询客服QQ:站点合作85782530
在线咨询客服QQ:站点合作82534308
联系电话:18262951856
点击进入支付宝支付(支付宝认可网络诚信商家)
点击进入财付通支付(财付通认可网络诚信商家)
点击进入支付方式---->>>>

论文发表 诚信说明

论文发表 论文投稿 热点图片