基于VHDL语言的VGA程序
基于FPGA的VGA显示详解(附VHDL代码)
基于FPGA的VGA显示(后附VHDL代码)整个VGA的时序操作很简单,就是形成一个具有一定占空比的电平周期。
只是整个VGA的操作涉及到一些专有名词,理解上比较困难,一旦明白了这些是什么意思后,操作即将变得很简单。
VGA工作流程:常见的彩色显示器,一般由CRT (阴极射线管)构成,彩色是由R、G、B(红、绿、蓝)三基色组成,CRT用逐行扫描或隔行扫描的方式实现图像显示,由VGA控制模块产生的水平同步信号和垂直同步信号控制阴极射线枪产生的电子束,打在涂有荧光粉的荧光屏上,产生R、G、B三基色,合成一个彩色像素。
扫描从屏幕的左上方开始,由左至右,由上到下,逐行进行扫描,每扫完一行,电子束回到屏幕下一行的起始位置,在回扫期间,CRT对电子束进行消隐,每行结束是用行同步信号HS进行行同步;扫描完所有行,再由场同步信号VS进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。
行同步信号HS 和场同步信号VS是两个重要的信号。
注意点:什么时候消隐?为什么要消隐?当一行扫描完毕后然后电子枪又转到下一行的这段时间或是扫描完所有的行后电子枪回到第一行的这段时间,这两段时间都要消隐。
在消隐的时间内,数据是无效的。
这样就保证电子枪的回扫的个动作不干扰显示,因为回扫这个动作是很频繁的,若在这个时间段内数据有效,那么就回在显示屏上出现电子枪回扫的轨迹。
消隐的时候我们干什么?消隐这个动作是显示屏(CRT)执行的,我们在编程时只要注意有这么个东西就行。
同步信号(包括HS和VS)是什么?这个就相当于一个数据起始信号,表明数据马上就要开始了。
如果撇开具体的设备,那么这个信号和AD、DA中常用的Sync(同步)、CS(片选)信号相当。
该信号一般为负电平,但对于有的显示器可不关心该信号的极性,因为它内部可自动转换正负逻辑。
对于普通的VGA显示器,需要引出5个信号:R,G,B:三原色;HS:行同步信号;VS:场同步信。
基于FPGA的VGA图形控制器
基于FPGA的VGA图形控制器设计引言VGA(视频图形阵列)作为一种标准的显示接口得到广泛的应用。
利用FPGA 芯片和EDA 设计方法,可以因地制宜,根据用户的特定需要,设计出针对性强的VGA 显示控制器,不仅能够大大降低成本,还可以满足生产实践中不断变化的用户需要,产品的升级换代方便迅速。
在本设计中采用了Altera 公司的EDA 软件工具Quartus II ,并以ACEX系列FPGA 的器件为主实现硬件平台的设计。
1 基于FPGA 的VGA 图形控制器系统框图根据自顶向下的程序设计思想,采用模块化设计,我们对VGA 图形控制器进行功能分离并按层次设计。
利用VHDL 硬件描述语言逐一对每个功能模块进行描述,并逐个通过编译仿真,最后下载到硬件平台调试。
本设计的VGA 控制器主要由以下模块组成:VGA 时序控制模块、分频模块、汉字显示模块、图像控制模块、ROM读取模块等,如图1 所示。
图1 基于FPGA 的VGA 图形控制系统框图2 主要功能模块设计2. 1 VGA 时序控制模块VGA 时序控制模块是整个显示控制器的关键部分,最终的输出信号行、场同步信号必须严格按照VGA 时序标准产生相应的脉冲信号。
对于普通的VGA 显示器,其引出线共含5 个信号: G,R ,B (3 基色信号) ,HS (行同步信号) ,VS(场同步信号)。
在5个信号时序驱动时,VGA 显示器要严格遵循“VGA工业标准”,即640 Hz ×480 Hz ×60Hz 模式。
对于VGA 显示器,每个像素点的输出频率为25. 175MHz ,因此采用50MHz 的时钟信号,经过二分频模块,得到25MHz 的输入时钟脉冲。
依据VGA 时序标准,行同步信号HS ,行周期为31. 78μs ,每显示行包括800 点,其中640 点为有效显示区,160 点为行消隐区,每行有一个脉冲,该脉冲的低电平宽度为3. 81μs (即96 个脉冲) ; 场同步信号VS ,场周期为16.683ms ,每场有525 行,其中480 行为有效显示行,45 行为场消隐区,每场有一个脉冲,该脉冲的低电平宽度为63μs (2 行)。
FPGA驱动VGA显示VHDL程序(彩条,可用)
-----------------------------------------------------------------------------------------------------***************************************************************************** ********************-- CreateDate : 2009-03-28-- ModifData : 2009-03-28-- Description : VGA Interface-- Author : Explorer01-- Version : V1.1--***************************************************************************** ********************----------------------------------------------------------------------------------------------------- VHDL library DeclarationsLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Entity DeclarationsENTITY VGA ISPORT(RESET : IN STD_LOGIC;GCLKP1 : IN STD_LOGIC;GCLKP2 : IN STD_LOGIC;--------------------------------------- VGAR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);G : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);B : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);VS : OUT STD_LOGIC;HS : OUT STD_LOGIC);END VGA;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Architecture of Entity DeclarationsARCHITECTURE Behavioral OF VGA IS-- SuperVGA timing from NEC monitor manual-- Horizontal :-- ______________ _____________-- | | |-- _______________| VIDEO |_______________| VIDEO (next line) ---- ___________ _____________________ ______________________-- |_| |_|-- B C <------D-----><-E->-- <----------A---------->------ Vertical :-- ______________ _____________-- | | |-- _______________| VIDEO |_______________| VIDEO (next frame) ---- ___________ _____________________ ______________________-- |_| |_|-- P Q <------R-----><-S->-- <----------O---------->---- For VESA 800*600 @ 60Hz:-- Fh (kHz) :37.88-- A (us) :26.4-- B (us) :3.2-- C (us) :2.2-- D (us) :20.0-- E (us) :1.0---- Fv (Hz) :60.32-- O (ms) :16.579-- P (ms) :0.106-- Q (ms) :0.607-- R (ms) :15.84-- S (ms) :0.026------ Horizonal timing information:---- Mode name Pixel sync back active front whole line -- clock pulse porch time porch period -- (MHz) (us) (pix) (pix) (pix) (pix) (pix)---- VGA 800x600 60Hz 40 3.2 128 85 806 37 1056---- Vertical timing information:-- Mode name Lines line sync back active front whole frame-- Total width pulse porch time porch period-- (us) (us)(lin) (us)(lin) (us) (lin) (us)(lin) (us) (lin)---- VGA 800x600 60Hz 628 26.40 106 4 554 21 15945 604 -1* 16579 628--------------------------------------------------CONSTANT H_PIXELS : INTEGER := 640; -- 806CONSTANT H_FRONTPORCH : INTEGER := 16; -- 37CONSTANT H_SYNCTIME : INTEGER := 96; -- 128CONSTANT H_BACKPORCH : INTEGER := 48; -- 85CONSTANT H_SYNCSTART : INTEGER := H_PIXELS + H_FRONTPORCH;CONSTANT H_SYNCEND : INTEGER := H_SYNCSTART + H_SYNCTIME;CONSTANT H_PERIOD : INTEGER := H_SYNCEND + H_BACKPORCH;CONSTANT V_LINES : INTEGER := 480; -- 604CONSTANT V_FRONTPORCH : INTEGER := 11; -- -1CONSTANT V_SYNCTIME : INTEGER := 2; -- 4CONSTANT V_BACKPORCH : INTEGER := 32; -- 21CONSTANT V_SYNCSTART : INTEGER := V_LINES + V_FRONTPORCH;CONSTANT V_SYNCEND : INTEGER := V_SYNCSTART + V_SYNCTIME;CONSTANT V_PERIOD : INTEGER := V_SYNCEND + V_BACKPORCH;------------------------------------------------------------------------------------------------SIGNAL HsyncB : STD_LOGIC;SIGNAL VsyncB : STD_LOGIC;SIGNAL Hcnt : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL Vcnt : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL Enable : STD_LOGIC;SIGNAL TempR : STD_LOGIC;SIGNAL TempG : STD_LOGIC;SIGNAL TempB : STD_LOGIC;SIGNAL ColorR : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ColorG : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ColorB : STD_LOGIC_VECTOR(3 DOWNTO 0);--------------------------------------------------Clock:SIGNAL Period1uS, Period1mS: STD_LOGIC;------------------------------------------------SIGNAL Count : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL CLK, CLKTemp : STD_LOGIC;BEGIN---------------------------------------------------------------------------------------------------- Globle Clock AssignmentGlobleClk:PROCESS( RESET, GCLKP1, GCLKP2, Period1uS, Period1mS ) V ARIABLE Count : STD_LOGIC_VECTOR(5 DOWNTO 0); -- 1MHzV ARIABLE Count1 : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 1KHzV ARIABLE Count2 : STD_LOGIC_VECTOR(9 DOWNTO 0); -- 1Hz BEGIN------------------------------------------------- 25 MHzIF( GCLKP1'EVENT AND GCLKP1='1' ) THEN CLK <= NOT CLK;END IF;-------------------------------------------------GCLKP : 50MHz--Period: 1uS (Period1uS <= GCLKP1; )IF( RESET = '0' ) THENCount := (OTHERS=>'0');ELSIF( GCLKP2'EVENT AND GCLKP2='1' ) THENIF( Count>"110000" ) THEN Count := (OTHERS=>'0'); -- 1uSELSE Count := Count + 1;END IF;END IF;Period1uS <= Count(5);-------------------------------------------------Period: 1mSIF( RESET = '0' ) THENCount1 := (OTHERS=>'0');ELSIF( Period1uS'EVENT AND Period1uS='1' ) THENIF( Count1>"1111100110" ) THEN Count1 := (OTHERS=>'0'); -- 1uSELSE Count1 := Count1 + 1;END IF;END IF;Period1mS <= Count1(9);-------------------------------------------------Period: 1SIF( RESET = '0' ) THENCount2 := (OTHERS=>'0');ELSIF( Period1mS'EVENT AND Period1mS='1' ) THENIF( Count2>"1111100110" ) THEN Count2 := (OTHERS=>'0'); -- 1uSELSE Count2 := Count2 + 1;END IF;END IF;-- 2 HzCLKTemp <= Count2(8);END PROCESS;--================================================================= ===============================-- VGA Clock process---------------------------------------------------------------------------------------------------- Horizontal counterPROCESS( RESET, CLK )BEGINIF( RESET='0' ) THEN Hcnt <= (OTHERS=>'0');ELSIF( CLK'EVENT AND CLK='1' ) THENIF( Hcnt<H_PERIOD ) THEN Hcnt <= Hcnt + 1;ELSE Hcnt <= (OTHERS=>'0');END IF;END IF;END PROCESS;-------------------------------------------------- Vertical counterPROCESS( RESET, HsyncB )BEGINIF( RESET='0' ) THEN Vcnt <= (OTHERS=>'0');ELSIF( HsyncB'EVENT AND HsyncB='1' ) THENIF( Vcnt<V_PERIOD ) THEN Vcnt <= Vcnt + 1;ELSE Vcnt <= (OTHERS=>'0');END IF;END IF;END PROCESS;-------------------------------------------------------------------------------------------------- Horizontal SyncPROCESS( RESET, CLK )BEGINIF( RESET='0' ) THEN HsyncB <= '1';ELSIF( CLK'EVENT AND CLK='1' ) THENIF( Hcnt>=(H_PIXELS + H_FRONTPORCH) AND Hcnt<(H_PIXELS + H_FRONTPORCH + H_SYNCTIME) ) THENHsyncB <= '0';ELSEHsyncB <= '1';END IF;END IF;END PROCESS;-------------------------------------------------- Vertical SyncPROCESS( RESET, HsyncB )BEGINIF( RESET='0' ) THEN VsyncB <= '1';ELSIF( HsyncB'EVENT AND HsyncB='1' ) THENIF( Vcnt>=(V_LINES + V_FRONTPORCH) AND Vcnt<(V_LINES + V_FRONTPORCH + V_SYNCTIME) ) THENVsyncB <= '0';ELSEVsyncB <= '1';END IF;END IF;END PROCESS;HS <= HsyncB;VS <= VsyncB;--==============================================--------------------------------------------------PROCESS( RESET, CLK, Hcnt, Vcnt )BEGINIF( CLK'EVENT AND CLK='1' ) THENIF ( RESET='0' ) THEN Enable <= '0';ELSIF( Hcnt>=H_PIXELS OR Vcnt>=V_LINES ) THEN Enable <= '0';ELSE Enable <= '1';END IF;END IF;END PROCESS;--------------------------------------------------PROCESS( RESET, CLKTemp, Hcnt, Vcnt, Enable, TempR, TempG, TempB, Count ) -- V ARIABLE Count : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINIF ( RESET='0' ) THEN Count <= "000";ELSIF( CLKTemp'EVENT AND CLKTemp='1' ) THEN Count <= Count + 1;END IF;------------------------------------------------CASE Hcnt(7 DOWNTO 5) ISWHEN "000" => TempR <= '1'; TempG <= '1'; TempB <= '1';WHEN "001" => TempR <= '0'; TempG <= '0'; TempB <= '0';WHEN "010" => TempR <= '1'; TempG <= '0'; TempB <= '0';WHEN "011" => TempR <= '0'; TempG <= '0'; TempB <= '1';WHEN "100" => TempR <= '0'; TempG <= '1'; TempB <= '0';WHEN "101" => TempR <= '1'; TempG <= '0'; TempB <= '1';WHEN "110" => TempR <= '1'; TempG <= '1'; TempB <= '0';WHEN "111" => TempR <= '1'; TempG <= '1'; TempB <= '1';WHEN OTHERS=> TempR <= '0'; TempG <= '0'; TempB <= '0';END CASE;IF( Enable='1' ) THENIF( TempR='1' ) THEN R <= Count & '1';ELSE R <= (OTHERS=>'0');END IF;IF( TempG='1' ) THEN G <= '1' & Count;ELSE G <= (OTHERS=>'0');END IF;IF( TempB='1' ) THEN B <= '1' & Count(0) & Count(1) & Count(2);ELSE B <= (OTHERS=>'0');END IF;ELSER <= (OTHERS=>'0');G <= (OTHERS=>'0');B <= (OTHERS=>'0');END IF;END PROCESS;--------------------------------------------------------------------------------------------------END Behavioral;。
推荐-VGA彩条信号显示控制器的设计EDA技术课程设计 精品
河南城建学院EDA 技术课程设计课题:VGA彩条信号显示控制器的设计系别:电气与信息工程学院河南城建学院20XX年6月28日成绩评定·一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。
成绩:(折合等级)指导教师签字年月日本设计是用 FPGA 来实现 VGA 图像控制器,控制显示器显示彩条信号,用VHDL语言,在QuartusII上实现软件仿真。
本文首先介绍了VGA显示的基本原理,然后提出了一种VGA图像控制器的设计方案,并用VHDL硬件描述语言和原理图输入的方法完成了该方案的设计,通过显示横彩条、竖彩条、棋盘格,验证了VGA_SYNC同步信号功能模块时序的正确性,软件实验环境为 Quartus II 6.0 开发软件。
本系统尝试用FPGA实现 VGA图像显示控制器,这一过程通过编程实现,之后通过软件的测试和仿真,当软件验证无误后完成硬件的下载验证,最终在显示器上实现输出,基本原理就是利用FPGA的可编程原理和VGA的时序控制原理,这在产品开发设计中有许多实际应用。
例如显示器,电视等的维修,可以期望采用FPGA设计的VGA接口可以将要显示的数据直接送到显示器,就可以可靠的找到故障的大致原因等。
从而省掉每次都要接信号源的麻烦,同时也节约了成本。
节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。
同时亦可将其作为信号源,应用于电视机或计算机等彩色显示器的电路开发,方便彩色显示器驱动控制电路的调试。
关键字:EDA,VHDL,VGA,Quartus II1 概述本设计采用EDA技术,通过CPLD芯片实现了实现VGA彩条信号的显示的设计,本文采用VHDL 硬件描述语言描述VGA彩条信号的显示电路,完成对电路的功能仿真。
通过按键来实现横彩条、竖彩条、棋盘式方格图案的选择,并能进一步设计出文字、图像的显示。
与传统的设计方式相比,本设计由于采用了CPLD 芯片来实现,它将大量的电路功能集成到一个芯片中,并且可以由用户自行设计逻辑功能,提高了系统的集成度和可靠性。
FPGA控制VGA显示设计
顶层设计图COLOR模块VHDL语言编码:LIBRARY IEEE; -- 显示器彩条发生器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COLOR ISPORT ( CLK, MD : IN STD_LOGIC; --MD接模式选择按键HS, VS, R, G, B : OUT STD_LOGIC ); -- 行场同步/红,绿,蓝END COLOR;ARCHITECTURE behav OF COLOR ISSIGNAL HS1,VS1,FCLK,CCLK : STD_LOGIC;SIGNAL MMD : STD_LOGIC_VECTOR(1 DOWNTO 0);-- 方式选择SIGNAL FS : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL CC : STD_LOGIC_VECTOR(4 DOWNTO 0); --行同步/横彩条生成SIGNAL LL : STD_LOGIC_VECTOR(8 DOWNTO 0); --场同步/竖彩条生成SIGNAL GRBX : STD_LOGIC_VECTOR(3 DOWNTO 1);-- X横彩条SIGNAL GRBY : STD_LOGIC_VECTOR(3 DOWNTO 1);-- Y竖彩条SIGNAL GRBP : STD_LOGIC_VECTOR(3 DOWNTO 1);SIGNAL GRB : STD_LOGIC_VECTOR(3 DOWNTO 1);BEGINGRB(2) <= (GRBP(2) XOR MD) AND HS1 AND VS1;GRB(3) <= (GRBP(3) XOR MD) AND HS1 AND VS1;GRB(1) <= (GRBP(1) XOR MD) AND HS1 AND VS1;PROCESS( MD )BEGINIF MD'EVENT AND MD = '0' THENIF MMD = "10" THEN MMD <= "00";ELSE MMD <= MMD + 1; --三种模式END IF;END IF;END PROCESS;PROCESS( MMD )BEGINIF MMD = "00" THEN GRBP <= GRBX; -- 选择横彩条ELSIF MMD = "01" THEN GRBP <= GRBY; -- 选择竖彩条ELSIF MMD = "10" THEN GRBP <= GRBX XOR GRBY; --产生棋盘格ELSEGRBP <= "000";END IF;END PROCESS;PROCESS( CLK )BEGINIF CLK'EVENT AND CLK = '1' THEN -- 12MHz 13分频IF FS = 12 THEN FS <= "0000";ELSEFS <= (FS + 1);END IF;END IF;END PROCESS;FCLK <= FS(3);PROCESS( FCLK )BEGINIF FCLK'EVENT AND FCLK = '1' THENIF CC = 29 THEN CC <= "00000";ELSECC <= CC + 1;END IF;END IF;END PROCESS;CCLK <= CC(4);PROCESS( CCLK )BEGINIF CCLK'EVENT AND CCLK = '0' THENIF LL = 481 THEN LL <= "000000000";ELSELL <= LL + 1;END IF;END IF;END PROCESS;PROCESS( CC,LL )BEGINIF CC > 23 THEN HS1 <= '0'; --行同步ELSEHS1 <= '1';END IF;IF LL > 479 THEN VS1 <= '0'; --场同步ELSEVS1 <= '1';END IF;END PROCESS;PROCESS(CC, LL)BEGINIF CC < 3 THEN GRBX <= "111"; -- 横彩条ELSIF CC < 6 THEN GRBX <= "110";ELSIF CC < 9 THEN GRBX <= "101";ELSIF CC < 12 THEN GRBX <= "100";ELSIF CC < 15 THEN GRBX <= "011";ELSIF CC < 18 THEN GRBX <= "010";ELSIF CC < 21 THEN GRBX <= "001";ELSE GRBX <= "000";END IF;IF LL < 60 THEN GRBY <= "111"; -- 竖彩条ELSIF LL < 120 THEN GRBY <= "110";ELSIF LL < 180 THEN GRBY <= "101";ELSIF LL < 240 THEN GRBY <= "100";ELSIF LL < 300 THEN GRBY <= "011";ELSIF LL < 360 THEN GRBY <= "010";ELSIF LL < 420 THEN GRBY <= "001";ELSE GRBY <= "000";END IF;END PROCESS;HS <= HS1 ; VS <= VS1 ;R <= GRB(2) ;G <= GRB(3) ; B <= GRB(1); END behav;附图:竖条显示棋盘格显示。
VGA彩条信号显示控制VERILOG HDL 程序
module vga(clock50MHz,
MD,
rgb,
hs,
vs,
rst,
);
input clock50MHz;
input [1:0]MD;
output [2:0]rgb;
output hs;
output vs;
input rst;
reg hs,vs,clk;
begin
if(hcnt==h_Tg-1) hcnt<=0;
else hcnt<=hcnt+9'b1;
end
always@(posedge clk ) //clock 25MHz
begin
if(hcnt<=h_Ta-1) hs<=0; //产生场同步信号
);
initial
begin
clock50MHz<=0;
forever
#10 clock50MHz<=~clock50MHz;
else if(vcnt<=v_Ta+v_Tb+v_Tc+420-1) rgby<=3'b110;
else if(vcnt<=v_Ta+v_Tb+v_Tc+480-1) rgby<=3'b111;
else rgby<=3'b000;
if(MD==2'b00) rgb<=rgbx;//按键控制,选择条纹类型
reg[2:0] rgb,rgbx,rgby;
reg[9:0] hcnt,vcnt;
parameter h_Ta=96,h_Tb=40,h_Tc=8,h_Td=640,h_Te=8,h_Tf=8,h_Tg=800;
基于FPGA的VGA图像显示控制器设计
基于FPGA的VGA图像显示控制器设计第1页一.实验简介本实验介绍了一种利用可编程逻辑器件实现VGA图像显示控制的方法,阐述了VGA 图像显示控制器中VGA显像的基本原理以及功能演示,利用可编程器件FPGA设计VGA 图像显示控制的VHDL设计方案,并在Altera公司的QuartusII软件环境下完成VGA 模块的设计。
而且给出了VGA模块的设计思路和顶层逻辑框图。
最终实现VGA图像显示控制器,VGA图像控制器是一个较大的数字系统,传统的图像显示的方法是在图像数据传输到计算机,并通过显示屏显示出在传输过程中,将图像数据的CPU需要不断的信号控制,所以造成CPU的资源浪费,系统还需要依靠计算机,从而减少了系统的灵活性。
FPGA芯片和EDA设计方法的使用,可根据用户的需求,为设计提供了有针对性的VGA显示控制器,不需要依靠计算机,它可以大大降低成本,并可以满足生产实践中不断改变的需要,产品的升级换代和方便迅速。
二.任务要求2.1课题要求设计一个VGA 图像显示控制器。
1.显示模式为640×480×60Hz 模式;2.用拨码开关控制R、G、B(每个2 位),使显示器可以显示64 种纯色;3.在显示器上显示横向彩条信号(至少6 种颜色);4.在显示器上显示纵向彩条信号(至少8 种颜色);5.在显示器上显示自行设定的图形、图像等。
2.2设计目标根据课题要求,实验中将目标进行了细化,叙述如下:1.设定4种显示模式:横彩模式、纵彩模式、纯色模式、用户模式;第2页2.拨码开关最低两位SW1~SW0控制4种模式的切换;3.拨码开关高6位SW7~SW2每两位分别控制RGB显示64种纯色;4.横向和纵向彩条均设置为8种内置的颜色;5.用户模式中分3种子模式:1)子模式1是沿固定轨迹运动模式,固定图形沿水平方向运动,行运动到边界后折回到下一行继续水平运动;2)子模式2是反弹球模式,固定图形在矩形屏幕做内直线运动,到边界后沿反射角方向反弹,周而复始;3)子模式3是受控运动模式,使用上下左右4个按键控制固定图形在屏幕内的运动方向;4)子模式间的切换由一个单独的按键进行控制,按键按下后顺序切换子模式。
FPGA—VGA显示
VGA一、设计目的1、利用VHDL语言的描述方法进行设计完成VGA显示的系统设计;2、自行选择VGA显示模式;3、通过FPGA产生VGA Monitor的控制时序;4、通过FPGA产生彩条图形,在VGA显示器上显示;5、扩展要求:可以在拨动开关控制下,通过FPGA+VGA接口的系统在屏幕上显示不同图像。
二、设计原理1、VGA简要介绍显示绘图阵列(video graphic array,VGA)接口是LCD液晶显示设备的标准接口,大多应用在显示器与显卡之间,同时还可以用在等离子电视输入图像的模数转换上。
VGA显示输出RGB三原色信号,RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色,目前在图像显示领域中应用非常广泛。
2、VGA的显示特点(1)扫描格式繁多,分辨率从320×200一直延伸到1280×102,行频15.8~70Hz,场频50~100Hz。
常见的行频有31.4Hz,37.8Hz,57.9Hz,62.5Hz 等,常见场频有50Hz,60Hz,70Hz,100Hz,16700K之分。
(2)显示器的显示方式有两种:A/N显示方式和APA显示方式,即文本显示方式和图形显示方式。
A/N方式已淘汰不用,目前微机都采用APA图形方式。
(3)VGA接口为显示器提供两类信号,一类是数据信号,一类是控制信号。
数据信号包括红(Red)、绿(Green)、蓝(Blue)信号,简称RGB信号,控制信号包括水平同步信号和垂直同步信号。
输出不同分辨率时,水平同步信号和垂直同步信号的频率也不相同。
3、VGA显示原理常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红)、G(绿)、B(蓝)三种基色组成。
显示是采用逐行扫描的方式,阴极射线枪发出的电子束打在涂有荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。
基于FPGA的VGA显示设计及仿真实现
本科毕业论文(设计)论文题目:基于FPGA的VGA显示设计及仿真实现姓名:XXX学号:XXX班级:XXX年级:XXX专业:通信工程学院:信息工程学院指导教师:XXX完成时间:XXXX 年X月XX 日作者声明本毕业论文(设计)是在导师的指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术规范和其他侵权行为。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
因本毕业论文(设计)引起的法律结果完全由本人承担。
毕业论文(设计)成果归XXX所有。
特此声明。
作者专业:作者学号:作者签名:年月日基于FPGA的VGA显示设计及仿真实现XXXThe Design and Implementation of the VGA display based on FPGAXXXX 年X月XX 日摘要本文简述了VGA显示的特点和工作原理,重点介绍了采用自顶向下层次化、模块化的设计方法,在FPGA上实现VGA的显示设计。
显示绘图阵列(video graphic array,VGA)接口是LCD液晶显示设备的标准接口,VGA具有分辨率高、显示速率快、颜色丰富等优点。
显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备。
在FPGA的设计中可以使用很少的资源,就产生VGA各种信号,再加上VHDL语言灵活的描述方法以及与硬件无关的特点,使得使用VHDL语言基于FPGA芯片实现VGA 显示控制成为研究的方向。
本文对基于VHDL的VGA的显示控制进行了研究,并设计了VGA显示器彩条信号发生器。
所做的主要工作为:(1)在设计中采用了自顶向下的层次化、模块化的设计思想,将整个接口划分为多个模块,利用VHDL语言的描述方法进行了各个功能模块的设计,最终完成了VGA显示的系统设计。
(2)运用ISE软件进行仿真。
关键词:VHDL;VGA;ISE;彩条信号AbstractThis paper briefly describes the characteristics and working principle of VGA display, focus on using the top-down hierarchical and modular design method, realization of VGA display design on FPGA.Display graphics array (video graphic array, VGA) interface is a standard interface LCD liquid crystal display device, VGA with high resolution, fast display rate, color rich, etc. Display output because of its large amount of information, the output forms characteristics has become the most commonly used output device design now.In the design of FPGA can use less resources, and produce VGA signals, flexible coupled with VHDL language description method and has nothing to do with the hardware characteristics, make use of VHDL language based on the FPGA chip to realize VGA display control become the direction of research.In this paper, based on VHDL VGA display control is studied, and VGA display color bar signal generator is designed. The main work done as follows:(1)In the design USES the top-down hierarchical, modular design thought, will the whole interface is divided into several modules, use of VHDL language description method for the design of each functional module, finally completed the VGA display system design.(2) Using ISE software simulation.Keywords: VHDL ;VGA; ISE; Color bar signal目录1 概述............................................................................................................ - 1 -1.1 本选题研究的目的及意义......................................................................................... - 1 -1.2 本选题国内外研究状况综述 (2)1.3 本选题研究的主要内容............................................................................................. - 1 -2 VGA显示的理论研究 (4)2.1 VGA显示特点 (4)2.2 VGA显示原理 (4)3 ISE工具概述 ................................................................................................ - 7 -3.1 硬件描述语言............................................................................................................. - 7 -3.2 ISE使用方法............................................................................................................. - 13 -4 VGA显示的设计与仿真............................................................................ - 17 -4.1 模块结构设计........................................................................................................... - 17 -4.2 VHDL代码设计............................................................................. 错误!未定义书签。
VHDL实现VGA接口设计
VHDL实现VGA接口设计1、输入信号clk : 时钟(每个象素点的显示时钟)reset : 复位信号2、输出信号vga_hs_control : 行同步vga_vs_control : 场同步 ;vga_read_dispaly : 红vga_green_dispaly : 绿vga_blue_dispaly : 蓝3、技术参数clk : 24M hs : 30KHZ vs : 57.14HZ设计原理VGA( 视频图形阵列 ) 作为一种标准的显示接口得到广泛的应用 , 一般有专用芯片,本实验采用FPGA( 现场可编程门阵列 ) 设计 VGA 接口可以将要显示的数据直接送到显示器,节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。
显示适配器有多种形式,它可按照所符合的视频显示标准来分类,业界制定了多种显示标准,从最初的 MDA 经历了 CGA , EGA , VGA , XGA,SVGA 等的发展过程。
与相应的显示适配器标准相配的显示器也称之为 EGA ,VGA , XGA 显示器等。
实际上显示器的标准主要反映在它们的接口,显示功能和行,场工作频率上。
CRT 显示器的扫描方式Array(1)当栅扫描方式从上向下依次顺序扫描完一场称逐行扫描。
一行用行频控制( hs ) ,一场用场频控制( vs )。
扫完一行回来叫行消隐,扫完一场回来叫场消隐(2)随机扫描方式VGA 接口标准时钟频率: 25 . 175 MHz( 像素输出的频率 ) ;行频: 31. 469 Hz设计 VGA设计 VGA 图像显示控制需要注意两个问题 L2] :一个是时序的驱动,这是完成设计的关键,时序稍有偏差,显示必然不正常,甚至会损坏彩色显示器;另一个是 VGA 信号的电平驱动。
显示控制器设计提示:显示器技术规格提供的行频一般在 30 kHz 45 kHz( 保守数据 ) ,场频一般在 50 Hz ~ 75 Hz( 保守数据 ) 。
基于FPGA的VGA显示控制器IP核研究
摘要IP (Intellectual Property)[1][2]是集成电路知识产权的主体。
随着CPLD/FPGA的规模越来越大,设计越来越复杂,在未来的EDA技术和集成电路设计中使用IP核是一个发展趋势。
设计依据VGA显示的原理,“抛弃”VGA显示专用芯片,研究了一种基于FPGA 的VGA显示控制器IP核,软件上完全由VHDL硬件描述语言编写,相比较以前使用的由小规模集成电路设计的视频采集卡而言,本系统具有可靠性高、性能稳定、开发灵活、调试简单、可以现场编程、可移植、设计成本降低、开发周期较短、屏幕显示质量高等特点,必将有着广泛的应用价值。
关键字IP核FPGA VHDL 仿真综合VGA控制器AbstractIP (Intellectual Property) is the abbreviation of integrated circuit intellectual propert. Along with the scale of the CPLD/ FPGA more and more big, design more and more complicated, use the IP core in future technique of EDA and the integrated circuit designs is a development trend.The design rests on the VGA demonstration the principle, "gets rid of" VGA to demonstrate the special-purpose chip, study one kind based on FPGA VGA the display control switch IP core, on software by the VHDL hardware description language compilation, compared before used says by the small scale integration circuit design video frequency gathering card, This system has the reliability high, the performance stable, the development nimble, the debugging simple, may the scene programming, be possible to transplant, design cost reduction, the development cycle is shorter, the screen demonstration quality higher characteristic, will certainly to have the widespread application value.Key words IP core FPGA VHDL Simulator&Synthesize VGA controller目录第1章前言 (1)1.1 论文背景 (1)1.2 研究内容 (1)第2章IP综述 (2)2.1 IP定义 (2)2.2 发展IP技术的目的意义 (3)2.3 国内外IP产业发展状况 (3)2.3.1 国际IP产业的发展状况 (3)2.3.2 国内IP产业的发展状况 (4)2.4 IP核的市场前景分析 (5)第3章VGA系统工作原理 (6)3.1 VGA技术组成 (6)3.2 VGA工作模式 (7)3.3 VGA数据到颜色的转换 (8)第4章VGA控制器IP核设计与实现 (9)4.1 VGA控制器 IP核设计 (9)4.1.1 VGA接口及设计参数 (9)4.1.2 VGA图像控制器的设计方案 (9)4.2 VGA控制器IP核软件平台实现 (13)4.2.1 QuartusII开发环境 (13)4.2.1.1 QuartusII设计流程 (14)4.2.1.2 Quartus II设计输入 (14)4.2.1.3 Quartus II综合 (15)4.2.1.4 Quartus II仿真 (15)4.2.2 VHDL语言实现 (16)4.2.3 仿真与验证 (20)4.2.4 Modelsim 仿真工具简介 (22)4.2.4.1 ModelSim的代码仿真 (23)4.2.4.2 门级仿真和时序仿真 (23)4.2.5 VGA控制器IP核的封装与打包 (23)4.3 VGA控制器IP核硬件平台实现 (25)第5章实验结果及性能分析 (28)5.1 实现方案 (28)5.2 性能分析 (29)总结 ....................................................................................... 错误!未定义书签。
VHDL实现VGA
Library IEEEUse IEEE.std_logic_1164.ALL;Use IEEE.std_logic_arith.ALL;Use IEEE.std_logic_usigned.ALL;Entity vga isPort(clk,rst:std_logic;Hs, vs buffer std_logic;Rgb:out_logic_vector(7 downto 0));End vga;Architecture behavioral of vga isComponent wrbmp isPort(clk,en , rst:in std_logic;Hloc ,vloc:in std_logic_vector(11 downto 0);Dout:out std_logic_vector(7 downto 0));End component;Component vgasig isPort(clock,reset:in std_logic;Hsyncb,vsyncb:buffer std_logic;En: out std_logic;Xaddr,yAddr:out std_logic_vector(9 downto 0));End component;Signal hl,vl;std_logic_vector(9 downto 0);Signal enable:std_logic;BeginMakesig:vigsigPortmap(clock=>clk,en=>enable,reset=>rst,hsyncb=>hs,vsyncb=>vs,Xaddr=>hl,yadd r=>vl);Writebmp:wrbmp port map(clk=>clk,en=>enable,rst=>rst,hloc=>hl,vloc=>vl,dout=>rgb);End;--控制信号发生模块Library IEEEUse IEEE.std_logic_1164.ALL;Use IEEE.std_logic_arith.ALL;Use IEEE.std_logic_usigned.ALL;Entity vgasig isPort(clock,reset:in std_logic;En:out std_logic;Hsyncb,vsyncb;buffer std_logic;Xaddr,Y addr:out std_logic-vector(9 downto 0));End vagsig;Architeture behavioral of vgasig isConstant H_PIXELS:integer:=640;Constant H_FRONT:INTEGER:=16;Constant H_BACK:integer:=48;Constant H_SYNCTIME:integer:=96;Constant H_petiod:integer:=H_SYNCTIME+H_PIXELS+HFRONT+HBACK;Constant V_LINES:=integer:=480;Constant V_FRONT:=integer:=11;Constant V_BACK:=integer:=32;Constant V_SYNCTIME:integer:=2;Constant V_period:integer:=V_SYNCTIME+V_LINES+V_FRONT_+V_BACK;Signal hcnt:std_logic_vector(9 downto 0);CounterSignal vcnt:std_logic_vector(9 downto 0);BeginA:process(clock,reset)If reset=’0’then hcnt<=(others=>’0’);Elsif (clock)。
VGA彩条信号显示控制电路
摘要本设计是用 FPGA 来实现 VGA 图像控制器,控制显示器显示彩条信号,用VHDL语言,在QuartusI I上实现软件仿真。
本文首先介绍了VGA显示的基本原理,然后提出了一种VGA图像控制器的设计方案,并用VHDL硬件描述语言和原理图输入的方法完成了该方案的设计,通过显示横彩条、竖彩条、棋盘格,验证了VGA_SYNC同步信号功能模块时序的正确性,软件实验环境为 Quartus II 6.0 开发软件。
本系统尝试用FPGA实现 VGA图像显示控制器,这一过程通过编程实现,之后通过软件的测试和仿真,当软件验证无误后完成硬件的下载验证,最终在显示器上实现输出,基本原理就是利用FPGA的可编程原理和VGA的时序控制原理,这在产品开发设计中有许多实际应用。
例如显示器,电视等的维修,可以期望采用FPGA设计的VGA接口可以将要显示的数据直接送到显示器,就可以可靠的找到故障的大致原因等。
从而省掉每次都要接信号源的麻烦,同时也节约了成本。
节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。
同时亦可将其作为信号源,应用于电视机或计算机等彩色显示器的电路开发,方便彩色显示器驱动控制电路的调试。
[关键词]: VGA ;FPGA ;图像控制器AbstractThis design is the use of FPGA to realize VGA image controller, controls the display to display the color signal, using VHDL language, on the QuartusII software simulation. This paper firstly introduces the basic principle of VGA display, and then put forward a kind of VGA image controller design, and use VHDL hardware description language and schematic input method to complete the design, through to display the cross color, vertical striped, checkerboard, verification of the VGA_SYNC function module synchronization signal timing is correct, software test environment for Quartus II 6 software development.The system attempts to use the FPGA achieve VGA image display controller, this process is realized by programming, followed by the software testing and simulation, when the software validation correctly completes the hardware download verification, culminating in the display to achieve output, basic principle is the use of FPGA can weave Cheng Yuanli and VGA to control the timing of this principle, in product in the design of many practical applications. Such displays, television repair, can expect to use FPGA to design VGA interface can display data directly to the display, can reliably find fault causes etc.. In order to save every time the signal source of trouble, but also save the cost. Save a lot of computer process, accelerate the speed of dealing with data, save the cost of hardware. At the same time as the signal source, is applied to the television or computer color display circuit, convenient color display drive control circuit debugging.[Key words]: VGA; FPGA; image controller目录1 绪论.......................................................... -2 -2 设计要求及方案论证............................................ -3 -2.1 设计要求................................................ - 3 -2.2 设计方案................................................ - 3 -3 系统设计...................................................... -4 -3.1 设计原理................................................ - 4 -3.2 程序设计................................................ - 5 -3.2.1时钟部分.......................................... - 5 -3.2.2色彩显示部分...................................... - 5 -3.2.3程序流程图........................................ - 5 - 4系统仿真...................................................... - 5 - 5实验小结...................................................... - 9 - 参考文献....................................................... - 11 - 程序清单....................................................... - 11 -1绪论现如今,随着液晶显示器的出现,越来越多的数字产品开始使用液晶作为显示终端。
课程设计-基于fpga的vga图形显示大学论文
电子信息工程专业综合设计(报告)(课程设计)题目基于FPGA的VGA图形显示二级学院电气与电子工程学院专业电子信息工程班级学生姓名学号同组姓名指导教师时间基于FPGA的VGA图形显示摘要:本次的题目是基于FPGA的VGA图形显示,实现VGA图像显示与控制。
本文介绍的主要内容围绕着显示特定图片,且图片可受控制的相关原理与方法展开。
根据VGA显示原理,利用VHDL作为逻辑描述手段,设计了一种基于现场可编程器件FPGA的VGA接口控制器。
实现VGA图像显示控制器是通过Altera公司的QuartusII软件环境下对VGA模块的设计和顶层逻辑框图设计。
FPGA的嵌入式系统中能代替VGA的专用显示芯片,节约硬件成本,节省计算机处理时间,加快数据处理速度并具有显示面积大,色彩丰富、承载信息量大、接口简单等优点。
除此以外FPGA芯片和EDA设计方法的使用,可根据用户的需求,为设计提供了有针对性的VGA显示控制器,可不需要依靠计算机,它可以大大降低成本,并可以满足生产实践中不断改变的需要。
关键字:FPGA VGA 图像控制器一、前言本次课程设计主要是通过Altera公司的QuartusII软件环境下对VGA模块的设计和顶层逻辑框图设计。
VGA是IBM于1987年提出的一个使用模拟信号的电脑显示标准。
在性能上,VGA将16色模式的分辨率提高到了640×480,同时VGA新提供了一种具有320×200分辨率、256种颜色的图形模式,且所显示的每一种颜色都可从262144(18位)种颜色中选择,VGA的这种色彩显示能力对微机图形/图象软件的发展起到了很大的促进作用先后分别经历了EGA, EGA, VGA, SVGA, XGA, SXGA, UXGA, QXGA, WQXGA, QSXGA, WQSXGA, QUXGA, WQUXGA, 1080P。
目前大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R,G,B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
本科毕业论文___基于fpga的vga显示控制器设计[管理资料]
基于FPFA的VGA显示控制器设计摘要目前,数码产品逐渐进入了人们生活的每一个领域,而此类产品大多都带有显示屏,可见对显示屏的控制电路进行研究具有很大的市场需求。
VGA作为一种标准的显示接口得到了广泛的应用,同时基于VGA技术的显示控制器也拥有广泛的使用领域。
本文所设计的VGA控制器就是通过利用超大规模可编程逻辑器件FPGA和Altera公司开发的EDA设计软件Quartus II ,并采用自顶向下的VHDL设计方法,将该控制器分成用VHDL语言进行描述的五个子模块来实现的。
在Quartus II ,完成了对该控制器的设计输入、综合、仿真和下载。
在实验开发板上,也进行了硬件调试。
调试结果表明,设计的VGA控制器能够正确地输出RGB颜色信号和时序控制信号,可以显示符合VGA工业标准的测试彩条信号,内置ROM信息,实时RAM信息,还能够分屏显示三路RGB图像信息,并在这几种模式之间灵活切换和通断。
它工作稳定,达到了设计要求。
本设计利用了不同于以往传统的电子设计方法,具有修改灵活,高移植性,维护简单,可靠性好等优点。
大大地缩短了设计周期,降低了生产成本。
关键词现场可编程门阵列;硬件描述语言;视频图像阵列The VGA Display Controller Design Based on FPFAAbstractThe currently, the digital products which most of them have a display screen entered in every area of people's lives gradually, so we can see the great market demand of the study on the control circuit .As a standard display interface has been widely used, the VGA display controller based on this VGA norm also has a broad field of use at the same time.In this paper, designed through the use of ultra-large-scale programmable logic device-FPGA and Altera developed EDA design software Quartus II of version , and the VHDL top-down design methodology,the VGA controller was divided into five sub-modules which described with VHDL language. It has finished the design of the controller input, integrated, simulation, and download on Quartus II software platform,and it has carried out hardware debugging on the experimental development board. The results from debugging showed that the design of the VGA controller can output the color signals of RGB and the control signals correctly. It can show the images that compliance with industry standard of VGA ,such as the color bar test signal, a built-ROM image, and a real-time RAM image, but also to show the three-way RGB image information on one screen separately,and it can make a choice between these types of models and control the output connect or work Stable and achieve the design requirements.With the advantage of easily change, high portability, easy maintenance, good reliability,this design is different from the traditional method of electronic greatly short the design cycle and reduce the production costs.Keywords FPGA;VHDL;VGA目录摘要 (I)Abstract (II)第1章绪论 (5)课题背景 (5)国内外文献综述 (5)显示技术的发展史 (5)各种显示器的显示原理 (6)显示标准的发展 (8)VGA概述及其接口 (9)论文研究内容 (10)第2章VGA显示控制的相关理论 (12)VGA显示控制 (12)VGA显示控制方式 (12)颜色模型 (14)分屏显示技术 (15)矩阵切换技术 (16)实现工具简介 (16)基于VHDL的自顶向下设计方法 (16)QuartusII软件简介 (18)VHDL语言简介 (19)FPGA简介 (20)本章小结 (22)第3章VGA显示控制器的VHDL设计 (23)显示控制器的整体设计 (23)系统整体设计思想 (23)系统的功能模块划分 (23)各个模块的分别实现 (23)系统的整体硬件设计 (24)系统各个功能模块的设计 (25)PLL锁相环设计 (25)彩条信号发生器设计 (27)ROM信息读取显示控制器设计 (30)实时RAM信息读取显示控制器设计 (32)多路RGB图像信号分屏显示控制器设计 (34)4路VGA图像信号矩阵切换控制器设计 (36)本章小结 (39)第4章基于FPGA的VGA显示控制器实现 (40)顶层原理图设计输入 (40)编译综合 (41)整体仿真 (42)引脚锁定和下载 (42)调试结果 (43)本章小结 (46)结论 (47)致谢 (48)参考文献 (49)附录A (50)附录B (54)附录C (57)第1章绪论1.1课题背景研究表明人的各种感觉器官从外界获得的信息中视觉占60%,听觉占20%,触觉占15%,味觉占3%,嗅觉占2%,近2/3的信息是通过眼睛获得的,从而图像显示成为传递信息最重要的方式,由此也就促进人们对显示以及控制技术的研究开发。
基于VHDL进行VGA控制器设计并利用FPGA_Span3E_开发板实现显示器条纹显示
..
.
实验目的与要求:
VGA 控制器设计实现显示器条纹显示
要求:通过 FPGA 板的 VGA 接口在显示器上显示一幅 640*480 由六条不同颜色的条纹 组成的 图像。
实验内容:
VGA 简介 VGA 彩色显示器,彩色是由 R、G、B(红、绿、蓝)三基色组成,CRT 用逐 行扫描方式实现图像显示,由 VGA 控制模块产生的水平同步信号(HS)和垂直 同步信号(VS)控制阴极射线枪产生的电子束,打在涂有荧光粉的荧光屏上, 产生 R、G、B 三基色,合成一个彩色像素。扫描从屏幕的左上方开始,由左 至右,由上到下,逐行进行扫描,每扫完一行,电子束回到屏幕下一行的起 始位置,在回扫期间,CRT 对电子束进行消隐,每行结束是用行同步信号 HS 进行行同步;扫描完所有行,再由场同步信号 VS 进行场同步,并使扫描回 到屏幕的左上方,同时进行场消隐,预备下一场的扫描。显示需要 R,G, B,Hsync(行同步),Vsync(帧同步)五个信号输出到显示器,本设计按照 VGA 工业标准输出 640*480@60Hz.对应的时序如下:
.下载可编辑.
. ..
..
.
图 1 VGA 接口信号基本时序图 图 2 FPGA 板上的 VGA 接口
.下载可编辑.
. ..
..
.
图 3 VGA(640*480@60Hz)时序图
VGA 显示的设计模块为:
clk
hs
vs
VGA显示模 块
r
rst_n
g
b
说明:设计中 FPGA 板的 VGA 接口将 R,G,B 分别设为定义为 2 位,3 位, 3 位,例如显示红色 RGB 可以输出为 11000000,绿色输出为 00111000,蓝色 输出为 00000111.
基于VHDL语言的VGA程序
library ieee;use ieee.std_logic_1164.all;entity vgactr isport( c lk:in std_logic;rst:in std_logic;red:out std_logic;green:out std_logic;blue:out std_logic;H_Sync:out std_logic;V_Sync:out std_logic);end vgactr;architecture behavioral of vgactr issignal cnt_H:integer range 0 to 799;signal cnt_V:integer range 0 to 520;signal clk_H:std_logic:='0';signal clk_V:std_logic:='0';signal colorbuf:std_logic_vector(0 to 2);beginred<=colorbuf(0);green<=colorbuf(1);blue<=colorbuf(2);--50MHz分频为25MHz,作为水平扫描信号的时钟process(clk)variable n:integer range 0 to 1;beginif rising_edge(clk)thenclk_H<=not clk_H;end if;end process;--水平扫描计数,并产生竖直扫描计数的时钟process(clk_H,Rst)beginif rst='1' thencnt_H<=0;clk_V<='1';elsif rising_edge(clk_H)thenif cnt_H=799 thencnt_H<=cnt_H+1;end if;if cnt_H<=399 thenclk_V<='1';elseclk_V<='0';end if;end if;end process;--竖直扫描计数process(clk_V,rst)beginif rst='1' thencnt_V<=0;elsif rising_edge(clk_V)thenif cnt_V=520 thencnt_V<=0;elsecnt_V<=cnt_V+1;end if;end if;end process;--产生水平扫描信号和竖直扫描信号process(clk,rst)beginif rst='1' thenH_Sync<='0';V_Sync<='0';elsif rising_edge(clk) thenif cnt_H<=95 thenH_Sync<='0';elseH_Sync<='1';end if;if cnt_V=1 thenV_Sync<='0';elseV_Sync<='1';end if;end if;end process;--输出颜色控制process(clk,rst)beginif rst='1' thencolorbuf<="000";elsif rising_edge(clk) thencase cnt_H iswhen 144 to 223 =>colorbuf<="000";when 224 to 303 =>colorbuf<="001";when 304 to 383 =>colorbuf<="010";when 384 to 463 =>colorbuf<="011";when 464 to 543 =>colorbuf<="100";when 544 to 623 =>colorbuf<="101";when 624 to 703 =>colorbuf<="110";when 704 to 784 =>colorbuf<="111";when others=>colorbuf<="000";end case;end if;end process;end;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
library ieee;
use ieee.std_logic_1164.all;
entity vgactr is
port( c lk:in std_logic;
rst:in std_logic;
red:out std_logic;
green:out std_logic;
blue:out std_logic;
H_Sync:out std_logic;
V_Sync:out std_logic);
end vgactr;
architecture behavioral of vgactr is
signal cnt_H:integer range 0 to 799;
signal cnt_V:integer range 0 to 520;
signal clk_H:std_logic:='0';
signal clk_V:std_logic:='0';
signal colorbuf:std_logic_vector(0 to 2);
begin
red<=colorbuf(0);
green<=colorbuf(1);
blue<=colorbuf(2);
--50MHz分频为25MHz,作为水平扫描信号的时钟process(clk)
variable n:integer range 0 to 1;
begin
if rising_edge(clk)then
clk_H<=not clk_H;
end if;
end process;
--水平扫描计数,并产生竖直扫描计数的时钟
process(clk_H,Rst)
begin
if rst='1' then
cnt_H<=0;
clk_V<='1';
elsif rising_edge(clk_H)then
if cnt_H=799 then
cnt_H<=cnt_H+1;
end if;
if cnt_H<=399 then
clk_V<='1';
else
clk_V<='0';
end if;
end if;
end process;
--竖直扫描计数
process(clk_V,rst)
begin
if rst='1' then
cnt_V<=0;
elsif rising_edge(clk_V)then
if cnt_V=520 then
cnt_V<=0;
else
cnt_V<=cnt_V+1;
end if;
end if;
end process;
--产生水平扫描信号和竖直扫描信号process(clk,rst)
begin
if rst='1' then
H_Sync<='0';
V_Sync<='0';
elsif rising_edge(clk) then
if cnt_H<=95 then
H_Sync<='0';
else
H_Sync<='1';
end if;
if cnt_V=1 then
V_Sync<='0';
else
V_Sync<='1';
end if;
end if;
end process;
--输出颜色控制
process(clk,rst)
begin
if rst='1' then
colorbuf<="000";
elsif rising_edge(clk) then
case cnt_H is
when 144 to 223 =>colorbuf<="000";
when 224 to 303 =>colorbuf<="001";
when 304 to 383 =>colorbuf<="010";
when 384 to 463 =>colorbuf<="011";
when 464 to 543 =>colorbuf<="100";
when 544 to 623 =>colorbuf<="101";
when 624 to 703 =>colorbuf<="110";
when 704 to 784 =>colorbuf<="111";
when others=>colorbuf<="000";
end case;
end if;
end process;
end;。