扁平化 手机网站首页,网站界面设计规范,建筑木工招聘平台,怎么做营销网站推广软件版本#xff1a;Anlogic -TD5.9.1-DR1_ES1.1
操作系统#xff1a;WIN10 64bit
硬件平台#xff1a;适用安路(Anlogic)FPGA
实验平台#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板
板卡获取平台#xff1a;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 显示器发展
1.1.1屏幕显示技术的变化
1.1.2视频接口的变化
1.2 分辨率
1.3 刷新率
2 VGA成像原理及时序标准
3 像素时钟
4 VTC控制器设计
5 VTC源码
6 RTL仿真
6.1仿真激励文件
6.2仿真结果
7 常用系统分辨率 1概述
Video Timing Controller 缩写VTC是我们在所有涉及FPGA图像、FPGA视频类方案中经常用到的一种用于产生视频时序的控制器。本课以 VGA 为切入点学习视频传输的基本知识和相关概念以及视频时序的控制器的相关内容。
1.1 显示器发展
1.1.1屏幕显示技术的变化
显示器如今已经成为我们日常生活中不可或缺的一部分随着显示器技术的不断发展和创新从最早的黑白CRT到今天的MicroLED显示器行业已经发生了翻天覆地的改变为我们提供更好的视觉体验本章先和大家聊一聊显示器的发展历史。
CRT显示器
CRT的全称是Cathode Ray Tube即阴极射线管CRT显示器的成像原理是将输入的模拟信号经过放大变换后直接驱动电子枪扫描屏幕电子枪发射出来的电子光束撞击到在涂有荧光粉的屏幕上产生 RGB 三基色红、绿、蓝合成一个彩色像素电子光束由上到下、由左到右依次扫描屏幕从而形成图像。由于起初阴极射线需保证发射点到屏幕任何一点半径需等长所以屏幕就必须得是一个弧形而为了屏幕做大显示器的厚度也就越厚。 CRT显示器
液晶显示器
在CRT显示器飞速发展的几年期间也诞生了LCDLiquid Crystal Display液晶显示技术由众多细小的液晶颗粒按照矩阵的形式排布而组成的显示屏因此LCD显示屏的物理像素数量是确定的每个像素点的颜色都可以对应一个图像数据。图像数据是数字信号采用“电信号”显示方式通过在液晶层中加电改变对液晶像素点单元施加电压的电压大小使用色彩滤光片将白色光分解成红、绿、蓝三种基色的光然后通过液晶面板控制光的透过与阻挡从而显示出图像。LCD显示器的发展让显示设备彻底摆脱了厚重的机身也为便携式计算机的出现创造了可能。 LCD显示器
1.1.2视频接口的变化
显示器显示画面质量的好坏不仅与显示器有关还与视频接口有直接关系。 显示器接口是计算机与外部显示设备之间进行数据传输和连接的通道随着视频技术的发展人们对于视频画面质量的显示也提出了更高的要求这也推动了显示器视频接口的发展本文介绍几种常见的显示接口及其特点。 CVBS接口
CVBS将音频、视频分离的视频接口一般由三个颜色组成黄色的“V”代表连接混合视频信号白色的“L”代表左声道音频信号红色的“R”代表右声道的音频信号常用于电视、DVD等产品。 S-VIDEO接口
S-Video全称是Separate Video也称为Super Video将色度亮度分离的视频信号提高了稳定性。S-Video接口它实际上是一种五芯接口由两路视频亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成避免了视频设备内信号串扰而产生的图像失真极大地提高了图像的清晰度。 VGA接口
1987年第一台带有VGA模拟信号接口的显示器由IBM发布VGA接口是一种D型接口上面共有15针空分成三排每排五个它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)可以提供640 x 480分辨率的彩色显示屏一次可以显示16种颜色当把分辨率降低到320 x 200则显示256种颜色。VGA接口是显卡上应用最为广泛的接口类型从CRT显示器时代开始VGA接口就被使用并且一直沿用至今。由于液晶显示器发展比CRT显示技术晚模拟信号驱动的VGA接口已经在显示器上得到广泛的使用为了能够兼容传统的显示接口VGA液晶显示器通过内部电路实现了对VGA接口的完全兼容。
当使用VGA接口传输图像时生成的图像数字信息要先经过显示驱动芯片如显卡D/A数字/模拟转换器转换为R、G、B三原色信号和行、场同步信号由VGA线缆送到显示器的VGA接口对于CRT显示器这些模拟信号会直接被放大后用于驱动电子枪发射电子对于液晶显示器则需要使用A/D模拟/数字转换器将模拟信号再转换为数字信号后去驱动RGB接口的液晶显示屏显示图像。 DVI接口
由于VGA接口采用的是模拟信号传输在CRT显示器上使用时可以直接生成图像在LCD显示器使用时需要再配置A/D模拟/数字转换器而在D/A和A/D两次转换的过程中不可避免缺失一些图像细节。1999年Intel发明了高速传输数字信号的DVI接口设计的初衷是用来传输未经压缩的数字化视频相比VGA接口来说视频传输的清晰度更高。 HDMI接口
HDMI接口是高清多媒体接口也是现在的主流显示器接口可以同时传输未经压缩的视频、音频的数字信号。HDMI1可以传输108060Hz全高清的影像输出带宽达到4.85Gbps。到了2013年HDMI2.0版本推出带宽达到18Gbps可以支持4K60FPS画面输出。目前的HDMI2.1接口可提供48Gbps的带宽并且支持8K60Hz以及4K120Hz视频传输现阶段主要还是以HDMI2.0为主。 DP接口
DPDisplayPort接口可以同时传输视频、音频的数字信号相比HDMI接口DP接口拥有更大的带宽2009年的DP1.2接口的带宽达到21.6bps2016年推出的DP1.4接口带宽已经达到了32.4Gbps接近HDMI2.0接口带宽的2倍可以支持8K60Hz以及4K120Hz输出现在DP1.4接口已成为大部分显示器的标配接口。到了2019年DP2.0推出带宽达到80Gbps速度是HDMI2.1的1.6倍左右。 1.2 分辨率
当提及电子设备的显示器时就会提及一个词“分辨率”例如1080P分辨率、2K分辨率、4K分辨率分辨率是决定屏幕的清晰程度的重要参数。分辨率只是数学上的一个概念仅仅是用来表示横向和纵向有多少个像素点以1080P分辨率为例做说明它的意思是这块屏幕横向分布了1920列像素在纵向分为1080行像素那么一张分辨率为1920 x 1080的图像分辨率就达到了2073600像素分辨率越高所包含的像素就越多图像就越清晰它也会增加文件占用的存储空间。 1920 x 1080显示器的像素点排布
上图为1080P 显示器的像素点排布示意图X 轴是显示器的横轴Y 轴是显示器的竖轴图中的一个小方块就是一个像素点。2K 就是2560*1440个像素点4K就是3840*2160 个像素点。显示屏大小尺寸固定时显示分辨率越高图像越清晰比如看视频时我们可以选择视频的清晰度分辨率越高视频越清晰反之显示分辨率一定的情况下显示屏越小图像越清晰比如1080P的5寸的手机要比1080P的24寸显示器显示的图像细腻。 常见的显示屏分辨率标准 1.3 刷新率
刷新率FPSFrames Per Second单位为Hz即每秒传输图像的帧数帧数/s。每秒钟帧数 (FPS) 愈多一帧是静止的图象快速连续地显示不同帧便形成了运动的假象每秒钟帧数愈多所显示的动作就会愈流畅。例如60Hz的刷新率刷也就是指屏幕一秒内只扫描60次即60帧/秒。
2 VGA成像原理及时序标准
由上面显示器的发展介绍中我们了解到VGA标准兴起的时候模拟信号驱动的VGA接口已经在显示器上得到广泛的使用当时常见的彩色显示器一般由 CRT阴极射线管构成我们以白底的”米联客logo”为例将图片完全显示在CRT显示器有效区域上并对比现在大规模使用的液晶显示器来介绍显示器完整展现这幅图的各个阶段。
1、CRT显示器 一幅图像可以理解成由多个像素点从左向右依次平铺构成的CRT 显示器基于电子枪每次只能点亮一个像素点上的荧光粉类似我们看书的方式从页面的左上方开始逐字按行从左到右阅读显示一帧图像电子枪是按照‘Z’形在运动如上图红色箭头的运动方向当扫描速度很快的时候看起来就是一幅完成的画面了。
行扫描过程 行时序
CRT 显示器扫描是按照一行一行的方式进行的如上图红色实心箭头运动轨迹扫描完一行有效数据段之后不会立马返回而是会继续向右扫描一段区域这个区域称为右边界区域horizontal right border该区域不在有效的显示范围内对应的荧光屏玻璃上没有荧光粉也不能被点亮可以理解为显示器右边的黑边。同样显示器左边也有这样一段黑边在开始显示有效数据之前电子枪扫描到的这段区域也没有荧光粉不会显示图像, 这个区域称为左边界区域horizontal left border如上图所示的蓝色区域范围为边界区域
当电子枪扫描过了右侧没有荧光粉的边界区域后并不会自动回到最左边准备下一行而是需要有一个通知信号即行同步信号脉冲horizontal sync pulseHSYC。再没有收到行同步信号脉冲之前需要关闭电子枪以实现消隐这段时间就称为 horizontal front porch消隐是为了不影响已经点亮的像从最右侧回到显示屏的最左侧如图所示红素点。当收到HSYC信号电子枪会在一定时间内色虚线箭头运动轨迹这个回去的过程需要耗费一定的时间这个时间就称为 horizontal back porch。当HSYC信号结束以后电子枪就会重新打开就可以显示新的一行图像数据了。
场扫描过程 场时序
对于CRT显示器电子枪扫描完所有有效行的图像后会继续向下扫描一段区域这个区域称为下边界区域vertical bottom border该区域不在有效的显示范围内对应的荧光屏玻璃上没有荧光粉也不能被点亮可以理解为显示器下边的黑边。同样的显示器上边也有这样一段黑边在扫描有效数据之前电子枪扫描到的这段区域不会显示图像, 这个区域称为上边界区域vertical top border。当电子枪扫描一场图像到达荧光屏的最下方后其并不会自动回到最上边而是需要有一个通知信号即场同步信号脉冲vertical sync pulseVSYC。再没有收到场同步信号脉冲之前需要关闭电子枪以实现消隐这段时间就称为 vertical front porch消隐是为了不影响已经点亮的像素点。当收到VSYC信号电子枪会在一定时间内从最下方回到最上方如图所示红色虚线箭头运动轨迹这个回去的过程需要耗费一定的时间这个时间就称为 vertical back porch。当VSYC信号结束以后电子枪就会重新打开就可以显示新的一行图像数据了。
2、LCD显示器
由于CRT显示器采用电子枪显示图像不可避免而存在黑边的原因然而现在使用的液晶显示器不需要电子枪了还有存在黑边是因为LCD 屏幕内部是有一个IC IC是集成电路芯片装置用来对透明电极上电位信号的相位、峰值、频率等进行调整与控制从而建立起驱动电场从而实现液晶显示图像。然而发送一行或者一帧数据给 ICIC需要反应时间去识别一行数据扫描完需要要换行或者一帧图像扫描完了需要扫描下一帧图像。因此在 LCD 屏幕中需要存在boder这些参数来锁定有效的像素数据。
3 像素时钟
像素时钟Pixel clockpclk也叫RGB clock或Dot clock即RGB的时钟信号一个基准时钟clk对应一个像素点根据上面我们分析的行时序和场时序显示一帧图像需要的基准时钟数N(CLK) H_FrameEnd * V_FrameEnd结合刷新率可以计算像素时钟 H_FrameEnd * V_FrameEnd * 帧率。如果是标准分辨率建议大家以标准分辨率参数直接填入如果不是标准分辨率则根据实际情况可以用接近标准分辨率的参数去修改相关参数。视频数据在H_AcitiveSize和V_AcitiveSize同时有效时候有效显示屏上的显示效果如下图所示
H_ActiveSize:有效显示区域Visible area
H_Syncstart:有效显示区域前沿(Front PorchRight Border)
H_SyncEnd:有效显示区域前沿HSYC(Sync Pulse)
H_FrameEnd:有效显示区域前沿HSYC后沿(Back PorchLeft Border)
V_ActiveSize:有效显示区域Visible area
V_Syncstart:有效显示区域前沿(Front PorchBottom Border)
V_SyncEnd:有效显示区域前沿VSYC(Sync Pulse)
V_FrameEnd:有效显示区域前沿VSYC后沿(Back PorchTop Border)
常用标准系统分辨率时序参数 分辨率帧率 行时序参数像素数量 场时序参数像素数量 像素时钟 (MHz) HSYC 后沿 有效显示区域 前沿 VSYC 后沿 有效显示区域 前沿 640*48060 96 48 640 16 2 34 480 9 25.175 640*48075 64 120 640 16 3 16 480 1 31.5 800*60060 128 88 800 40 4 23 600 1 40 1024*76860 136 160 1024 24 6 29 768 3 65 1280*72060 40 220 1280 110 5 20 720 5 74.25 1280*102460 112 248 1280 48 3 38 1024 1 108 1920*108060 44 148 1920 88 5 36 1080 4 148.5
比如对于分辨率1920*1080*60的分辨率通常采用148.5MHZ的像素时钟。H_FrameSize* V_FrameSize*帧率 2,200* 1,125*60 148,500,000在时钟晶振足够精确的情况下可以确保帧率以恒定60fps输出。我们可以给出以下参数设置 H_ActiveSize 1920
H_SyncStart 192088
H_SyncEnd 19208844
H_FrameSize 19208844148V_ActiveSize 1080
V_SyncStart 10804
V_SyncEnd 108045
V_FrameSize 10804536 但是很多时候如果某个参数不能满足要求那么我们也可以重新调整参数尽量来接近标准分辨率。
对于非标准分辨率比如当以140MHZ输出1080*1920*60的视频时H_FrameSize* V_FrameSize *帧率2,123*1099*60139,990,620 这样每一帧的精确度误差为0.000067用户可以以上面介绍的方法计算相近参数。 H_ActiveSize 1920
H_SyncStart 192088
H_SyncEnd 19208844
H_FrameSize 1920884471V_ActiveSize 1080
V_SyncStart 10804
V_SyncEnd 108045
V_FrameSize 10804516 对于140MHZ的时钟输出帧率会稍微快点。我们给出以下参数对于非标准75MHZ像素时钟输出1280*720*60 H_ActiveSize 1280
H_SyncStart 128088
H_SyncEnd 12808844
H_FrameSize 12808844239V_ActiveSize 720
V_SyncStart 7204
V_SyncEnd 72045
V_FrameSize 7204528 4 VTC控制器设计
通过学习VGA 时序我们知道设计一个VGA 控制器需要包括行计数器、场计数器、行、场同步信号有效图像数据输出的使能信号。本实验以1920*1080的分辨率为例使用2个计数器分别产生hs行时序vs场时序中各个时间参数信号以及有效图像数据输出的de使能信号。
hcnt列计数器:
每1个像素时钟列计数器hcnt加 1一行像素扫描完成后计数器清零并重新计数。
always (posedge I_vtc_clk)beginif(rst_sync 1b0) //复位hcnt 12d0;else if(hcnt (H_FrameSize - 1b1))//计数范围从0 ~ H_FrameSize-1hcnt hcnt 1b1;else hcnt 12d0;
end
vcnt行计数器:
行计数器vcnt的前提条件是列计数器hcnt计数到设定值行计数器vcnt加 1所有行的像素扫描完成后计数器清零并重新计数。
always (posedge I_vtc_clk)beginif(rst_sync 1b0)vcnt 12d0;else if(hcnt (H_ActiveSize - 1b1)) begin//视频水平方向是否一行结束vcnt (vcnt (V_FrameSize - 1b1)) ? 12d0 : vcnt 1b1;//视频垂直方向行计数器加1计数范围0~V_FrameSize - 1end
end
行场同步信号
根据VGA时序我们知道在消隐段期间产生行同步信号和场同步信号我们设置行同步信号和场同步信号为高电平时有效。根据行、列计数器的值当相应的计数器计数到消隐时间段时拉高同步信号。SyncStart
表示边界区域扫描完成即将进入消隐区域此时产生行/场同步信号SyncEnd表示行/场同步信号产生完成边界区域扫描完成即将进入边界区域。同时扫描到场有效显示区域和行有效显示区域时vtc_de信号拉高表示数据有效。
wire hs_valid hcnt H_ActiveSize; //行信号有效像素部分
wire vs_valid vcnt V_ActiveSize; //场信号有效像素部分
wire vtc_hs (hcnt H_SyncStart hcnt H_SyncEnd);//产生hs行同步信号
wire vtc_vs (vcnt V_SyncStart vcnt V_SyncEnd);//产生vs场同步信号
wire vtc_de hs_valid vs_valid;//只有当视频水平方向列有效和视频垂直方向行同时有效视频数据部分才是有效
RGB时序转为stream时序
stream是一种标准协议接口可用于芯片内部的数据流传输不同于内存数据传输相关协议基础篇没有用到这个接口这里只给出相关代码详细介绍请参考“总线篇”。
reg vtc_vs_r1 ;
reg vtc_hs_r1 ;
reg vtc_de_r1 ;
reg vtc_user_r1 ,vtc_user_r2;
reg vtc_valid_r1,vtc_valid_r2;
reg vtc_last_r2;
reg vs_start;always (posedge I_vtc_clk )beginif(rst_sync 1b0) //复位vs_start 1b0;else if(vtc_user_r1)//清除VS帧同步vs_start 1b0;else if(vtc_vs vtc_vs_r11b0)//当vtc_vs发生上升沿跳变代表一帧开始vs_start 1b1;
end always (posedge I_vtc_clk )beginvtc_vs_r1 vtc_vs;vtc_hs_r1 vtc_hs;vtc_user_r1 ~vtc_user_r1 vs_start vtc_de;//vtc_user延迟1拍vtc_last_r2 ~vtc_de vtc_valid_r1; //产生stream video last 延迟于数据输入2拍vtc_valid_r1 vtc_de;//vtc_valid延迟1拍vtc_valid_r2 vtc_valid_r1;//vtc_valid对输入信号延迟2拍以和vtc_last_r2信号配套同步vtc_user_r2 vtc_user_r1; //vtc_user 对输入信号延迟2拍以和vtc_last_r2信号配套同步
end assign O_vtc_vs vtc_vs_r1;
assign O_vtc_hs vtc_hs_r1;
assign O_vtc_de_valid vtc_valid_r2;
assign O_vtc_user vtc_user_r2;
assign O_vtc_last vtc_last_r2; 5 VTC源码
timescale 1ns / 1ns //仿真时间刻度/精度module uivtc#
(
parameter H_ActiveSize 1920, //视频时间参数,行视频信号一行有效(需要显示的部分)像素所占的时钟数一个时钟对应一个有效像素
parameter H_FrameSize 19208844148, //视频时间参数,行视频信号一行视频信号总计占用的时钟数
parameter H_SyncStart 192088, //视频时间参数,行同步开始即多少时钟数后开始产生行同步信号
parameter H_SyncEnd 19208844, //视频时间参数,行同步结束即多少时钟数后停止产生行同步信号之后就是行有效数据部分parameter V_ActiveSize 1080, //视频时间参数,场视频信号一帧图像所占用的有效(需要显示的部分)行数量通常说的视频分辨率即H_ActiveSize*V_ActiveSize
parameter V_FrameSize 10804536, //视频时间参数,场视频信号一帧视频信号总计占用的行数量
parameter V_SyncStart 10804, //视频时间参数,场同步开始即多少行数后开始产生场同步信号
parameter V_SyncEnd 108045 //视频时间参数,场同步结束即多少场数后停止产生场同步信号之后就是场有效数据部分
)
(
input I_vtc_rstn, //系统复位
input I_vtc_clk, //系统时钟
output O_vtc_vs, //场同步输出
output O_vtc_hs, //行同步输出
output O_vtc_de_valid, //视频数据有效
output O_vtc_user, //满足stream时序产生 user 信号,用于帧同步
output O_vtc_last //满足stream时序产生 later 信号,用于每行结束
);reg [11:0] hcnt 12d0; //视频水平方向列计数器寄存器
reg [11:0] vcnt 12d0; //视频垂直方向行计数器寄存器
reg [2 :0] rst_cnt 3d0; //复位计数器寄存器
wire rst_sync rst_cnt[2]; //同步复位always (posedge I_vtc_clk or negedge I_vtc_rstn)begin //通过计数器产生同步复位if(I_vtc_rstn 1b0)rst_cnt 3d0;else if(rst_cnt[2] 1b0)rst_cnt rst_cnt 1b1;
end //视频水平方向列计数器
always (posedge I_vtc_clk)beginif(rst_sync 1b0) //复位hcnt 12d0;else if(hcnt (H_FrameSize - 1b1))//计数范围从0 ~ H_FrameSize-1hcnt hcnt 1b1;else hcnt 12d0;
end //视频垂直方向行计数器用于计数已经完成的行视频信号
always (posedge I_vtc_clk)beginif(rst_sync 1b0)vcnt 12d0;else if(hcnt (H_ActiveSize - 1b1)) begin//视频水平方向是否一行结束vcnt (vcnt (V_FrameSize - 1b1)) ? 12d0 : vcnt 1b1;//视频垂直方向行计数器加1计数范围0~V_FrameSize - 1end
end wire hs_valid hcnt H_ActiveSize; //行信号有效像素部分
wire vs_valid vcnt V_ActiveSize; //场信号有效像素部分
wire vtc_hs (hcnt H_SyncStart hcnt H_SyncEnd);//产生hs行同步信号
wire vtc_vs (vcnt V_SyncStart vcnt V_SyncEnd);//产生vs场同步信号
wire vtc_de hs_valid vs_valid;//只有当视频水平方向列有效和视频垂直方向行同时有效视频数据部分才是有效//********************** video stream video rgb ***************************
//如果是输入RGB时序那么转为stream时序
reg vtc_vs_r1 ;
reg vtc_hs_r1 ;
reg vtc_de_r1 ;
reg vtc_user_r1 ,vtc_user_r2;
reg vtc_valid_r1,vtc_valid_r2;
reg vtc_last_r2;
reg vs_start;always (posedge I_vtc_clk )beginif(rst_sync 1b0) //复位vs_start 1b0;else if(vtc_user_r1)//清除VS帧同步vs_start 1b0;else if(vtc_vs vtc_vs_r11b0)//当vtc_vs发生上升沿跳变代表一帧开始vs_start 1b1;
end always (posedge I_vtc_clk )beginvtc_vs_r1 vtc_vs;vtc_hs_r1 vtc_hs;vtc_user_r1 ~vtc_user_r1 vs_start vtc_de;//vtc_user延迟1拍vtc_last_r2 ~vtc_de vtc_valid_r1; //产生stream video last 延迟于数据输入2拍vtc_valid_r1 vtc_de;//vtc_valid延迟1拍vtc_valid_r2 vtc_valid_r1;//vtc_valid对输入信号延迟2拍以和vtc_last_r2信号配套同步vtc_user_r2 vtc_user_r1; //vtc_user 对输入信号延迟2拍以和vtc_last_r2信号配套同步
end assign O_vtc_vs vtc_vs_r1;
assign O_vtc_hs vtc_hs_r1;
assign O_vtc_de_valid vtc_valid_r2;
assign O_vtc_user vtc_user_r2;
assign O_vtc_last vtc_last_r2;endmodule
6 RTL仿真
6.1仿真激励文件
为简化仿真这里模拟的视频格式为320*5 即一行的有效数据为350个像素一帧数据有5行像素数据。
timescale 1ns / 1ns //仿真时间刻度/精度module vtc_tb;localparam SYS_TIME 20;//系统时钟周期20nsreg I_vtc_rstn,I_vtc_clk;
wire O_vid_vs,O_vid_hs,O_vtc_de_valid,O_vtc_user,O_vtc_last;//例化视频时序产生模块
uivtc#
(
.H_ActiveSize(320), //视频时间参数,行视频信号一行有效(需要显示的部分)像素所占的时钟数一个时钟对应一个有效像素设置320个像素
.H_FrameSize(3208844239),//视频时间参数,行视频信号一行视频信号总计占用的时钟数
.H_SyncStart(32088), //视频时间参数,行同步开始即多少时钟数后开始产生行同步信号
.H_SyncEnd(3208844), //视频时间参数,行同步结束即多少时钟数后停止产生行同步信号之后就是行数据有效数据部分
.V_ActiveSize(5), //视频时间参数,场视频信号一帧图像所占用的有效(需要显示的部分)行数量通常说的视频分辨率即H_ActiveSize*V_ActiveSize
.V_FrameSize(54528), //视频时间参数,场视频信号一帧视频信号总计占用的行数量
.V_SyncStart(54), //视频时间参数,场同步开始即多少行数后开始产生场同步信号
.V_SyncEnd (545) //视频时间参数,场同步结束即多少行数后停止产生场同步信号之后就是场有效数据部分
)
uivtc_inst
(
.I_vtc_clk(I_vtc_clk), //系统时钟
.I_vtc_rstn(I_vtc_rstn),//系统复位
.O_vtc_vs(O_vid_vs), //图形的vs信号
.O_vtc_hs(O_vid_hs), //图形的hs信号
.O_vtc_de_valid(O_vtc_de_valid), //de数据有效信号
.O_vtc_user(O_vtc_user), //满足stream时序产生 user 信号,用于帧同步
.O_vtc_last(O_vtc_last) //满足stream时序产生 later 信号,用于每行结束
);initial beginI_vtc_clk 1b0;I_vtc_rstn 1b0;#100;I_vtc_rstn 1b1;
endalways #(SYS_TIME/2) I_vtc_clk ~I_vtc_clk;endmodule
6.2仿真结果 7 常用系统分辨率
对于148.5MHZ像素时钟输出1080*1920*60
H_ActiveSize 1920
H_SyncStart 192088
H_SyncEnd 19208844
H_FrameSize 19208844148
V_ActiveSize 1080
V_SyncStart 10804
V_SyncEnd 108045
V_FrameSize 10804536
对于74.25MHZ像素时钟输出1280*720*60
H_ActiveSize 1280
H_SyncStart 1280110
H_SyncEnd 1280110 40
H_FrameSize 1280110 40220
V_ActiveSize 720
V_SyncStart 7204
V_SyncEnd 72045
V_FrameSize 7204521
对于42MHZ像素时钟输出640*480*60
H_ActiveSize 640
H_SyncStart 64016
H_SyncEnd 6401696
H_FrameSize 640169648
V_ActiveSize 480
V_SyncStart 4809
V_SyncEnd 48092
V_FrameSize 4809234
对于非标准分辨率用户可以以上面介绍的方法计算相近参数。
比如对于非标准140MHZ像素时钟输出1080*1920*60
H_ActiveSize 1920
H_SyncStart 192088
H_SyncEnd 19208844
H_FrameSize 1920884471V_ActiveSize 1080
V_SyncStart 10804
V_SyncEnd 108045
V_FrameSize 10804516
比如对于非标准75MHZ像素时钟输出1280*720*60
H_ActiveSize 1280
H_SyncStart 128088
H_SyncEnd 12808844
H_FrameSize 12808844239V_ActiveSize 720
V_SyncStart 7204
V_SyncEnd 72045
V_FrameSize 7204528