当前位置: 首页 > news >正文

黄骅港引航站清华大学自动化系

黄骅港引航站,清华大学自动化系,近10天的时事新闻,移动端网站没有icp软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

软件版本:Anlogic -TD5.9.1-DR1_ES1.1

操作系统:WIN10 64bit

硬件平台:适用安路(Anlogic)FPGA

实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

目录

1 概述

1.1 RGB像素格式

2 程序设计

2.1 系统框图

2.2 TPG源码

3 RTL仿真

3.1 仿真激励文件

3.2 仿真结果


1 概述

TPG(video_test_pattern generator) 视频测试模式发生器用于产生测试数据,对视频数据通路测试。本课设计一个图像数据发生器,该模块能够产生不同颜色和样式的图像数据,并按顺序将RGB图像数据发送到有效显示区域。

1.1 RGB像素格式

    RGB是一种颜色标准,俗称三基色模式,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,是运用最广的颜色系统之一。像素点就相当于一个RGB灯,通过控制 R、G、B 这三种颜色的亮度就可以显示出各种各样的色彩。在显示器发明之后,从黑白显示器发展到彩色显示器,人们开始使用发出不同颜色的光的荧光粉(CRT,等离子体显示器),或者不同颜色的滤色片(LCD),或者不同颜色的半导体发光器件(OLED和LED大型全彩显示牌)来形成色彩,不管采用何种技术,都以红(R)、绿(G)、蓝(B)三个颜色作为基本的发光单元,通过控制光强度,组合出了人类视力所能感知的所有颜色。

常见RGB像素格式:

1、索引格式:

索引格式是比较老的格式,随着越来越高的视觉需求,索引格式基本不再被使用了,这里只做简单介绍。索引格式中bit存储的值并非是实际的R、G、B值,而是对应点的像素在调色板中的索引,即在图像文件中划出一个区域存放一个调色板来存储图像中的每一种颜色,这个像素的颜色对应到调色板的第几号颜色。

RGB1:每个像素用1个bit表示,能够表示的索引范围是0-1,共2种颜色,即调色板中包含2中颜色。

RGB4:每个像素用4个bit表示,能够表示的索引范围是0-15,共16种颜色,即调色板中包含16中颜色。

RGB8:每个像素用8个bit表示,能够表示的索引范围是0-255,共256种颜色,即调色板中包含256中颜色。

2、像素格式:

RGB像素格式不同于索引格式,索引格式bit存储的是每一个像素的色彩索引,而像素格式中的bit用来存储像素点中R、G、B三个颜色的值。

RGB888:也叫RGB24,一个像素点由3个字节组成,共8bit*3=24bit。其中bit23~bit16是RED 通道,红色对应的值就是 24’hFF0000;bit15~bit8 是 GREEN 通道,绿色对应的值就是 24’h00FF00;bit7~bit0 是 BLUE通道,蓝色对应的值为 24’h0000FF,使用RGB888格式,理论上可以产生1670万种色彩。RGB888像素格式如下图所示:

RGB888 数据格式

RGB565:只需要两个字节,可以降低成本,RGB分量分别使用5bit、6bit、5bit,但在色彩鲜艳度上较差一些。

RGB555:只需要两个字节,RGB分量都使用5bit(最高位不用)。

RGB1555:只需要两个字节,RGB分量都使用5bit,1bit用于表示透明度(0完全透明,1完全不透明)。

我们可以通过电脑的“画图”工具,使用调色板即可获取到想要的颜色对应的数值。

2 程序设计

2.1 系统框图

本次实验通过测试视频发生器模块,产生测试图形,即彩条、渐变、纯色、棋方格,将相应测试图形的RGB数据依次放入有效的显示区域内。实验包含3个模块, VTC视频时序控制器模块、TPG视频测试模式发生器模块、用户控制模块。以下给出系统框图,关于VTC视频时序控制器驱动的详细描述请看前面的实验,我们主要学习TPG视频测试模式发生器驱动。

TPG视频测试模式发生器

视频数据的有效区域如下图所示:视频数据在H_AcitiveSize和V_AcitiveSize同时有效时候有效

