下载app送18元彩金|第四章图像信号处理电路Verilog HDL代码的实现 3

 新闻资讯     |      2019-11-27 11:09
下载app送18元彩金|

  求出它们的最小值min Rsum Gsum Bsum 并判断出像素个数最多的区域 然后计算该区域的Rsum min Rsum Gsum Bsum Gsum min Rsum Gsum Bsum 和Bsum min Rsum Gsum Bsum 三个比值 这三个比值中有一个值为1 而且这三个比值可以在帧选信号为低电平时计算。对于YCbCr 是常用的数据格式可以采用选择电路把24bit的并行数据转化为16bit并行数据 也可以用2倍频时钟转化为8bit的数据。时钟复位之后状态机进入IDLE状态。为了对一幅图像进行统计和计算 通用的方法是存储一幅图像 这需要一个较大的SRAM 占用大量的硬件资源。DATA01状态结束后 状态机进入DATA02状态 在该状态用乘法器mul1计算b1 Cb 用乘法器mul2计算b2 Cr 并用加法器add1计算b1 Cb b2 Cr 在该状态结束时把加法器的计算结果存入寄存器Cr1中。如图4 7所示 为FIFO的管脚示意图。如公式 所示频域复用主要是为了计算矩阵 Cb1 Cr1 其中Cb和Cr是输入的色彩分量 Cb1和Cr1是调整后输出的色彩分量。首先需要计算出B12、B21、B23和B32 其中B21 B11 B31 即B21reg11 reg31 因此插值出中心处蓝色分量的计算公式类似 可以复用加法器。如图公式 为对比拉伸计算方法。在该电路模块中 主要是通过电路结构的优化 用更少的加法器实现乘法的运算。在DATA02状态 当行选信号下降沿来时 状态机进入PRE02状态 用乘法器mul1计算 状态结束时把计算结果赋值给mul out2 同时把Y赋值为Y 1。由于颜色校准是在数据流有效时进行的操作 在计算时只能采用频分复用的技术。最后把Y、Cb和Cr右移8位 就可以实现浮点的运算。状态机进入PRE04状态之后 用加法器计算mul out1 mul out2 状态结束时 把结果存储给变量Area 计算完成之后 状态机会进入IDLE状态。通过复用技术乘法器的数量从9个减少到5个 但同时使用了选择电路和倍频的时钟。DATA01和DATA02状态是对数据的数据进行处理的状态。首先判断输入亮度Y落在哪个分段函数中 用Verilog HDL语言中的case语句可以实现 具体就是判断Y的高位是否匹配特定字符。

  如公式 所示时域复用主要是为了计算矩阵 a1 a2 b1 b2 其中矩阵 cosθ sinθ sinθ cosθ 是调整图像的色调 矩阵 Kb Kr是为了调整图像的饱和度 这些参数都可以通过外部的I2C电路进行调整。是否是否是否是是否否是否帧选上升沿IDLEPRE03行选上升沿行选下降沿PRE04PRE02PRE01帧选下降沿帧选下降沿行选上升沿DATA02DATA01 棱镜校正状态机的ASM图第四章 图像信号处理电路Verilog HDL代码的实现 38 颜色插值模块电路的实现由于图像传感器输出的数据按行输出 先把第一行的数据依次输出 再把第二行的数据依次输出 一直到最后一行的数据。依次论推 当状态机PRE13结束时 状态机进入PRE14状态 用加法器add1和乘法器mul1计算公式k13 128 Y12 并把加法器add1的计算结果存入寄存器Y13中。由于在处理输入数据时需要乘法器的复用 因此控制该状态机状态转移的时钟是clk2x。对于二进制 若某个数X乘以2n n位正整数 则可以把X左移n位 就可以实现乘法操作。对于中心为不同颜色的5 5的模板 插值方法有所不同。对于不同的镜头模组 校准系数k是可调的 由外部的I2C总线控制系数k的读写。ispenable是电路的使能信号 高电平有效 若ispenable为低电平时 电路不工作。由于k1可以通过I2C总线进行调节 它的值一般在1到2之间 所以r1和r2的值会随着k1的变化而不同。由于乘法器的路径延迟要小于输入信号时钟周期的一半 所以可以对乘法第四章 图像信号处理电路Verilog HDL代码的实现 44 器采用频域复用技术。以此论推 直到把SRAM中最后一个地址的数据读出存储到寄存器 后用五个时钟周期 把每行的数据写入到SRAM中。RGB2YCbCr模块电路的实现为了实现小数的乘法 需要进行浮点运算。在该流水线处理中 为了实现SRAM的读写 需要一个2倍频的时钟clk2x。选择电路主要根据中心位置为不同颜色分量 选择不同第四章 图像信号处理电路Verilog HDL代码的实现 39 的加法器的输出 选择电路由第一行第一列位置滤光片的类型和部分加法电路构成。因此可以通过选择电路和除法器div1和div2完成该除法操作。状态机状态PRE14结束时 状态机进入PRE15状态 用加法器add1第四章 图像信号处理电路Verilog HDL代码的实现 45 和乘法器mul1计算公式 并把加法器add1的计算结果存入寄存器Y14 然后状态机进入IDLE状态 直到下一帧数据的到来。假设自动白平衡模块若不采用复用技术 需要除法器的数量是4个 需要乘法器的数量是3个 采用复用技术 需要乘法器的数第四章 图像信号处理电路Verilog HDL代码的实现 41 需要除法器的个数也是2个但同时可需要判断和选择电路。该复用技术可以有效地减少硬件电路的资源?

  在DATA01状态 用乘法器mul1计算a1 Cb 用乘法器mul2计算a2 Cr 并用加法器add1计算a1 Cb a2 Cr 在该状态结束时把加法器的计算结果存入寄存器Cb1。第六个clk1x时钟周期 先把寄存器reg10、reg20、reg30和reg40中的数据写入SRAM的第0个地址 然后再把SRAM中的第6个数据读出 并把数据存储在寄存器reg04、reg14、reg24和reg34中 在该周期还要把Bayer数据输入到缓存器reg44中。从图中可以看出Y分量的非线性变化较大 而Cb和Cr分量的非线性变化很小。该复用技术需要对中心位置像素为不同颜色分量都适合 因此需要在加法器的最后端加入选择电路。伽玛校正模块电路的实现如图3 所示为YCbCr色彩域的伽马校正输入输出的特性曲线。

  该操作可以过程完成数据的缓冲。对于YCbCr 0格式的数据由于色差分量和亮度分量的数据个数不相第四章 图像信号处理电路Verilog HDL代码的实现 40 是否否是帧选下降沿行选上升沿IDLECC DATA01CC DATA02 自动白平衡模块电路的实现自动白平衡模块主要是对一幅图像中满足一定条件的像素进行统计。计算参数Y0、Y1、„„、Y13和Y14可以采用时域复用。判断完成之后 由于add1和mul1前面有过多的选择器 如果还对其进行复用 无法满足后续电路的路径要求。第三步计算Y 77 Cb–43 Cr128 R–107 G–21 B。reg01reg02reg04reg03reg00reg21reg20reg22reg23reg24reg10reg11reg12reg13reg14reg30reg31reg32reg33reg34reg40reg41reg42reg43reg44ram ram19 10 ram 29 20 ram 39 30 5的二级寄存器rreg45到rreg01Bayer数据输入 颜色校准模块电路的实现颜色校准模块主要是为了实现乘法运算 若采用直接计算的方法 乘法器的数量需要9个 这将占用大量的电路资源。k1为正数 k1的取值范围为0到256 浮点位数是7 可以实现0到2之间部分小数的乘法运算。图像的统计需要计算每个像素的R 白平衡所规定的区域则计算Rsum赋值为Rsum Bsum赋值为BsumB。该电路模块主要是基于该原理进行。ispdout 15 是经过ISP处理的输出信号ispfrmvalid是输出信号的帧选信号 isplinevalid是输出信号的行选信号。状态机PRE01状态结束后 状态机进入PRE02状态 在该状态用乘法器mul1计算 Kb sinθ 用乘法器mul2计算Kr cosθ 该状态结束时 把乘法器mul1的计算结果存入寄存器b1中 把乘法器mul2的计算结果存入寄存器b2中。状态机中的PRE状态是预处理状态 在帧择信号上升沿来之后进行操作 必须在行选信号上升沿来之前操作完成!

  是否是否高电平是否否低电平是帧选上升沿IDLEPRE01PRE02DATA01DATA02行选上升沿行选上升沿行选信号帧选下降沿 色调和饱和度调整的ASM图在该模块电路中 使用状态机主要是为了节省乘法器和加法器的数量。为了简化电路设计 该电路模块只做Y分量的伽马校正 忽略Cb和Cr分量的伽马校正。在CC DATA02状态时 用乘法器mul1计算b3 用乘法器mul4计算c3B。白平衡计算还需要把一幅图像中所有的像素乘以这三个比值 正常的情况下需要三个乘法器。这就需要两倍频的时钟和同步FIFO对输出数据进行缓冲。为了方便SRAM的读写 采用一行SRAM 数据宽度为40bit。当行选信信号上升沿来之后 状态机进入DATA01状态 用乘法器mul1计算k Area 状态结束时 存放在寄存器mul out2中 并计算Area Area 2X 2X0 X赋值为X1。全局复位之后状态机进入IDLE状态 当帧选信号上升沿来临之后 状态机进入PRE01状态 用乘法器mul1计算k0 16 并把乘法器的计算结果存入寄存器Y0中。该电路模块采用的时域和频域复用技术可以有效地减少电路硬件资源的消耗。ispenable是电路的使能信号 高电平有效 若ispenable为低电平时 电路不工作。为了节省资源 需要图像传感器先拍出一幅图像 对该图像进行统计 把统计出来的参数用来计算第二幅图像的白平衡 第二幅图像统计出来的参数用来计算第三幅图像的白平衡!

  为了节省电路硬件资源 需要加法器的复用。PRE02状态结束后 如果行选信号上升沿有效 状态机进入DATA01 如果行选信号上升沿无效 状态机进入IDLE状态 一直等到行选信号上升沿来临 进入DATA01状态。第四章图像信号处理电路Verilog HDL代码的实现 36 clk2x是clk1x的倍频 它们属于同步时钟 主要是为了对电路进行频分复用和输出数据调整提供时钟。因此只能用乘法mul2和加法器add2来实现Y分量的伽马校正计算。状态机在时钟clk2x上升沿来时从CC DATA01状态进入CC DATA02状态。brb1212brr cos sin0cossin sin cossincos0KKKaabbKKK 1b2rb1b12121b2rr1raCaCCCaabbbCbCCC 如图46为色调和饱和度调整的ASM图 它一共有5个状态 第一个是IDLE状态 有两个预处理状态PRE01和PRE02 有两个数据处理状态DATA01和DATA02。为了简化电路运算和节省电路资源 该电路模块中采用了时域复用和频域复用的技术 其中时域复用和频域复用都可以节省电路的资源。为了简化运算把第三章节的公式 10中的把s1设置为0 把s2设置为1023 产生的公式如 所示11001 512 51202 102321023 YrYkYYrrY 其中Y表示输入的亮度Y1表示拉伸后的亮度值。为了实现如下公式 的计算需要一个乘法器 mul1 、一个加法器 add1 和一个减法器 sub1 在帧选信号上升沿来之时状态机进入PRE01状态 先用减法器sub1计算X X0 并存储给变量sub out1。状态机进入DATA02 用乘法器mul1开第四章 图像信号处理电路Verilog HDL代码的实现 37 始计算mul out1 Din 并用加法器add1和乘法器mul1 计算mul1 out1 Din Din 状态结束时把结果赋值给寄存器Dout。如图4 4所示 SRAM数据缓冲电路示意图。

  54665x12141413 16 16 32 64 32 32 32 32 64 64 64 64 128 128 128YkYkYYkYYkYYkYYkYYkYYYkYYkYYkYYkYYkYYkYYkYYkY 当行选信号为高电平开始伽马校正的计算。而第一行第一列位置滤光片的类型可以通过外部I2C电路进行配置。为了节省硬件资源 可以不用计算r1和r2的值 通过判断的方法替代r1和r2的计算。8798 016 16 1632 16 3264 16 64128 16 128160 16 160192 16 192160 16 224256 16 256320 16 3kYYkYYYkYYYkYYYkYYYkYYYkYYYkYYYYoutkYYYkYY 84 16 384448 16 448512 16 512640 16 640778 16 778996 16 9961024 YkYYYkYYYkYYYkYYYkYYYkYYY 其中Yx如公式 所示。为了实现5 5的矩阵 需要对四行像素的信息进行缓存 因此需要四行SRAM 每行SRAM的数据宽度为10bit。582行sifrmvalidsilinevalid752个clock第1行第2行第582行图4 棱镜校准模块电路的实现为了实现乘法器和加法器的复用 在棱镜校准模块中采用乘法器和加法器的复用。如图4 所示中心像素为绿色分量 则需要插值出蓝色分量和红色分量 蓝色分量和红色分量插值所用的方法 就以蓝色分量为例。为了实现小数的乘法 需要采用浮第四章 图像信号处理电路Verilog HDL代码的实现 42 点的运算。当PRE01状态结束后 状态机进入PRE02状态 用乘法器mul1和加法器add1计算公式k1 16 Y0 并把加法器add1的计算结果存入寄存器Y1中。状态机根据输入信号的特点 在输入信号无效时对两个矩阵的乘法做预处理 并存入到一个寄存器矩阵中 等到输入有效时 用乘法器和加法器对输入信号进行算术处理。由于伽马校正曲线是非线性 可以查表法或分段函数的方法来实现。通过上述公式可得 Y0、Y1、„„、Y13、Y14会随斜率k0、k1、„„、k14和k15的变化而变化 因此对于每帧数据的开头 都需要计算Y0、Y1、„„、Y13和Y14。为了实现颜色的插值 需要对图像传感器中输出的数据进行缓存 以保证像素矩阵的实现。第二步对于红色分量需要计算77 128G–21 B。

  当empty管脚为高电平时 停止读操作。当帧选信号上升沿来临之后 状态机进入PRE01状态 用乘法器mul1计算Kb cosθ 在该状态用乘法器mul2计算Kr sinθ 该状态结束时把乘法器mul1的计算结果存入寄存器a1 把乘法器mul2的计算结果存入寄存器a2。端口scl和sda 是I2C总线 其中scl是时钟端口 sda为数据端口。br28YRCGBC 对比度拉伸模块电路的实现对于不同的应用领域 需要调整图像的对比度。如图4 3所示 为棱镜校准状态机的ASM图。该复用技术可以有效地减少硬件电路的资源?

  当k1 512512的计算结果小于0时 Y1被赋值为0 512512的计算结果大于1023时 Y1被赋值为1023。由于该计算是对R、G和B分量分别乘以固定常数 因此可以通过加和的方法实现乘法运算。同理 插值出中心处红色分量的方法也相似 也可以实现加法器的复用。当行选信号上升沿来之后 Bayer数据用寄存器reg40、reg41、reg42、reg43和reg44先进行缓冲 同时对SRAM进行读操作 五个clk1x时钟周期之后 SRAM中每行的第一个数据到达寄存器reg00、reg10、reg20、reg30和reg40。第七个clk1x时钟周期 先把寄存器reg10、reg20、reg31和reg41中的数据写入SRAM的第1个地址 然后再把SRAM中的第7个数据读出 并把数据存储在寄存器reg04、reg14、reg24和reg34中 在该周期还要把Bayer数据输入到缓存在reg44中。如图4 5所示 为颜色校准模块中状态机的ASM图。ispdout 15 是经过ISP处理的输出信第四章图像信号处理电路Verilog HDL代码的实现 36 clk2x是clk1x的倍频 它们属于同步时钟 主要是为了对电路进行频分复用和输出数据调整提供时钟。为了实现小数的乘法 计算过程中采用浮点计算的方法。它一共包含7个状态 状态的转移由帧选信号的上升沿和下降沿、行选信号的上升沿和下降沿控制。正常情况下 输出数据的格式的选择必须包含YCbCr 4数据格式如果把24bit数据宽度转换为8bit数据流 需要3倍频或3倍频以上的时钟 然而该电路设计中最高时钟频率为2倍频 因此只能把24bit数据宽度转换为16bit数据流。

  状态机进入PRE02状态 用减法器sub1计算Y Y0 用乘法器mul1计算sub out1 sub out1 状态结束时 把Y减去Y0存储给sub1 out 把sub out1 sub out1存储给变量mul out1。当行选上升沿来临时 状态机从IDLE状态进入CC DATA01状态 在该状态用乘法器mul1计算a1 并把这些计算结果存入寄存器中。首先 计算出R21和R23位置处蓝色分量的像素值 即B21和B23的值。用FPGA验证时 一个乘法器无法满足电路路径的要求 要多加一个乘法器。第一步 计算9 B。

  CC DATA01状态和CC DATA02状态的计算结果通过D触发器缓冲到clk1x时钟域 并把计算结果输出。计算B23的方法和计算B21的方法相同。如公式 Y表示输入的亮度Yout表示伽马校正后输出的亮度 k0、k1、„„、k14 k15表示分段函数中每段线性函数的斜率 可以通过I2C总线调整。因为三个比值中肯定有一个为1 因此可以通过选择电路和两个乘法器就可以完成该操作。为了不丢失数据 该FIFO的容量至少可以存储一行像素的数据宽度。用两倍频时钟clk2x把24bit数据转化为16bit数据 并把数据存入到FIFO中 存够一定数量的数据之后 用两倍频的时钟开始读FIFO里的数据。当求出与中心位置垂直和水平方向相邻的四个像素的值时 采用边缘判断插值方法对中心位置的像素进行插值 也可以对判断电路和加法电路进行复用的技术。在DATA02状态结束时 如果行选信号为高电平 状态机进入第四章 图像信号处理电路Verilog HDL代码的实现 43 DATA01状态 计算下一对输入数据 如果行选信号为低电平 当帧选信号下降沿无效时 状态机处于DATA02状态不变 如果行选信号为低电平 当帧选信号下降沿有效 状态机会进入IDLE状态 一直等到下一帧图像的来临。如公式 所示为8位浮点的计算方法。当中心像素分量为蓝色分量和中心像素为红色分量的插值方法相同 就以中心像素分量为红色为例。色调和饱和度调整模块电路的实现为了调整图像的色调和饱和度 需要用硬件电路实现第三章中关于色调和饱和度的算法。

  后续的状态以此循环 当帧选信号的下降沿来之后 状态机回到IDLE状态 一直等到下一帧数据的到来。为了节省电路资源 该模块电路采用分段函数的方法来实现。输出图像格式模块电路的实现为了使图像处理器可以应用于多种领域 输出数据的格式必须是可以选择的。B21 B11 B31 其中B11B10 B12 B31B30 B32 2。为了节省电路资源 需要对乘法器进行复用。依此计算方法计算出每个白平衡矩形区域的Rsum Gsum和Bsum。状态机进入PRE03状态后 用乘法器计算sub out1 sub out1 状态结束时把计算的结果存储在变量mul out2中。