CN107657078B - 基于fpga的超声相控阵浮点聚焦发射实现方法 - Google Patents

基于fpga的超声相控阵浮点聚焦发射实现方法 Download PDF

Info

Publication number
CN107657078B
CN107657078B CN201710751424.5A CN201710751424A CN107657078B CN 107657078 B CN107657078 B CN 107657078B CN 201710751424 A CN201710751424 A CN 201710751424A CN 107657078 B CN107657078 B CN 107657078B
Authority
CN
China
Prior art keywords
mantissa
floating point
array
floating
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201710751424.5A
Other languages
English (en)
Other versions
CN107657078A (zh
Inventor
李杏华
刘培露
邢艳蕾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin University
Original Assignee
Tianjin University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin University filed Critical Tianjin University
Priority to CN201710751424.5A priority Critical patent/CN107657078B/zh
Publication of CN107657078A publication Critical patent/CN107657078A/zh
Application granted granted Critical
Publication of CN107657078B publication Critical patent/CN107657078B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61NELECTROTHERAPY; MAGNETOTHERAPY; RADIATION THERAPY; ULTRASOUND THERAPY
    • A61N7/00Ultrasound therapy
    • A61N7/02Localised ultrasound hyperthermia
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61NELECTROTHERAPY; MAGNETOTHERAPY; RADIATION THERAPY; ULTRASOUND THERAPY
    • A61N7/00Ultrasound therapy
    • A61N2007/0004Applications of ultrasound therapy

Landscapes

  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Public Health (AREA)
  • Computer Hardware Design (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Radiology & Medical Imaging (AREA)
  • Veterinary Medicine (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及超声相控阵聚焦技术,为实现在计算各通道延时值时采用并行计算,极大地提高运算速度,并且运算量较小,适合应用在实时性强、精度高的超声相控阵检测系统。本发明,基于FPGA的超声相控阵浮点聚焦发射实现方法,按照一定时序激励阵列换能器各阵元,使得合成的波阵面指向一个曲率中心,形成相控聚焦;其中,换能器n与换能器0的延时时间差Δtn为:
Figure DDA0001391230170000011
θ表示缺陷和阵元中心点的连线与法线之间的夹角,c表示超声波波速,d表示相邻阵元的阵元中心距离,n表示阵元数,N表示换能器的总阵元数,tn表示换能器n的延时值,F表示缺陷到阵列中心的距离;利用FPGA进行运算,得到上述公式结果。本发明主要应用于超声相控阵聚焦场合。

Description

基于FPGA的超声相控阵浮点聚焦发射实现方法
技术领域
本发明涉及超声相控阵聚焦技术领域,具体讲,涉及基于FPGA的超声相控阵浮点聚焦发射实现方法。
背景技术
超声相控阵技术是采用多阵元的阵列换能器,依靠计算机技术控制阵列中各阵元发射超声波的相位来控制各阵元的声束在声场中偏转、聚焦;或控制接收阵列换能器中各阵元接收超声波信号的相位,进行偏转、聚焦成像检测的一种高端技术。超声相控阵技术的核心是对阵列换能器的激励信号和回波信号的相位进行精准控制,实现发射超声波与接收回波信号的偏转或聚焦控制。那么,如何获得高精度的延时量是超声相控阵技术的关键。在目前的技术中,相位延时技术,即延时量的计算以及精度问题,是由PC机来完成的,延时时间使用模拟延时线(如LC网络)实现,但其延时精度不可精细调整,并且需要大量的LC网络和电子开关矩阵,具有集成度低,干扰性等缺点。另外,采用专用芯片延时,可以实现精准的延时,但是存在通用性差、成本高、硬件电路设计难度加大、修改控制困难等缺点。
数字式发射延时由于精度高、稳定性好、控制容易而成为近年来研究的方向。
但是,延时量的计算都是由PC机来完成的,并且算法较为复杂,实际运算量较大。
求解三角函数值是工程实现和科学计算中一种重要的计算,在二次方程求解,误差分析计算,数值概率分析统计,图像处理等科学领域使用广泛,但是其计算过程繁琐,运行速度低,如何在兼顾速度与器件资源的同时在硬件中实现三角函数的求解始终是我们所追求的目标。
CORDIC算法是J.Volder等人于1959年在美国航空控制系统的设计中首次提出来的,它是一种用于计算一些常用的基本运算函数和算术操作的循环迭代算法。CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,主要用于求解三角函数、指数、对数、双曲线的计算。该算法通过基本的相加和移位运算代替乘法运算,从而使得矢量的旋转和定向的计算不再需要三角函数、反三角、乘法、开方、指数等函数,能把直角坐标系转换为极坐标系并计算向量长度。此外,由于CORDIC算法只用了相加和移位运算,非常适合在FPGA中实现。
但是,CORDIC算法自身具有局限性:
1.常用的CORDIC算法是采用流水线结构来实现的。流水线结构可以提系统计算速度,但是由迭代次数与运算精度成正相关关系可知,想要获得更高的精度,也就意味着必须要增加流水线级数,从而增大迭代次数,速度也相应降低了,于此同时硬件资源消耗就更多了。那么如何在精度、资源消耗、速度之间进行取舍,是解决CORDIC算法局限性的一个关键。
2.CORDIC算法在迭代时每次旋转的角度都是arctan(2-m),常用的方法是将其提前计算好,在写入ROM表中,迭代的时候在根据地址取出ROM中存储的角度值。流水线级数越大,ROM表所占面积越大,硬件资源消耗也越大,系统速度也会相应的降低。
3.传统的CORDIC算法的旋转角度θ范围只有-99.88°~+99.88°,无法满足0°<θ<360°,这是由于为了使CORDIC算达到收敛,实际需要旋转的角度一定要小于所有旋转的角度之和。
发明内容
为克服现有技术的不足,本发明旨在提出一种基于FPGA的超声相控阵浮点聚焦发射算法。该算法在计算各通道延时值时采用并行计算,极大地提高运算速度,并且运算量较小,适合应用在实时性强、精度高的超声相控阵检测系统。本发明采用的技术方案是,基于FPGA的超声相控阵浮点聚焦发射实现方法,按照一定时序激励阵列换能器各阵元,使得合成的波阵面指向一个曲率中心,形成相控聚焦;其中,换能器n与换能器0的延时时间差△tn为:
Figure GDA0001509099050000021
θ表示缺陷和阵元中心点的连线与法线之间的夹角为,c表示超声波波速,d表示相邻阵元的阵元中心距离,n表示阵元数,N表示换能器的总阵元数,tn表示换能器n的延时值,F表示缺陷到阵列中心的距离;
利用FPGA进行浮点加、减、乘、除、正余弦运算,得到上述公式结果,依据该结果控制脉冲发射。
浮点加减法包括如下子步骤:对阶操作,符号判断,尾数相加/减,溢出判断,尾数规格化处理;
对阶操作,是指比较指数的大小,使得两个加数具有相同大小的阶码,对阶原则是大阶保持不变,增大小阶使其具有与大阶相同的阶数;
符号判断,指的是在尾数相加、减前,需要对两浮点数的符号进行判断,具体来讲,对两浮点数的符号位进行异或运算;
溢出判断,指的是在尾数相加后,其结果有可能存在溢出的情况,如果溢出,那么此时相加后的浮点数的指数位需要加1,并且尾数位为尾数相加后结果的高23位;
尾数规格化,指的是判断尾数相加、减后得到的尾数第几位为1,需要对相加后的尾数进行左移操作,即尾数的最高位为1,由于尾数进行了左移操作,阶码也要减去相应的位数;
对于减法运算,是将被减数符号取反然后进行加法运算。
浮点乘法运算为符号异或,阶码相加,尾数相乘:其中:
符号异或,指将浮点数A的符号位与浮点数B的符号位做异或运算;
阶码相加,指浮点数A阶码expA与浮点数B阶码expB做和运算,但是由于两个阶码各自都有偏移量,做和运算后要减去一个偏移量,这样就得到了这一步运算所需要的阶码;
尾数相乘,需要做浮点乘法运算的A、B的尾数满足1/2<manA<1,1/2<manB<1,所以尾数manA与manB的乘积manS有,1/4<manS<1,使得浮点乘法的尾数规范化变得十分容易,只需要判断尾数相称后的结果的最高位是否为1,若为1,表示尾数相乘有进位,此时指数位expS需要加1,若不为1,指数位expS保持不变;
浮点除法模块的主要操作步骤为:符号异或,阶码做差,尾数相除,尾数规范化;其中:
尾数相除,具体指浮点数A的尾数manA与浮点数B的尾数manB做除法运算,比较余数和除数的大小,如果余数大于除数,商先左移一位,商值在加一,余数等于余数减去除数;相反,如果余数小于除数,那么这一步的商值为0,即将商左移一位,每一次完成余数和除数的大小比较后,需要再将余数左移一位。
浮点正余弦运算步骤具体是基于CORDIC(Coordinate Rotation DigitalComputer)算法来实现,通过一系列的基本角度θm=arctan(2-m)加减逐渐逼近输入角度,m表示需要旋转的次数,m=0,1,2,…,N-1,其迭代公式为:
Figure GDA0001509099050000031
其中(Xm,Ym)表示第m次旋转前的向量,(Xm+1,Ym+1)表示第m次旋转后的向量,Zm+1用来表示第m次旋转后剩余未旋转的角度,βm表示第m次旋转的方向。
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
Figure GDA0001509099050000032
将其称为旋转模式,由迭代公式可知
Figure GDA0001509099050000033
令X0=1/P,Y0=0,Z0=θ,则有
XN=cosθ
YN=sinθ
因此,在旋转模式下,CORDIC算法计算一个输入角度的正弦值和余弦值。
利用CORDIC算法来计算浮点正余弦函数中:
第一,将参与迭代运算的数据表示为17位,最高位代表符号位,剩余的16位表示数据的大小,这样每一次迭代时,不需要在进行浮点加减和移位处理;
第二,将事先计算好的角度值用宏定义;
第三,将360°用216来表示,故每一度表示为216/360,由于输入的角度是0~360°,0~90°的高两位为00,90°~180°的高两位为01,180°~270°的高两位为10,270°~360°的高两位为11。由于输入角度表示为16位,最高位代表符号位,在进行迭代之前,将输入数据除去最高位的高两位表示成00,即将输入角度表示在0~90°,角度都转换到第一象限。而完成迭代运算后,再根据流水线结果除去最高位的高两位值,以及三角函数关系,进行象限判断,其中负数进行了补码操作。
本发明的特点及有益效果是:
本发明提出了一种基于FPGA的超声相控阵浮点聚焦发射算法。与传统的PC机计算延时值不同,该算法在计算各通道延时值时是并行计算的,极大地提高了运算速度。改进了CORDIC算法,可以在FPGA内部计算浮点正余弦函数,在节省硬件资源的同时,提高了计算速度。
附图说明:
图1是超声相控阵聚焦几何模型。
图2是浮点除法模块运算流程图。
图3是CORDIC坐标旋转矢量图。
图4是基于CORDIC算法的浮点正余弦运算模块的RTL视图。
图5是超声相控阵浮点聚焦发射算法的顶层端口模块。
图6本发明模块流程图。
具体实施方式
本发明为了现有技术的不足,发明了一种基于FPGA的超声相控阵浮点聚焦发射算法。该算法在计算各通道延时值时是并行计算的,极大地提高了运算速度,并且运算量较小,适合应用在实时性强、精度高的超声相控阵检测系统。
本发明的技术解决方案:一种基于FPGA的超声相控阵浮点聚焦发射算法,包括以下步骤:
步骤(1)、建立超声相控阵聚焦模型。
阵列换能器各阵元按照一定时序激励,使得合成的波阵面指向一个曲率中心,形成相控聚焦。
换能器n与换能器0的延时时间差△tn为:
Figure GDA0001509099050000041
可知,在FPGA内部完成通道延时值的计算,需要进行浮点加、减、乘、除、正余弦运算。本发明自主设计了上述所有浮点运算模块。
步骤(2)、浮点加减法运算模块。
浮点加减法模块的实现主要包括:对阶操作,符号判断,尾数相加(减),溢出判断,规格化处理。
对阶操作,是指比较指数的大小,使得两个加数具有相同大小的阶码,对阶原则是大阶保持不变,增大小阶使其具有与大阶相同的阶数,这样做有利于后续对尾数进行相加,尾数不会由于移位而溢出。
符号判断,指的是在尾数相加(减)前,需要对两浮点数的符号进行判断。具体来讲,对两浮点数的符号位进行异或运算。
溢出判断,指的是在尾数相加后,其结果有可能存在溢出的情况,如果溢出,那么此时相加后的浮点数的指数位需要加1,并且尾数位为尾数相加后结果的高23位。
尾数规格化,指的是判断尾数相加(减)后得到的尾数第几位为1。IEEE 754标准中规定了尾数的首位必须为1,并且把这个1隐藏起来,因此需要对相加后的尾数进行左移操作,即尾数的最高位为1,由于尾数进行了左移操作,阶码也要减去相应的位数。
对于减法运算,只需要将被减数符号取反然后进行加法运算即可。
步骤(3)、浮点乘法运算模块。
其主要操作为符号异或,阶码相加,尾数相乘。
符号异或,指将浮点数A的符号位与浮点数B的符号位做异或运算。
阶码相加,指浮点数A阶码expA与浮点数B阶码expB做和运算,但是由于两个阶码各自都有偏移量,做和运算后要减去一个偏移量,这样就得到了这一步运算所需要的阶码。
尾数相乘,由于IEEE 754标准的尾数规范化规定尾数中存在隐藏“1”,那么使得需要做浮点乘法运算的A、B的尾数满足1/2<manA<1,1/2<manB<1,所以尾数manA与manB的乘积manS有,1/4<manS<1,使得浮点乘法的尾数规范化变得十分容易,只需要判断尾数相称后的结果的最高位是否为1,若为1,表示尾数相乘有进位,此时指数位expS需要加1,若不为1,指数位expS保持不变。
步骤(4)、浮点除法运算模块。
浮点除法模块的主要操作步骤为:符号异或,阶码做差,尾数相除,尾数规范化。
符号异或,指相同为正号,相异为负号。
阶码作差,指浮点数A的阶码expA与浮点数expB的阶码作差,由于阶码expA与expB都引入了偏移量,那么做差后需要引入一个新的偏移量。
尾数相除,具体指浮点数A的尾数manA与浮点数B的尾数manB做除法运算,但是FPGA中不支持/或%运算符,故除法主要是靠移位、比较、做差来完成的,与人工手算的流程类似。具体的思想是,比较余数和除数的大小,如果余数大于除数,商先左移一位,商值在加一,余数等于余数减去除数;相反,如果余数小于除数,那么这一步的商值为0,即将商左移一位。每一次完成余数和除数的大小比较后,需要再将余数左移一位。为了得到足够的精度,本文使用了24次循环,即完成24次上述步骤,但是,如果可以除尽,那么很早就可以得到全0的结果。
需要注意的是,如果被除数是0,相除结果为0,故在除数为0的情况在进行除法运算前就要进行判断。
尾数规范化,与浮点乘法较为类似,由于IEEE 754标准的尾数规范化规定尾数中存在隐藏“1”,那么使得需要做浮点除法运算的A、B的尾数满足1/2<manA<1,1/2<manB<1,
Figure GDA0001509099050000051
如果尾数有进位存在,阶码加一,再将尾数右移一位。如果尾数无进位存在,那么无需再对阶码和尾数进行调整。
步骤(5)、浮点正余弦运算模块。
本发明的浮点正余弦运算模块是基于CORDIC(Coordinate Rotation DigitalComputer)算法来实现的。由于CORDIC算法只用了相加和移位运算,非常适合在FPGA中实现。其核心思想是通过一系列的基本角度θm=arctan(2-m)加减逐渐逼近输入角度,m=0,1,2,,N-1,其迭代公式为:
Figure GDA0001509099050000061
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
Figure GDA0001509099050000062
将其称为旋转模式,由迭代公式可知
Figure GDA0001509099050000063
令X0=1/P,Y0=0,Z0=θ,则有
XN=cosθ
YN=sinθ
因此,在旋转模式下,CORDIC算法可以计算一个输入角度的正弦值和余弦值。
考虑到如何更快地得到各个相控阵阵元需要延迟的时间量,充分利用FPGA并行计算速度快的结构特点,本发明在FPGA上完成超声相控阵聚焦发射算法。那么如何在获得更快的运算速度的同时使用更少的硬件资源是本发明研究的重点之一。
常用的CORDIC算法是采用流水线结构来实现的。流水线结构可以提系统计算速度,但是由迭代次数与运算精度成正相关关系可知,想要获得更高的精度,也就意味着必须要增加流水线级数,从而增大迭代次数,速度也相应降低了,于此同时硬件资源消耗就更多了。那么如何在精度、资源消耗、速度之间进行取舍,是解决CORDIC算法局限性的一个关键。
为了能够利用CORDIC算法来计算浮点正余弦函数,针对CORDIC算法的局限性,本发明做出了以下几点的改进:
第一,根据IEEE 754标准,单精度浮点表示为32位,如果直接将输入数据的位宽定义为32位,根据CORDIC算法得知,每一级的迭代都要对数据进行加减和移位,而浮点加法运算需要完成对阶操作,符号判断,尾数相加,溢出判断,规格化处理,毫无疑问,完成浮点加减运算要比定点数加减运算消耗更多的逻辑资源和memory位。并且由于FPGA中数据1bit占1个memory bit,数据位宽越大逻辑资源占用越多,所以这势必会成倍增加硬件资源消耗。而本文将参与迭代运算的数据表示为17位,最高位代表符号位,剩余的16位表示数据的大小,这样每一次迭代时,不需要在进行浮点加减和移位处理,成倍地减小了硬件资源消耗。
第二,CORDIC算法在迭代时每次旋转的角度都是arctan(2-m),本发明在Verilog中将事先计算好的角度值用宏定义,这样省去了将角度值存储在ROM表中占用的面积空间,也无需在迭代时再根据地址对ROM表进行访问,即节省了硬件资源,又提高了系统运算速度。
第三,为了解决传统CORDIC算法只能旋转-99.88°~+99.88°的问题,本文将360°用216来表示,故每一度表示为216/360,由于输入的角度是0~360°,0~90°的高两位为00,90°~180°的高两位为01,180°~270°的高两位为10,270°~360°的高两位为11。由于输入角度表示为16位,最高位代表符号位,在进行迭代之前,将输入数据除去最高位的高两位表示成00,即将输入角度表示在0~90°,角度都转换到第一象限。而完成迭代运算后,再根据流水线结果除去最高位的高两位值,以及三角函数关系,进行象限判断,其中负数进行了补码操作。这样就使旋转角度的范围增大到0~360°。
步骤(6)、浮点聚焦算法的FPGA实现。分别调用以上介绍的各浮点运算模块,即可实现超声相控阵浮点聚焦算法,得出各通道的延时值。
步骤(7)、通过步骤(6)计算出的各通道的延时值,将其输送至延时控制模块,延时控制模块接收到浮点聚焦算法模块传来的各通道延时值,对各通道进行延时计数并输出脉冲使能信号控制高压脉冲模块进行脉冲发射,至此可以实现高压脉冲的发射。
下面结合附图以及具体实施方式进一步说明本发明。
步骤(1)、建立超声相控阵聚焦模型。
阵列换能器各阵元按照一定时序激励,使得合成的波阵面指向一个曲率中心,形成相控聚焦。超声相控阵聚焦的几何模型如图1所示。
其中,θ表示缺陷和阵元中心点的连线与法线之间的夹角为,c表示超声波波速,d表示相邻阵元的阵元中心距离,n表示阵元数,tn表示换能器n的延时值,F表示缺陷到阵列中心的距离。在△ABP中,PB=F-(tn-t0)c,
Figure GDA0001509099050000071
PA=Fcosθ,由勾股定理可得,
Figure GDA0001509099050000072
经过分析推导,可以得出换能器n与换能器0的延时时间差△tn为:
Figure GDA0001509099050000073
θ表示缺陷和阵元中心点的连线与法线之间的夹角为,c表示超声波波速,d表示相邻阵元的阵元中心距离,n表示阵元数,N表示换能器的总阵元数,tn表示换能器n的延时值,F表示缺陷到阵列中心的距离。
由上式可知,参数d和N由换能器决定,声速c在单一介质中不变。因此只需要提供参数θ和F就可以求出所有阵元的延时时间。
由于本算法各通道的延时量计算在FPGA内部完成,延时量的精度需要达到纳秒级别,所以采用了IEEE754标准单精度32位浮点数表示延时值。由上式可知,需要进行浮点加、减、乘、除、正余弦运算。浮点数所表示的具体值可以用下面的式子来表示:
V=(-1)S×2E-127×(1.M)
式中,S表示符号数,E表示指数,M表示尾数,尾数中(1.M)的“1”为隐藏位。
步骤(2)、浮点加减法运算模块。
浮点加减法模块的实现主要包括:对阶操作,符号判断,尾数相加(减),溢出判断,规格化处理。
对阶操作,是指比较指数的大小,使得两个加数具有相同大小的阶码,对阶原则是大阶保持不变,增大小阶使其具有与大阶相同的阶数,这样做有利于后续对尾数进行相加,尾数不会由于移位而溢出。
符号判断,指的是在尾数相加(减)前,需要对两浮点数的符号进行判断。具体来讲,对两浮点数的符号位进行异或运算。
溢出判断,指的是在尾数相加后,其结果有可能存在溢出的情况,如果溢出,那么此时相加后的浮点数的指数位需要加1,并且尾数位为尾数相加后结果的高23位。
尾数规格化,指的是判断尾数相加(减)后得到的尾数第几位为1。IEEE 754标准中规定了尾数的首位必须为1,并且把这个1隐藏起来,因此需要对相加后的尾数进行左移操作,即尾数的最高位为1,由于尾数进行了左移操作,阶码也要减去相应的位数。
对于减法运算,只需要将被减数符号取反然后进行加法运算即可。
步骤(3)、浮点乘法运算模块。
其主要操作为符号异或,阶码相加,尾数相乘。
符号异或,指将浮点数A的符号位与浮点数B的符号位做异或运算。
阶码相加,指浮点数A阶码expA与浮点数B阶码expB做和运算,但是由于两个阶码各自都有偏移量,做和运算后要减去一个偏移量,这样就得到了这一步运算所需要的阶码。
尾数相乘,由于IEEE 754标准的尾数规范化规定尾数中存在隐藏“1”,那么使得需要做浮点乘法运算的A、B的尾数满足1/2<manA<1,1/2<manB<1,所以尾数manA与manB的乘积manS有,1/4<manS<1,使得浮点乘法的尾数规范化变得十分容易,只需要判断尾数相称后的结果的最高位是否为1,若为1,表示尾数相乘有进位,此时指数位expS需要加1,若不为1,指数位expS保持不变。
步骤(4)、浮点除法运算模块。
浮点除法模块的运算流程图如图2所示。浮点除法模块的主要操作步骤为:符号异或,阶码做差,尾数相除,尾数规范化。
符号异或,指相同为正号,相异为负号。
阶码作差,指浮点数A的阶码expA与浮点数expB的阶码作差,由于阶码expA与expB都引入了偏移量,那么做差后需要引入一个新的偏移量。
尾数相除,具体指浮点数A的尾数manA与浮点数B的尾数manB做除法运算,但是FPGA中不支持/或%运算符,故除法主要是靠移位、比较、做差来完成的,与人工手算的流程类似。具体的思想是,比较余数和除数的大小,如果余数大于除数,商先左移一位,商值在加一,余数等于余数减去除数;相反,如果余数小于除数,那么这一步的商值为0,即将商左移一位。每一次完成余数和除数的大小比较后,需要再将余数左移一位。为了得到足够的精度,本文使用了24次循环,即完成24次上述步骤,但是,如果可以除尽,那么很早就可以得到全0的结果。
需要注意的是,如果被除数是0,相除结果为0,故在除数为0的情况在进行除法运算前就要进行判断。
尾数规范化,与浮点乘法较为类似,由于IEEE 754标准的尾数规范化规定尾数中存在隐藏“1”,那么使得需要做浮点除法运算的A、B的尾数满足1/2<manA<1,1/2<manB<1,
Figure GDA0001509099050000091
如果尾数有进位存在,阶码加一,再将尾数右移一位。如果尾数无进位存在,那么无需再对阶码和尾数进行调整。
步骤(5)、浮点正余弦运算模块。
本发明的浮点正余弦运算模块是基于CORDIC(Coordinate Rotation DigitalComputer)算法来实现的。图3表示CORDIC坐标旋转矢量图,向量(Xi,Yi)旋转θ角后得到向量(Xj,Yj)。由于CORDIC算法只用了相加和移位运算,非常适合在FPGA中实现。其核心思想是通过一系列的基本角度θm=arctan(2-m)加减逐渐逼近输入角度,m=0,1,2,…,N-1,其迭代公式为:
Figure GDA0001509099050000092
其中(Xm,Ym)表示第m次旋转前的向量,(Xm+1,Ym+1)表示第m次旋转后的向量,Zm+1用来表示第m次旋转后剩余未旋转的角度,βm表示第m次旋转的方向。
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
Figure GDA0001509099050000093
将其称为旋转模式,由迭代公式可知
Figure GDA0001509099050000094
令X0=1/P,Y0=0,Z0=θ,则有
XN=cosθ
YN=sinθ
因此,在旋转模式下,CORDIC算法可以计算一个输入角度的正弦值和余弦值。
考虑到如何更快地得到各个相控阵阵元需要延迟的时间量,充分利用FPGA并行计算速度快的结构特点,本发明在FPGA上完成超声相控阵聚焦发射算法。那么如何在获得更快的运算速度的同时使用更少的硬件资源是本发明研究的重点之一。
常用的CORDIC算法是采用流水线结构来实现的。流水线结构可以提系统计算速度,但是由迭代次数与运算精度成正相关关系可知,想要获得更高的精度,也就意味着必须要增加流水线级数,从而增大迭代次数,速度也相应降低了,于此同时硬件资源消耗就更多了。那么如何在精度、资源消耗、速度之间进行取舍,是解决CORDIC算法局限性的一个关键。
为了能够利用CORDIC算法来计算浮点正余弦函数,针对CORDIC算法的局限性,本发明做出了以下几点的改进:
第一,根据IEEE 754标准,单精度浮点表示为32位,如果直接将输入数据的位宽定义为32位,根据CORDIC算法得知,每一级的迭代都要对数据进行加减和移位,而浮点加法运算需要完成对阶操作,符号判断,尾数相加,溢出判断,规格化处理,毫无疑问,完成浮点加减运算要比定点数加减运算消耗更多的逻辑资源和memory位。并且由于FPGA中数据1bit占1个memory bit,数据位宽越大逻辑资源占用越多,所以这势必会成倍增加硬件资源消耗。而本文将参与迭代运算的数据表示为17位,最高位代表符号位,剩余的16位表示数据的大小,这样每一次迭代时,不需要在进行浮点加减和移位处理,成倍地减小了硬件资源消耗。
第二,CORDIC算法在迭代时每次旋转的角度都是arctan(2-m),本发明在Verilog中将事先计算好的角度值用宏定义,这样省去了将角度值存储在ROM表中占用的面积空间,也无需在迭代时再根据地址对ROM表进行访问,即节省了硬件资源,又提高了系统运算速度。表1给出了CORDIC算法迭代13次每次所需旋转的角度。
表1 迭代13次每次旋转的角度
迭代次数 θ(实际值,弧度制) θ(十六进制)
1 45.0000000 2000
2 26.5650512 12e4
3 14.0362435 09fb
4 7.1250163 0511
5 3.5763344 028b
6 1.7899106 0145
7 0.8951737 00a3
8 0.4476142 0051
9 0.2238105 0028
10 0.1119057 0014
11 0.0559529 000a
12 0.0279765 0005
13 0.0139882 0003
第三,为了解决传统CORDIC算法只能旋转-99.88°~+99.88°的问题,本文将360°用216来表示,故每一度表示为216/360,由于输入的角度是0~360°,0~90°的高两位为00,90°~180°的高两位为01,180°~270°的高两位为10,270°~360°的高两位为11。由于输入角度表示为16位,最高位代表符号位,在进行迭代之前,将输入数据除去最高位的高两位表示成00,即将输入角度表示在0~90°,角度都转换到第一象限。而完成迭代运算后,再根据流水线结果除去最高位的高两位值,以及三角函数关系,进行象限判断,其中负数进行了补码操作。这样就使旋转角度的范围增大到0~360°。
本发明设计的基于CORDIC算法的浮点正余弦运算模块的RTL视图如图4所示。
步骤(6)、浮点聚焦算法的FPGA实现。分别调用以上介绍的各浮点运算模块,即可实现超声相控阵浮点聚焦算法。本发明以8个通道为例,给出超声相控阵浮点聚焦发射算法的顶层端口模块,如图5所示。
其中clk表示系统时钟信号;rst_n表示低电平复位;F表示焦点与阵元中心的距离,单位为m,位宽是32位;表示偏转角度,位宽是16位,用角度来表示;t0-t7表示前8个通道的延时值,单位是ns,位宽是32位。
步骤(7)、通过步骤(6)得到8个通道的延时值t0-t7,将其输送至延时控制模块,延时控制模块接收到浮点聚焦算法模块传来的各通道延时值,对各通道进行延时计数并输出脉冲使能信号控制高压脉冲模块进行脉冲发射,至此可以实现高压脉冲的发射。如图6所示。

Claims (5)

1.一种基于FPGA的超声相控阵浮点聚焦发射实现方法,其特征是,按照一定时序激励阵列换能器各阵元,使得合成的波阵面指向一个曲率中心,形成相控聚焦;其中,换能器n与换能器0的延时时间差Δtn为:
Figure FDA0002739560420000011
θ表示缺陷和阵元中心点的连线与法线之间的夹角,c表示超声波波速,d表示相邻阵元的阵元中心距离,n表示阵元数,N表示换能器的总阵元数,tn表示换能器n的延时值,F表示缺陷到阵列中心的距离;
利用FPGA进行浮点加、减、乘、除、正余弦运算,得到上述公式结果,依据该结果控制脉冲发射。
2.如权利要求1所述的基于FPGA的超声相控阵浮点聚焦发射实现方法,其特征是,浮点加减法包括如下子步骤:对阶操作,符号判断,尾数相加/减,溢出判断,尾数规格化处理;
对阶操作,是指比较指数的大小,使得两个加数具有相同大小的阶码,对阶原则是大阶保持不变,增大小阶使其具有与大阶相同的阶数;
符号判断,指的是在尾数相加、减前,需要对两浮点数的符号进行判断,具体来讲,对两浮点数的符号位进行异或运算;
溢出判断,指的是在尾数相加后,其结果有可能存在溢出的情况,如果溢出,那么此时相加后的浮点数的指数位需要加1,并且尾数位为尾数相加后结果的高23位;
尾数规格化,指的是判断尾数相加、减后得到的尾数第几位为1,需要对相加后的尾数进行左移操作,即尾数的最高位为1,由于尾数进行了左移操作,阶码也要减去相应的位数;
对于减法运算,是将被减数符号取反然后进行加法运算。
3.如权利要求1所述的基于FPGA的超声相控阵浮点聚焦发射实现方法,其特征是,浮点乘法运算为符号异或,阶码相加,尾数相乘:其中:
符号异或,指将浮点数A的符号位与浮点数B的符号位做异或运算;
阶码相加,指浮点数A阶码expA与浮点数B阶码expB做和运算,但是由于两个阶码各自都有偏移量,做和运算后要减去一个偏移量,这样就得到了这一步运算所需要的阶码;
尾数相乘,需要做浮点乘法运算的A、B的尾数满足1/2<manA<1,1/2<manB<1,所以尾数manA与manB的乘积manS有,1/4<manS<1,使得浮点乘法的尾数规范化变得十分容易,只需要判断尾数相称后的结果的最高位是否为1,若为1,表示尾数相乘有进位,此时指数位expS需要加1,若不为1,指数位expS保持不变;
浮点除法模块的主要操作步骤为:符号异或,阶码做差,尾数相除,尾数规范化;其中:
尾数相除,具体指浮点数A的尾数manA与浮点数B的尾数manB做除法运算,比较余数和除数的大小,如果余数大于除数,商先左移一位,商值在加一,余数等于余数减去除数;相反,如果余数小于除数,那么这一步的商值为0,即将商左移一位,每一次完成余数和除数的大小比较后,需要再将余数左移一位。
4.如权利要求1所述的基于FPGA的超声相控阵浮点聚焦发射实现方法,其特征是,浮点正余弦运算步骤具体是基于CORDIC即Coordinate Rotation Digital Computer算法来实现,通过一系列的基本角度θm=arctan(2-m)加减逐渐逼近输入角度,m表示需要旋转的次数,m=0,1,2,…,N-1,其迭代公式为:
Figure FDA0002739560420000021
其中(Xm,Ym)表示第m次旋转前的向量,(Xm+1,Ym+1)表示第m次旋转后的向量,Zm+1用来表示第m次旋转后剩余未旋转的角度,βm表示第m次旋转的方向;
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
Figure FDA0002739560420000022
将其称为旋转模式,由迭代公式可知
Figure FDA0002739560420000023
令X0=1/P,Y0=0,Z0=θ,则有
XN=cosθ
YN=sinθ
因此,在旋转模式下,CORDIC算法计算一个输入角度的正弦值和余弦值。
5.如权利要求4所述的基于FPGA的超声相控阵浮点聚焦发射实现方法,其特征是,利用CORDIC算法来计算浮点正余弦函数中:
第一,将参与迭代运算的数据表示为17位,最高位代表符号位,剩余的16位表示数据的大小,这样每一次迭代时,不需要在进行浮点加减和移位处理;
第二,将事先计算好的角度值用宏定义;
第三,将360°用216来表示,故每一度表示为216/360,由于输入的角度是0~360°,0~90°的高两位为00,90°~180°的高两位为01,180°~270°的高两位为10,270°~360°的高两位为11,由于输入角度表示为16位,最高位代表符号位,在进行迭代之前,将输入数据除去最高位的高两位表示成00,即将输入角度表示在0~90°,角度都转换到第一象限,而完成迭代运算后,再根据流水线结果除去最高位的高两位值,以及三角函数关系,进行象限判断,其中负数进行了补码操作。
CN201710751424.5A 2017-08-28 2017-08-28 基于fpga的超声相控阵浮点聚焦发射实现方法 Expired - Fee Related CN107657078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710751424.5A CN107657078B (zh) 2017-08-28 2017-08-28 基于fpga的超声相控阵浮点聚焦发射实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710751424.5A CN107657078B (zh) 2017-08-28 2017-08-28 基于fpga的超声相控阵浮点聚焦发射实现方法

Publications (2)

Publication Number Publication Date
CN107657078A CN107657078A (zh) 2018-02-02
CN107657078B true CN107657078B (zh) 2021-01-19

Family

ID=61128855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710751424.5A Expired - Fee Related CN107657078B (zh) 2017-08-28 2017-08-28 基于fpga的超声相控阵浮点聚焦发射实现方法

Country Status (1)

Country Link
CN (1) CN107657078B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109269439B (zh) * 2018-09-28 2020-11-10 东南大学 金属熔池内部轮廓在线测量设备及方法
CN111257412A (zh) * 2020-02-05 2020-06-09 天津大学 用于多相流测量的阵列式超声扫描成像系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692072A (zh) * 2009-06-16 2010-04-07 北京理工大学 圆弧形线性超声相控阵声场计算方法
CN105319271A (zh) * 2014-07-30 2016-02-10 中国科学院声学研究所 一种横、纵波联合超声相控阵检测方法
CN106154251A (zh) * 2016-06-27 2016-11-23 中国科学院苏州生物医学工程技术研究所 超声波束合成方法、超声成像方法和超声弹性成像方法
CN106202890A (zh) * 2016-06-30 2016-12-07 中国人民解放军国防科学技术大学 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2541243A1 (en) * 2011-07-01 2013-01-02 Nederlandse Organisatie voor toegepast- natuurwetenschappelijk onderzoek TNO Non destructive testing apparatus and method using ultrasound imaging
CN104976970B (zh) * 2015-07-06 2017-11-10 中国科学院声学研究所 一种超声相控阵楔块自检测系统及其方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692072A (zh) * 2009-06-16 2010-04-07 北京理工大学 圆弧形线性超声相控阵声场计算方法
CN105319271A (zh) * 2014-07-30 2016-02-10 中国科学院声学研究所 一种横、纵波联合超声相控阵检测方法
CN106154251A (zh) * 2016-06-27 2016-11-23 中国科学院苏州生物医学工程技术研究所 超声波束合成方法、超声成像方法和超声弹性成像方法
CN106202890A (zh) * 2016-06-30 2016-12-07 中国人民解放军国防科学技术大学 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于FPGA的超声相控阵检测系统的研究与设计";仲光明;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》;20170315(第03期);第C030-337页 *

Also Published As

Publication number Publication date
CN107657078A (zh) 2018-02-02

Similar Documents

Publication Publication Date Title
CN109062540B (zh) 一种基于cordic算法的可重构浮点运算装置
CN107305484B (zh) 一种非线性函数运算装置及方法
Juang et al. A lower error and ROM-free logarithmic converter for digital signal processing applications
WO2017181342A1 (zh) 一种非线性函数运算装置及方法
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
CN107657078B (zh) 基于fpga的超声相控阵浮点聚焦发射实现方法
Mopuri et al. Low-complexity methodology for complex square-root computation
EP0264256A2 (en) Apparatus and method for approximating the magnitude of a complex number
CN103677737A (zh) 基于进位节省加法器的低延时cordic三角函数实现的方法及装置
CN108037906B (zh) 基于tcordic算法的浮点基本函数实现方法及装置
CN102799412A (zh) 基于并行流水线设计的cordic加速器
CN104135457B (zh) 基于改进的cordic算法的数字鉴相方法及装置
CN107423026B (zh) 一种正余弦函数计算的实现方法及装置
CN111666064B (zh) 基于cordic的三角函数循环迭代求解方法和装置
Mandal et al. VLSI architecture design and implementation for application specific CORDIC processor
Rudagi et al. Comparative analysis of radix-2, radix-4, radix-8 CORDIC processors
Liu et al. Implementation on FPGA for CORDIC-based Computation of Arcsine and Arccosine
CN102109973A (zh) 包含超越函数计算的处理器实现装置
Banerjee et al. High performance novel square root architecture using ancient Indian mathematics for high speed signal processing
Dong et al. Implementation of single-precision floating-point trigonometric functions with small area
US20140253214A1 (en) Multiplier circuit
Pottathuparambil et al. Implementation of a CORDIC based double-precision exponential core on an FPGA
CN113515259B (zh) 一种适用于浮点格式的复数的近似取模实现电路及方法
Hao et al. A VLSI implementation of double precision floating-point logarithmic function
Jain et al. A new approach for high performance and efficient design of CORDIC processor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210119

Termination date: 20210828

CF01 Termination of patent right due to non-payment of annual fee