• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

嵌入式运动控制器

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

VGA时序分析

常见的刷新率时序表

A(us)Line Period  B(us) Sync pulse length  C(us) Back porch  D(us) Active video time  E(us) Front porch

O(ms) Frame Period  P(ms)Sync length  Q(ms)Back porch  R(ms)Active video time  S(ms)Front porch

   根据上面的水平和垂直扫描时序可以分析显示800x600模式,FPGA系统时钟采用DE0板上的50MHz的有源晶振。为了显示器显示效果好,采用刷新频率为72Hz。以下以系统时钟频率为50MHz,显示器显示800x600模式为例分析水平扫描和垂直扫描时序:系统时钟周期为1/50MHz=20ns

  水平扫描Horizonal(Line)

A 水平(行)周期为1040个像素(Pix),时间为1040x20ns=20.8us;

B 同步脉冲为120像素(Pix)

C 后沿为61个像素(Pix)

D 有效时间为806个像素(Pix)

E 前沿为53个像素

 

?
/////////////////////////////////////水平扫描参数的设定///////////////////////////////////////////////////
parameter LinePeriod =12'd1040;
parameter H_SyncPulse=10'd120;
parameter H_BackPorch=10'd61;
parameter H_ActivePix=10'd806;
///////////////////////////////////////水平扫描计数///////////////////////////////////////////////////////
always @ (posedge clk or negedge rst_n)
    if(!rst_n) x_cnt <= 1;
    else if(x_cnt == LinePeriod) x_cnt <= 1;
    else x_cnt <= x_cnt+ 1;
///////////////////////////////////水平扫描信号hsync产生///////////////////////////////////////////////////////
always @ (posedge clk or negedge rst_n)
    if(!rst_n) hsync_r <= 1'b1;
    else if(x_cnt == 1) hsync_r <= 1'b0; //产生hsync信号
    else if(x_cnt == H_SyncPulse) hsync_r <= 1'b1;

 

垂直扫描Vertical(Frame)

O 垂直扫描周期为666个行扫描,时间为666x1040x20ns=13853us;

P 同步脉冲为6个行扫描,时间为6x1040x20ns=125us;

Q 后沿为21个行扫描,时间为21x1040x20ns=436us;

R 有效时间为604个行扫描,时间为604x1040x20ns=12563us;

S 前沿为35个行扫描,时间为35x1040x20ns=728us.

 

?
////////////////////////////////////////////////垂直扫描参数的设定////////////////////////////////////////////////////////
parameter FramePeriod="10"'d666;
parameter V_SyncPulse=10'd6;
parameter V_BackPorch=10'd21;
parameter V_ActivePix=10'd604;
///////////////////////////////////////////////垂直扫描计数///////////////////////////////////////////
always @ (posedge clk or negedge rst_n)
    if(!rst_n) y_cnt <= 1;
    else if(y_cnt == FramePeriod) y_cnt <= 1;
    else if(x_cnt == LinePeriod) y_cnt <= y_cnt+1;
////////////////////////////////////////////////// 垂直扫描信号hsync产生//////////////////////////////////////////////
always @ (posedge clk or negedge rst_n)
    if(!rst_n) vsync_r <= 1'b1;
    else if(y_cnt == 1) vsync_r <= 1'b0; //产生vsync信号
    else if(y_cnt == V_SyncPulse) vsync_r <= 1'b1;
并不是每个像素都能显示的,只有在有效区域像素区域内才能显示RGB
/////////// 垂直扫描信号hsync产生///////////////////////////////////////////////////
wire valid;              //有效显示区标志
assign valid =
(x_cnt >= (H_SyncPulse+H_BackPorch)) &&
(x_cnt < (H_SyncPulse+H_BackPorch+H_ActivePix)) &&
(y_cnt >= (V_SyncPulse+V_BackPorch)) &&
(y_cnt < (V_SyncPulse+V_BackPorch+V_ActivePix));

 

初步整理的时序

行周期32us(频率31.3Hz)

行同步脉冲时间7us

场频率60Hz

posted on 2013-01-03 17:14  嵌入式运动控制器  阅读(320)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3