RGB Resampler IP核的测试
关于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核的测试的更多相关文章
- 关于Test--Pattern Generator IP核的测试
关于Test--Pattern Generator IP核的测试 1.Test--Pattern Generator 功能介绍 生成24-bit RGB视频流,此IP核可以用于系统测试,不需要先在片上 ...
- vivado设计四:自定义IP核测试
在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...
- 调用altera IP核的仿真流程—下
调用altera IP核的仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile All是 ...
- Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置
本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...
- 基于AXI4总线卷积FPGA加速IP核的尝试
本文先总结不同AXI IP核的实现的方法,性能的对比,性能差异的分析,可能改进的方面.使用的硬件平台是Zedboard. 不同的AXI总线卷积加速模块的概况 这次实现并逐渐优化了三个版本的卷积加速模块 ...
- IP核之初——FIFO添加以太网MAC头部
本文设计思路源自明德扬至简设计法.在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的.我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人 ...
- 7 Series GTP IP核使用总结 IP核配置篇
FPGA内嵌收发器相当于以太网中的PHY芯片,但更灵活更高效,线速率也在随着FPGA芯片的发展升级.本文对7系列FPGA内部高速收发器GTP IP核的配置和使用做些简单的总结,以备后续回顾重用.本文是 ...
- 7系列高速收发器总结 GTP IP核使用篇
上一篇7系列收发器博文讲解了GTP IP核的基本配置,本文继续分析如何将它使用起来.生成IP核后打开example design,先看看工程中包含的文件结构. 顶层文件下包含了gtp ip核系统顶层文 ...
- 浅析Xilinx 三速以太网MAC IP核
之前在使用Altera的三速以太网MAC IP的基础上,完成了UDP协议数据传输.此次为了将设计移植到xilinx FPGA上,需要用到xilinx的三速以太网MAC IP核,当然也可以自己用HDL编 ...
随机推荐
- 点击图片video全屏
<!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...
- ubuntu: firefox+flashplay
更新两步: 1.安装firefox:rm-->下载-->mv-->ln http://www.cnblogs.com/yzsatcnblogs/p/4266985.html 2. f ...
- linux shell 中文件编码查看及转换方法
参考: http://edyfox.codecarver.org/html/vim_fileencodings_detection.html 一.查看文件编码. 在打开文件的时候输入:set ...
- jQuery 中json字符串与对象互转
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串:JSON.stringify(jsonObj);
- APK模式下,epg版本升级,需要做同步
采用安卓盒子(APK模式),需要在管理节点做一个同步: 同步目录: /var/www/html/upgradestb 从管理节点向三台业务节点同步: 2018/01/19 conf/server.co ...
- websocket介绍 以及 vue websocket使用案例
1 介绍: https://www.zhihu.com/question/20215561 2 案例: https://www.jianshu.com/p/0d20a032d0ec (坑说明). ht ...
- try catch之ajax调错
- net框架平台下RPC框架选型
net RPC框架选型 近期开始研究分布式架构,会涉及到一个最核心的组件:RPC(Remote Procedure Call Protocol).这个东西的稳定性与性能,直接决定了分布式架构系统的好坏 ...
- RESTful规范(一)
一.学习restframework之前准备 1.json格式若想展示中文,需要ensure_ascii=False import json dic={'name':'你好'} print(json.d ...
- 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列
微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...