数电实验-vga图像显示控制
- 格式:doc
- 大小:6.92 MB
- 文档页数:13
实验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。
实验报告(报告要存档,请单面打印)姓名陈梓杰学号201131120207 专业电子信息科学与技术班级2班一、设计/实验项目名称:VGA显示模式的实现基本内容描述:多功能计数器具有异步清零、同步使能功能,计数满12进位,进位位输出高电平。
清零端RST;使能端EN;进位输出COUT。
二、电路设计及原理多功能计数器VHDL程序如下所示:生成RTL电路图如下:多功能计数器实现12进制异步清零、同步使能功能。
异步清零RST、同步使能EN接按键,低电平触发有效。
在时钟上升沿,计数器计数到11时,计数器自动清零,开始下一个计数。
当异步清零RST为‘0’时,输出端DOUT218输出为“0000”,即异步清零RST为低电平时有效;否则,如果在上升沿时钟和同步计数使能ENA有效(ENA=‘1’)时,允许计数。
当计数达到“1011”时,表明已经达到12进制的最大值,向进位端COUT输出一个高电平,在下一个上升沿来到的时候,计数将清零,并重新开始计数。
另一种情况就是,当时钟为上升沿而同步计数使能ENA却无效(ENA=‘0’)时,计数功能是不允许的。
三、设计电路仿真与分析多功能计数器仿真图如下所示:由仿真图可看出,当RST和ENA同时为高电平时,允许计数,对时钟CLK的上升沿进行计数。
当计数到12进制的最大值(图中对应为“1011”)时,COUT端将输出一个高电平,表示有进位。
下一个上升沿到来时,计数将清零。
当RST为低电平时,计数清零,不依赖于上升沿时钟。
当ENA为低电平时,不允许计数,输出值保持不变,直到ENA为高电平时继续计数。
四、SIGNALTAP II硬件信号的采集与分析仿真分析通过后,将设计方案下载到FPGA中,通过SIGNALTAP II对多功能计数器进行采集,采集波形如下图所示:五、实验结论由仿真试验可知:(1)设计功能正确,实现4位12进制计数器的功能;(2)异步清零信号为低电平有效,同步使能ENA要保持高电平时才允许计数;(3)当计数达到12进制的最大值时,进位端COUT会输出一个高电平。
计算机组成原理实验报告实验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简单图像显示控制模块设计一、实验目的随着数字图像处理的应用领域的不断扩大,其实时处理技术成为研究的热点。
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图像控制器是一个较大的数字系统。
采用模块化设计原则,借鉴自顶而下的程序设计思想,进行功能分离并按层次设计。
课程设计报告课程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技术的使用包括电子工程师进行电子系统的开发的全过程,以及进行开发设计涉及的各个方面。
图片的VGA显示的实验报告一、实验要求•功能要求:利用Basys2实验板实现图片在VGA接口显示器上的显示。
•基本要求1)实现240*160以上像素的图片在VGA接口显示器上的显示。
2)利用算法实现特定图片在VGA接口显示器上的放大、缩小旋转及其他动作的自动变换。
•发挥部分1)实现输入数字在VGA接口显示器上的显示。
2)设计实现以VGA接口显示器为基础的简单游戏。
3)设计实现以VGA接口显示器及PS2键盘为基础的打字游戏。
4)其他功能与性能。
•设计步骤与要求:1)简要说明所实现系统的基本原理。
2)在Xilinx ISE13.1 软件中,编写输入所设计的源程序文件。
3)对源程序进行编译及仿真分析(注意合理设置,以能够在验证逻辑基础上尽快得出仿真结果)。
4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit类型文件。
5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路。
二、实验原理1、VGA概述VGA(Video Graphics Array)是IBM于1987年提出的一个使用模拟信号的电脑显示标准,最早指的是显示器640X480这种显示模式。
本实验程序用的是640X480模式,即每一行有640个像素,整个显示区域一共有480行。
VGA接口是一种D型接口,采用非对称分布的15pin 连接方式,共有15针,分成3排,每排5个孔。
本实验条件下只使用其中5个pin,分别是红色信号输入(R)、绿色信号输入(G)、蓝色信号输入(B),行同步信号输入(h_sync)和场同步信号输入(v_sync)。
2、VGA时序VGA的扫描顺序是从左到右,从上到下。
例如在640X480的显示模式下,从显示器的左上角开始往右扫描,直到640个像素扫完,再回到最左边,开始第二行的扫描,如此往复,到第480行扫完时即完成一帧图像的显示。
这时又回到左上角,开始下一帧图像的扫描。
如果每秒能完成60帧,则称屏幕刷新频率为60Hz。
学生实验报告实验课名称:VHDL硬件描述语言实验项目名称:VGA显示专业名称:电子科学与技术班级:32050801学号:05学生姓名:孙小喃教师姓名:程鸿亮2010年11月13日组别第三组实验日期2010年11月13日实验室名称______________成绩_____ 一.实验名称VGA显示二.实验目的与要求目的:通过对VGA接口的显示控制设计,理解VGA接口的时序工作原理,掌握通过计数器产生时序控制信号的方法以及用MEGEFUNCTION制作锁相环的方法。
要求:通过VHDL编程,在VGA显示器上实现竖形彩条的显示,显示模式为640×480 60Hz刷新率。
本实验需要使用25MHz的时钟,而开发平台中并没有这个时钟资源,所以需要通过锁相环来实现。
三实验内容1. 打开QuartusII软件,建立一个新的工程:1) 单击菜单File\New Project Wizard…2) 输入工程的路径、工程名以及顶层实体名。
3) 单击Next>按钮,出现以下窗口由于我们建立的是一个空的项目,所以没有包含已有文件,单击Next>继续。
4) 设置我们的器件信息:5) 单击Next>,指定第三方工具:这里我们不指定第三方EDA工具,单击Next>后结束工程建立。
2. 建立VHDL文件:1) 单击File\New菜单项,选择弹出窗口中的VHDL File项,单击OK 按钮以建立打开空的VHDL文件,注意此文件并没有在硬盘中保存。
2) 首先编制实体“color”的代码,要求输入为25MHz的时钟信号,输出为行同步、帧同步以及三色数据线RGB[2..0]信号。
注意这个文件的实体名、文件名为“color”,不是顶层实体。
(参考程序附后)3) 生成符号由于此文件是整个工程的一个模块,我们需要把此文件转换为符号,以便后面可以通过绘图方式连接电路,点击File\Creat\Update\Create Symbol Files for Current File菜单,生成对应的符号。
VGA图像显示的设计与应用一.实验目的学习VGA图像显示控制器的设计。
二.实验原理根据所学硬件描述语言知及本实验要求,编程如下:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all;ENTITY pll ISPORT(inclk0 : IN STD_LOGIC := '0';c0 : OUT STD_LOGIC);END pll;ARCHITECTURE SYN OF pll ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (5 DOWNTO 0);SIGNAL sub_wire1 : STD_LOGIC ;SIGNAL sub_wire2 : STD_LOGIC ;SIGNAL sub_wire3 : STD_LOGIC_VECTOR (1 DOWNTO 0);SIGNAL sub_wire4_bv : BIT_VECTOR (0 DOWNTO 0);SIGNAL sub_wire4 : STD_LOGIC_VECTOR (0 DOWNTO 0);COMPONENT altpllGENERIC (clk0_duty_cycle : NATURAL;lpm_type : STRING;clk0_multiply_by : NATURAL;inclk0_input_frequency : NATURAL;clk0_divide_by : NATURAL;pll_type : STRING;intended_device_family : STRING;operation_mode : STRING;compensate_clock : STRING;clk0_phase_shift : STRING);PORT (inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0);clk : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) );END COMPONENT;BEGINsub_wire4_bv(0 DOWNTO 0) <= "0";sub_wire4 <= To_stdlogicvector(sub_wire4_bv);sub_wire1 <= sub_wire0(0);c0 <= sub_wire1;sub_wire2 <= inclk0;sub_wire3 <= sub_wire4(0 DOWNTO 0) & sub_wire2;altpll_component : altpllGENERIC MAP (clk0_duty_cycle => 50,lpm_type => "altpll",clk0_multiply_by => 25,inclk0_input_frequency => 20833,clk0_divide_by => 48,pll_type => "AUTO",intended_device_family => "Cyclone",operation_mode => "NORMAL",compensate_clock => "CLK0",clk0_phase_shift => "0")PORT MAP (inclk => sub_wire3,clk => sub_wire0);END SYN;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY vga ISPORT(clock: IN STD_LOGIC; --系统输入时钟48MHzdisp_dato: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--VGA数据输出.hsync: OUT STD_LOGIC; --VGA行同步信号.vsync: OUT STD_LOGIC --VGA场同步信号.);END;ARCHITECTURE one OF vga ISCOMPONENT pllPORT(inclk0 : IN STD_LOGIC := '0';c0 : OUT STD_LOGIC);END COMPONENT;SIGNAL hcount: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL vcount: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL data: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL h_dat: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL v_dat: STD_LOGIC_vECTOR(7 DOWNTO 0);SIGNAL timer: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL flag: STD_LOGIC;SIGNAL hcount_ov:STD_LOGIC;SIGNAL vcount_ov:STD_LOGIC;SIGNAL dat_act: STD_LOGIC;SIGNAL hsync_r: STD_LOGIC;SIGNAL vsync_r: STD_LOGIC;SIGNAL vga_clk: STD_LOGIC;CONSTANT hsync_end: STD_LOGIC_VECTOR(9 DOWNTO 0):="0001011111";--95CONSTANT hdat_begin: STD_LOGIC_VECTOR(9 DOWNTO 0):="0010001111";--143--图形显示横区开始,CONSTANT hdat_end: STD_LOGIC_VECTOR(9 DOWNTO 0):="1100001111";--783--图形显示横区结束CONSTANT hpixel_end: STD_LOGIC_VECTOR(9 DOWNTO 0):="1100011111";--799CONSTANT vsync_end: STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000001";--1CONSTANT vdat_begin: STD_LOGIC_VECTOR(9 DOWNTO 0):="0000100010";--34 --图形显示横区开始,CONSTANT vdat_end: STD_LOGIC_VECTOR(9 DOWNTO 0):="1000000010";--514--图形显示横区结束CONSTANT vline_end: STD_LOGIC_VECTOR(9 DOWNTO 0):="1000001100";--524BEGIN--调用PLL模块U1: pll PORT MAP(inclk0=>clock,c0=>vga_clk);PROCESS(vga_clk)--行扫描.BEGINIF RISING_EDGE(vga_clk) THENIF hcount_ov='1' THENhcount<=B"00_0000_0000";ELSEhcount<=hcount+1;END IF;END IF;END PROCESS;hcount_ov<='1' WHEN hcount=hpixel_end ELSE '0';PROCESS(vga_clk)--场扫描.BEGINIF RISING_EDGE(vga_clk) THENIF hcount_ov='1' THENIF vcount_ov='1' THENvcount<=B"00_0000_0000";ELSEvcount<=vcount+1;END IF;END IF;END IF;END PROCESS;vcount_ov<='1' WHEN vcount=vline_end ELSE '0';------------------------------------------------------<<数据、同步信号输出。
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图像显示控制器设计班级:2008211113姓名:学号:序号:日期: 2011年 1月摘要本实验报告为VGA显示控制器设计报告。
实验设计了基于VHDL描述的VGA显示控制器,通过FPGA控制CRT显示器显示色彩和图形。
完成的功能包括64种纯色的显示、横向和纵向彩色条幅的显示以及正方形色块的运动与控制。
实验的重心放在了显示控制器的系统层面的设计,采用了自顶向下的思路进行设计,系统的核心为有限状态机。
报告中给出了完整的设计思路和过程,并将系统分模块进行了详细的设计,给出了VHDL语言描述。
完成了状态机和核心模块以及系统整体的仿真验证。
最终下载到实验板上测试通过。
关键词: FPGA;VHDL; VGA显示控制;状态机第一部分任务要求 (1)1.1课题要求 (1)1.2设计目标 (1)第二部分系统设计 (2)2.1设计思路 (2)2.2系统结构设计 (3)2.2.1系统结构框图 (3)2.2.2系统逻辑功能划分 (3)2.2.3层次模块划分 (4)2.2.4模块设计图 (6)2.2.5控制器设计 (7)2.2.6状态机设计 (8)2.2.7基本模式设计 (9)2.2.8用户模式设计 (10)2.3系统硬件语言描述 (12)2.3.1VHDL描述思路 (12)2.3.2总体电路的描述 (12)2.3.3分块电路的描述 (16)2.4系统仿真验证 (28)第三部分结果与分析 (32)3.1实现功能说明 (32)3.2器件资源分析 (33)3.3VHDL设计优化 (35)3.4故障和问题分析 (37)第四部分总结与结论 (38)4.1实验结论 (38)4.2总结体会 (38)第五部分附录部分 (40)5.1元器件和仪表清单 (40)5.2VHDL源代码 (40)5.3电路图 (56)5.4参考文献 (63)第一部分任务要求1.1课题要求设计一个 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绪论现如今,随着液晶显示器的出现,越来越多的数字产品开始使用液晶作为显示终端。
实验五 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);”用于从外部输入图像数据。
南昌大学实验报告学生姓名:赵震学号: 6103414030 专业班级:生物医学工程141班实验类型:□验证□综合√□设计□创新实验日期: 2016.12.16 实验成绩:实验五:VGA 彩条信号发生器的设计(一)实验目的:1.了解普通显示器正确显示的时序。
2.了解 VHDL 产生 VGA 显示时序的方法。
3.进一步加强对 FPGA 的认识。
(二)实验原理:VGA 显示器在显示过程中主要由五个信号来控制,分别是 R、G、B、HS 和VS。
其中 R、G、B 分别用来驱动显示器三个基色的显示,即红、绿和篮,HS是行同步信号,VS 是场同步信号。
在做本实验时,由于没有任何显示器驱动,所以显示器工作在默认状态,分辨率:640×480,刷新率:60Hz。
在此状态下,当VS和 HS都为低电平时,VGA 显示器显示亮的状态,其正向扫描过程约为 26us。
当一行扫描结束后,行同步信号 HS置高电平,持续约 6us 后,变成低电平,在HS为高电平期间,显示器产生消隐信号,这就是显示器回扫的过程。
当扫描完一场后,也就是扫描完 480行以后,场同步信号 VS置高电平,产生场同步,此同步信号可以使扫描线回到显示器的第一行第一列位置。
显示器显示的时序图如下图 2-22 所示:图 2-22 CRT 显示器时序(三)设计要求:本实验要完成的任务就是通过FPGA在显示器上显示一些条纹或图案,要求CRT显示器上能够显示横条纹、竖条纹以及棋盘格子图案。
实验中系统时钟选择时钟模块的12MHz,用一个按键模块的S1来控制显示模式,每按下一次,屏幕上的图案改变一次,依次为横条纹、竖条纹以及棋盘格子图案。
实验的输出就直接输出到 VGA 接口,通过CRT 显示器显示出来。
实验箱中用到的数字时钟模块、按键开关与 FPGA 的接口电路,以及数字时钟源、按键开关与 FPGA 的管脚连接在以前的实验中都做了详细说明,这里不在赘述。
VGA接口在实验系统的视频输入输出模块。
数字电路综合实验报告学校:北京邮电大学学院:信息与通信工程学院专业:通信工程班级:2008211115学号:********班内序号:30姓名:***2011年1月5日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 三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
对于模拟显示设备,如模拟CRT 显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。
设计VGA 控制器的关键是产生符合VGA 接口协议规定的行同步和场同步信号,它们的时序关系如下图所示:h_sync:水平同步信号(负脉冲),每个水平扫描周期显示器刷新一行;v_sync:垂直同步信号(负脉冲),每个垂直扫描周期显示器刷新一帧;行同步信号(HS ) 场同步信号(VS ) 时序名称 时钟数(像素数)时序名称 行数 前沿 16 前沿 10 行同步 96 场同步 2 数据 640 数据 480 后沿 48 后沿 33 总像素数800总行数525按照每秒60帧的刷新速度来计算,所需要的时钟频率为: 频率=60H z(帧数)×525(行)×800(每一行像素数)=25.2MHz 所以我们通过开发系统的50MHz 时钟资源,通过时钟分频产生25MHz 的频率即可。
虽然没有达到精确的25.2MHz 的时钟频率(刷新率可能会是59Hz),但是并不会造成影响。
3、VGA 显示器的工作过程以屏幕左上角的那个像素作为原点(1,1)。
当显示器接收到控制器输出的v_sync 信号,则开始一个新的垂直刷新循环,同时控制器输出h_sync 信号。
当经过P+Q=1.084ms 的时间后,准备开始水平刷新循环,当h_sync 信号的下降沿到来时,即开始刷新第一行(行数加1)。
再经过B+C = 5.66s 的时间后,开始刷新第一行的第一个像素(列数加1),并按照所需的时钟频率,刷新此行中其余像素。
直到显示器接收到下一个h_sync 信号,又开始刷新第二行。
重复此过程,直到刷新到屏幕的底部。
当刷新了最下面一行的最后一个像素后,显示器即完成了一帧的刷新,控制器又输出v_sync 信号,显示器又开始一个新的垂直刷新循环。
四、系统设计(包括设计思路、总体框图、分块设计)总体设计思路:VGA 显示器的控制器可划分为3个子模块: I .时钟分频子模块;II .时序控制子模块 ,提供同步信号(h_sync 和v_sync )及像素位置信息; III .生成图形子模块,接收像素位置信息,并输出颜色信息;由于系统时钟为50MHZ ,实验所需频率为25MHZ,故时钟分频模块只需在程序中通过分频语句完成;生成图形子模块由系统提供;所以重点设计的模块就是时序控制模块。
总体系统框图如下:HS系统时VS 钟 R GB分频模块 时 序 控 制 模 块 生 成 图 形 模 块 VGA 显示器拨码输入时序控制模块设计行同步状态机状态转移图列同步状态机状态转移图时序控制模块流程图:五、源程序(含注释)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity vgacode isport(sw0 : in std_logic; --拨码开关输入sw1 : in std_logic;sw2 : in std_logic;sw3 : in std_logic;sw4 : in std_logic;sw5 : in std_logic;sw6 : in std_logic;sw7 : in std_logic;clk : in std_logic; --系统时钟输入hsync : out std_logic;--输出行同步、列同步以及R.G.B信号vsync : out std_logic;rdata : out std_logic;gdata : out std_logic;bdata : out std_logic;lrdata : out std_logic;lgdata : out std_logic;lbdata : out std_logic);end vgacode;architecture behave of vgacode is-- horizontal timing signalsconstant h_data: integer:=640; --VGA时序中几个关键数据constant h_front: integer:=16;constant h_back: integer:=48;constant h_sync: integer:=96;constant h_period: integer:= h_sync + h_data + h_front + h_back; --800-- vertical timing signalsconstant v_data: integer:=480;constant v_front: integer:=10;constant v_back: integer:=33;constant v_sync: integer:=2;constant v_period: integer:= v_sync + v_data + v_front + v_back; --525signal henable, venable : std_logic;signal clk25M : std_logic;signal hcnt: std_logic_vector(9 downto 0); -- horizontal pixel counter signal vcnt: std_logic_vector(9 downto 0); -- vertical line counter beginprocess(clk)beginif clk'event and clk = '1' then --由系统时钟分频得到25MHZ的频率信号clk25M <= not clk25M;end if;end process;process(clk25M) ---行扫描beginif (clk25M'event and clk25M = '1') thenif hcnt < h_period thenhcnt <= hcnt + 1;elsehcnt <= (others => '0');end if;end if;end process;process(clk25M) --行同步beginif (clk25M'event and clk25M = '1') thenif (hcnt >= (h_data + h_front)and hcnt < (h_data + h_sync + h_front)) thenhsync <= '0';elsehsync <= '1';end if;end if;end process;process(clk25M) --列扫描beginif (clk25M'event and clk25M = '1') thenif hcnt = (h_data + h_sync + h_front) thenif vcnt < v_period thenvcnt <= vcnt + 1;elsevcnt <= (others => '0');end if;end if;end if;end process;process(clk25M) --列同步beginif (clk25M'event and clk25M = '1') thenif (vcnt >= (v_data + v_front)and vcnt < (v_data + v_sync + v_front)) thenvsync <= '0';elsevsync <= '1';end if;end if;end process;process(clk25M) --行显示beginif (clk25M'event and clk25M = '1') thenif hcnt < h_data thenhenable <= '1';elsehenable <= '0';end if;end if;end process;process(clk25M) --列显示beginif (clk25M'event and clk25M = '1') thenif vcnt < v_data thenvenable <= '1';elsevenable <= '0';end if;end if;end process;process(clk25M,henable,venable) --几种显示模式beginif (clk25M'event and clk25M = '1') thenif(henable='1' and venable='1') thenif sw0 = '0' and sw1 = '0' then --64 color rdata <= sw7 ;gdata <= sw5 ;bdata <= sw3 ;lrdata <= sw6;lgdata <= sw4 ;lbdata <= sw2 ;else if sw1 = '0' and sw0 = '1' then --竖条纹rdata <= hcnt(9);gdata <= hcnt(8);bdata <= hcnt(7);lrdata <= hcnt(6);lgdata <= hcnt(5);lbdata <= hcnt(4);else if sw1 = '1' and sw0 = '0' then --横条纹rdata <= vcnt(9);gdata <= vcnt(8);bdata <= vcnt(7);lrdata <= vcnt(6);lgdata <= vcnt(5);lbdata <= vcnt(4);else if sw1 = '1' and sw0 = '1' then --棋盘显示if ( henable = '1' and venable = '1' ) thenif ( hcnt(4) = '0' and hcnt(3) = '0' and hcnt(2) ='0'and hcnt(1) = '0' and hcnt(0) = '0' )or (vcnt(4) = '0' and vcnt(3) ='0' and vcnt(2) ='0'and vcnt(1) = '0' and vcnt(0) = '0' ) thenlrdata <= '0';lgdata <= '0';lbdata <= '0';rdata <= '0';gdata <= '0';bdata <= '0';else lrdata <= '1';lgdata <= '1' ;lbdata <= '0' ;rdata <= '1' ;gdata <= '0' ;bdata <= '0' ;end if;end if;end if;end if;end if;end if;end if;end process;end behave;六、实验器材1.计算机;2. VGA显示器;3.直流稳压电源;4.EDA 开发板及相应元器件七、功能说明本实验实现的功能时通过拨码开关控制显示器的图像显示。