关于RGB Resampler IP核的测试

1.RGB Resampler功能描述

将输入的RGB数据流转换成其它格式的RGB数据流。

2.功能验证

设置源图像像素数据为:3X4格式。

设置RGB Resampler参数如下图所示,将24-bit RGB格式转换为40-bit RGBA格式。

顶层文件的编写:

 module top(
clk_clk,
reset_reset_n,
video_rgb_resampler_avalon_rgb_source_ready,
video_rgb_resampler_avalon_rgb_source_startofpacket,
video_rgb_resampler_avalon_rgb_source_endofpacket,
video_rgb_resampler_avalon_rgb_source_valid,
video_rgb_resampler_avalon_rgb_source_data,
); input clk_clk;
input reset_reset_n;
input video_rgb_resampler_avalon_rgb_source_ready;
output video_rgb_resampler_avalon_rgb_source_startofpacket;
output video_rgb_resampler_avalon_rgb_source_endofpacket;
output video_rgb_resampler_avalon_rgb_source_valid;
output [:]video_rgb_resampler_avalon_rgb_source_data; RGB_format u1 (
.clk_clk (clk_clk),
.reset_reset_n (reset_reset_n),
.video_rgb_resampler_avalon_rgb_source_ready (video_rgb_resampler_avalon_rgb_source_ready),
.video_rgb_resampler_avalon_rgb_source_startofpacket (video_rgb_resampler_avalon_rgb_source_startofpacket),
.video_rgb_resampler_avalon_rgb_source_endofpacket (video_rgb_resampler_avalon_rgb_source_endofpacket),
.video_rgb_resampler_avalon_rgb_source_valid (video_rgb_resampler_avalon_rgb_source_valid),
.video_rgb_resampler_avalon_rgb_source_data (video_rgb_resampler_avalon_rgb_source_data)
); endmodule 

Testbench的编写:

initial
begin
reset_reset_n = ; #; reset_reset_n = ;
clk_clk = ; forever # clk_clk = ~clk_clk;
end always@(posedge clk_clk or negedge reset_reset_n)
if(!reset_reset_n)
video_rgb_resampler_avalon_rgb_source_ready = 'b0;
else
video_rgb_resampler_avalon_rgb_source_ready = 'b1;

ModelSIM仿真波形:

波形分析: 输出source_data为40-bit,在start---end之间输出12个数据。

3.将224X224 24-bit RGB图像转换为40-bit RGBA 图像

参数配置:

modelsim仿真并导出modelsim中生成的图像像素数据:

integer w_file;
initial w_file = $fopen("video_rgb_resampler_avalon_rgb_source_data.txt");
always@(posedge clk_clk)
$fdisplay(w_file, "%d", video_rgb_resampler_avalon_rgb_source_data); 

40-bit RGBA数据格式:

在Matlab中进行数据处理:

fd = fopen('video_rgb_resampler_avalon_rgb_source_data.txt');
A =uint64(fscanf(fd,'%f'));
fclose(fd);
B = uint64(zeros(224,224)); A1 = uint64(zeros(50176,1));
A2 = uint64(zeros(50176,1));
A3 = uint64(zeros(224,224)); R1 = uint64(zeros(50176,1));
R2 = uint64(zeros(50176,1));
R3 = uint64(zeros(224,224)); G1 = uint64(zeros(50176,1));
G2 = uint64(zeros(50176,1));
G3 = uint64(zeros(224,224)); B1 = uint64(zeros(50176,1));
B2 = uint64(zeros(224,224)); for j = 1:224
for i = 1:224
B(j,i) = A((j-1)*224+i);
end
end % A---1111 1111 11 --- 0000 0000 00 --- 0000 0000 00 --- 0000 0000 00
% R---0000 0000 00 --- 1111 1111 11 --- 0000 0000 00 --- 0000 0000 00
% G---0000 0000 00 --- 0000 0000 00 --- 1111 1111 11 --- 0000 0000 00
% B---0000 0000 00 --- 0000 0000 00 --- 0000 0000 00 --- 1111 1111 11 a = uint64(bin2dec('1111111111000000000000000000000000000000'));
r = uint64(bin2dec('0000000000111111111100000000000000000000'));
g = uint64(bin2dec('0000000000000000000011111111110000000000'));
b = uint64(bin2dec('0000000000000000000000000000001111111111')); %---A
for i = 1:50176
A1(i) = bitand(A(i),a);
end for i = 1:50176
A2(i) = bitshift(A1(i),-30);
end for j = 1:224
for i = 1:224
A3(j,i) = A2((j-1)*224+i);
end
end %---R
for i = 1:50176
R1(i) = bitand(A(i),r);
end for i = 1:50176
R2(i) = bitshift(R1(i),-20);
end for j = 1:224
for i = 1:224
R3(j,i) = R2((j-1)*224+i);
end
end %---G
for i = 1:50176
G1(i) = bitand(A(i),g);
end for i = 1:50176
G2(i) = bitshift(G1(i),-10);
end for j = 1:224
for i = 1:224
G3(j,i) = G2((j-1)*224+i);
end
end %---B
for i = 1:50176
B1(i) = bitand(A(i),b);
end for j = 1:224
for i = 1:224
B2(j,i) = B1((j-1)*224+i);
end
end

