多波束声呐接收机与信号处理算法【附程序】
✨ 长期致力于多通道声呐接收机、电路设计、FPGA、数字信号处理、波束形成研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1小型化96通道接收机硬件电路设计针对无人潜航器对声呐系统尺寸和功耗的严苛要求设计了一种24通道接收机模块四模块堆叠构成96通道整体尺寸145mmx140mmx80mm。每个通道采用低噪声放大器LNA增益20dB噪声系数1.2dB型号ADL5523后接抗混叠滤波器截止频率150kHz四阶巴特沃斯。模数转换选用16位ADCAD9656采样率500kSPS。电源部分采用DC-DC加LDO两级转换输出5V、-5V和3.3V总功耗21W。在Multisim中进行仿真验证了LNA的输入1dB压缩点-15dBmIIP3为8dBm。PCB设计采用层叠结构顶层射频信号第二层地第三层电源底层控制线。使用AD21完成布局布线关键差分线等长控制在5mil以内。实际测试表明相邻通道串扰低于-75dB动态范围达到85dB。2近场聚焦波束形成与匹配滤波预处理算法在FPGAXilinx Zynq-7030上实现实时信号预处理。接收的96通道数据首先经过匹配滤波匹配滤波器系数为发射线性调频信号中心频率100kHz带宽50kHz脉宽10ms的复共轭。匹配滤波采用频域快速卷积法每4096点FFT块进行重叠50%。然后进行近场聚焦波束形成根据换能器阵列几何半圆阵半径0.2m72个阵元和探测量程最大200m计算每个波束的延时参数。采用分数延时滤波器实现亚采样精度动态计算各通道的聚焦时延存储于查找表。波束形成输出256个波束使用CORDIC计算幅度和相位。在Modelsim中仿真处理64通道数据时匹配滤波模块吞吐量达到250Mbps波束形成运算延迟0.8ms。3系统集成与湖试性能评估将四块接收机板与FPGA背板集成安装于直径200mm的耐压舱内。在千岛湖进行湖试发射频率100kHz接收采集深度20m。实测波束形成后的测深精度在20m深度处距离分辨力达到3cm角度分辨力1.8度。提取的256个波束数据经网口上传至上位机实时成像帧率15Hz。对比未使用近场聚焦的传统延时求和波束形成方法本系统的旁瓣抑制提高12dB探测范围扩大30%。功耗实测最高22W待机15W满足无人潜航器供电约束。可靠性测试连续工作72小时通道增益漂移小于0.2dB。数据通过水密连接器传输误码率低于10^-8。系统还提供了自检功能可对每个通道注入测试信号快速定位故障。import numpy as np import scipy.signal as sig def lfm_match_filter(signal, fs, fc100e3, bw50e3, t_pulse10e-3): t np.arange(0, t_pulse, 1/fs) lfm np.exp(1j*2*np.pi*(fc - bw/2)*t 1j*np.pi*(bw/t_pulse)*t**2) matched_coeff np.conj(lfm[::-1]) filtered sig.fftconvolve(signal, matched_coeff, modesame) return filtered def nearfield_beamforming(channel_data, steering_angles, array_positions, r_focus, fs): # channel_data: (Nch, Nsamp) Nch, Nsamp channel_data.shape N_angles len(steering_angles) beam_output np.zeros((N_angles, Nsamp), dtypecomplex) c 1500 # 声速 m/s for i_ang, theta in enumerate(steering_angles): delays np.zeros(Nch) for i_ch, pos in enumerate(array_positions): # 近场聚焦时延: 参考点(0,0) 到阵元距离差 d_ref r_focus d_ch np.sqrt( (r_focus*np.cos(theta) - pos[0])**2 (r_focus*np.sin(theta) - pos[1])**2 ) delays[i_ch] (d_ch - d_ref) / c delay_samples delays * fs frac_delay delay_samples - np.floor(delay_samples) # 简单分数延迟线性插值 output np.zeros(Nsamp, dtypecomplex) for i_ch in range(Nch): int_delay int(np.floor(delay_samples[i_ch])) frac frac_delay[i_ch] if int_delay Nsamp-1: ch_shifted (1-frac)*channel_data[i_ch, int_delay:-1] frac*channel_data[i_ch, int_delay1:] else: ch_shifted channel_data[i_ch, -1] * np.ones(Nsamp - int_delay -1) output[:len(ch_shifted)] ch_shifted beam_output[i_ang, :len(output)] output return beam_output def pcb_trace_impedance(width, h, er4.5, t_oz0.035): # 微带线特性阻抗估算 import math w, h_ width, h e_eff (er1)/2 (er-1)/2 * (112*h_/w)**(-0.5) Zo 87 / math.sqrt(e_eff1.41) * math.log(5.98*h_/(0.8*wt_oz)) return Zo if __name__ __main__: fs_sim 500e3 t np.arange(0, 0.02, 1/fs_sim) test_signal np.random.randn(len(t)) filtered lfm_match_filter(test_signal, fs_sim) print(f匹配滤波后峰值: {np.max(np.abs(filtered)):.3f}) # 模拟阵列位置半圆阵 array_pos [(0.2*np.cos(ang), 0.2*np.sin(ang)) for ang in np.linspace(-np.pi/2, np.pi/2, 96)] test_data np.random.randn(96, 1000) 1j*np.random.randn(96,1000) beams nearfield_beamforming(test_data, np.linspace(-60,60,256)*np.pi/180, array_pos, 50, fs_sim) print(f波束形成输出尺寸: {beams.shape}) Z0 pcb_trace_impedance(0.3, 0.8, er4.5, t_oz0.035) print(f微带线特性阻抗: {Z0:.1f} Ohm)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2609291.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!