掌桥专利:专业的专利平台
掌桥专利
首页

一种提升FPGA超声全聚焦帧率的方法

文献发布时间:2024-04-18 20:01:30


一种提升FPGA超声全聚焦帧率的方法

技术领域

本发明涉及超声波全聚焦技术领域,特别是一种提升FPGA超声全聚焦帧率的方法。

背景技术

超声波相控阵检测技术是工业无损检测领域的一种常用方法,相控阵技术具有快速、准确和适应性强等优点,在实际的超声检测中应用广泛。由于超声相控阵只能进行单点的实时聚焦,成像分辨率和准确度有限,近年来逐步被超声全聚焦技术所取代,超声全聚焦技术是一种高级的超声波成像技术,通过采集被测区域内任意点的全矩阵回波数据并进行虚拟聚焦,能够克服相控阵技术的缺点。

超声全聚焦产生一幅图像需要多个激发周期,每次一个阵元发射多个阵元同时接收,并对多个阵元接收的数据进行聚焦运算获得一幅灰度图像,最后输出的结果是多个激发周期获得的灰度图像的叠加。现有技术一般是通过两种方式实现全聚焦的计算,一种是将所有激发周期接收的全部数据上传到上位机,通过上位机的GPU运算。一种是在FPGA进行实时计算。

由于超声全聚焦数据量大,计算过程时间长,成像帧率较低,本公司专利《一种基于FPGA实现的高帧率超声全聚焦成》(公布号CN110927254A)提出了一种FPGA全聚焦的实现方法,并通过并行方式实现了帧率的提升,但是当聚焦孔径增大到一定程度后,存储声程数据的存储器的读写带宽会限制全聚焦成像的帧率。

全聚焦计算过程中的声程数据采用预存在存储器的方式,由于声程数据量大,一般采用外部DDR存储器进行存储,将每个点到探头阵元的单向声程数据按顺序进行存储。当一个阵元发射完,多个阵元接收到超声数据后,FPGA按顺序从DDR读取声程数据,计算每个聚焦像素点的灰度值,所有像素点的灰度值计算完得到这个激发周期的灰度图片。

假设FPGA挂4片DDR3存储器,每片DDR3存储器位宽16位,运行在800M/s的时钟,那么其读写带宽是16×4×800×2Mbit/s=102400Mbit/s,FPGA按200M/s的时钟频率工作,那么每个时钟周期可以读取102400÷200=512bit宽度的声程数据。假设每个单向声程数据是16bit存储的,那么FPGA一个时钟周期能读取的单向声程数据个数是512÷16=32个,也就是对于聚焦孔径是32的时候通过流水线可以一个时钟周期计算一个点的灰度值,但是当全聚焦的聚焦孔径增大后,例如64孔径,一个点的计算需要64×16=1024bit的声程数据,FPGA需要1024÷512=2个时钟周期从存储器读取声程数据,通过流水线处理要两个时钟周期才能完成一个点的灰度值计算,所以在聚焦孔径64的时候,相对于32孔径,除了激发周期变大一倍(需要激发64次)导致的帧率下降一倍外还存在存储器带宽的制约导致帧率再下降一倍。当聚焦孔径为128的时候,一个点的计算需要128×16=2048bit的声程数据,FPGA需要2048÷512=4个时钟周期从存储器读取声程数据,通过流水线处理要4个时钟周期才能完成一个点的灰度值计算,相对于32孔径,除了激发周期变大4倍导致的帧率下降4倍外还存在存储器带宽的制约导致帧率再下降4倍。可以看到随着孔径的增大,全聚焦的成像帧率平方倍的下降。

发明内容

有鉴于此,本发明的目的在于提供一种提升FPGA超声全聚焦帧率的方法,该方法利用声程数据加上声程数据差值存储提高了超声全聚焦帧率。

为达到上述目的,本发明提供如下技术方案:

本发明提供的提升FPGA超声全聚焦帧率的方法,包括以下步骤:

获取阵元的声程数据;

计算阵元间的声程数据差值;

根据存储器件的时钟周期内计算能力设置存储声程数据差值的个数;

所述声程数据存储:依次循环间隔存储阵元的声程数据和若干个连续声程数据差值。

进一步,所述存储器件的时钟周期内计算能力为n时,设置存储声程数据差值的个数n-1,具体如下:

所述声程数据存储:依次循环间隔存储阵元的声程数据和n个连续声程数据差值;具体表示为[t1][Δt2]…[Δtn];

