VGA 图像显示控制器设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、
锁相环路是一种反馈控制电路,简称锁相环(PLL),一种输出一定频率信号的振荡电路,也称为相位同步环(回路)。该回路利用使外部施加的基准信号与PLL 回路内的振荡器输出的相位差恒定的反馈控制来产生振荡信号。在网络领域中,PLL用于从接收的信号中分离出时钟信号,可以通过实际电路或软件的方式实现。
由于FPGA的系统时钟为50MHz,而控制VGA的时钟为40MHz,所以在对VGA接口的控制时需要进行时钟转换,通常可以通过分频或者是调用 IP核的方式实现转换,但是由于通过自己写的分频程序假如在数据上处理不得当,容易产生毛刺,而调用quanersII软件自带的PLL内核,不仅可以做到与系统时钟同相,而且时钟稳定,能够实现对VGA时序的严格控制,与硬件电路来实现锁相环相比,调用PLL。内核不仅可以做到操作简单,而且也节约了设计成本。
图1
其中,VGA时序控制模块用于产生640*480显示范围,并控制显示范围和消隐范围以及产生水平同步时序信号HS和垂直同步时序信号VS的值,同时产生一个ROM地址,用于读取所存数据;ROM模块为FPGA内部LPM_ROM,数据线3根,地址线为32768根,用于存储分辨率为160*120的图像信息;分频器调用锁相环,产生VGA显示器所需的25M赫兹频率。
SIGNAL CLK25MHZ:STD_LOGIC;
SIGNAL ROMADDR:STD_LOGIC_VECTOR(14 DOWNTO 0);
SIGNAL HPOS,VPOS:STD_LOGIC_VECTOR(9 DOWNTO 0 );
BEGIN
ROMADDR<=VPOS(8 DOWNTO 2)&HPOS(9 DOWNTO 2);
设计思路
一、
1.
通过VGA接口在显示器显示彩色图像,BMP格式,像素640×480。
2.
运行时,从FPGA内部存储器读取显示数据。若需存储较大数据时,可将像素点数据存储于FPGA内部的EAB RAM、外部ROM或RAM中。如果是FPGA内部的LPM_ROM,可以设置成含有3位数据线的模块,如果用外部的12数据线的ROM/RAM,一个字节存储两个相邻像素,每个像素是3位彩色数据。将图像控制模块分为这样几部分;分频电路、VGA时序控制模块、图像数据存储器读出模块.原理图下图所示:(注:最终是用VHDL文件实现,此原理图只做模块示意使用。)
《电子设计自动化》
题目:
VGA图像显示控制器
院(系):
年级:
班级:
姓名:
学号:
指导老师:
课程设计
摘要:本文介绍了一种利用可编程逻辑器件实现VGA图像显示控制的方法,阐述了VGA图像显示控制器中VGA显像的基本原理以及功能演示,利用可编程器件FPGA设计VGA图像显示控制的VHDL设计方案,并在Altera公司的QuartusII软件环境下完成VGA模块的设计。而且给出了VGA模块的设计思路和顶层逻辑框图。最终实现VGA图像显示控制器,VGA图像控制器是一个较大的数字系统,传统的图像显示的方法是在图像数据传输到计算机,并通过显示屏显示出在传输过程中,将图像数据的CPU需要不断的信号控制,所以造成CPU的资源浪费,系统还需要依靠计算机,从而减少了系统的灵活性。FPGA芯片和EDA设计方法的使用,可根据用户的需求,为设计提供了有针对性的VGA显示控制器,不需要依靠计算机,它可以大大降低成本,并可以满足生产实践中不断改变的需要,产品的升级换代和方便迅速。
考虑到所采用的硬件平台没有足够的空间存储640*480*3bit数据,所以采用插值法以实现设计要求。具体实现为存储160*120的图像数据,使用缩放的方法将图像放大。该方案是在硬件存储条件有限的情况下所采用的设计方案,若存储空间足够,则完全可以采用数据线为3,地址线为307200(640*480)的LPM_ROM存储像素信息。
完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描的时间称为垂直扫描时间,其倒数称为场频率,即刷新一屏的频率,常见的有60Hz,75Hz等等。标准的VGA显示的场频60Hz,行频31.5KHz。
行场消隐信号:是针对老式显像管的成像扫描电路而言的。电子枪所发出的电子束从屏幕的左上角开始向右扫描,一行扫完需将电子束从右边移回到左边以便扫描第二行。在移动期间就必须有一个信号加到电路上,使得电子束不能发出。不然这个回扫线会破坏屏幕图像的。这个阻止回扫线产生的信号就叫作消隐信号,场信号的消隐也是一个道理。
I_IMGROM:IMGROM PORT MAP(clock=>CLK25MHZ,address=>ROMADDR,q=>RGB);
END MODELSTRU;
采用地址并用的方法,将160*120的图像放大到640*480。
2、
对于普通的VGA显示器,其引线共含5个信号,即三基色信号RGB;行同步信号HS和场同步信号VS。
HOUT:OUT STD_LOGIC_VECTOR(9 DOWNTO 0);
VOUT:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));
END COMPONENT;
COMPONENT IMGROM
PORT( clock:IN STD_LOGIC;
address:IN STD_LOGIC_VECTOR(14 DOWNTO 0);
逐行扫描轨迹如下图:
图3
VGA的工业标准:
VESA中定义行时序和场时序都需要同步脉冲(Sync a)、显示后沿(Back porch b)、显示时序段(Display interval c)和显示前沿(Front porch d)四部分。VGA工业标准显示模式要求:行同步,场同步都为负极性,即同步脉冲要求是负脉冲。
C:OUT STD_LOGIC);
END VGAV;
ARCHITECTURE MODELSTRU OF VGAV IS
COMPONENT VGA640480
PORT(CLK:IN STD_LOGIC;
RGBIN:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
HS,VS,R,G,B:OUT STD_LOGIC;
由VGA的行时序可知:没一行都有一个负极性行同步脉冲(Sync a),是数据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿(Back porch b),在显示时序段(Display interval c)显示器为亮的过程,RGB数据驱动一行上的每一个像素点,从而显示一行。在一行的最后为显示前沿(Front porch d)。在显示时间段(Display interval c)之外没有图像投射到屏幕是插入消隐信号。同步脉冲(Sync a)、显示后沿(Back porch b)和显示前沿(Front porch d)都是在行消隐间隔内(Horizontal Blanking Interval),当消隐有效时,RGB信号无效,屏幕不显示数据。
考虑到实验平台,选用50MHz的时钟作为锁相环的输入频率,而输出频率则为系统所需的25MHz。具体设置如下图:
图12
图13
原理图如下:
图14
三、
1.
VHDL语言是一种被用于电路设计中的高级语言。出现于80年代的后期。它是由美国国防部开发出来的,起初它只供美军用来提高设计的可靠性和减少开发周期的一种小范围使用的设计语言。
图2
显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。隔行扫描是指电子束扫描时每隔一行扫一线,完成一屏后在返回来扫描剩下的线,隔行扫描的显示器闪烁的厉害,会让使用者的眼睛疲劳。
显示带宽:带宽指的显示器可以处理的频率范围。如果是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的场时序与行时序基本一样,每一帧的负极性脉冲(Sync a)是一帧的结束标志,同时也是下一帧的开始标志。而显示数据是一帧的所有行数据。
图4
上图中的时间段如下:这四个时期定义如下:
图5
这八个时期定义如下:
A~B:行消隐期即同步,相当于还原扫描坐标吧
B~C:行消隐后肩相当于准备开始扫描吧
C~D:行显示期扫描中,数据有效区域
C<=CLK25MHZ;
I_PLL50:PLL50 PORT MAP(inclk0=>CLK50MHZ,c0=>CLK25MHZ);
I_VGA640480:VGA640480 PORT MAP(CLK=>CLK25MHZ,RGBIN=>RGB,HS=>HS,VS=>VS,R=>R,G=>G,B=>B,HOUT=>HPOS,VOUT=>VPOS);
q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));
END COMPONENT;
COMPONENT PLL50
PORT (inclk0: IN STD_LOGIC;
c0: OUT STD_LOGIC);
END COMPONENT;
SIGNAL RGB:STD_LOGIC_VECTOR(2 DOWNTO 0);
图7
此部分代码见附录。原理图如下:
图8
3、
数据存储模块调用LPM_ROM模块。具体设置如下:
图9
该模块用于存储图像数据。数据位宽为3,地址线为32768.
原理图如下:
图10
存储与该ROM的图像数据原为BMP格式,为使其可以存储于ROM内部,需要使用软件将信息转换。本实验使用3位数据存储颜色信息,因此仅能显示8中颜色,具体对应关系如下表所示:
VHDL中文简称超高速集成电路硬件描述语言,是一种集设计、仿真、综合于一体的标准硬件描述语言,是对可编程逻辑器件进行开发与设计的重要工具,主要应用于数字电路的设计。VHDL语言作为IEEE的一种工业标准,因此掌握VHDL语言是实现信息系统硬件开发所必备的知识和技能。现阶段,在中国它主要是被用在FPGA/CPLD/EPLD的设计中。但是在一些技术较为先进的单位,它也被用来设计ASIC。
表格1
R
G
B
颜色
0
0
0