I_tpg_ck:视频格式的像素时钟

I_tpg_vs:视频格式的场同步信号

I_tpg_hs:视频格式的行同步信号

I_tpg_de:视频格式的有效数据阶段

O_tpg_vs:同I_tpg_vs

O_tpg_hs:同I_tpg_hs

O_tpg_de:同I_tpg_de

O_tpg_data:rgb格式数据输出

计数器模块:

h_cnt计数器模块:I_tpg_de为高电平时,表示有效显示区域阶段,此时h_cnt列计数器开始计数,计数为H_ActiveSize的值。

v_cnt计数器模块:I_tpg_vs拉高表示一帧有效图像数据传输完成,v_cnt置0,否则,I_tpg_hs拉高表示传输完一行有效数据,v_cnt加1。

//h_cnt计数器模块
always @(posedge I_tpg_clk)h_cnt <= I_tpg_de ? h_cnt + 1'b1 : 12'd0; //计数行有效像素,当de无效,重置 h_cnt=0//v_cnt计数器模块
always @(posedge I_tpg_clk)if(I_tpg_vs) //通过vs产生同步复位v_cnt <= 12'd0; //重置v_cnt=0else v_cnt <= ((!tpg_hs_r)&&I_tpg_hs) ? v_cnt + 1'b1 : v_cnt; //hs信号的上升沿,v_cnt计数,这种方式可以不管hs有效是高电平还是低电平的情况,v_cnt 视频垂直方向,行计数器,计数行数量

测试图像产生模块:

使用状态机将我们要显示的所有样式的图形数据列举出来,通过不断累加的dis_mode,为了减慢显示变换图形样式的速度,取dis_mode高位值进行判断该显示何种图形。

黑白格:h_cnt[4]和v_cnt[4]进行“异或”运算,即相同为0,不同为1,再进行条件判断,0显示全黑,1显示全白。

RGB彩条:使用列计数器h_cnt,将有效显示区域划分为9块,分别显示不同的RGB数据。

