概述
本章节准备把过解码后的RGB和行场同步信号进行像素信息统计(pixel_message子模块)。由行场同步及de信号可以算出每一帧图像里,行同步有多少,场同步有多少,这就是接收到的视频的像素值。
二、pixel_message模块解析
此模块是一个用于视频时序参数测量模块。通过监测视频同步信号(h_sync、v_sync)和数据有效信号(de),自动计算并输出每行有效像素个数(水平分辨率)和每帧有效行数(垂直分辨率)。该模块用于动态获取输入视频的分辨率信息。
1、模块接口列表:
2、模块功能描述:
模块内部设计两个计数器:
行计数器h_cnt:在 de 为高时每个时钟递增,de 为低时清零。因此 h_cnt 在每个有效行内从 0 开始递增,当 de 变为低时,其值恰好等于该行的有效像素数量。
场计数器v_cnt:在每行有效像素结束(de 下降沿)时递增 1;在 v_sync 上升沿时清零。因此 v_cnt 表示当前帧内已处理的有效行数。
输出寄存器 o_h_cnt 和 o_v_cnt 分别在以下时刻捕获计数器的值:
o_h_cnt:在 de 下降沿(de_reg1 && de0)锁存 h_cnt,即保存每行的宽度。
o_v_cnt:在 v_sync 上升沿(v_sync1 && v_sync_reg0)锁存 v_cnt,即保存上一帧的高度。
通过这种方式,外部逻辑可以随时读取 o_h_cnt 和 o_v_cnt 获取当前视频流的分辨率信息。
3、例程时序分析:
假设输入视频标准为(1024x768@60Hz)。此时每行有效像素数为1024,每帧的有效行数为768。每秒60帧。
行内时序:
de 为高期间,h_cnt 从 0 递增至 1023。
当 de 变为低时,h_cnt 被清零,同时 o_h_cnt 锁存为 1024。
帧内时序:
每完成一行(de 下降沿),v_cnt 递增 1。
当 v_sync 上升沿到来时,v_cnt 已被递增至 768,此时 o_v_cnt 锁存为 768,同时 v_cnt 清零,准备下一帧。
此过程在每个视频帧中循环进行,输出寄存器始终保持当前帧的最新分辨率。
三、模块示例代码
module pixel_message(
input wire pix_clk ,
input wire rst_n ,
input wire h_sync ,
input wire v_sync ,
input wire de ,
output reg11:0 o_h_cnt ,
output reg11:0 o_v_cnt
);
reg h_sync_reg ;
reg v_sync_reg ;
reg de_reg ;
reg11:0 h_cnt ;
reg11:0 v_cnt ;
//h_sync_reg
always@(posedge pix_clk)
if(rst_n==1'b0)
h_sync_reg <= 1'b0;
else
h_sync_reg <= h_sync;
//v_sync_reg
always@(posedge pix_clk)
if(rst_n==1'b0)
v_sync_reg <= 1'b0;
else
v_sync_reg <= v_sync;
//de
always@(posedge pix_clk)
if(rst_n==1'b0)
de_reg <= 1'b0;
else
de_reg <= de;
//h_cnt
always@(posedge pix_clk)
if(rst_n1'b0)
h_cnt <= 0;
else if(de1'b0)
h_cnt <= 0;
else if(de==1'b1)
h_cnt <= h_cnt+1'b1;
//o_h_cnt
always@(posedge pix_clk)
if(rst_n1'b0)
o_h_cnt <= 0;
else if(de1'b0&&de_reg==1'b1)
o_h_cnt <= h_cnt;
//v_cnt
always@(posedge pix_clk)
if(rst_n1'b0)
v_cnt <= 0;
else if(v_sync1'b1&&v_sync_reg1'b0)
v_cnt <= 0;
else if(de1'b0&&de_reg==1'b1)
v_cnt <= v_cnt+1'b1;
//o_v_cnt
always@(posedge pix_clk)
if(rst_n1'b0)
o_v_cnt <= 0;
else if(v_sync1'b1&&v_sync_reg==1'b0)
o_v_cnt <= v_cnt;
endmodule
四、总结
通过对HDMI的输入视频信号的解码和数据分析,得到了实时地动态像素。这个实时像素输出到外部,可以工外部逻辑使用。通过本实验,我们掌握了利用视频数据的行场同步信号和数据有效信号解析出视频像素。
本文章由威三学社威三学院出品
对课程感兴趣可以私信联系