关于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. 在SELECT的时候,加入一列固定值

    SELECT * FROM (select id id, si_code code, si_sharetype sharetype, si_name name, si_organid organid, ...

  2. JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;

    JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...

  3. PHP设计模式之工厂模式(转)

    概念 工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式. 使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地 ...

  4. 使用NATS替换NSQ为后台服务解耦

    简介 满世界的后台都在向微服务架构发展,我对微服务的理解是将一个复杂的业务分拆为多个服务,由多个服务协作完成一个服务:在后台微服务架构时需要考虑高可用.一致性等问题,也要考虑在实现上.编码上的复杂程度 ...

  5. tcp/ip网络里的客户端和服务器端 信息交流 与 安全

    ISP(Internet Service Provider) 互联网服务提供商, 即向广大用户综合提供互联网接入业务.信息业务.和增值业务的电信运营商. 通过wireshark学习tcp/ip. 用w ...

  6. annotation注释简单介绍

    元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类: l         编写文档:通过代码里标识的元数据生成文档. l         ...

  7. Spring Boot 揭秘

    SpringBoot基础 微服务 解决大一统的服务化架构的问题 代码冲突问题 交付复杂,影响面大 测试困难 微服务的好处 可扩展性 隔离性 灵活性,多语言多技术生态 微服务的挑战 保持微服务的互通性 ...

  8. stm32l071cbt6片内flash操作

    今天在看片内flash的操作,发现按照下面的操作并没有写成功: unsigned long temp = 0x12345678; HAL_FLASH_Unlock(); FLASH_PageErase ...

  9. 使用python查询某目录下所有‘jpg’结尾的图片文件

    调用os模块,先建立一个对目标目录的walk迭代器. 然后再对迭代器进行遍历,判断每个文件是否以'jpg'结尾. 若是,则输出. import os g = os.walk("G:" ...

  10. hibernate--DetachedCriteria(离线条件查询)

    一.叙述 离线条件查询的好处,可以在非dao层封装查询参数,封装完成后,将对象传递到dao层,关联到session后,再去查询数据,这样做dao层可以极大的简化代码.下面通过一个小案例,一起来感受一下 ...