//显示模式切换
always @(posedge I_tpg_clk)if(I_tpg_rstn==1'b0)dis_mode <= 0;else dis_mode <= ((!tpg_vs_r)&&I_tpg_vs) ? dis_mode + 1'b1 : dis_mode;//grid_data发生器  
always @(posedge I_tpg_clk)begingrid_data <= ((v_cnt[4]==1'b1) ^ (h_cnt[4]==1'b1)) ? 8'h00 : 8'hff; //方格大小16*16,黑白交替
end//RGB彩条发生器
always @(posedge I_tpg_clk)
beginif(h_cnt==260)color_bar   <=  24'hff0000;//红else if(h_cnt==420)color_bar   <=  24'h00ff00;//绿else if(h_cnt==580)color_bar   <=  24'h0000ff;//蓝else if(h_cnt==740)color_bar   <=  24'hff00ff;//紫else if(h_cnt==900)color_bar   <=  24'hffff00;//黄else if(h_cnt==1060)color_bar   <=  24'h00ffff;//青蓝else if(h_cnt==1220)color_bar   <=  24'hffffff;//白else if(h_cnt==1380)color_bar   <=  24'h000000;//黑elsecolor_bar   <=  color_bar;
end//测试图形输出
always @(posedge I_tpg_clk)begincase(dis_mode[10:7])//截取高位,控制切换显示速度4'd0:beginr_reg <= 0; b_reg <= 0;g_reg <= 0;end4'd1:beginr_reg <= 8'b11111111;               //白g_reg <= 8'b11111111;b_reg <= 8'b11111111;end4'd2,4'd3:begin//连续两个状态输出相同图形r_reg <= 8'b11111111;              //红g_reg <= 0;b_reg <= 0;  end           4'd4,4'd5:begin//连续两个状态输出相同图形r_reg <= 0;                         //绿g_reg <= 8'b11111111;b_reg <= 0; end                   4'd6:begin     r_reg <= 0;                         //蓝g_reg <= 0;b_reg <= 8'b11111111;end4'd7,4'd8:begin  //连续两个状态输出相同图形   r_reg <= grid_data;                 //方格g_reg <= grid_data;b_reg <= grid_data;end                   4'd9:begin    r_reg <= h_cnt[7:0];                //水平渐变g_reg <= h_cnt[7:0];b_reg <= h_cnt[7:0];end4'd10,4'd11:begin //连续两个状态输出相同图形r_reg <= v_cnt[7:0];                 //垂直渐变g_reg <= v_cnt[7:0];b_reg <= v_cnt[7:0];end4'd12:begin     r_reg <= v_cnt[7:0];                 //红垂直渐变g_reg <= 0;b_reg <= 0;end4'd13:begin     r_reg <= 0;                          //绿垂直渐变g_reg <= h_cnt[7:0];b_reg <= 0;end4'd14:begin     r_reg <= 0;                          //蓝垂直渐变g_reg <= 0;b_reg <= h_cnt[7:0];            end4'd15:begin     r_reg <= color_bar[23:16];           //彩条g_reg <= color_bar[15:8];b_reg <= color_bar[7:0];            end               endcase
end

2.2 TPG源码

/*******************************MILIANKE*******************************
*Company : MiLianKe Electronic Technology Co., Ltd.
*WebSite:https://www.milianke.com
*TechWeb:https://www.uisrc.com
*tmall-shop:https://milianke.tmall.com
*jd-shop:https://milianke.jd.com
*taobao-shop1: https://milianke.taobao.com
*Create Date: 2019/12/17
*Module Name:rgb_to_hdmi
*File Name:rgb_to_hdmi.v
*Description: 
*The reference demo provided by Milianke is only used for learning. 
*We cannot ensure that the demo itself is free of bugs, so users 
*should be responsible for the technical problems and consequences
*caused by the use of their own products.
*Copyright: Copyright (c) MiLianKe
*All rights reserved.
*Revision: 1.1
*Signal description
*1) I_ input
*2) O_ output
*3) IO_ input output
*3) S_ system internal signal
*3) _n activ low
*4) _dg debug signal 
*5) _r delay or register
*6) _s state mechine
*********************************************************************//*********uitpg(video test Pattern Generator)测试视频发生器***********
--版本号1.1
--以下是米联客设计的uitpg(video test Pattern Generator)测试视频发生器
--1.代码简洁,占用极少逻辑资源,代码结构清晰,逻辑设计严谨
--2.该测试视频发生器通过产生彩条、渐变、纯色、棋方格,产生测试图形
*********************************************************************/`timescale 1ns / 1ns//仿真时间刻度/精度module uitpg
(
input           I_tpg_clk, //系统时钟
input           I_tpg_rstn,//系统复位
input           I_tpg_vs,  //场同步输入
input           I_tpg_hs,  //行同步输入
input           I_tpg_de,  //视频数据有效输入   
output          O_tpg_vs,  //场同步输出
output          O_tpg_hs,  //行同步输出
output          O_tpg_de,  //视频数据有效输出    
output [23:0]   O_tpg_data //有效测试数据
);reg         tpg_vs_r   = 1'b0; //对vs信号寄存
reg         tpg_hs_r   = 1'b0; //对hs信号寄存
reg [7 :0]  grid_data  = 8'd0; //grid棋方格寄存器
reg [23:0]  color_bar  = 24'd0;//RGB 彩条寄存器
reg [10:0]  dis_mode   = 11'd0;//显示模式寄存器
reg [7 :0]  r_reg      = 8'd0; //红寄存器
reg [7 :0]  g_reg      = 8'd0; //绿寄存器
reg [7 :0]  b_reg      = 8'd0; //蓝寄存器always @(posedge I_tpg_clk)begintpg_vs_r <= I_tpg_vs; //对vs信号寄存一次tpg_hs_r <= I_tpg_hs; //对hs信号寄存一次
endreg [11:0]v_cnt = 12'd0; //视频垂直方向,行计数器
reg [11:0]h_cnt = 12'd0; //视频水平方向,列计数器//h_cnt计数器模块
always @(posedge I_tpg_clk)h_cnt <= I_tpg_de ? h_cnt + 1'b1 : 12'd0; //计数行有效像素,当de无效,重置 h_cnt=0//v_cnt计数器模块
always @(posedge I_tpg_clk)if(I_tpg_vs) //通过vs产生同步复位v_cnt <= 12'd0; //重置v_cnt=0else v_cnt <= ((!tpg_hs_r)&&I_tpg_hs) ? v_cnt + 1'b1 : v_cnt; //hs信号的上升沿,v_cnt计数,这种方式可以不管hs有效是高电平还是低电平的情况,v_cnt 视频垂直方向,行计数器,计数行数量//显示模式切换
always @(posedge I_tpg_clk)if(I_tpg_rstn==1'b0)dis_mode <= 0;else dis_mode <= ((!tpg_vs_r)&&I_tpg_vs) ? dis_mode + 1'b1 : dis_mode;//grid_data发生器  
always @(posedge I_tpg_clk)begingrid_data <= ((v_cnt[4]==1'b1) ^ (h_cnt[4]==1'b1)) ? 8'h00 : 8'hff; //方格大小16*16,黑白交替
end//RGB彩条发生器
always @(posedge I_tpg_clk)
beginif(h_cnt==260)color_bar   <=  24'hff0000;//红else if(h_cnt==420)color_bar   <=  24'h00ff00;//绿else if(h_cnt==580)color_bar   <=  24'h0000ff;//蓝else if(h_cnt==740)color_bar   <=  24'hff00ff;//紫else if(h_cnt==900)color_bar   <=  24'hffff00;//黄else if(h_cnt==1060)color_bar   <=  24'h00ffff;//青蓝else if(h_cnt==1220)color_bar   <=  24'hffffff;//白else if(h_cnt==1380)color_bar   <=  24'h000000;//黑elsecolor_bar   <=  color_bar;
end//测试图形输出
always @(posedge I_tpg_clk)begincase(dis_mode[10:7])//截取高位,控制切换显示速度4'd0:beginr_reg <= 0; b_reg <= 0;g_reg <= 0;end4'd1:beginr_reg <= 8'b11111111;               //白g_reg <= 8'b11111111;b_reg <= 8'b11111111;end4'd2,4'd3:begin//连续两个状态输出相同图形r_reg <= 8'b11111111;              //红g_reg <= 0;b_reg <= 0;  end           4'd4,4'd5:begin//连续两个状态输出相同图形r_reg <= 0;                         //绿g_reg <= 8'b11111111;b_reg <= 0; end                   4'd6:begin     r_reg <= 0;                         //蓝g_reg <= 0;b_reg <= 8'b11111111;end4'd7,4'd8:begin  //连续两个状态输出相同图形   r_reg <= grid_data;                 //方格g_reg <= grid_data;b_reg <= grid_data;end                   4'd9:begin    r_reg <= h_cnt[7:0];                //水平渐变g_reg <= h_cnt[7:0];b_reg <= h_cnt[7:0];end4'd10,4'd11:begin //连续两个状态输出相同图形r_reg <= v_cnt[7:0];                 //垂直渐变g_reg <= v_cnt[7:0];b_reg <= v_cnt[7:0];end4'd12:begin     r_reg <= v_cnt[7:0];                 //红垂直渐变g_reg <= 0;b_reg <= 0;end4'd13:begin     r_reg <= 0;                          //绿垂直渐变g_reg <= h_cnt[7:0];b_reg <= 0;end4'd14:begin     r_reg <= 0;                          //蓝垂直渐变g_reg <= 0;b_reg <= h_cnt[7:0];            end4'd15:begin     r_reg <= color_bar[23:16];           //彩条g_reg <= color_bar[15:8];b_reg <= color_bar[7:0];            end               endcase
endassign O_tpg_data = {r_reg,g_reg,b_reg};//测试图形RGB数据输出
assign O_tpg_vs = I_tpg_vs;  //VS同步信号
assign O_tpg_hs = I_tpg_hs;  //HS同步信号
assign O_tpg_de = I_tpg_de;  //DE数据有效信号endmodule

3 RTL仿真

3.1 仿真激励文件

`timescale 1ns / 1ns//仿真时间刻度/精度module video_test_tb;localparam SYS_TIME = 20;//系统时钟周期10nsreg I_vid_rstn,I_vid_clk;
wire O_vid_vs,O_vid_hs,O_vid_de;
wire [7:0]O_rgb_r,O_rgb_g,O_rgb_b;//例化video_test
video_test video_test_inst
(
.I_vid_clk(I_vid_clk),
.I_vid_rstn(I_vid_rstn),
.O_vid_vs(O_vid_vs),
.O_vid_hs(O_vid_hs),
.O_vid_de(O_vid_de),
.O_rgb_r(O_rgb_r),
.O_rgb_g(O_rgb_g),
.O_rgb_b(O_rgb_b)
);//初始化
initial beginI_vid_clk  = 1'b0;I_vid_rstn = 1'b0;#100;//产生100ns的系统复位I_vid_rstn = 1'b1;//复位完成
end
//产生仿真时钟
always #(SYS_TIME/2) I_vid_clk= ~I_vid_clk;endmodule

为简化仿真,这里模拟的视频格式为320*5 即一行的有效数据为350个像素,一帧数据有5行像素数据。

.H_ActiveSize(320),         //视频时间参数,行视频信号,一行有效(需要显示的部分)像素所占的时钟数,一个时钟对应一个有效像素,设置320个像素
.H_FrameSize(320+88+44+239),//视频时间参数,行视频信号,一行视频信号总计占用的时钟数 
.H_SyncStart(320+88),       //视频时间参数,行同步开始,即多少时钟数后开始产生行同步信号
.H_SyncEnd(320+88+44),      //视频时间参数,行同步结束,即多少时钟数后停止产生行同步信号,之后就是行数据有效数据部分
.V_ActiveSize(5),           //视频时间参数,场视频信号,一帧图像所占用的有效(需要显示的部分)行数量,通常说的视频分辨率即H_ActiveSize*V_ActiveSize
.V_FrameSize(5+4+5+28),     //视频时间参数,场视频信号,一帧视频信号总计占用的行数量
.V_SyncStart(5+4),          //视频时间参数,场同步开始,即多少行数后开始产生场同步信号 
.V_SyncEnd (5+4+5)          //视频时间参数,场同步结束,即多少行数后停止产生场同步信号,之后就是场有效数据部分

3.2 仿真结果

http://www.yayakq.cn/news/61939/

相关文章:

  • 我的世界找建筑网站山西省的网站
  • 四川哪家网站推广做的好网站描述和关键词怎么写
  • 企业网站的首页设计wdcp和wordpress
  • 快速的网站开发工具网店运营招聘要求
  • 手机网站设计公司优选亿企邦北京市保障房建设投资中心网站瘫痪
  • 做服务的网站吗做网站属软件什么专业
  • python 网站开发小项目wordpress调用摘要
  • wordpress修改网站地址肉部网站建设包括哪些
  • 网站开发公司专业wordpress标题不能空
  • 海口建设工程信息网站应用商店 安装
  • 温州城乡建设学校seo建站推广
  • 游戏网站排行wordpress模版如何汉化
  • 辛集seo网站优化公司iis网站服务器安全隐患
  • 外贸公司网站有哪些网站建设的行业市场的特点
  • 海南澄迈住房与建设厅网站江西建设厅网站电子
  • 南京网站建设服务公司网页设计与网站建设题库
  • 网站电话转化率网站建设目的功能
  • 网站标题是什么网站建设网页设计
  • 沈阳企业模板建站开发一款游戏需要多少钱
  • 网站备案主体注销大宗交易平台有哪些
  • 浙江建设职业技术学院尔雅网站网站架构策划
  • 上海网站建设运营站霸网络现在最火的社交电商平台
  • 我的世界查询建筑网站智能建造技术专业学什么
  • 重庆模板网站建设怎么样八宿县网站seo优化排名
  • 物流网站html5模板上海网站制作建设怎么样
  • 浏阳商务局网站溪江农贸市场建设广平网站建设
  • 代码错误网站淮南网约车平台
  • 链家网的网站开发费用大概多少钱企业网站维护存在问题
  • 网站推广公司运营模式网站建设与维护公司
  • 湖北省建设厅的网站全网黄页网站