1.一种基于ZYNQ的侧扫声纳信号处理方法,其特征在于,所述方法包括以下步骤:
1)在PL端利用FIFO存储器、自定义DMA读取数据模块、EMIO以及AXI_HP接口等逻辑单元搭建读取PS端外部DDR3共享内存里的AD原始采集数据的通路;
2)在PL端利用FPGA独有的并行计算的优势,利用IP核实现数字正交解调、低通滤波降采样、匹配滤波处理;
3)在PL端利用FIFO存储器、自定义DMA存储数据模块、PL-PS中断以及AXI_HP接口逻辑单元搭建存储到PS端外部DDR3共享内存里的信号处理算法结果的通路。
2.如权利要求1所述的一种基于ZYNQ的侧扫声纳信号处理方法,其特征在于,所述步骤
1)中,AD原始采集数据的传输通道包括可编程逻辑单元PL与处理系统PS两部分,处理系统PS需要移植Linux系统,通过千兆网口接收带宽为230.4Mbps的AD原始采集数据,并且分别将左右两通道原始数据存储到相应的DDR3共享内存空间中;可编程逻辑单元包括FIFO存储器,自定义DMA数据读取模块、2位EMIO、AXI_HP0通道、AXI_HP1通道以及AXI互联结构,包括以下过程:首先,当PS端将AD采集原始数据存储到外部DDR3共享内存空间中后,通过2位的EMIO发送上升沿触发信号给PL端,PL端根据触发信号开始获取DDR3共享内存中的数据x1(i,n),左通道原始数据存储空间的基地址是0x10000000,右通道原始数据存储空间的基地址是
0x14000000;
为了避免AXI4总线协议中读取数据的BURST传输之间的空隙而造成读空数据,采用FIFO储存器解决跨时钟域传输问题,以左通道为例,首先设置FIFO的写数据和读数据的宽度都为32位,写数据和读数据的深度都为1024个,可编程空标志prog_empty阈值设置为200个数据,当触发读数据信号有效以及FIFO中的数据个数小于可编程空标志阈值的时候,进行一次读数据操作也就是BURST一次,直到读取到最后的地址结束读外部DDR数据操作,读取右通道AD采集原始数据步骤同上。
3.如权利要求1或2所述的一种基于ZYNQ的侧扫声纳信号处理方法,其特征在于,所述步骤2)中,利用Block RAM、FIR、Multiplier、CORDIC实现数字正交解调、低通滤波降采样、匹配滤波器处理过程,步骤如下:
2.1)数字正交解调
取出FIFO存储器中缓存的AD原始采集数据x1(i,n),因为选用的是24位AD芯片,所以要截取FIFO存储器缓存数据的低24位作为x1(i,n),i=1表示左通道数据,i=2表示右通道数据,n为0、1、2……时间序列,正弦余弦函数为周期函数,做正交基带调制处理,公式表达式如下:x2(i,n)=x1(i,n)×cos(-πn/2)+jx1(i,n)×sin(-πn/2) (1)实部信号x2re(i,n)为AD原始采集数据和1、0、-1、0循环相乘的结果,虚部信号x2im(i,n)为AD原始采集数据和0、-1、0、1循环相乘的结果,变为复数形式,得到混频信号;
2.2)低通滤波降采样
每一路AD原始采集数据信号经过数字正交解调之后都可分出一路实部信号和一路虚部信号,FIR数字低通滤波器IP核需要对2路实部信号和2路虚部信号进行同时滤波,滤波之后得到24位的实部信号x3re(i,n)和虚部信号x3im(i,n);
降采样的实现过程是将滤波之后出来的数据每10个提取一个,则降采样之后的信号如下式所示:
x4(i,n)=x3(i,n×10) (2)
2.3)匹配滤波处理
按照匹配滤波理论,首先根据发射信号形式产生匹配滤波系数y4(i,n),包含实部系数y4re(i,n)和虚部系数y4im(i,n),然后利用4个FIR IP核、2个乘法器IP核、CORDIC IP核实现卷积相乘,公式如下:
4.如权利要求1或2所述的一种基于ZYNQ的侧扫声纳信号处理方法,其特征在于,所述步骤3)中,原始数据处理结果的传输通道包括可编程逻辑单元PL与处理系统PS两部分,处理系统PS需要移植Linux系统,将左右两通道处理结果从外部DDR3共享内存空间中读取出来,通过千兆网口上传到PC机上进行实时成像,所述可编程逻辑单元包括FIFO存储器,自定义DMA数据存储模块、2个PL-PS中断、AXI_HP2通道、AXI_HP3通道以及AXI互联结构,包括以下过程:首先,当PL端处理完两路数据之后,将原始数据处理结果x7(i,n)分别存储到外部DDR3响应的共享内存空间中后,通过2个PL-PS中断发送上升沿中断信号给PS端,PS端根据中断信号开始获取共享DDR3内存中的数据,左通道处理结果存储空间的基地址是0x18000000,右通道处理结果存储空间的基地址是0x1C000000;
因为算法处理结果是流水线型,而AXI4总线存储数据需要有BURST传输间隙,所以采用FIFO储存器解决跨时钟域传输问题,首先FIFO的写数据和读数据的宽度都为32位,写数据和读数据的深度都为1024个,可编程满标志prog_full阈值设置为266个数据,当FIFO中的数据等于阈值的时候,进行一次写数据操作也就是BURST传输一次,直到写到最后的地址结束写外部DDR数据操作,存储右通道原始数据处理结果步骤同上。