论文部分内容阅读
FPGA(Field Programmable Gate Array)是现场可编程门阵列,支持在运行时改变其电路结构。随着FPGA的发展,单个FPGA芯片的逻辑资源已经突破了400万门。FPGA快速开发和并行计算的特性能使得FPGA应用越来越多,尤其是在高清图像处理或者是大量的高度并行数据计算的应用上。目前对FPGA使用都是在将FPGA设计成为一个固定功能的数据处理器,并没有更好的发挥FPGA最大的优点——现场可编程。本文的重点是研究FPGA动态配置机制并设计一个软硬件系统,由一个处理器和一个动态的FPGA加速器组成,通过动态配置将FPGA资源进行管理,实现FPGA的分时共享。一个面向机器视觉的硬件平台来验证和应用动态配置机制。在系统运行时通过CPU配置FPGA,更改FPGA所实现的功能,并在Linux系统中实现对FPGA资源的管理。动态配置可以实现多个应用程序对FPGA分时使用,提高FPGA的使用率,降低开发者使用难度。分析FPGA所有的配置方式,根据动态配置和机器视觉的需求,设计实现的硬件平台主要是由两部分组成,一部分是基于ARM CortexTM-A8的CPU-S5PV210。一部分是xilinx的XC6SLX150T FPGA。通过一组GPIO对FPGA状态进行控制。通过CPU的SPI接口来配置处于被动串行配置模式下FPGA。通过CPU的EBI(External BUS Interface)连接FPGA内部实现双端口RAM来实现CPU与FPGA之间数据通信。外围接口是针对机器视觉来设计。分析FPGA运行时的状态和分配模型,封装FPGA动态配置API的接口。最后设计并实现了一种可快速运算基于哈尔小波变换的KNN(K Nearest Neighbors)算法且具备可重构能力的硬件结构,应用在高质量轮廓提取算法中的纹理分类计算中,并在本文设计的平台上实现。该硬件结构通过增减哈尔小波变换组件即可适应不同维度样本的哈尔小波变换;对同样维度的样本的计算则可以通过调整并行度满足对逻辑资源和处理时间的不同需求。在轮廓提取算法运行到文理分类阶段时,通过动态配置的API调用KNN算法加速核,利用FPGA进行计算,然后将分类结果返回CPU完成后续计算。实验表明,本文设计的硬件和软件系统能够正确完成FPGA的动态配置和FPGA的资源管理。动态配置的时间为1.550秒,在不需要频繁配置FPGA的应用中,本面向机器视觉的FPGA动态配置软硬件平台能够提高系统效率。