其中,t1表示第1个声程数据;Δt2表示第2个声程数据和第1个声程数据的声程数据差值;Δtn表示第n个声程数据和第n-1个声程数据的声程数据差值。

进一步,所述存储器件的时钟周期内计算能力为n时,设置存储声程数据差值的个数2(n-1),具体如下:

所述声程数据存储:依次循环间隔存储阵元的声程数据和n个连续声程数据差值;具体表示为[t1][Δt2]…[Δtn][Δtn+1][Δtn+2]…[Δt2n-1][t2n];

其中,t1表示第1个声程数据;Δt2表示第2个声程数据和第1个声程数据的声程数据差值;Δtn表示第n个声程数据和第n-1个声程数据的声程数据差值;t2n表示第2n个声程数据。

进一步,所述时钟周期内计算能力采用在时钟周期内连续加减法的次数n。

进一步,所述声程数据读取:读取声程数据和声程数据差值,通过预设的运算得到所有声程数据。

进一步,所述声程数据读取后通过将第一个声程数据加上声程数据差值可得到对应的单向声程数据。

进一步,当声程数据的数量经过计算后得到的余数小于n-1时,最后的阵元的声程数据采用完整声程数据。

进一步,所述声程数据差值的存储位宽通过阵元间隔的声程数据计算得到单位声程数据的数量,再根据单位声程数据的数量的二进制值确定存储位宽。

进一步,所述声程数据读取按照以下方式进行:声程数据的一半通过前一个完整声程用加法获得,另一半通过后一个完整声程用减法获得。

本发明的有益效果在于:

本发明提供的提升FPGA超声全聚焦帧率的方法,该方法首先获取阵元的声程数据;然后计算阵元间的声程数据差值;最后根据存储器件的时钟周期内计算能力n设置存储声程数据差值的个数n-1;依次循环间隔存储阵元的声程数据和n个连续声程数据差值;具体表示为[t1][Δt2]…[Δtn][tn+1][Δtn+2]…[Δt2n];其中,t1表示第1个声程数据;Δt2表示第2个声程数据和第1个声程数据的声程数据差值;Δtn表示第n个声程数据和第n-1个声程数据的声程数据差值;该方法提供了一种声程数据的存储方式,可以极大缓解大孔径下,超声全聚焦高帧率对DDR带宽提出的需求。在大孔或外部存储器DDR带宽较小的情况下可以有效低提升超声全聚焦的帧率。解决了DDR读写带宽对FPGA超声全聚焦的制约,在有限的DDR读写带宽内,单个FPGA时钟获取更多的单向声程数据,从而提升大孔径下全聚焦的帧率。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。

附图说明

为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:

图1为提升超声全聚焦帧率的方法流程图。

图2为超声全聚焦阵元分布示意图。

图3为128位声程数据(128阵元的)存储数据结构示意图。

图4为声程数据和声程数据差值间隔循环存储结构示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

如图1所示,本实施例提供的提升超声全聚焦帧率的方法,包括以下步骤:

获取阵元的声程数据;

计算阵元间的声程数据差值;

根据存储器件的时钟周期内计算能力n设置存储声程数据差值的个数n-1;

本实施例中时钟周期内计算能力采用在时钟周期内连续加减法的次数n;

声程数据存储:依次循环间隔存储阵元的声程数据和n个连续声程数据差值;具体表示为[t1][Δt2]…[Δtn][tn+1][Δtn+2]…[Δt2n];

其中,t1表示第1个声程数据;

Δt2表示第2个声程数据和第1个声程数据的声程数据差值;

Δtn表示第n个声程数据和第n-1个声程数据的声程数据差值。

声程数据读取:读取声程数据和声程数据差值,通过预设的运算得到所有声程数据。

本实施例中上位机根据FPGA在一个时钟周期计算连续加减法的能力将声程数据转换成完整声程和声程差的形式发送给FPGA;

FPGA将声程数据存储在外挂的DDR上;

FPGA在计算聚焦像素点灰度的时候从DDR上读取完整声程和声程差值,并通过流水线在一个时钟周期内将其全部转换成完整声程并用于灰度计算;

本实施例中采用FPGA器件来存储和读取声程数据和阵元间的声程数据差值。

本实施例通过FPGA来读取声程数据和声程数据差值,读取后通过将第一个声程数据加上声程数据差值可得到对应的单向声程数据。

当声程数据的数量经过计算后得到的余数小于n-1时,最后的阵元的声程数据采用完整声程数据。