0
0
1

0
1
0
绿
0
1
1

1
0Baidu Nhomakorabea
0

1
0
1

1
1
0

1
1
1

使用BMPtoMIF软件转化图像信息,示意图如下:此处选择生成彩色(数据位宽3),单一mif文件(存储在一个ROM里):
图11
考虑到由于插值法所带来的算法设计,须将存储的图片变为256*120,即每行右边多出96个无用的数据点,这样可以确保每16个像素点公用一个图片像素信息。具体修改方法为,用画图软件打开原160*120图像,此时设置图片大小为256*120,可看到原图片大小右侧多出一列白色矩形,此时另存为新的图片,用新的图片生成.mif文件。
D~E:行消隐前肩完成扫描,相当于准备同步
O~P:场消隐期即同步,相当于还原扫描坐标吧
P~Q:场消隐后肩相当于准备开始扫描吧
Q~R:场显示期扫描中,数据有效区域
R~S:场消隐前肩完成扫描,相当于准备同步
以下是行扫描,场扫描HS,VS时序图:
图6
如上图所示:VGA一直在扫描,每一场的扫描包括了若干行扫描,反复循环。且在640*480@60Hz的标准下,每秒需要输出25.175M像素,即每秒输出31469行,也即每秒输出60张图。其工业标准如下图所示:
二、
本系统所使用的模块可分为四块,顶层文件,分别为VGA控制模块,数据存储模块,锁相环模块。下文依次介绍。
1、
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY VGAV IS
PORT (CLK20MHZ: IN STD_LOGIC;
HS,VS,R,G,B:OUT STD_LOGIC;
相关文档
最新文档