1、扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。通过控制扫描计数器不同值时对RGB三原色信号的控制,来完成显示设计。关键词:行列扫描 行列同步 RGB三原色控制2、设计任务要求实验目的1. 熟练掌握 VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用 EDA 工具进行自顶向下的电子系统设计方法;4. 熟悉 VGA 接口协议规范。实验要求:设计一个VGA 图像显示控制器,达到如下功能: 显示模式为64048060HZ 模式; 用拨码开关控制R、G、B(每个2 位),使显示器可以显示64种纯色
2、; 在显示器上显示横向彩条信号(至少6 种颜色); 在显示器上显示纵向彩条信号(至少8 种颜色); 在显示器上显示自行设定的图形、图像等。 选做:自拟其它功能。三、实验原理1、显示控制原理 常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(Green Red Blue)基色组成。显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;VGA显示控制器控制 C
3、RT显示图象的过程如图1所示2、VGA时序信号计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B 三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。对于模拟显示设备,如模拟CRT 显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。设计 VGA 控制器的关键是产生符合VGA 接口协议规定的行同步和场同步信号,它们的时序关系如下图所示:h_sync:水平同步信号(负脉冲),每个水平扫描周期显示器刷新一行;v_sync:垂直同步信号(负脉冲),每个垂直扫描周期显示器刷新一帧;行同步信号(HS)场同步信号(VS)时序名称时钟数(像素数)行数前沿161
4、0行同步96场同步2数据640480后沿4833总像素数800总行数525按照每秒60帧的刷新速度来计算,所需要的时钟频率为:频率60Hz(帧数)525(行)800(每一行像素数)25.2MHz 所以我们通过开发系统的50MHz时钟资源,通过时钟分频产生25MHz的频率即可。虽然没有达到精确的25.2MHz的时钟频率(刷新率可能会是59Hz),但是并不会造成影响。3、VGA显示器的工作过程 以屏幕左上角的那个像素作为原点(1,1)。当显示器接收到控制器输出的v_sync信号,则开始一个新的垂直刷新循环,同时控制器输出h_sync信号。当经过P+Q=1.084ms的时间后,准备开始水平刷新循环,
5、当h_sync信号的下降沿到来时,即开始刷新第一行(行数加1)。再经过B+C = 5.66 s的时间后,开始刷新第一行的第一个像素(列数加1),并按照所需的时钟频率,刷新此行中其余像素。直到显示器接收到下一个h_sync信号,又开始刷新第二行。重复此过程,直到刷新到屏幕的底部。当刷新了最下面一行的最后一个像素后,显示器即完成了一帧的刷新,控制器又输出v_sync信号,显示器又开始一个新的垂直刷新循环。四、系统设计(包括设计思路、总体框图、分块设计)总体设计思路:VGA显示器的控制器可划分为3个子模块:.时钟分频子模块;.时序控制子模块 ,提供同步信号(h_sync和v_sync)及像素位置信息
6、;.生成图形子模块,接收像素位置信息,并输出颜色信息;由于系统时钟为50MHZ,实验所需频率为25MHZ,故时钟分频模块只需在程序中通过分频语句完成;生成图形子模块由系统提供;所以重点设计的模块就是时序控制模块。总体系统框图如下: HS系统时 VS钟 R G B时序控制模块设计 Hcnt=639 Hcnt=799 Hcnt=655 Hcnt=751 行同步状态机状态转移图显示同步 Vcnt=479 Vcnt=524 Vcnt=489 Vcnt=491 列同步状态机状态转移图时序控制模块流程图:五、源程序(含注释)library ieee;use ieee.std_logic_1164.all;
7、use ieee.std_logic_unsigned.all;entity vgacode isport( sw0 : in std_logic; -拨码开关输入 sw1 : sw2 : sw3 : sw4 : sw5 : sw6 : sw7 : clk : -系统时钟输入 hsync : out std_logic;-输出行同步、列同步以及R.G.B信号 vsync : rdata : gdata : bdata : lrdata : lgdata : lbdata : out std_logic );end vgacode;architecture behave of vgacode i
8、s - horizontal timing signals constant h_data: integer:=640; -VGA时序中几个关键数据 constant h_front:=16; constant h_back:=48; constant h_sync:=96; constant h_period:= h_sync + h_data + h_front + h_back; -800 - vertical timing signals constant v_data:=480; constant v_front:=10; constant v_back:=33; constant
9、v_sync:=2; constant v_period:= v_sync + v_data + v_front + v_back; -525 signal henable, venable : std_logic; signal clk25M : signal hcnt: std_logic_vector(9 downto 0); - horizontal pixel counter signal vcnt: - vertical line counterbeginprocess(clk) if clkevent and clk = 1 then -由系统时钟分频得到25MHZ的频率信号 c
10、lk25M = not clk25M; end if;end process;process(clk25M) -行扫描begin if (clk25Mevent and clk25M = ) then if hcnt h_period then hcnt 0); end if;process(clk25M) -行同步 if (hcnt = (h_data + h_front) and hcnt (h_data + h_sync + h_front) then hsync = ; else process(clk25M) -列扫描 if hcnt = (h_data + h_sync + h_front) then if vcnt v_period then vcnt = (v_data + v_front) and vcnt (v_data + v_sync + v_front) then vsync process(clk25M) -行显示 h_data then henable process(clk25M) -列显示 if vcnt v_data then
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1