您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页VGA图象显示控制器设计[1]

VGA图象显示控制器设计[1]

来源:保捱科技网


目 录

一、设计任务 ----------------------------------------------------------------------- 3 二、方案论证 ----------------------------------------------------------------------- 3 三、系统设计详述 ----------------------------------------------------------------- 4

3.1 VGA显示其原理 -----------------------------------------------------------------------4 3.2 VGA图象显示控制器的设计原理 ------------------------------------------------4 3.3 VHDL源程序 ---------------------------------------------------------------------------4 3.4 VHDL程序在QuartusⅡ编译结果 -----------------------------------------------7 3.5 QuartusⅡ时序仿真波形 -------------------------------------------------------------8

四、配置到EDA6000实验箱--------------------------------------------------- 8 五、系统设计工作进程 ---------------------------------------------------------10 六、收获和体会 ------------------------------------------------------------------- 11 七、参考文献 ---------------------------------------------------------------------- 11

一、设计任务

1.1课程设计目的

通过《EDA与数字系统设计》课程设计,使学生能够掌握FPGA应用系统的开发过程。要求学生经过课程设计的教学环节进一步理解FPGA应用系统的工作原理。

使学生理解课题教学的理论内容,针对所选课题,能够按照FPGA的开发流程和VHDL语言建模、仿真、综合、下载、配置,用EDA6000试验箱上的FPGA系统实现相应功能,可以起到综合运用各种技术和知识的作用。

1.2课程设计的题目、内容和要求

设计题目:VGA图象显示控制器设计

在EDA6000实验平台上实现一个VGA图象显示控制器,利用FPGA器件内部存储器存储所需要的数据,再通过VGA接口输出到显示器上。

二、方案论证

本控制器是把位色彩图像存入FPGA器件的电可擦除只读存储器中,存入的数据时串行数据。由于显示器接收的R,G,B三基色信号是8位并行数据,因此要将采集的串行数据转化成并行数据,再去驱动显示器。系统总体结构示意图如下:

设计方案如下: 将图像控制器分为这样几个模块:通用异步收发器( U AR T) 模块、缓存器模块和显示控制模块。其中通用异步收发器模块用于接收采集的串行数据,并将其转化为并行数据( 8位) ;缓存器模块用于接收并行数据,接收满三个并行数据再进行转发,送往显示控制模块;显示控制模块用于产生正确的行、场同步信号,并再产生 R ,G,B三基色信号。显示控制模块的输出信号直接连接到 V G A接口,它是控制器与显示器进行通信的桥梁。

三、系统设计详述

3.1 VGA显示器原理

常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红),G(绿),B(蓝)3基色组成。显示采用逐行扫描的方式,阴极射线发出的电子

束打在涂有荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。从屏幕的左上方开始自左向右的扫描,每扫完一行电子束回到下一行的最左端,每行结束后电子回扫的过程中进行消隐。然后从新开始行扫描,消隐,直到扫描到屏幕的右下方,电子书回到屏幕的左上方重新开始新的图像扫描,并且在回到屏幕的左上方过程中进行消隐,在消隐的过程中不发射电子束。每一行扫描结束时,用HS(行同步)信号进行同步;扫描完所有的行后用VS(场同步)信号进行同步。

3.2 VGA图象显示控制器的设计原理

VGA显示器总共需要五根信号线,分别为R\\G\\B三原色信号和行同步(HSYNC)、场同步(VSYNC)信号。在通用的标准中,VGA的像素输出频率为25.175 MHz,行频率是31.496 KHz,场频率是59.94 Hz。分辨率为0*480,即每行显示0个像素,每场显示480行。这0*480是显示器的有效显示区(Visible area),除此之外,还有行、场消隐区(Back Porch),以及行、场同步区(Sync Pulse)以实现行列的同步操作。[1]如果利用实验室的液晶屏,可以增加分辨率至800*600,在这个标准下屏幕的刷新频率设为72Hz,行频率是48.08KHz。FPGA需实现的扫描时序如下图:

3.3 VHDL源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY vga IS PORT (

clk : IN STD_LOGIC; -- 25M clock -- IO30 hs : OUT STD_LOGIC; -- IO46 vs : OUT STD_LOGIC; -- IO47

dout : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0); -- RR GG BB

mem_d : IN STD_LOGIC_VECTOR( 7 DOWNTO 0); -- IO15..IO08

mem_a : OUT STD_LOGIC_VECTOR(14 DOWNTO 0); -- IO06..IO00 -- IO63..IO56 mem_rd: OUT STD_LOGIC; -- IO16 mem_wr: OUT STD_LOGIC -- IO17 );

