CN107657078A - 基于fpga的超声相控阵浮点聚焦发射实现方法 - Google Patents
基于fpga的超声相控阵浮点聚焦发射实现方法 Download PDFInfo
- Publication number
- CN107657078A CN107657078A CN201710751424.5A CN201710751424A CN107657078A CN 107657078 A CN107657078 A CN 107657078A CN 201710751424 A CN201710751424 A CN 201710751424A CN 107657078 A CN107657078 A CN 107657078A
- Authority
- CN
- China
- Prior art keywords
- mantissa
- floating point
- array
- bit
- floating
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61N—ELECTROTHERAPY; MAGNETOTHERAPY; RADIATION THERAPY; ULTRASOUND THERAPY
- A61N7/00—Ultrasound therapy
- A61N7/02—Localised ultrasound hyperthermia
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61N—ELECTROTHERAPY; MAGNETOTHERAPY; RADIATION THERAPY; ULTRASOUND THERAPY
- A61N7/00—Ultrasound therapy
- A61N2007/0004—Applications 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为: θ表示缺陷和阵元中心点的连线与法线之间的夹角,c表示超声波波速,d表示相邻阵元的阵元中心距离,n表示阵元数,N表示换能器的总阵元数,tn表示换能器n的延时值,F表示缺陷到阵列中心的距离;利用FPGA进行运算,得到上述公式结果。本发明主要应用于超声相控阵聚焦场合。
Description
技术领域
本发明涉及超声相控阵聚焦技术领域,具体讲,涉及基于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为:
θ表示缺陷和阵元中心点的连线与法线之间的夹角为,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,其迭代公式为:
其中(Xm,Ym)表示第m次旋转前的向量,(Xm+1,Ym+1)表示第m次旋转后的向量,Zm+1用来表示第m次旋转后剩余未旋转的角度,βm表示第m次旋转的方向。
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
将其称为旋转模式,由迭代公式可知
令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为:
可知,在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,如果尾数有进位存在,阶码加一,再将尾数右移一位。如果尾数无进位存在,那么无需再对阶码和尾数进行调整。
步骤(5)、浮点正余弦运算模块。
本发明的浮点正余弦运算模块是基于CORDIC(Coordinate Rotation DigitalComputer) 算法来实现的。由于CORDIC算法只用了相加和移位运算,非常适合在FPGA中实现。其核心 思想是通过一系列的基本角度θm=arctan(2-m)加减逐渐逼近输入角度,m=0,1,2,…,N-1,其迭 代公式为:
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
将其称为旋转模式,由迭代公式可知
令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,
PA=Fcosθ,由勾股定理可得,
经过分析推导,可以得出换能器n与换能器0的延时时间差Δtn为:
θ表示缺陷和阵元中心点的连线与法线之间的夹角为,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,如果尾数有进位存在,阶码加一,再将尾数右移一位。如果尾数无进位存在,那么无需再对阶码和尾数进行调整。
步骤(5)、浮点正余弦运算模块。
本发明的浮点正余弦运算模块是基于CORDIC(Coordinate Rotation DigitalComputer) 算法来实现的。图3表示CORDIC坐标旋转矢量图,向量(Xi,Yi)旋转θ角后得到向量(Xj,Yj)。 由于CORDIC算法只用了相加和移位运算,非常适合在FPGA中实现。其核心思想是通过一系 列的基本角度θm=arctan(2-m)加减逐渐逼近输入角度,m=0,1,2,…,N-1,其迭代公式为:
其中(Xm,Ym)表示第m次旋转前的向量,(Xm+1,Ym+1)表示第m次旋转后的向量,Zm+1用来表示第m次旋转后剩余未旋转的角度,βm表示第m次旋转的方向。
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
将其称为旋转模式,由迭代公式可知
令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为:
<mrow>
<msub>
<mi>&Delta;t</mi>
<mi>n</mi>
</msub>
<mo>=</mo>
<mi>n</mi>
<mfrac>
<mrow>
<mi>d</mi>
<mi> </mi>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
<mi>c</mi>
</mfrac>
<mo>+</mo>
<mfrac>
<msup>
<mi>d</mi>
<mn>2</mn>
</msup>
<mrow>
<mn>2</mn>
<mi>c</mi>
<mi>F</mi>
</mrow>
</mfrac>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mo>-</mo>
<mn>2</mn>
<mi>n</mi>
<mo>)</mo>
</mrow>
<msup>
<mrow>
<mo>(</mo>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
</mrow>
θ表示缺陷和阵元中心点的连线与法线之间的夹角为,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,其迭代公式为:
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>X</mi>
<mrow>
<mi>m</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>X</mi>
<mi>m</mi>
</msub>
<mo>-</mo>
<msub>
<mi>&beta;</mi>
<mi>m</mi>
</msub>
<msup>
<mn>2</mn>
<mrow>
<mo>-</mo>
<mi>m</mi>
</mrow>
</msup>
<msub>
<mi>Y</mi>
<mi>m</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>Y</mi>
<mrow>
<mi>m</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>Y</mi>
<mi>m</mi>
</msub>
<mo>+</mo>
<msub>
<mi>&beta;</mi>
<mi>m</mi>
</msub>
<msup>
<mn>2</mn>
<mrow>
<mo>-</mo>
<mi>m</mi>
</mrow>
</msup>
<msub>
<mi>X</mi>
<mi>m</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>Z</mi>
<mrow>
<mi>m</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>Z</mi>
<mi>m</mi>
</msub>
<mo>-</mo>
<msub>
<mi>&beta;</mi>
<mi>m</mi>
</msub>
<mi>arctan</mi>
<mrow>
<mo>(</mo>
<msup>
<mn>2</mn>
<mrow>
<mo>-</mo>
<mi>m</mi>
</mrow>
</msup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
其中(Xm,Ym)表示第m次旋转前的向量,(Xm+1,Ym+1)表示第m次旋转后的向量,Zm+1用来表示第m次旋转后剩余未旋转的角度,βm表示第m次旋转的方向。
对第一次旋转的角度Z0=θ,旋转N次后,若有ZN=0,那么
<mrow>
<msub>
<mi>&beta;</mi>
<mi>m</mi>
</msub>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Z</mi>
<mi>m</mi>
</msub>
<mo><</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>Z</mi>
<mi>m</mi>
</msub>
<mo>></mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
将其称为旋转模式,由迭代公式可知
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<msub>
<mi>X</mi>
<mi>N</mi>
</msub>
<mo>=</mo>
<mi>P</mi>
<mo>(</mo>
<msub>
<mi>X</mi>
<mn>0</mn>
</msub>
<mi>cos</mi>
<mi> </mi>
<msub>
<mi>Z</mi>
<mn>0</mn>
</msub>
<mo>-</mo>
<msub>
<mi>Y</mi>
<mn>0</mn>
</msub>
<mi>sin</mi>
<mi> </mi>
<msub>
<mi>Z</mi>
<mn>0</mn>
</msub>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>Y</mi>
<mi>N</mi>
</msub>
<mo>=</mo>
<mi>P</mi>
<mo>(</mo>
<msub>
<mi>Y</mi>
<mn>0</mn>
</msub>
<mi>cos</mi>
<mi> </mi>
<msub>
<mi>Z</mi>
<mn>0</mn>
</msub>
<mo>+</mo>
<msub>
<mi>X</mi>
<mn>0</mn>
</msub>
<mi>sin</mi>
<mi> </mi>
<msub>
<mi>Z</mi>
<mn>0</mn>
</msub>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>Z</mi>
<mi>N</mi>
</msub>
<mo>=</mo>
<mn>0</mn>
</mtd>
</mtr>
</mtable>
</mfenced>
令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°,角度都转换到第一象限。而完成迭代运算后,再根据流水线结果除去最高位的高两位值,以及三角函数关系,进行象限判断,其中负数进行了补码操作。
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 true CN107657078A (zh) | 2018-02-02 |
CN107657078B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109269439A (zh) * | 2018-09-28 | 2019-01-25 | 东南大学 | 金属熔池内部轮廓在线测量设备及方法 |
CN111257412A (zh) * | 2020-02-05 | 2020-06-09 | 天津大学 | 用于多相流测量的阵列式超声扫描成像*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692072A (zh) * | 2009-06-16 | 2010-04-07 | 北京理工大学 | 圆弧形线性超声相控阵声场计算方法 |
US20140140167A1 (en) * | 2011-07-01 | 2014-05-22 | Nederlandse Organisatie Voor Toegepast-Natuurwetenschappelijk Onderzoek Tno | Non Destructive Testing Apparatus and Method Using Ultrasound Imaging |
CN104976970A (zh) * | 2015-07-06 | 2015-10-14 | 中国科学院声学研究所 | 一种超声相控阵楔块自检测***及其方法 |
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算法相结合的全流水浮点三角函数装置 |
-
2017
- 2017-08-28 CN CN201710751424.5A patent/CN107657078B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692072A (zh) * | 2009-06-16 | 2010-04-07 | 北京理工大学 | 圆弧形线性超声相控阵声场计算方法 |
US20140140167A1 (en) * | 2011-07-01 | 2014-05-22 | Nederlandse Organisatie Voor Toegepast-Natuurwetenschappelijk Onderzoek Tno | Non Destructive Testing Apparatus and Method Using Ultrasound Imaging |
CN105319271A (zh) * | 2014-07-30 | 2016-02-10 | 中国科学院声学研究所 | 一种横、纵波联合超声相控阵检测方法 |
CN104976970A (zh) * | 2015-07-06 | 2015-10-14 | 中国科学院声学研究所 | 一种超声相控阵楔块自检测***及其方法 |
CN106154251A (zh) * | 2016-06-27 | 2016-11-23 | 中国科学院苏州生物医学工程技术研究所 | 超声波束合成方法、超声成像方法和超声弹性成像方法 |
CN106202890A (zh) * | 2016-06-30 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 |
Non-Patent Citations (2)
Title |
---|
CUI JUAN 等: ""FPGA-based underwater ultrasonic phased transmitting system using CMUTs"", 《2015 IEEE 12TH INTERNATIONAL CONFERENCE ON ELECTRONIC MEASUREMENT & INSTRUMENTS》 * |
仲光明: ""基于FPGA的超声相控阵检测***的研究与设计"", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109269439A (zh) * | 2018-09-28 | 2019-01-25 | 东南大学 | 金属熔池内部轮廓在线测量设备及方法 |
CN111257412A (zh) * | 2020-02-05 | 2020-06-09 | 天津大学 | 用于多相流测量的阵列式超声扫描成像*** |
Also Published As
Publication number | Publication date |
---|---|
CN107657078B (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN103809930A (zh) | 一种双精度浮点数除法器的设计方法及除法器 | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
Mopuri et al. | Low-complexity methodology for complex square-root computation | |
CN107657078B (zh) | 基于fpga的超声相控阵浮点聚焦发射实现方法 | |
CN103677737A (zh) | 基于进位节省加法器的低延时cordic三角函数实现的方法及装置 | |
EP0264256A2 (en) | Apparatus and method for approximating the magnitude of a complex number | |
CN104135457B (zh) | 基于改进的cordic算法的数字鉴相方法及装置 | |
CN111443893A (zh) | 一种基于cordic算法的n次根计算装置及方法 | |
Rodriguez-Garcia et al. | Fast fixed-point divider based on Newton-Raphson method and piecewise polynomial approximation | |
CN102323878B (zh) | 一种用于cordic算法模校正的电路装置及方法 | |
CN107102841A (zh) | 一种坐标变换并行计算方法和装置 | |
CN107423026B (zh) | 一种正余弦函数计算的实现方法及装置 | |
CN111666064B (zh) | 基于cordic的三角函数循环迭代求解方法和装置 | |
Mandal et al. | VLSI architecture design and implementation for application specific CORDIC processor | |
CN108008665B (zh) | 基于单片fpga的大规模圆阵实时波束形成器及波束形成计算方法 | |
US9612800B2 (en) | Implementing a square root operation in a computer system | |
Rudagi et al. | Comparative analysis of radix-2, radix-4, radix-8 CORDIC processors | |
Muñoz et al. | Tradeoff of FPGA design of floating-point transcendental functions | |
Banerjee et al. | High performance novel square root architecture using ancient Indian mathematics for high speed signal processing | |
Yousif et al. | Implementation of Hyperbolic Sine and Cosine Functions Based on FPGA using different Approaches | |
Dong et al. | Implementation of single-precision floating-point trigonometric functions with small area | |
CN113515259B (zh) | 一种适用于浮点格式的复数的近似取模实现电路及方法 | |
US20140253214A1 (en) | Multiplier circuit | |
US20170269902A1 (en) | Check procedure for floating point operations |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210119 Termination date: 20210828 |