如图2所示,本实施例中按一般的FPGA器件假设能再一个时钟周期计算6个连续加减法,那么每隔(6-1)×2=10个声程数据差值数据需要插入一个完整的声程数据,如果最后剩下的阵元数目超过6-1=5,最后一个阵元的声程数据也需要是完整声程数据。

本实施例中声程数据的前面一半数据是通过前一个完整声程用加法获得,后面另一半是通过后一个完整声程用减法获得。

本实施例提供的方法是根据三角形两边只差小于第三边,即t2-t1

t

那么两个单向声程数据的差不会大于阵元间隔的声程数据;因此,阵元间隔的声程数据的位宽能够存储两个单向声程数据的差。用于判断需要多少位宽来存储差值。数据存储位宽是按二进制进行计算。

在声程数据存储的时候只需要存储每个点第一个阵元的声程数据和阵元间的声程数据差值,FPGA读取声程数据和声程数据差值后通过加法运算既可得到需要的单向声程数据。

声程数据差值存储位宽可以通过阵元间隔的声程数据得到需要的最大位宽,这个位宽一般远远小于一个单向声程数据的位宽。

如图3所示,例如以16位声程数据存储为例子:

假设探头的阵元间隔为0.8mm,声程数据单位10ns,超声在普通钢中纵波的波速是5918m/s,那么阵元间隔的声程数据值为0.8mm÷5918m/s÷10ns≈13.518个单位声程数据,由于13.518约等于14,转成二进制就是1110,所以就是4位存储,4位可以表示0-15;只需要4位即可以存储单向声程数据间的声程数据差值,按照以下公式计算存储位宽:

如图4所示,按128孔径计算,每个聚焦像素点需要存储的全部单向声程数据总位宽是16+127×4=524bit,按刚才的例子FPGA每个时钟读取512bit,那么只需要524÷512≈1.023个时钟就可以读取到单点所需要的声程数据,从而能极大缓解存储器带宽限制带来的帧率下降。

从上面知道第128阵元的单向声程数据的计算是要第一个阵元加127个声程数据差值得到,FPGA如果要在一个时钟周期内计算127个连续的加法,时序上难以收敛。所以在实际使用中在声程数据差值间插入一定的完整声程数据,连续声程数据差值的个数等于FPGA在一个时钟周期内能够时序收敛做的连续加减法的个数减1再乘以2,这个值和FPGA的器件型号和速度等级有关,跟进实际情况设定。

按一般的FPGA器件假设能再一个时钟周期计算6个连续加减法,那么每隔(6-1)×2=10个声程数据差值数据需要插入一个完整的声程数据,如果最后剩下的阵元数目超过6-1=5,最后一个阵元的声程数据也需要是完整声程数据。

以128个阵元为例子:

如图4所示,第1个声程数据为完整声程数据,第2、3、4、5、6个声程数据为声程数据差值,通过加法获得完整声程数据如下:

t2=t1+△t2,

t3=t1+△t2+△t3,

t4=t1+△t2+△t3+△t4,

t5=t1+△t2+△t3+△t4+△t5,

t6=t1+△t2+△t3+△t4+△t5+△t6。

Δt2表示第2个声程数据和第1个声程数据的声程数据差值;

Δtn表示第n个声程数据和第n-1个声程数据的声程数据差值;

第7、8、9、10、11个声程数据为声程数据差值,通过第12个完整生成做减法获得完整声程数据。

t7=t12-△t7-△t8-△t9-△t10-△t11,

t8=t12-△t8-△t9-△t10-△t11,

t9=t12-△t9-△t10-△t11,

t10=t12-△t10-△t11,

t11=t12-△t11,

根据以上公式可知,存储的插值的地方需要通过前面的完整声程通过加法复原,或者通过后面的完整声程通过减法复原。如果只用前面的完整声程通过加法复原,由于一个时钟只能做6个连续的加法,那么t7就需要存储完整声程了,所以t7可以通过t12做6个连续的减法来恢复。这样可以更多的声程是以差值的形式来存储的。

以此类推获得全部完整声程数据。

如图3所示,按这个例子,完整声程数据的个数是128÷11=11余7,11+2=13个,由此可知,一个完整声程加10个声程的差值等于11,相当于一个组。最后一组有两个完整声程所以加2;声程数据差值的个数是128-13=115个,声程数据差值按4位计算,那么每个聚焦像素点需要的全部单向声程数据的位宽位13×16+115×4=668bit;需要668÷512≈1.305个时钟就可以读取到单点所需要的声程数据。帧率可以提升4÷1.305≈3.065倍。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

技术分类

06120116560952