【FPGA/图像处理】生成器-帧控制2

少女dtysky

世界Skill

时刻2015.05.26

图像处理理系列文章基本都是我本科毕设论文同步发布,这个项目以LGPL许可被发布在F-I-L。和前面的帧控制器不同,这里的帧控制器主要为几何变换服务。几何变换操作的基本要素不是像素的色彩信息,而是它们的坐标信息,所以需要提供一个以坐标为输入的帧控制器,让几何变换模块可以控制帧缓存。本节将介绍如何实现一个以坐标为输入的帧控制器。
这个IP核的资源在这里:
FrameController2


3 算法实现

明确了设计和架构,便可以进行算法的实现。本章将会说明如何实现图像处理的算法,以及如何运用它们。

3.15 生成器-帧控制2

和前面的帧控制器不同,这里的帧控制器主要为几何变换服务。几何变换操作的基本要素不是像素的色彩信息,而是它们的坐标信息,所以需要提供一个以坐标为输入的帧控制器,让几何变换模块可以控制帧缓存。本节将介绍如何实现一个以坐标为输入的帧控制器。

3.15.1 原理

与3.2一致,此处的帧控制器也是以改变RAM地址和控制使能信号来实现的,但地址的来源不是模块内部的计数器,而是外部输入的坐标,所以需要一个部分将坐标转换为地址,如式3-15-1所示,x为横坐标,y为纵坐标,width为图像宽度,address为输出地址,可见这实际上是一次乘法运算和一次加法运算的结合,所以需要用到乘法器。同时考虑到加法实际上可以看做最多12位的加法,所以可以不用专用加法器,交给综合器自行处理。

address=widthy+x        (3151)address=width * y + x\ \ \ \ \ \ \ \ (3-15-1)

3.15.2 设计

根据原理可知,FrameController2核(以下简称FR2核)需要一个乘法器,所以需要的配置参数、端口和子模块如表3-15-1、表3-15-2和表3-15-3。

名字 类型 范围 默认值 说明
work_mode 无符号 0为流水线模式,1为请求响应模式 0 模块的工作模式。
wr_mode 无符号 0为写,1为读。 0 模块的读写模式。
data_width 无符号 1 - 12 8 数据位宽。
im_width 无符号 1 - 4096 320 图像宽度。
im_height 无符号 1 - 4096 240 图像高度。
im_width_bits 无符号 取决于图像宽度 9 图像宽度的位宽。
addr_width 无符号 取决于图像的宽度和高度。 17 存储帧缓存的RAM的地址位宽。
ram_read_latency 无符号 0 - 15,取决于RAM。 2 RAM的读延迟,在Xilin器件中,典型为2。
mul_delay 无符号 乘法器延迟。 3 乘法器的延迟,取决于配置。
表3-15-1 配置参数


名字 端口 类型 范围 默认值 说明
clk 输入 无符号 Clock.
rst_n 输入 无符号 复位,低有效。
in_count_x input 无符号 im_width_bits - 1 : 0 图像宽度计数输入。
in_count_y input 无符号 im_width_bits - 1 : 0 图像高度输入计数。
in_enable 输入 无符号 输入数据使能,在流水线模式下,它是另一个复位信号,在请求响应模式下,只有在它有效的时候in_data才会被真正地改变。
in_data 输入 无符号 color_width * in_window_width * in_window_width - 1 : 0 输入数据,必须和in_enable同步输入。
out_ready output 无符号 输出数据有效,在两种模式下,这个信号都会在out_data可以被读取的时候有效。
out_data output 无符号 color_width - 1 : 0 输出数据,将会和out_ready同步输出。
ram_addr output 无符号 addr_width - 1 : 0 输出到RAM的地址。
表3-15-2 端口

名字 类型 说明
Mul Multiplier12x12FR2 12位无符号数和12位无符号数的乘法器,用于得出帧地址。你可以自己配置乘法器,随后改变配置参数中的延迟。你不能改变端口的配置!
表3-15-3 子模块

3.15.3 实现

根据3.15.2的设计便可以实现一个FR2核,流水线模式和请求响应模式实现如下。

3.15.3.1 流水线模式写入

输入使能后乘法器延迟+1个周期第一个结果被输出,开始流水化工作,波形如图3-15-1。

图3-15-1 流水线模式时序
图3-15-1 流水线模式时序

3.15.3.2 流水线模式读取

输入使能后乘法器延迟+2个周期第一个结果被输出,开始流水化工作,波形如图3-15-2。

图3-15-1 流水线模式时序
图3-15-1 流水线模式时序

3.15.3.3 请求响应模式写入

基本与3.15.3.1一致,但只有in_enable的上升沿时才会有计数值和数据被输入,波形如图3-15-3。

图3-15-3 请求响应模式时序
图3-15-3 请求响应模式时序

3.15.3.4 请求响应模式读取

基本与3.15.3.2一致,但只有in_enable的上升沿时才会有计数值和数据被输入,波形如图3-15-4。

图3-15-4 请求响应模式时序
图3-15-4 请求响应模式时序

3.15.3.3 IP核GUI

完成功能后对FR2核进行了封装,封装如图3-15-5。

图3-15-5 FR2核的GUI
图3-15-5 FR2核的GUI

3.15.4 仿真

FR2核没有软件仿真,将原始图像作为比较源进行PSNR测试,仿真结果如图3-15-6所示。

图3-15-6 仿真结果
图3-15-6 仿真结果,左侧为流水线模式下的HDL功能仿真结果,中间为请求响应模式下的HDL功能仿真结果,右侧为软件仿真结果

3.15.5 资源和时序

最终实现与乘法器配置和数据位宽有关,这里只分析使用DSP并且数据位宽为8的状况,根据Vivado生成的报表,主要资源耗费如表3-15-4。

Slice LUTs* Slice Registers DSP
38 64 1
表3-15-4 主要资源耗费

同时根据时序报告,最大的Data Path Delay(数据路径延迟)为2.485ns,即:

FMax = 402.41MHz

即说明,FR2核在流水线模式下,理论上在处理1080p全高清图像时可以达到194帧。
由于数据路径延迟和应用的最终约束设置强相关,所以仅供参考。

3.15.6 分析与结论

PSNR如表3-15-5。

1 2 3 Total
1000000.00 1000000.00 1000000.00 1000000.00
表3-15-5 PSNR

PSNR均值为最大值,FR2核与软件等效,同时可以达到很高的FMax,设计成功。


参考文献


感谢

仿真图像来源:
月岡月穂-ゆらゆら
LM7-oxford eleKtricity
cotta-池

如果不是自己的创作,少女是会标识出来的,所以要告诉别人是少女写的哦。