目 录
一、设计任务 ----------------------------------------------------------------------- 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年第三版