核算机断层成像技能CT(Computed Tomography)作为一种新式的成像办法现已被广泛应用于医学、工业等范畴。三维CT相对于传统二维CT有空间分辨率高,各向同性的优势[1]。可是因为三维图画重建运算量大,重建时刻长的问题已成为约束其走向有用的瓶颈。
现在,重建加快研讨首要会集在经过改善算法的软件加快及使用GPU、FPGA进行的硬件加快。其间,FPGA因为具有极佳的并行核算才能及可重构可定制的特色[2],使用FPGA完结CT重建加快正逐渐引起研讨人员的留意。
2002年Miriam Leeser[3]初次使用FPGA对二维CT重建进行了加快,重建规划为512^2时需求3.6 s。2003年Iain Goddard[4]初次对三维CT重建FDK算法中的反投影进程用FPGA完结加快,重建规划为512^3时,反投影进程需求38.7 s;2008年Benno Heigl[5]用9块FPGA和谐合作完结了FDK算法中滤涉及反投影部分的加快,重建规划为512^3时,该进程共需求9 s。2009年Nikhil Subramanian[6]使用FPGA作为协处理器用Impulse c言语开发完结了二维CT重建进程的加快,重建规划为512^2时,反投影进程需求38.4 ms。
在FPGA内完结硬件加快是经过全数据流的方式处理,脱离了指令的操作。为了充分使用FPGA的片内资源以取得更高的加快作用,本文规划了一种并行无等候流水线的处理结构,一起对中心算法电路进行资源优化,在坚持高度并行性的一起确保了较高的资源使用率。
1 FDK算法
在FDK算法中,反投影的核算复杂度与时刻耗费都是最大的,是约束重建速度的瓶颈地点,因而本文研讨在FPGA内完结反投影部分的加快办法。
2 FPGA反投影加快完结
反投影进程需求对重建物体旋转一周所收集到的数据进行处理。实际状况中收集数据的进程是离散的,且每一个分度下投影数据的处理进程不相关。依据这种可并行性,用FPGA加快的思路是并行核算反投影进程,并且在确保每一个反投影单元速度最快时并行尽可能多的反投影单元。
2.1 无等候流水线的规划
重建物体体素的反投影流程有3个进程。首要依据图1的几许联系定位出重建体素在探测器上的方位;然后从存储器中读取相应数据;最终对所读取数据进行双线性插值。
经过流水线规划,双线性插值部分能够在每一个时钟更新一个数据,可是每更新一个数据需求从数据存储空间读取4个数据来核算,假设花费4个时钟周期来读取这4个数据,就会形成前级数据读取时刻大于后级双线性插值时刻,双线性插值处理单元会发生空泡。空泡的发生,不光约束了后级处理单元的核算速度,也形成FPGA内资源使用率的下降。
为了处理上述问题,进步处理速度以及资源使用率,剖析双线性插值进程所读取4个数据之间的联系,如图2所示。
图3中两组共四个存储空间均为FPGA片内规划的双口RAM。经过数据预取技能以及两组RAM之间的乒乓操作避免了双线性插值时随机拜访外部存储器带来的推迟。在反投影处理中,第一组RAM处于数据写入进程时,分别向该组两块RAM写入探测器上奇数行数据与偶数行数据。一起另一组RAM中的数据进行双线性插值。核算完结后,两组RAM进行读写状况的交换,完结一次乒乓循环。在投影寻址单元中,核算出A(Xn,Yn)的纵坐标Yn,对其奇偶性进行判别,当其为奇数时,从两块RAM中所取数据与地址分别为:
经过这种双组奇偶双口RAM缓存结构的规划在不添加片内存储资源耗费的条件下一个时钟周期内取出四个数据,消除了空泡,完结了无等候流水线,在一个时钟周期内可更新一个重建点的成果。
单条反投影流水线规划原理如图4所示。图中整体逻辑与时序操控模块经过状况机完结对流水线的操控;缓存写入操控单元对投影数据的写入操作进行判别与操控;重建点生成器发生重建点坐标,并依据此坐标由读地址生成器核算双线性插值数据的地址,一起经过查表找出空间系数sin?兹与cos?兹;循环累加操控器完结对各分度下反投影成果的归约进程。
2.2 并行流水线处理结构
依据各个分度下反投影进程的不相关性,在FPGA内规划一种依据分度的并行流水线处理结构,如图5所示。数据操控接口以及时序状况操控模块完结对输入数据的分配调度,经过多条反投影流水线并行核算后,由循环归约单元完结反投影成果的归约。
假设投影分度数为360,抱负状况是在FPGA内部完结360条并行的反投影流水线,但因为FPGA片内资源的约束无法到达如此高的并行性,因而需求对每一次并行核算成果进行存储,并完结累加核算。规划循环归约单元完结上述操作。当有N条并行流水线并行核算
在FPGA内规划时,预先算出该公因式的值,然后经过移位存放的办法进行推迟同步,使之在相应的节拍打入到指定的核算单元。尽管这样添加了乘法运算,可是将三次除法运算优化为一次,节省了很多的资源。表1给出了优化前后资源占有状况比照。
经过优化,在XC5VLX330 FPGA内部能够并行14条反投影流水线,比较优化曾经,流水线数添加1倍。
3 试验成果与剖析
经过编写Verilog言语程序,在XC5VLX330 FPGA上进行归纳仿真,采纳14条并行反投影流水线对Shepp-Logan规范体模进行重建,得到图6所示成果。
图6(a)为CPU重建图画的一个切片,图6(b)为FPGA加快重建的图画切片,图6(c),图6(d)分别为图6(a),图6(b)切片图画中心横线的统计图,从图中能够看出FPGA加快重建成果的精度到达要求。表2给出FPGA与CPU对不同规划数据进行重建时速度比照,核算机CPU为Inter Xeon E5430 2.66 GB,内存为16 GB。
能够看出,经过FPGA加快FDK算法中的反投影进程加快比到达了115,具有显著作用。取得加快比的原来由FPGA的体系结构所决议,其依据数据流的处理办法脱离了指令的操作,确保每一个时钟周期都是用来核算。当采纳多条流水线并行处理时,加快比进一步进步,加快比与在FPGA内并行流水线数目成正比。
本文在FPGA上完结了对三维CT重建进程的加快。针对FDK算法中核算复杂度最高的反投影进程,经过双组奇偶双口RAM的缓存结构完结了无等候流水线,到达每一个时钟周期可更新一个重建点的速度。别的经过优化电路规划下降了单条流水线的资源占有率,在XC5VLX330上完结了14条流水线的并行处理,在确保重建图画质量的一起,取得了115倍的加快比。在使用FPGA完结CT重建加快时,影响加快作用的首要因素是FPGA内部资源使用率以及数据传输功率,跟着未来FPGA以及存储器技能的开展,FPGA能够完结更快的CT重建速度。