FPGA算法映射要点

将图像处理的算法转换为FPGA系统设计的过程称为算法映射,CPU并行算法的实现与FPGA并行算法的实现是有必定区别的。
图片描述
<!-- more -->算法

1.算法系统结构

图像处理算法主要有两种设计结构:流水线结构和并行阵列结构。函数

1.1 流水线结构

在我看来,流水线结构和咱们以前所理解的CPU的串行结构仍是有必定区别的。相反,它与处理器的流水线结构很类似,都是依照时钟来进行流水层级的同步。
图片描述spa

1.2并行阵列结构

|--Data1--->Data1-->Data1
            |
InputData------Data2--->Data2-->Data2
            |
            |--Data3--->Data3-->Data3

2.算法转换

2.1 定常数转换

对于FPGA而言,作加法与移位较为简单,而涉及到乘法与除法时须要调用到乘法器或除法器,这在FPGA中是较为宝贵的资源,因此做为定常数,咱们尽可能转换为移位和加法运算,如:设计

ex1:
        dout = din * 255
转换后
        dout = ( din << 8 ) - din

ex2:
        dout = din * 11
转换后:
        dout = din * 2^2 + din * 2^3 - din * 2^0
             = din * (2^2 + 2^3 - 2^0)

上式中的255 和 11就是定常数code

2.2 不等式等效转换

进行转换的目的也是为了在FPGA实现后可以更加节省资源。如:图片

ex1:
        √a ̄  < b, a > 0
转换后:
        b^2 > a

ex2:
        a/b > c/b (b > 0, d > 0)
转换后
        a * d > b * c

2.3 取近似值

最简单的近似值莫过于四舍五入,假如某数据D[-1~4]为整数部分,D[3~0]为小数部分,那么四舍五入可为:资源

assign dout = din[3]?(dout[-1~4] + 1) : (dout[-1~4])

泰勒公式定义
图片描述
那么就能够有以下近似转换:同步

1/3 = 1/4 * (1 + 1/4 + 1/16 + 1/64 + 1/256)

3.构造查找表

查找表是使用简单的查询操做代替运行时的实时计算,使用查找表代替那些运行时常常须要用到的运算可以极大的减小时间复杂度,如咱们常常用到的三角函数就应该使用查找表替换实时计算。it

原文地址 coderdock.com图像处理

相关文章
相关标签/搜索