关于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. Java虚拟机的组成

    Java虚拟机主要分为以下五个区: 一.方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2. 方法区主要用 ...

  2. 获取Map的key和value的两种方法

    //使用迭代器,获取key; /*Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext()){ Strin ...

  3. Power BI新主页将使内容的导航和发现变得轻而易举!

    微软Power BI 将在近日发布Power BI Home登陆页面的公开预览以及Power BI服务中的新全局搜索功能.登录页将成为所有内容的一站式集合,并提供更快捷的方式来分享你的仪表板.原来在左 ...

  4. 2.7 多窗口、句柄(handle)

    2.7 多窗口.句柄(handle) 前言   有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在 ...

  5. n 中选 m —— 随机采样的艺术

    0,1,2-n-1,n 个数中随机取 m 个数,要求 0, 1, n-1,此 n 个数每个数被取到的概率相同: Knuth 书中的随机化方法,很容易写出: void genkunth (int n, ...

  6. Pacman命令介绍

    用pacman很久了,一直没有深入去研究到底它包含多少神秘的力量,每次都是pacman -Syu就简单的把所有升级更新问题搞定实在是让笔者懒惰了很多.不过也正是因为pacman的简单让笔者爱不释手,同 ...

  7. Android内核sys_setresuid() Patch提权(CVE-2012-6422)

    让我们的Android ROOT,多一点套路. 一.简单套路 CVE-2012-6422的漏洞利用代码,展示了另一种提权方法.(见附录) 这也是一个mmap驱动接口校验导致映射任意内核地址的洞.将内核 ...

  8. CSS使用方法

    CSS行内样式: 在开始标签内添加style样式属性 如:<p style="color:red;">内容</p> CSS内部样式: 内部样式(嵌入样式), ...

  9. c# 委托初用法

    public delegate void Print(string printStr); public static void DelegateMethod(string printStr) { Co ...

  10. spring+springMVC,声明式事务失效,原因以及解决办法

    http://blog.csdn.net/z69183787/article/details/37819627#comments 一.声明式事务配置: <bean id="transa ...