PLL控制器和分辨率模式切换详解

描述

一、PLL控制器

pll_controller.v 是一个PLL动态重配置控制器,用于根据不同的视频模式(mode)动态配置Altera PLL IP的时钟频率参数。PLL动态重配置控制器的RTL视图:

pll

该模块的信号接口说明如下表格:

 

信号名称 信号说明
clk 系统时钟(50MHz)
reset_n 异步复位,低电平有效
mode[3:0] 视频模式输入
mode_change 模式变化指示信号(来自vpg_mode模块)
mgmt_readdata[31:0] 从ALTPLL_RECONFIG IP读取的数据
mgmt_read ALTPLL_RECONFIG IP读使能
mgmt_write ALTPLL_RECONFIG IP写使能
mgmt_address[5:0] ALTPLL_RECONFIG IP寄存器地址
mgmt_writedata[31:0] 写入ALTPLL_RECONFIG IP的数据

 

PLL控制器里面设置了一个9个状态的状态机,它是一个典型的顺序状态机,用于控制Altera PLL IP的读写流程:

pll

每个状态要完成的任务如下:

 

状态 描述
0000 检测mode_change上升沿时设置轮询模式且转入状态1
0001 设置M计数器且转入状态2
0010 设置N计数器且转入状态3
0011 设置C计数器且转入状态4
0100 设置带宽且转入状态5
0101 设置电荷泵转入状态6
0110 设置启动重配置且转入状态7
0111 检查状态且转入状态8
1000 等待重配置完成(bit 0=1)则转入状态0

 

下面是该控制模块的时序图:

pll

这个时序是符合ALTPLL_RECONFIG IP的polling模式的时序的(参考Implementing Fractional PLL Reconfiguration with Altera PLL and Altera PLL Reconfig IP Cores 文档Figure 2)。从时序图可以看到:

在空闲状态(状态0)下,当检测到模式改变信号时,设置轮询模式,准备进入状态1;

进入状态1设置M计数器,写入polling mode寄存器,准备进入状态2;

进入状态2设置N计数器,写入M计数器值,准备进入状态3;

进入状态3设置C计数器,写入N计数器值,准备进入状态4;

进入状态4设置带宽,写入C计数器值,准备进入状态5;

进入状态5设置电荷泵,写入带宽参数,准备进入状态6;

进入状态6设置启动重配置,写入电荷泵参数,准备进入状态7;

进入状态7,设置检查状态(即读状态寄存器)写入重配置启动命令,准备进入状态8;

进入状态8,读取状态寄存器,当bit0为1时代表重配置完成,准备返回状态0。

另外,该控制器其中7个状态里面都使用了write_count计数器来控制写操作的持续时间,总共是3个周期:

第0个时钟周期:设置拉高mgmt_write

第1个时钟周期:mgmt_write保持高(用于总线传输)

第2个时钟周期:mgmt_write拉低,准备切换到下一个状态

pll

二、分辨率切换模块

vpg_mode.v是模式切换模块,用于在多个预定义的VGA分辨率模式之间循环切换。该模块包含的头文件vpg.h预定义了这些模式:

 

Mode 分辨率 视频标准 像素时钟
0 640x480p60 VGA 25.175MHz
1 720x480p60 480P 27MHz
2 1024x768p60 XGA 65MHz
3 1280x1024p60 SXGA 108MHz
4 1920x1080p60 1080i 148.5MHz

 

vpg_mode.v的RTL视图如下:

pll



   其中切换信号(vpg_mode_change和vpg_mode)可以连接到前面的vpg.v模块的时序参数选择器,以改变HDMI输出的分辨率。

该模块设置了两种方式去切换模式:

1.通过按键KEY1:按下按钮(上升沿)切换。

2.自动切换:在复位后的一段时间(第9个clk_en有效时钟周期)自动切换一次。

分辨率切换是从最高分辨率(FHD_1920x1080p60)切换到最低分辨率(VGA_640x480p60),然后形成循环:

pll

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分