微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > FPGA作为协处理器在实时系统中的应用

FPGA作为协处理器在实时系统中的应用

时间:04-08 来源:互联网 点击:
2 对FPGA用于协处理器的几点探讨

通过以上实例我们可以探讨一下FPGA用于协处理器的结构特点和设计原则。

2.1 FPGA作为协处理器所需的结构

硬件要完成某种应用方式,必须依赖于相应的系统硬件结构。FPGA在数字信号处理设计中最典型的应用有两种:一种是作为整个数据处理流程中的一个“结点”,数据沿着线状结构被不断加工处理,FPGA在这里作为处理单元,独立地完成算法中的某些功能。如图4。

图中的PE一般为DSP或单片机。上例中的前级FPGA1就是作为处理单元来应用的。另一种是作为协处理器,如图5。



FPGA从属于PE,PE的一部分任务由FPGA分担。PE象调用软件中的函数一样来调用FPGA。只是函数内部写的不是完成该功能的语句,而是向FPGA送参数,再从FPGA接收结果。硬件的速度相对于PE的指令操作来说一般要快得多,可以认为将数据送出后马上就可得到结果。如果使用得当,这种结构可以大幅度提高PE的处理速度,需要指出的是,虽然硬件执行起来要比软件快,但是协处理器的开销主要在 PE与FPGA的接口上,要保证PE与FPGA有高速的双向通道,否则就达不到高速性的目的。在提取直线的系统中,DSP是通过自身的两个高速并行口(一发一收)与FPGA相连接的。实际上,如果想进一步提高协处理器的效率,应该考虑设计更快的接口。

2.2 FPGA作为协处理器的优点

使用FPGA作为协处理器的最大优势在于可根据具体算法的实际需要来为PE定做合适的硬件函数。传统的协处理器为了自身的通用性,实现的一般都是指令层次上的功能,如80387专门完成乘加运算,而FPGA设计和使用更灵活,可以将协处理器建立在函数层上。如直线提取中协处理器完成的函数,DSP本身不善长大量的逻辑判断,如果不结合具体的算法,在指令层次上很难解决DSP的这一弱点。只有在具体的算法中,对逻辑判断集中的一段程序进行硬件设计,才能做到比DSP高得多的效率。站在CPU的角度上看,CPU可以象调用软件函数一样来调用FPGA,而速度象汇编语句一样快。这样有效地克服了CPU的指令层次上效率低的弱点。又比如,矩阵乘法:



两个矩阵相乘,可以先分解为两个向量的乘法,如公式(1),继续分解为两个标量的乘法,如公式(2)。CPU的指令集只能做标量乘法,在这个层次上很难大幅度提高矩阵乘法的效率。如果用FPGA设计一个向量乘法器,则可以少MN(2K-2)条指令。如果订做一个矩阵乘法器,可以少NM(2K-1)-1条指令。

2.3 FPGA作为协处理器设计的原则

一般来讲,FPGA适合完成函数级的任务,比如矩阵乘法、查表法等。实际中,一个复杂的任务要做的处理比较多,我们不大可能把每个函数都硬件化,给FPGA分配怎样的任务才算恰当呢?在确定协处理器的任务时要整体把握,确定影响整体速度的瓶颈是哪部分,选择最有潜力可挖的部分。硬件分担的任务不是越多越好,这里面要综合考虑FPGA设计的难度,系统的实际要求等。FPGA的任务太多,可调用性变差,如果只能被调用很少的几次,它对整体速度的提高就不会有多少贡献,而且会增加FPGA设计的工作量。在直线提取的例子中,我们必须对算法框图各部分有较清楚的认识,看到判断两跑码的连通性要经常调用,而且DSP完成该函数效率不高,这两点是采用协处理器完成该函数的两个必要条件。C40的一个指令周期为50ns,如果不算调用函数时的堆栈操作,完成该函数至少需13个指令周期。而FPGA只需25.5ns就可完成。对于一幅512×512的图像,设一行里有150个跑码,平均每个跑码调用3次该函数,每调用一次FPGA比原来节省10个周期,则一帧图像可节省:

  512×150×3×10×50ns=0.115s

在实际测试中,整体的运行时间比原来快了0.15s左右。

FPGA作为协处理器在相位编组算法的实现中得到了成功的应用。在较为复杂的处理中,我们可以将任务分解为上下层关系,下层简单而规则并且大量重复使用的工作交给FPGA完成,软件在上层调用它,从而提高了系统整体的处理速度。这里面,FPGA与传统协处理器相比更加灵活,这种灵活性不仅体现在FPGA可以更加帖近具体的算法进行设计上,而且依据可重构的思想,我们可以在不同的时间段上对FPGA加载不同的功能函数,系统资源从而得到了充分利用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top