【FPGA/图像处理】生成器-帧控制2
世界Skill
图像处理理系列文章基本都是我本科毕设论文同步发布,这个项目以LGPL许可被发布在F-I-L。和前面的帧控制器不同,这里的帧控制器主要为几何变换服务。几何变换操作的基本要素不是像素的色彩信息,而是它们的坐标信息,所以需要提供一个以坐标为输入的帧控制器,让几何变换模块可以控制帧缓存。本节将介绍如何实现一个以坐标为输入的帧控制器。
这个IP核的资源在这里:
FrameController2
3 算法实现
明确了设计和架构,便可以进行算法的实现。本章将会说明如何实现图像处理的算法,以及如何运用它们。
3.15 生成器-帧控制2
和前面的帧控制器不同,这里的帧控制器主要为几何变换服务。几何变换操作的基本要素不是像素的色彩信息,而是它们的坐标信息,所以需要提供一个以坐标为输入的帧控制器,让几何变换模块可以控制帧缓存。本节将介绍如何实现一个以坐标为输入的帧控制器。
3.15.1 原理
与3.2一致,此处的帧控制器也是以改变RAM地址和控制使能信号来实现的,但地址的来源不是模块内部的计数器,而是外部输入的坐标,所以需要一个部分将坐标转换为地址,如式3-15-1所示,x为横坐标,y为纵坐标,width为图像宽度,address为输出地址,可见这实际上是一次乘法运算和一次加法运算的结合,所以需要用到乘法器。同时考虑到加法实际上可以看做最多12位的加法,所以可以不用专用加法器,交给综合器自行处理。
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 | 乘法器的延迟,取决于配置。 |
名字 | 端口 | 类型 | 范围 | 默认值 | 说明 | 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的地址。 |
名字 | 类型 | 说明 |
---|---|---|
Mul | Multiplier12x12FR2 | 12位无符号数和12位无符号数的乘法器,用于得出帧地址。你可以自己配置乘法器,随后改变配置参数中的延迟。你不能改变端口的配置! |
3.15.3 实现
根据3.15.2的设计便可以实现一个FR2核,流水线模式和请求响应模式实现如下。
3.15.3.1 流水线模式写入
输入使能后乘法器延迟+1个周期第一个结果被输出,开始流水化工作,波形如图3-15-1。
图3-15-1 流水线模式时序
3.15.3.2 流水线模式读取
输入使能后乘法器延迟+2个周期第一个结果被输出,开始流水化工作,波形如图3-15-2。
图3-15-1 流水线模式时序
3.15.3.3 请求响应模式写入
基本与3.15.3.1一致,但只有in_enable的上升沿时才会有计数值和数据被输入,波形如图3-15-3。
图3-15-3 请求响应模式时序
3.15.3.4 请求响应模式读取
基本与3.15.3.2一致,但只有in_enable的上升沿时才会有计数值和数据被输入,波形如图3-15-4。
图3-15-4 请求响应模式时序
3.15.3.3 IP核GUI
完成功能后对FR2核进行了封装,封装如图3-15-5。
图3-15-5 FR2核的GUI
3.15.4 仿真
FR2核没有软件仿真,将原始图像作为比较源进行PSNR测试,仿真结果如图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 |
同时根据时序报告,最大的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 |
PSNR均值为最大值,FR2核与软件等效,同时可以达到很高的FMax,设计成功。
参考文献
感谢
仿真图像来源:
月岡月穂-ゆらゆら
LM7-oxford eleKtricity
cotta-池