需要注意的问题:

源文件中的数据值比较大,如果以十进制的方式读入数据,会出现如下问题:

如果以16进制的形式读入,则不会出现此问题:

RGB Resampler IP核的测试的更多相关文章

  1. 关于Test--Pattern Generator IP核的测试

    关于Test--Pattern Generator IP核的测试 1.Test--Pattern Generator 功能介绍 生成24-bit RGB视频流,此IP核可以用于系统测试,不需要先在片上 ...

  2. vivado设计四:自定义IP核测试

    在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...

  3. 调用altera IP核的仿真流程—下

    调用altera IP核的仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile All是 ...

  4. Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置

    本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...

  5. 基于AXI4总线卷积FPGA加速IP核的尝试

    本文先总结不同AXI IP核的实现的方法,性能的对比,性能差异的分析,可能改进的方面.使用的硬件平台是Zedboard. 不同的AXI总线卷积加速模块的概况 这次实现并逐渐优化了三个版本的卷积加速模块 ...

  6. IP核之初——FIFO添加以太网MAC头部

    本文设计思路源自明德扬至简设计法.在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的.我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人 ...

  7. 7 Series GTP IP核使用总结 IP核配置篇

    FPGA内嵌收发器相当于以太网中的PHY芯片,但更灵活更高效,线速率也在随着FPGA芯片的发展升级.本文对7系列FPGA内部高速收发器GTP IP核的配置和使用做些简单的总结,以备后续回顾重用.本文是 ...

  8. 7系列高速收发器总结 GTP IP核使用篇

    上一篇7系列收发器博文讲解了GTP IP核的基本配置,本文继续分析如何将它使用起来.生成IP核后打开example design,先看看工程中包含的文件结构. 顶层文件下包含了gtp ip核系统顶层文 ...

  9. 浅析Xilinx 三速以太网MAC IP核

    之前在使用Altera的三速以太网MAC IP的基础上,完成了UDP协议数据传输.此次为了将设计移植到xilinx FPGA上,需要用到xilinx的三速以太网MAC IP核,当然也可以自己用HDL编 ...

随机推荐

  1. 后台返回json字符串 页面js报错 Uncaught SyntaxError: Unexpected identifier

    后台json字符串是 [{"name": "报销申请", "id": "start"}, {"name&quo ...

  2. Java 构造器Constructor 继承

    Java默认构造方法 构造方法作用:初始化所定义的类的对象和属性. 构造方法没有返回类型. 2 继承中的构造器 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式). 如果父类 ...

  3. sql数据查询基础笔记

    使用SELETE语句进行查询 语法 SELECT<列名> FROM<表名>  [ORDER BY <排序的列名>[ASC或DESC]] 1.查询所有的数据和列 SE ...

  4. Unity 3D接入ShareSDK流程2

    Unity开发VR之Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  5. xdoj-1298(模拟--简易SQL解释器)

    题目链接 一 知识点: 1  substr有2种用法:       假设:string s = "0123456789";      string sub1 = s.substr( ...

  6. pc端复制方法

    dom结构如下: <div id="btn">复制</div> <input id="content" type="te ...

  7. 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC

    静态布局:给页面元素设置固定的宽度和高度,单位用px,当窗口缩小,会出现滚动条,拉动滚动条显示被遮挡内容.针对不同分辨率的手机端,分别写不同的样式文件.例如:浏览器窗口是1000px,那么最小的宽度是 ...

  8. nginx屏蔽某一ip的访问

    假设我们想禁止访问nginx次数最多的ip访问我们的网站 我们可以先查出那个ip访问次数最多 awk '{print $1}' nginx.access.log |sort |uniq -c|sort ...

  9. drone 1.0 新的定时任务界面&&构建任务支持重启

    drone 1.0 的定时任务是一个不错的功能,早期的版本是必须使用cron 表达式的 最近发布的版本支持通过配置就可以了,很方便,只是目前比较简单的,支持小时. 天.周.月.年的模式 环境准备 do ...

  10. centos配置apache的https服务

    因为公司要开发微信小程序,由于小程序比较特殊,需要https服务,所以就研究了下apache的https服务了,大致过程如下: 1.向证书机构申请https证书,会得到证书和私钥 2.安装apache ...