END vga;

ARCHITECTURE behv OF vga IS

SIGNAL h_cnt: INTEGER RANGE 0 TO 799; SIGNAL v_cnt: INTEGER RANGE 0 TO 523; SIGNAL i_hs : STD_LOGIC; SIGNAL i_vs : STD_LOGIC; SIGNAL v_hs : STD_LOGIC; SIGNAL v_vs : STD_LOGIC;

SIGNAL addr : STD_LOGIC_VECTOR(14 DOWNTO 0);

BEGIN

hs <= i_hs; vs <= i_vs;

PROCESS(clk) BEGIN

IF clk'EVENT AND clk = '1' THEN IF h_cnt = 799 THEN h_cnt <= 0; ELSE

h_cnt <= h_cnt + 1; END IF;

IF h_cnt = 96 THEN i_hs <= '1';

ELSIF h_cnt = 0 THEN i_hs <= '0'; END IF;

IF h_cnt = 783 THEN v_hs <= '1';

ELSIF h_cnt = 144 THEN v_hs <= '0'; END IF; END IF;

END PROCESS;

PROCESS(i_hs)

BEGIN

IF i_hs'EVENT AND i_hs = '1' THEN IF v_cnt = 524 THEN v_cnt <= 0; ELSE

v_cnt <= v_cnt + 1; END IF;

IF v_cnt = 2 THEN i_vs <= '1';

ELSIF v_cnt = 0 THEN i_vs <= '0'; END IF;

IF v_cnt = 514 THEN v_vs <= '1';

ELSIF v_cnt = 35 THEN v_vs <= '0'; END IF; END IF;

END PROCESS;

mem_a <= addr;

mem_rd <= '0'; -- 显示固定图象,存储器做ROM用 mem_wr <= '1';

PROCESS(clk, v_hs, v_vs) BEGIN

IF v_hs = '1' THEN

addr(7 DOWNTO 0) <= \"00000000\"; -- 行消隐时复位地址低7位

ELSIF clk'EVENT AND clk = '1' THEN

addr(7 DOWNTO 0) <= addr(7 DOWNTO 0) + 1;

END IF;

IF (v_vs = '1') OR (v_hs = '1') THEN

dout <= \"000000\"; -- 场消隐或行消隐时,不输出图象信号

ELSIF clk'EVENT AND clk = '0' THEN

dout <= mem_d(5 DOWNTO 0); -- 将存储器内容读出显示 END IF; END PROCESS;

PROCESS(i_hs, v_vs) BEGIN

IF v_vs = '1' THEN

addr(14 DOWNTO 8) <= \"0000000\"; -- 场消隐时复位地址高8位

ELSIF i_hs'EVENT AND i_hs = '1' THEN

addr(14 DOWNTO 8) <= addr(14 DOWNTO 8) + 1; END IF;

END PROCESS; END behv;

3.4 VHDL程序在QuartusⅡ编译结果

3.5 QuartusⅡ时序仿真波形

四、配置到EDA6000实验箱

引脚设置:

配置下载:

输出结果:

五、系统设计工作进程

12月28日:选择课题及查找资料;

12月29日~31日:VHDL源代码编写、调试;

1月4日~6日:在EDA6000实验箱上调试,画原理框图,撰写报告。

六、收获和体会

VGA显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备,FPGA以其结构的优势可以使用很少的资源产生VGA的各种控制信号。

本次课程设计使我们重温了课本知识,并把理论付诸于实践,不但让我们深入的领悟EDA设计的精髓和VHDL程序的要领,而且极大得提高了我们的实际动手能力。尽管在设计过程中遇到了诸多困难,但是小组各成员齐心协力,通过查找资料、讨论等多种方式一一克服。但正是这些挫折的磨练,使我们懂得了科学的严谨性。

我们必须以十分认真的态度和坚持不懈的精神,才能使我们在自己的学术领域中真正的学有所成。

七、参考文献

[参考文献]

[1] 曾繁泰,陈美金 编著.VHDL程序设计 [M].北京:清华大学出版,2000. [2] 李国丽,朱维勇等编著 EDA与数字系统设计[M].机械工业出版社

[3] 候伯亨,顾新编著.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,1997.

[4] 潘松,黄继业编著.EDA技术实用教程[M]. 科学出版社,2006 [5] 王小军编著. VHDL简明教程[M].北京:清华大学出版社,2000.

[6] 刘健编著.VHDL应用开发技术与工程实践[M].北京:人民邮电出版,2004. [7] 宋烈武主编.EDA技术实用教程[M].湖北科学技术出版社,2006年第三版

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务