VGA显示控制资料
实验9 VGA显示控制器实验
实验9 VGA显示控制器实验1、实验目的:1)理解VGA显示的基本原理。
2)学习计数器和LPM_ROM的使用方法2、实验原理:图1 VGA显示控制器的原理框图3、实验内容1)彩条信号实验a)创建锁相环,把输入的50MHz时钟变成25MHz,并创建元件。
b)利用所给的VGA_Pattern和VGA_Ctrl,创建元件。
c)完成顶层原理图,在QuartusⅡ上进行编译、综合、适配。
引脚锁定以及硬件下载测试。
2)显示自己的姓实验。
修改VGA_Pattern,利用if语句控制相应区域的相应值,在QuartusⅡ上进行编译、综合、适配。
引脚锁定以及硬件下载测试。
3)显示数字实验a)创建lpm_rom,手动输入“0”的mif文件。
b)顶层文件为numTop.v,在QuartusⅡ上进行编译、综合、适配,硬件下载测试。
4)计数显示实验a)创建“1~9”的lpm_rom,mif文件已给出。
b)加入计数器。
c)完成顶层文件,在QuartusⅡ上进行编译、综合、适配,硬件下载测试。
5)数字钟实验在4)基础上加入位置控制,完成顶层文件,在QuartusⅡ上进行编译、综合、适配,硬件下载测试。
6)显示理工校徽实验(2)moduleVGA_Pattern(//HostSideoRed,oGreen,oBlue,iCurrent_X,iCurrent_Y,iVGA_CLK,iRST_N); // Host Sideoutput reg oRed;output reg oGreen;output reg oBlue;input [9:0] i Current_X;input [9:0] i Current_Y;// Control Signalinput iVGA_CLK;input iRST_N;always@(posedge iVGA_CLK or negedge iRST_N)beginif(!iRST_N)beginoRed <= 0;oGreen <= 0;oBlue <= 0;endelsebeginif((( iCurrent_Y>60)&& (iCurrent_Y <80))&&((iCurrent_X>200)&&(iCurrent_X <400)))beginoRed <= 1;oGreen <= 0;oBlue <= 0;endelse if((( iCurrent_Y>80)&& (iCurrent_Y <240))&&((iCurrent_X>200)&&(iCurrent_X <240)))beginoRed <= 1;oGreen <= 0;oBlue <= 0;end/*else if((( iCurrent_Y>150)&& (iCurrent_Y <170))&&((iCurrent_X>260)&&(iCurrent_X <340)))/*else if((150 < iCurrent_Y < 170)&&(260<iCurrent_X < 340))beginoRed <= 1;oGreen <= 0;oBlue <= 0;endelse if((( iCurrent_Y>170)&& (iCurrent_Y <240))&&((iCurrent_X>290)&&(iCurrent_X <310)))/*else if((170 < iCurrent_Y < 240)&&(290 < iCurrent_X < 310))beginoRed <= 1;oGreen <= 0;oBlue <= 0;end*/else if((( iCurrent_Y>240)&& (iCurrent_Y <260))&&((iCurrent_X>200)&&(iCurrent_X <400)))/*else if((240 < iCurrent_Y < 260)&&(150 < iCurrent_X < 450))*/beginoRed <= 1;oGreen <= 0;oBlue <= 0;endelsebeginoRed <= 0;oGreen <= 0;oBlue <= 0;endendendendmodule(3)(4)module numTop1(CLK,RST,R,G,B,HS,VS); input CLK,RST;output R,G,B,HS,VS;wire clk25Mhz,vga_clk;wire [9:0]ram_data;wire [9:0] X,Y;wire [6:0] ram_addr;wire [3:0]COUNT;wire carry1;wire CLK1HZ;reg vga_data;assign ram_addr = {Y[5:2],X[4:2]};altPLL0 u1(CLK,clk25Mhz);VGA_Ctrl u2(.iRed(vga_data),.iGreen(vga_data),.iBlue(vga_data),.oCurrent_X(X),.oCurrent_Y(Y),// VGA Side.oVGA_R(R),.oVGA_G(G),.oVGA_B(B),.oVGA_HS(HS),.oVGA_VS(VS),.oVGA_CLK(vga_clk),// Control Signal.iCLK(clk25Mhz),.iRST_N(RST) ); demo_shuzi u17(ram_addr,vga_clk,ram_data[0]); ROM1 u21(ram_addr,vga_clk,ram_data[1]);ROM2 u14(ram_addr,vga_clk,ram_data[2]);ROM3 u15(ram_addr,vga_clk,ram_data[3]);ROM4 u6(ram_addr,vga_clk,ram_data[4]);ROM5 u7(ram_addr,vga_clk,ram_data[5]);ROM6 u8(ram_addr,vga_clk,ram_data[6]);ROM7 u9(ram_addr,vga_clk,ram_data[7]);ROM8 u10(ram_addr,vga_clk,ram_data[8]);ROM9 u11(ram_addr,vga_clk,ram_data[9]);/*demo_shuzi u3(ram_addr,vga_clk,ram_data);*/ GeneralCnt #(4,9) u4(CLK1HZ,RST,1,COUNT,carry1); ClkDiv #(26,50000000) u5(CLK,RST,CLK1HZ);always@(X,Y)if(X<32 && Y<64)vga_data=ram_data[COUNT];else if(X<64 && Y<64)vga_data=ram_data[COUNT];elsevga_data=0;endmodule//任意倍整数分频器module ClkDiv(clk_in,rst_n,clk_out);parameter MSB = 4, DIV_TIMES = 10;input clk_in,rst_n;output clk_out;reg clk_out;reg [MSB-1:0] count;always @(negedge rst_n or posedge clk_in)beginif(rst_n==0)begincount<=0;endelsebeginif(count < (DIV_TIMES-1))count<=count+1'b1;elsecount<=0;endendalways @(negedge rst_n or posedge clk_in) beginif(rst_n==0)beginclk_out<=1'b0;endelsebeginif(count<(DIV_TIMES>>1))clk_out<=1'b0;elseclk_out<=1'b1;endendendmodule//通用计数器module GeneralCnt(clk,reset_n,ena,cnt,carry_out);parameter MSB = 4, CNT_END = 9; input clk;input reset_n;input ena;output [MSB-1:0]cnt;output carry_out;reg [MSB-1:0]cnt;reg carry_out;//计数always@(posedge clk or negedge reset_n) beginif(!reset_n)cnt <= 0;else if(ena && cnt==CNT_END)cnt <= 0;else if (ena && cnt < CNT_END)cnt <= cnt + 1'b1;end//产生进位输出always@(posedge clk or negedge reset_n) begin if(!reset_n)carry_out <= 1'b0;else if(ena && cnt==CNT_END)carry_out <= 1'b1;elsecarry_out <= 1'b0;endendmodule。
VGA显示控制
基于FPGA 的VGA显示控制摘要VGA(Video Graphics Array)即视频图形阵列,是IBM公司1987年推出的一种传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛应用。
本次课程设计是基于FPGA和主芯片为 EP4CE30F23C8N的ALTER公司的开发板Cyclone IV来实现的。
数字图像信息在VGA接口显示器正确、完整地显示,涉及到时序的构建和数字图像信息的模拟化两方面,提出一种能够广泛应用的VGA显示接口方案,详细阐述了数字图像数据DA转化并输出到VGA接口显示器显示的方法,其中包括接口的硬件设计、视频DA转换器的使用方法、通过FPGA构造VGA时序信号的方法等等。
方案可以应用于各种仪器,数字视频系统、高分辨率的彩色图片图像处理、视频信号再现等。
课设主要用到的芯片是ADV7123,它是一款高速、高精度数模转换芯片。
拥有三路十位D/A转换器,能够将代表颜色的数据锁存到数据寄存器中,然后通过D/A 转换器转换成模拟信号输出,得到我们要的色彩。
VGA显示的硬件设计和原理1.1 FPGA主芯片课程设计所用开发板的主芯片是EP4CE30F23C8N——Cyclone IV,其由Altera公司开发,值得注意的是该开发板所支持的QUARTUS II的版本较高,并且11.0的版本较12.0的版本编译好的程序更好下载。
图-11.2 ADV7123实现VGA的控制显示主要用到的芯片就是ADV7123,ADV7123由完全独立的三个I0位高速D/A转换器组成,RGB(红绿蓝)视频数据分别从R9~R0、G9~G0、B9~B0输入,在时钟CLOCK的上升沿锁存到数据寄存器中,然后经告诉D/A转换器转换成模拟信号。
三个独立的视频D/A转换器都是电流型输出,可以接成差分输出,也可以接成单端输出。
DE2-115上按单端输出,在模拟输出端用75欧姆电阻接地,以满足工业标准。
VGA显示的控制器
VGA显示的控制器1 VGA显示接口原理计算机显示器的显示有许多接口标准,常见的有 VGA、SVGA等。
VGA接口,也叫D-Sub接口,是15针的梯形插头,分成 3排,每排 5个,传输模拟信号。
VGA接口采用非对称分布的 15针连接方式,其工作原理是:将显存内以数字格式存储的图像(帧)信号在RAMDAC 里经过模拟调制成模拟高频信号,然后再输出到显示设备成像。
VGA 支持在640×480的较高分辨率下同时显示16种色彩或256种灰度,同时在 320 × 240 分辨率下可以同时显示 256种颜色。
VGA显示器的显示是采用逐行扫描的方式解决。
扫描从屏幕的左上方开始,从左到右, 从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间对电子束进行行消隐,每行结束时,用行同步信号进行行同步,扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
2 VGA显示控制器的设计实现系统硬件框图如图所示通常VGA显示器显示的图像数据量较大,而 FPGA 内置 ROM 很难满足这么大的存储量,FPGA需要外接SDRAM来存储这些数据。
VGA显示器的输入的是模拟信号,所以由 VGA显示控制器产生的 RGB信号在进入VGA 接口之前要经过一个 D/A 转换器。
2.VGA时序控制信号VGA显示器的时序控制要严格遵循“VGA工业标准”,即640×480×60Hz模式,否则会导致VGA显示器无法正常工作。
图2-1所示为行扫描时序,图2-2所示为场扫描时序。
(1)行扫描信号时序:图2-1给出了行视频时序示意图。
在行扫描时序中,包括以下几个时序参数:HSYNC Signal是用来控制“列填充”,而一个HSYNC Signal可以分为4个段,也就是a(同步段),b(后沿段),c(激活段),d(前沿段)。
HSYNC Signal的a是拉低的128个列像素,b是拉高的61个列像素,c是拉高的806个列像素,最后的d是拉高的53个列像素。
10-实验报告
计算机组成原理实验报告实验10:VGA显示控制器的设计实验十VGA显示控制器的设计一、实验目的1、理解VGA显示器的工作原理。
2、理解分辨率的含义以及分辨率的表示方法。
3、理解VGA相关的概念:像素、行同步和场同步、消隐。
4、掌握VGA控制器的设计方法和设计要点。
5、通过修改代码改变行同步、场同步时序参数,了解VGA能正确显示的参数范围。
二、实验内容1、阅读“VGA显示控制器设计”PPT;2、完成VGA控制器的设计,在屏幕上显示出八行八列的黑白相间的图案。
3、掌握PLL的定制方法。
4、在2的基础上,调整屏幕分辨率,将原来640*480的分辨率,通过修改代码改变行同步、场同步时序参数,变成1280*1024的分辨率,帧频不变,均为60HZ。
为了满足显示的需要,需要用PLL将50MHz的频率倍频到108MHz。
5、利用VGA+ROM的结构显示给定图片。
6、利用VGA+ROM的结构显示字符,要求通过修改代码可以实现各种显示效果:改变字符颜色和大小;改变字符位置;其它显示效果。
7、在屏幕上显示一个4*4的红色小球,控制小球从左上至右下移动小球,也可以选择其它的运动轨迹。
三、实验仪器及设备:一、PC机二、 QuartusⅡ 9.0 三、 DE2-70 四、显示器四、实验步骤1、阅读“VGA显示控制器设计”PPT,理解VGA显示器的工作原理、分辨率的含义以及分辨率的表示方法和VGA相关的概念:像素、行同步和场同步、消隐。
2、认真阅读显示出八行八列的黑白相间的图案的verilog代码(640*480的分辨率),掌握编写类似代码的思路。
3、修改给定的分辨率为1280*1024的代码,显示出实验要求的黑白格团。
主要修改三点:a、x和y的位数,由于分辨率要达到1280,所以x和y的位数至少要有 11位。
b、修改输入频率,把25MHZ改为108MHZ(通过宏模块)。
c、always显示输出模块内有一些问题,需要作相应修改。
VGA图像显示控制器设计报告
摘要本实验报告为VGA显示控制器设计报告。
实验设计了基于VHDL描述的VGA显示控制器,通过FPGA控制CRT显示器显示色彩和图形。
完成的功能包括64种纯色的显示、横向和纵向彩色条幅的显示以及正方形色块的运动与控制。
实验的重心放在了显示控制器的系统层面的设计,采用了自顶向下的思路进行设计,系统的核心为有限状态机。
报告中给出了完整的设计思路和过程,并将系统分模块进行了详细的设计,给出了VHDL语言描述。
完成了状态机和核心模块以及系统整体的仿真验证。
最终下载到实验板上测试通过。
关键词:FPGA;VHDL;VGA显示控制;状态机第一部分任务要求 (1)1.1课题要求 (1)1.2设计目标 (1)第二部分系统设计 (2)2.1设计思路 (2)2.2系统结构设计 (4)2.2.1系统结构框图 (4)2.2.2系统逻辑功能划分 (4)2.2.3层次模块划分 (5)2.2.4模块设计图 (8)2.2.5控制器设计 (8)2.2.6状态机设计 (10)2.2.7基本模式设计 (10)2.2.8用户模式设计 (11)2.3系统硬件语言描述 (14)2.3.1VHDL描述思路 (14)2.3.2总体电路的描述 (14)2.3.3分块电路的描述 (18)2.4系统仿真验证 (31)第三部分结果与分析 (35)3.1实现功能说明 (35)3.2器件资源分析 (36)3.3VHDL设计优化 (38)3.4故障和问题分析 (40)第四部分总结与结论 (41)4.1实验结论 (41)4.2总结体会 (41)第五部分附录部分 (43)5.1元器件和仪表清单 (43)5.2VHDL源代码 (43)5.3电路图 (59)5.4参考文献 (67)第一部分任务要求1.1课题要求设计一个 VGA 图像显示控制器。
1.显示模式为 640×480×60Hz 模式;2.用拨码开关控制 R、G、B(每个2 位),使显示器可以显示64 种纯色;3.在显示器上显示横向彩条信号(至少 6 种颜色);4.在显示器上显示纵向彩条信号(至少 8 种颜色);5.在显示器上显示自行设定的图形、图像等。
VGA接口和显示技术总结1
VGA接口和显示技术总结1 引脚功能和布线标准1.1 VGA接口15针定义标准标准15针VGA接口定义如下表:HDSUB5脚 信号 功能/描述 注释1 VGA_RED VGA红色分量,输出端下拉电阻75欧姆 模拟信号 0.7 P-P2 VGA_GRN VGA绿色分量,输出端下拉电阻75欧姆 模拟信号 0.7 P-P3 VGA_BLU VGA兰色分量,输出端下拉电阻75欧姆 模拟信号 0.7 P-P4 N.C 不连接5 GND 地线6 RGND 红色地7 GGND 绿色地8 BLUE 蓝色地9 DDC_POWER DDC电源,用于监视器的EEPROM供电 电源 3.3V10 SGND 同步数字地11 N.C 不连接12 VGA_I2C_DAT DDC I2C数据 输出端电压 3.3V13 VGA_HSYNC VGA水平同步信号 输出端电压 3.3V - 5.0V14 VGA_VSYNC VGA垂直同步信号 输出端电压 3.3V - 5.0V15 VGA_I2C_CK DDC I2C时钟 输出端电压 3.3V备注:1.I2C总线用于DDC获得监视器的性能参数(生产商、型号、频率、分辨率等)。
2.在某些设备中引脚4、11用于I2C总线连接传输设备参数。
2.2. HSYNC和VSYNC信号在设计VGA的输出设备时输出的同步信号是3.3V的,因为VGA监视器可能驱动同步信号是5V,所以有必要使用高阻非双向的缓冲器。
见参考设计图。
为了优化ESD保护,添加低容性钳位二极管到监视器的同步信号上,这些钳位二极管应该放在5V电源平面和地平面之间,并尽可能距离VGA插座近。
2.3. DDC接口大多显示设备都提供了一个专用I2C总线用于VGA接口,从而实现DDC接口,用来读取CRT监视器的特定扩展显示表示数据(EDID)。
I2C总线也是3.3V的,而大部分DDC是5V的,所以放置100K欧姆的上来电阻在5V电源和每个DDC线之间。
VGA 图像显示控制器设计报告
O~P:场消隐期即同步,相当于还原扫描坐标吧
P~Q:场消隐后肩相当于准备开始扫描吧
Q~R:场显示期扫描中,数据有效区域
R~S:场消隐前肩完成扫描,相当于准备同步
以下是行扫描,场扫描HS,VS时序图:
图6
如上图所示:VGA一直在扫描,每一场的扫描包括了若干行扫描,反复循环。且在640*480@60Hz的标准下,每秒需要输出25.175M像素,即每秒输出31469行,也即每秒输出60张图。其工业标准如下图所示:
图7
此部分代码见附录。原理图如下:
图8
3、
数据存储模块调用LPM_ROM模块。具体设置如下:
图9
该模块用于存储图像数据。数据位宽为3,地址线为32768.
原理图如下:
图10
存储与该ROM的图像数据原为BMP格式,为使其可以存储于ROM内部,需要使用软件将信息转换。本实验使用3位数据存储颜色信息,因此仅能显示8中颜色,具体对应关系如下表所示:
显示带宽:带宽指的显示器可以处理的频率范围。如果是60Hz刷新频率的VGA,其带宽达640x480x60=18.4MHz,70Hz的刷新频率1024x768分辨率的SVGA,其带宽达1024x768x70=55.1MHz。
时钟频率:以640x480@59.94Hz(60Hz)为例,每场对应525个行周期(525=10+2+480+33),其中480为显示行。每场有场同步信号,该脉冲宽度为2个行周期的负脉冲,每显示行包括800点时钟,其中640点为有效显示区,每一行有一个行同步信号,该脉冲宽度为96个点时钟。由此可知:行频为525*59.94=31469Hz,需要点时钟频率:525*800*59.94约25MHz
VGA简单图像显示控制模块设计
VGA简单图像显示控制模块设计一、实验目的随着数字图像处理的应用领域的不断扩大,其实时处理技术成为研究的热点。
EDA (电子设计自动化)技术的迅猛发展为数字图像实时处理技术提供了硬件基础。
其中FPGA 的特点适用于进行一些基于像素级的图像处理。
LCD 和CRT 显示器作为一种通用型显示设备,如今已经广泛应用于工作和生活中。
与嵌入式系统中常用的显示器件相比,它具有显示面积大、色彩丰富、承载信息量大、接口简单等优点,如果将其应用到嵌入式系统中,可以显著提升产品的视觉效果。
为此,尝试将VGA 显示的控制转化到FPGA 来完成实现。
利用可编程器件CPLD/FPGA实现VGA彩色显示控制器在工业现场中有许多实际应用。
以硬件描述语言VHDL对可编程器件进行功能模块设计、仿真综合,可实现VGA显示控制器显示各种图形、图像、文字,并实现了动画效果。
二、实验概要1、VGA输出利用FPGA 设计一个类似点阵LCD 显示的VGA 显示控制器,可实现文字及简单的图表显示。
工作时只需将要显示内容转换成对应字模送入FPGA,即可实现相应内容的显示。
2、LCD1602显示显示VGA图像输出信息。
3、按键控制选择要显示的图片或内容等等。
4、声光提示LED与蜂鸣器,用于警告提示或其他功能标识。
5、 VGA 接口及设计参数VGA接口是与显示器进行通信的唯一接口。
通过CPLD/FPGA器件对RGB信号、行同步信号、场同步信号等信号的控制,并参照有关标准,可以实现对VGA显示器的控制。
由此可见,了解接口标准,控制时序和设定恰当的参数是系统设计的关键。
参照VGA主要参数的工业标准,像素输出频率为25.175MHz;行频(线频率)为31.469KHz;场频(刷新率)为59.94Hz。
参数设计原理以及行同步信号(Ts)与显示信号(Tdis)的关系如图1所示。
6、 VGA 图像控制器的设计方案VGA图像控制器是一个较大的数字系统。
采用模块化设计原则,借鉴自顶而下的程序设计思想,进行功能分离并按层次设计。
vga图像显示控制
VGA图像显示控制器一、摘要和关键词摘要:VGA显示屏显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
通过控制扫描计数器不同值时对RGB三原色信号的控制,来完成显示设计。
关键词:行列扫描行列同步RGB三原色控制二、设计任务要求实验目的1. 熟练掌握VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用EDA 工具进行自顶向下的电子系统设计方法;4. 熟悉VGA 接口协议规范。
实验要求:设计一个VGA 图像显示控制器,达到如下功能:显示模式为640×480×60HZ 模式;用拨码开关控制R、G、B(每个2 位),使显示器可以显示64种纯色;在显示器上显示横向彩条信号(至少6 种颜色);在显示器上显示纵向彩条信号(至少8 种颜色);在显示器上显示自行设定的图形、图像等。
选做:自拟其它功能。
三、实验原理1、显示控制原理常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(Green Red Blue)基色组成。
显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
VGA显示控制器控制CRT显示图象的过程如图1所示2、VGA时序信号计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B 三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
VGA显示控制_常熟理工学院
课程设计报告课程EDA课程设计题目VGA显示控制院系物理与电子工程学院年级2011级专业电子科学与技术班级电科112学号050211202050211207050211208050211210学生姓名陈启、李伟阳、李钟奇、刘贵晶指导教师张惠国设计时间目录第1章绪论 (1)1.1EDA技术的发展 (1)1.2课程设计的任务 (2)第2章课题背景 (2)2.1选题背景 (2)2.2国内外文献综述 (3)2.2.1显示技术发展史 (3)2.2.2各种显示器的显示原理 (3)2.2.3显示标准的发展 (6)2.2.4VGA概述及其接口 (7)第3章VGA显示控制的相关理论 (9)3.1VGA显示控制 (9)3.2RGB颜色模型 (11)第4章VGA显示控制器的VHDL设计 (11)4.1显示控制器的整体设计 (11)4.2彩条信号发生器设计 (12)第5章VGA实验实现的结果 (15)5.1VGA显示输出 (15)5.1.1VGA显示的竖直彩条信号 (15)5.1.2VGA显示的横向彩条信号 (15)参考文献 (16)总结体会 (16)第1章绪论1.1EDA技术的发展我们已经进入数字化和信息化的时代,其特点就是各种数字产品的广泛应用。
现代数字产品在性能提高复杂度增大的同时,更新换代的速度也越来越快,实现这种进步的因素在于芯片制造技术和设计技术的进步。
前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。
后者的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD 通用软件包。
在现代数字系统的设计中,EDA技术已成为一种普遍的工具。
对设计者而言,熟练的掌握EDA技术,可以极大的提高工作效率,起到事半功倍的效果。
无论是设计集成电路还是普通设计的电子线路,没有EDA工具的支持是难以完成的。
EDA技术的使用包括电子工程师进行电子系统的开发的全过程,以及进行开发设计涉及的各个方面。
VHDL语言VGA显示控制
EDA大作业实验报告基于VHDL语言的VGA显示与控制1111000079 田宇1111000081 王坤目录1.VGA显示原理 (3)1. 1 VGA逐行扫描显示 (3)1. 2 VGA时序分析 (3)2.时序部分的代码实现 (3)2.1时序部分主要代码 (3)2.2时序部分的实现 (4)2.2. 1 行时序 (4)2.2.2场时序 (5)3.控制部分的代码实现 (5)3.1控制部分主要代码 (5)3.2控制部分的实现 (12)3.2.1彩条与彩格 (12)3.2.2字体显示 (12)4.硬件平台实验 (12)1- VGA显示原理1.1 VGA逐行扫描显示逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步:当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。
1.2 VGA时序分析9.水-麻------------ f荷同步r_ IVGA的行时序\同歩1同步~1牀冲8睐冲.| ------场消(ft何隔VGA的场时序0-1)2.时序部分的代码实现2.1时序部分主要代码if eve nt and ck=,T then H<=H+1 oif H>15 and H<110 then Hs<=> T。
elsif H>=110 then Hs<= 0J。
if H>=160 and H<800 then Hen<=, T。
elsif H=800 then Hen<=,O'。
H<=Ooend ifoend ifoend ifoif Hs' event and Hs=,T then V<=V+1oif V>11 and V<14 then Vs<=, 1'。
VGA控制显示实验说明文档
VGA控制显示实验本实验是在VGA基本控制之上的更进一步的对VGA显示进行控制的。
1.VGA显示原理常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红),G(绿),B(蓝)3基色组成。
显示采用逐行扫描的方式,阴极射线枪发出的电子束打在涂有荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。
从屏幕的左上方开始自左向右的扫描,每扫完一行电子束回到下一行的最左端,每行结束后电子枪回扫的过程中进行消隐。
然后从新开始行扫描,消隐,直到扫描到屏幕的右下方,电子书回到屏幕的左上方重新开始新的图像扫描,并且在回到屏幕的左上方过程中进行消隐,在消隐的过程中不发射电子束。
每一行扫描结束时,用HS(行同步)信号进行同步;扫描完所有的行后用VS(场同步)信号进行同步。
2.VGA实验功能说明本实验设计是基于FPGA的VGA接口控制器,通过对FPGA硬件编程实现显示驱动,通过VGA接口在显示器上显示彩条,圆环和动态方块信号。
实现显示驱动需要5个信号:R,G,B,hsyncb,vsyncb,其中R,G,B分别为红,绿,蓝颜色的强度信号,hsyncb和vsyncb 为行同步和场同步信号,均为模拟信号。
由实验板将FPGA输出直接与VGA接口相连,中间没有D/A转换电路,因此这五个信号实际上均为数字信号。
hsyncb和vsyncb可用数字信号等效;R,G,B分别用3位数字信号表示。
用于显示驱动的行,场同步信号利用实验板的50MHz系统时钟产生。
VGA接口控制器由三个模块组成,即产生行场同步信号和消隐信号的VGASig模块,产生内容和位置信息的ColorMap模块,产生动态时序信号的count16以及顶层模块VGACore,模块之间的信号连接如图:本设计的整体思想是:首先由系统时钟二分频后作为VGASig模块的时钟输入信号;VGASig 模块的hsyncb信号和vsyncb信号形成顶层模块的hsyncb(行同步)和vsyncb(场同步)信号;VGASig模块的hcnt和vcnt信号作为ColorMap模块的地址控制输入,ColorMap模块根据该信号的值输出相应的RGB颜色信息rgbx,rgby,rgbz和rgbw。
清华课件-VGA显示控制器设计
行同步时序关系(参考)
Horizonal pixels(水平像素) 分辨 率 帧频 率 像素 时钟 同步 宽度 (S) 行同 步极 性 活 动 像 素
前沿 (F)
后沿 (B)
扫描 速率
640X 480
60 HZ
25.18 MHZ
16
48
96
31.47 KHZ
-
640
场同步信号
场同步信号与场扫描时序关 系 每帧包含480行数据,这些行 数据在15.25ms时间段内被发 送到显示器。在最后一行数 据发送完毕之后,场同步信 号经过至少0.45ms才可以变 低,并且保持为低64us。在 场同步信号上升沿之后至少 1.02ms,下一帧的第一行数 据才可以发送。所以,一帧 的数据占用16.784ms中的 15.25ms。在剩余的1.534ms 中,显示器保持黑屏(与荧 光粉的发光持续时间有关)。
VGA显示控制器设计
许忠信
1
Outline
VGA接口定义 VGA原理 VGA设计要点
2
VGA接口
VGA是Video Graphics Adapter的缩写, 的缩写, 的缩写 信号类型为模拟类型。 信号类型为模拟类型。
显示卡端的接口为15针母插座 显示卡端的接口为 针母插座: 针母插座
显示器连线端的接口为15针公插座: 显示器连线端的接口为 针公插座: 针公插座
1. 对输入的50MHZ的信号进行二分频,产生一个25MHZ的信号。 2. 根据需要的屏幕像素,产生行同步和场同步的计数矢量。 对于640*480的像素,考虑消隐区,每行像素数0-800,每场行数 0-525。 3. 由行同步和场同步计数矢量产生行同步信号和场同步信号。 行同步:656--752为低电平,其余为高。 场同步:490--492为低电平,其余为高。 4. 色彩输出 色彩输出的范围是在非消隐区内, 在消隐区不要有色彩输出,让R、 G、B信号都为0。 对640*480个像素点的RGB进行赋值,输出不同的图案。 若输出图片,要确定显示输出在屏幕的位置,图片的大小。
VGA显示原理与控制资料讲解
图6 VGA接口定义图
Planning and task
Establish a powerPC405 system with EDK Write a boot loader program
Write a VGA driver and control program
VGA display success
图2 通用VGA显示卡控制电路
Timing analysis
Vsync : 场同步信号 tWV : 场同步脉冲(宽度为2行) tHV : 场消隐前沿(13行) tVH :场消隐后沿(30行) Hsync : 行同步信号 tWH : 行同步脉冲(96个DCLK) tHC : 行消隐前沿(19个DCLK) tCH : 行消隐后沿(45个DCLK) BLANK : 复合消隐信号(行消隐信号和场消隐信号的逻辑 与,有效显示区域为高电平,无效显示区域为低电平)
此课件下载可自行编辑修改,仅供参考! 感谢您的支持,我们努力做得更好!谢谢
754
658
图4 行同步状态机状态转移图
Timing implementation
场同步状态机有v_video,v_front,v_sync, v_back四 种状态,它根据场行数计数器的计数值来进行 场同步状态机状态转移图
Interface definition
1红基色 red 2 绿基色 green 3 蓝基色 blue 4 地址码 ID Bit 5 自测试 (各家定义不同 ) 6 红地 7 绿地 8 蓝地 9 保留 (各家定义不同 ) 10 数字地 11 地址码 12 地址码 13 行同步 14 场同步 15 地址码 (各家定义不同 )
图3 VGA(640X480,60Hz)图像格式信号时序图
VGA控制器
系统设计
系统设计
图像数据ROM
当VGA显示器要显示一帧图像,需要较多的数据量, FPGA芯片内置的ROM存储器很难符合如此大的数据存 储要求,所以必须借助于外部的存储器存入图像数据
系统设计
把一幅图像的数据写入ROM,如何写入文件的格式这一问 题是首先必须解决的
通常我们把Intel Hex,或者二进制文件,bin逐字节通过编 程器写入ROM 而图像都具有固定的格式,如BMP,JPEG,GIF等。其中, BMP格式图像作为一种很常见的图像格式,无压缩处理, 且具备相对简单文件结构,易于处理
系统设计
系统设计
二分频电路
VGA时序控制模块
存储器读出模块
系统设计
二分频把50mhz时钟频率分成25mhz并提供给其它模块作 为时钟 VGA时序控制模块用于产生640×480显示范围,并控制显 示范围和消隐范围以及产生水平同步时序信号hs和垂直 同步时序信号vs的值 存储器读出模块提供给SRAM地址并按地址读出八位数据 (灰度值Y),然后得到R、G、B的值(若Y>中间值,则 R=G=B=1;否则R=G=B=0),并把R、G、B的值通过VGA接 口传到CRT显示器
TDISP
Display time
15.36ms
384,000
480
25.6μs
640
TPW TFP TBP
Pulse width Front porch Back Porch
64μs 320μs 928μs
1,600 8,000 23,200
2 10 29
3.84μs 640 1.92μs
96 16 48
videographicarrayvga显示的基本原理vga显示的基本原理显示则采取逐行扫描得方式解决使得从阴极射线枪中发出的电子束得以打在具有荧光粉得荧光屏上产生rgb三基色的彩色像素扫描开始从屏幕的左上方进行从左到右从上到下进行扫描每扫完了一行电子束则返回于屏幕左边下面一行的初始位置在这期间crt把电子束消隐了每行完成结束时行同步则采用行同步信号进行扫描完所有行
实验五vga图像显示控制
实验五 VGA图像显示控制一实验目的1.进一步掌握VGA显示控制的设计原理。
2.了解图像的存储和读取方法。
3.进一步掌握4×4键盘或PS/2键盘接口电路设计方法。
4.掌握状态机设计复杂控制电路的基本方法。
二硬件需求1.EDA/SOPC实验箱一台。
三实验原理VGA图像显示控制利用实验三中学习的《VGA显示控制模块》显示存储于ROM中的图像数据。
要显示的图像是四块64*64像素大小的彩色图片,通过键盘控制可以选择不同的图片显示。
图像可以在屏幕上移动(水平和垂直方向每帧分别移动“H_Step”点和“V_Step”点),通过键盘改变“H_Step”和“V_Step”的值即可改变其移动速度和方向。
图像碰到屏幕边沿会反弹回去。
如图5.1所示H_StepV_Step图5.1 VGA图像显示控制示意图实验中要用到4×4键盘、VGA显示控制、ROM等模块,在《实验三常用模块电路的设计》中已经讲述,可以直接使用已做好的模块(可能需要修改部分代码)。
键盘也可以使用PS/2接口键盘,这样可以输入更多的字符。
四实验内容1、图5.2是整个设计的顶层电路。
图5.2 VGA图像显示控制顶层电路图2、实验三中学习的几个模块①“Read_Keyboard”模块与实验三中的4×4键盘模块一致;②四个ROM模块使用宏功能模块实现,并设置其内存初始化文件分别为“FBB.mif”、“dog.mif”、“cat.mif”、“flower.mif”,如图5.3所示。
当然也可以用其他图片(大小为64*64)使用“BmpToMif”软件生成对应的“mif”文件,如图5.4所示。
图5.3 内存初始化文件设置图5.4 获取内存初始化文件(mif文件)③“VGA”模块与实验三中基本一致,只需要在端口中屏蔽“key”端口,并加入“imag_rgb: in std_logic_vector(2 downto 0);”用于从外部输入图像数据。
VGA显示控制器
VGA显示控制器摘要前言 3一、课程设计要求和设计目的 41.1 课程设计要求 41.2.课程设计目的 4二、课程设计方案论证和设计原理 42.1.课程设计方案论证 42.2.课程设计原理 42.2.1.VGA扫描原理 42.3.外围电路原理 5三、电路原理分析和系统设计 63.1、系统原理框图 63.1.1.时钟分频模块(PLL) 63.1.2. VGA行列控制模块(VGA) 63.1.3. VGA色彩显示控制模块(R_G_B) 63.2、系统电路Magicsopc实验箱中VGA电路原理图和管脚分配 7四、系统各模块及其工作原理 84.1、系统设计流程 84.2、PLL锁相环模块设计 84.3、VGA控制模块设计 94.3.1. VGA时序分析 94.3.2.显示标准与参数分段 94.3.3. VGA扫描控制流程图 114.3.4. RGB模块设计流程图 124.3.5.顶端模块 12五、编译、仿真以及Magicsopc实验箱实现 135.1.程序编译 135.2.下载试验箱验证 145.3.测试仿真 155.3.1.测试仿真软件Modelsim 155.3.2.仿真结果及分析 155.3.2.1 PLL模块 155.3.2.2 VGA显示控制模块 155.3.2.3 RGB控制模块 16六、实验心得 16七、参考文献 17附件 17VGA模块程序 17RGB模块程序 19TOP顶层模块程序 20测试模块程序 21前言Verilog HDL是目前应用最为广泛的硬件描述语言.Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。
Verilog HDL进行设计最大的优点是其工艺无关性.这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。
Verilog HDL是一种硬件描述语言为了制作数字电路而用来描述ASICs和FPGA的设计之用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA 的VGA显示控制摘要VGA(Video Graphics Array)即视频图形阵列,是IBM公司1987年推出的一种传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛应用。
本次课程设计是基于FPGA和主芯片为 EP4CE30F23C8N的ALTER公司的开发板Cyclone IV来实现的。
数字图像信息在VGA接口显示器正确、完整地显示,涉及到时序的构建和数字图像信息的模拟化两方面,提出一种能够广泛应用的VGA显示接口方案,详细阐述了数字图像数据DA转化并输出到VGA接口显示器显示的方法,其中包括接口的硬件设计、视频DA转换器的使用方法、通过FPGA构造VGA时序信号的方法等等。
方案可以应用于各种仪器,数字视频系统、高分辨率的彩色图片图像处理、视频信号再现等。
课设主要用到的芯片是ADV7123,它是一款高速、高精度数模转换芯片。
拥有三路十位D/A转换器,能够将代表颜色的数据锁存到数据寄存器中,然后通过D/A 转换器转换成模拟信号输出,得到我们要的色彩。
VGA显示的硬件设计和原理1.1 FPGA主芯片课程设计所用开发板的主芯片是EP4CE30F23C8N——Cyclone IV,其由Altera公司开发,值得注意的是该开发板所支持的QUARTUS II的版本较高,并且11.0的版本较12.0的版本编译好的程序更好下载。
图-11.2 ADV7123实现VGA的控制显示主要用到的芯片就是ADV7123,ADV7123由完全独立的三个I0位高速D/A转换器组成,RGB(红绿蓝)视频数据分别从R9~R0、G9~G0、B9~B0输入,在时钟CLOCK的上升沿锁存到数据寄存器中,然后经告诉D/A转换器转换成模拟信号。
三个独立的视频D/A转换器都是电流型输出,可以接成差分输出,也可以接成单端输出。
DE2-115上按单端输出,在模拟输出端用75欧姆电阻接地,以满足工业标准。
低电平有效的BLANK信号为复合消隐信号,当BLANK为低电平时,模拟视频输出消隐电平,此时从R9~R0,G9~G0,B9~B0输入的所有数据被忽略。
BLANK和SYNC都是在CLOCK 的上升沿被锁存的。
图-2是ADV7123的功能原理图:图-2图-3是它的引脚图:图-3引脚功能描述:G0-G9,B0-B9,R0-R9:像素数据输入端口,上升沿来临锁存数据;BLANK:复合空白信号控制输入;CLOCK:65MHz时钟输入端口;IOB,IOG,IOR:像素实时输出端口;SYNC:复合同步控制输入。
图-4是ADV7123 的时序图:图-4开发板与显示器的端口连接:连接头如图-5所示,15个管脚里面5个是最重要的,他们包括三个基本红、绿、蓝三条基本色彩线和水平与垂直两条控制线,有这5条控制线,我们可以在屏幕上显示多种颜色,在开发板上,红、绿、蓝三条基本色彩每条都由10条输入线控制,课设中用到其中8条,可以实现显示真彩色BMP图像图-5图-6是原理图:图-62.同步时序的实现2.1 VGA时序原理我们常把要显示的数据如图像处理结果存放到存储器里,如果要把显示存储器里的图像在VGA接口显示器显示,大多情况下,扫描时序是需要我们构造的。
以1024@768,59.94 Hz(60 Hz)为例。
VGA工业标准规定,如图2,每场信号对应806个行周期,其中768行为图像显示行,每场有场同步信号,该脉冲宽度为6个行周期的负脉冲;每显示行包括1344点时钟,其中1024点为有效显示区,每行有一个行同步信号负脉冲,该脉冲宽度为136个点时钟。
这样我们可以知道,行频为1344@59.94 Hz即80559 Hz,需要的点时钟频率为:806@1344@59.94 Hz约65 MHz。
图7 、8行场同步信号时序图图-7图-8同步信号,如场同步、行同步、符合同步信号可以在FPGA里构建。
选取65 MHz 的晶振作为点时钟CLOCK输入,将CLOCK输入到模等于1344的像素脉冲计数器中,当像素脉冲计数在0到136脉冲间输出低电平,其它输出高电平,以此作为行同步信号Hsys;然后以vga_hs行节拍为单位进行计数,当计到0到6时输出低电平,其它输出高电平,当计了806个行同步信号时,计数器清0,以此作为场同步信号vga_vs。
根据图-9,可以控制在屏幕上显示不同的图形,要注意行消隐和场消隐时间。
图-9其中行时序和场时序都要产生同步脉冲(sync a)、显示后沿(back porch b)、显示时序段(displayinterval c)和显示前沿4个部分,各部分所占的时间如上图所示。
2.2软件实现(1)产生hs行同步脉冲,宽度136pix;if(hcnt[10:8]==3'd0&&(hcnt[7]==1'b0||hcnt[7:4]==4'd0)) //-- 0~135beginvga_hs <= 1'b0;endelsebeginvga_hs <= 1'b1;end(2)产生vs场同步脉冲, 宽度 6个vgahs宽度;if(vcnt[9:3]==7'd0&&vcnt[2:1]!=2'b11) //-- 0~5beginvga_vs <= 1'b0;endelsebeginvga_vs <= 1'b1;end3.总体设计总体设计一共包含4个模块,包含2个分频模块,1个计数模块,1个控制显示模块,具体设计如下:(1)由于系统时钟为50MHz,但是要65MHz的输入时钟,可以通过锁相环,比例为13/10,具体方法:Tools->MagaWizard Plug-In Manager->Create a new custom megafuctionvariation->ALTPLL->Verilog HDL另外还要设计一个50M分频来控制每幅画面显示的时间,代码如下:module div50M(clkin,clkout);input clkin;output clkout;reg clkout;reg [25:0]cnttemp;always @(posedge clkin )beginif(cnttemp==49999999)begincnttemp <= 1'b0;endelsebeginif(cnttemp==25000000)beginclkout <= 1'b1;endelsebeginclkout <= 1'b0;endcnttemp <= cnttemp+1'b1;endend(2)计数模块长度为3位,从000到111一共8种情况。
连接50M分频,计数器左边接50M分频,每当上升沿来临时,计数器加1,通过输出值得不同展现不同画面。
(3)控制模块包括时序的控制以及同步、显示的时间的设计,同时为了得到不同的颜色,根据不同颜色相加可以配成第三种颜色,下图为配色方案,具体可以通过程序来实现,因为分别采用的是8位来表示三基色,每一种三基色都有1到255种情况,因此可以配出多种颜色,图-10为配色方案:图-10设计好这四个模块,画出原理图-11:图-114.程序调试将画好的原理图分配好引脚,进行编译,以下是我在调试中遇到的问题,以及解决方法。
(1)刚开始会出现很多语法错误的问题,这需要认真检查源程序,比如有些地方一句话结束,没有加分号,还有的符号用的中文符号,也会出编译错误;有的地方如一个if必须对应一个else,一个begin对应一个end,这些基本的错误要认真检查。
(2)行同步与场同步的时间要严格控制,如果控制不当有可能会损坏显示器,这个要根据图-9,找到1024*768@60的相应时序设计。
(3)关于计数参数vga_en的case语句,一个要注意语法问题,另外就是通过case语句控制显示不同画面,如显示横条或是竖条怎么设计,要明白这个语句的作用是控制显示的位置。
这里要注意的是通过hcnt和vcnt控制显示那些行和哪些列,只要该行不显示,则不管它对应的列是显示还是不显示,该行都不显示。
(4)关于行像素点计数参数hpixcnt的case语句,hpixcnt是一个位宽为10位的矢量,当取最高位为0时在行像素点0到512显示一种颜色,取1时在行像素点513到1024可以显示另一种颜色,当取高两位时有四种选择,高三位则有8中颜色选择。
显示的部分图像如下:5.课设总结经过两周的课设,使我对FPGA有了更深刻的理解,从选择课题,到着手设计以及出现效果,这过程中需要不断改进,不断获取信息,深刻理解其工作原理,才能找到实现的方法。
刚开始,对视频显示没有多少了解,通过看芯片资料,网上查阅论文资料,才慢慢对其有一定了解,然后是研究其显示原理,以及时序的相关问题。
由于对verilog语言不是很了解,还需要了解其基本语法,掌握基本的分频、计数模块的设计方法。
但是这些还不够,最最重要的的是控制模块,这个过程我借鉴了一些其它资源,研究它的原理、作用。
然后通过不断地调试得到自己想要的效果。
在调试的过程中,首先就是要小心,避免一些基本语法的错误,然后就是要根据时序的关系,控制显示输出,不仅要考虑到显示的的位置,显示的色彩,还要控制显示的时间等问题。
在今后的学习中,要谨慎治学,多思考,多翻阅书籍。
遇到不懂的问题应该多渠道查找信息,平时多练习,培养研究能力,只有这样才能在今后的学习中不断进步。
这次课程设计也是汲取经验的过程,通过不断积累经验,才能更好地解决问题。
6.主要程序清单`timescale 1ns / 1psmodule vga_top(clk65M,//输入时钟rstn, //复位vga_en, //0到7计数,显示8帧不同画面vga_hs, //行同步信号vga_vs, //场同步信号vga_r,vga_g,vga_b,vga_blk, //复合空白信号vga_syn, //复合同步信号控制输出vga_clk //输出时钟);input c lk65M;input r stn;input [2:0]vga_en;output vga_hs;output vga_vs;output [7:0]vga_r; //要显示真彩色BMP图像,r,g,b三个分量各需要8位 output [7:0]vga_g;output [7:0]vga_b;output vga_blk;output vga_syn;output vga_clk;reg vga_vs;reg[7:0] vga_r; //声明一个8位的矢量寄存器变量reg[7:0] vga_g;reg[7:0] vga_b;wire vga_blk;wire vga_syn;wire vga_clk;reg [10:0]hcnt; //声明一个11位的矢量寄存器变量,行的像素点计数reg [9:0]vcnt; //行计数reg vgahs1;reg hdisply; //控制行各点的显示reg vdisply; //控制行的显示reg frminit;assign vga_clk = clk65M;assign vga_syn = 1'b0;//--assign vga_blk = vga_vs&vga_hs;assign vga_blk = vdisply&hdisply; //将vdisplay和hdisplay相与赋给vga_blk always @(posedge clk65M or negedge rstn)beginif(!rstn)//rstn低电平复位,重新扫描beginhcnt <= 11'd0;vcnt <= 10'd0;vga_hs <= 1'b1;vga_vs <= 1'b1;vgahs1 <= 1'b0;hdisply <= 1'b0;vdisply <= 1'b0;frminit <= 1'b0;elsebeginif(hcnt==11'd1343) // 1344pix;有效显示宽度为1024pix beginhcnt <= 11'd0;endelsebeginhcnt <= hcnt + 1'b1;endif(hcnt[10:8]==3'd0&&(hcnt[7]==1'b0||hcnt[7:4]==4'd0)) //-- 0~135beginvga_hs <= 1'b0; //-- 产生hs行同步脉冲,宽度136pix;endelsebeginvga_hs <= 1'b1;endcase(vga_en)3'b000:beginif((hcnt[10:0]>295)&&(hcnt[10:0]<1320))beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;if((vcnt[9:0]>28)&&(vcnt<803))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;endend3'b001:beginif((hcnt[10:0]>295)&&(hcnt[10:0]<1320)) beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;endif((vcnt[9:0]>28)&&(vcnt<413))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;endend3'b010:if((hcnt[10:0]>295)&&(hcnt[10:0]<1320)) beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;endif((vcnt[9:0]>28)&&(vcnt<803))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;endend3'b011:beginif((hcnt[10:0]>295)&&(hcnt[10:0]<1320)) beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;endif((vcnt[9:0]>28)&&(vcnt<797))beginvdisply <= 1'b1;elsebeginvdisply <= 1'b0;endend3'b100:beginif((hcnt[10:0]>295)&&(hcnt[10:0]<1320)) beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;endif((vcnt[9:0]>28)&&(vcnt<803))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;endend3'b101:beginif((hcnt[10:0]>295)&&(hcnt[10:0]<1320)) beginhdisply <= 1'b1;endbeginhdisply <= 1'b0;endif((vcnt[9:0]>220)&&(vcnt<420))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;endend3'b110:beginif((hcnt[10:0]>295)&&(hcnt[10:0]<551)) beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;endif((vcnt[9:0]>419)&&(vcnt<611))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;end3'b111:beginif((hcnt[10:0]>807)&&(hcnt[10:0]<1320)) beginhdisply <= 1'b1;endelsebeginhdisply <= 1'b0;endif((vcnt[9:0]>35)&&(vcnt<797))beginvdisply <= 1'b1;endelsebeginvdisply <= 1'b0;endendendcasevgahs1 <= vga_hs;if(vga_hs==1'b0&&vgahs1==1'b1)beginif(vcnt==10'd805)beginvcnt <= 10'd0;frminit <= 1'b1;endelsevcnt <= vcnt + 1'b1;endendelsebeginfrminit <= 1'b0;endif(vcnt[9:3]==7'd0&&vcnt[2:1]!=2'b11)beginvga_vs <= 1'b0;endelsebeginvga_vs <= 1'b1;end endendreg [9:0]hpixcnt;reg [7:0]frmdtmp;always @(posedge clk65M or negedge rstn)beginif(!rstn)beginvga_r <= 8'd0;vga_g <= 8'd0;vga_b <= 8'd0;hpixcnt <= 10'd0;frmdtmp <= 8'd100;endbeginif(hdisply==1'b1)beginhpixcnt <= hpixcnt + 1'b1; endelsebeginhpixcnt <= 10'd0;end if(frminit==1'b1)beginfrmdtmp <= frmdtmp + 1'b1;endcase(vga_en)3'b000:beginvga_r <= 8'd250;vga_g <= 8'd100;vga_b <= 8'd50;end3'b001:begincase(hpixcnt[9])1'd1:beginvga_r <= 8'd100;vga_g <= 8'd250;vga_b <= 8'd0;end1'd0:vga_r <= 8'd100;vga_g <= 8'd250;vga_b <= 8'd200;endendcaseend3'b010:beginvga_r <= 8'd250;vga_g <= 8'd0;vga_b <= 8'd250;end3'b011:begincase(hpixcnt[9:8])2'd0:beginvga_r <= 8'd250;vga_g <= 8'd200;vga_b <= 8'd0;end2'd1:beginvga_r <= 8'd0;vga_g <= 8'd250;vga_b <= 8'd200; end2'd2:beginvga_r <= 8'd200;vga_g <= 8'd0;vga_b <= 8'd250; end2'd3:beginvga_r <= 8'd250;vga_g <= 8'd250;vga_b <= 8'd250; endendcaseend3'b100:begincase(hpixcnt[9:7])3'b000:beginvga_r <= 8'd250;vga_g <= 8'd200;vga_b <= 8'd0;end3'b001:beginvga_r <= 8'd0;vga_g <= 8'd250;vga_b <= 8'd200; end3'b010:beginvga_r <= 8'd200;vga_g <= 8'd0;vga_b <= 8'd250; end3'b011:beginvga_r <= 8'd250;vga_g <= 8'd250;vga_b <= 8'd250; end3'b100:beginvga_r <= 8'd250;vga_g <= 8'd200;vga_b <= 8'd0;end3'b101:beginvga_r <= 8'd0;vga_g <= 8'd250;vga_b <= 8'd200; end3'b110:beginvga_r <= 8'd200;vga_g <= 8'd0;vga_b <= 8'd250; end3'b111:beginvga_r <= 8'd250;vga_g <= 8'd250;vga_b <= 8'd250;endendcaseend3'b101:beginvga_r <= 8'd250;vga_g <= 8'd250;vga_b <= 8'd0;end3'b110:beginvga_r <= 8'd250;vga_g <= 8'd0;vga_b <= 8'd0;end3'b111:beginvga_r <= 8'd250;vga_g <= 8'd100;vga_b <= 8'd50;endendcase endendendmodule26。