二、单元电路设计 1、时序信号的产生
图片要想在显示器上显示出来,它主要需要5个信号,行同步信号HS(Hor i Zontal—Sync)、场同步信号VS(Vertical—Sync)和RGB三基色信号。VGA时序控制模块是整个显示控制器的关键部分,最终输出的行、场同步信号必须严格按照VGA时序标准产生相应的脉冲信号。图1和图2所示为行扫描和场扫描的时序图。
图1行扫描时序示意图
图2场扫描时序示意图
对此5个信号的时序驱动,VGA显示器也要严格遵守“VGA-I-业标准”即640×480 X 60Hz模式,否则会损害V6A显示器。行、场扫描时序要求如表1和表2所示。
表1 行扫描时序要求:(单位:像素即输出一个像素PixeI的时间间隔)
6
表2 场扫描时序要求:(单位:行即每输出一行line的时间间隔)
VGA的工业标准显示模式要求行同步和场同步都为负极性,即同步头脉冲要求是负脉冲。对于一些VGA显示器,HS和VS的极性可正可负,显示器内可以自动转换为正极性逻辑。在图1和图2中,R、G、B为正极性信号即高电平有效。当VS=0、HS=1时,CRT现实的内容为亮的过程,即正向扫描过程约为26us。当一行扫描完毕,行同步HS=1,约需6us。期间,CRT扫描产生消隐,电子束回到CRT左边下一行的起始位置(X=0,Y=1);当扫描完480行后,CRT的场同步VS=1,产生场同步使扫描线回到CRT的第一行第一列(X=0,Y=0)处(约为两个行周期)。 2、彩色信号的生成
本设计中采用3位数字表达式R、G、B(纯数字方式)三种基色,可以显示8中颜色,表三是此八种颜色的对应的编码电平。利用数字逻辑关系将R、G、B进行逻辑运算便可得到显示的图形。 表三 颜色编码 颜色 黑 R G B 0 0 0 蓝 0 0 1 红 0 1 0 品 0 1 1 绿 1 0 0 青 1 0 1 黄 1 1 0 白 1 1 1
7
3、显示控制模块
经编译后的彩条信号经过显示模块处理后送到显示器进行显示。利用行、场同步信号的计数器,在图像有效区间内按照图片的大小划定行和列的起始坐标和终止坐标。本设计使用和行、场计数器相同频率的时钟信号作为图像地址计数器的时钟,当扫描信号到达显示图片的区间时,图像地址计数器开始计数,同时从相应位置读出数据送往显示器进行显示,显示模块的输出直接连到VGA的接口。在设计中还增加了一个模式选择按键MD,用来控制图像的显示模式,本设计中共有6中显示变化的图像如表4所示。 表4 彩色信号发生器的显示模式 1 2 3 横彩条 竖彩条 棋盘格 1:白黄青绿品红蓝黑 1:白黄青绿品红蓝黑 1:棋盘格显示模式1 2:黑蓝红品绿青黄白 2:黑蓝红品绿青黄白 2:棋盘格显示模式2 三、软件设计
本设计采用Altera公司的EDA软件0uartus II,采用VHDL语言进行软件程序的编写,来实现VGA彩条信号显示控制器的设计。 流程图为 具体程序为:
LIBRARY IEEE; -- VGA显示器 彩条 发生器 USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COLOR IS
PORT ( CLK, MD : IN STD_LOGIC; HS, VS, R, G, B : OUT STD_LOGIC );
8
-- 行场同步/红,绿,蓝 END COLOR;
ARCHITECTURE behav OF COLOR IS
SIGNAL 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); BEGIN
GRB(1) <= (GRBP(1) XOR MD) AND HS1 AND VS1; GRB(2) <= (GRBP(2) XOR MD) AND HS1 AND VS1; GRB(3) <= (GRBP(3) XOR MD) AND HS1 AND VS1; PROCESS( MD ) BEGIN
IF MD'EVENT AND MD = '0' THEN
IF MMD = \ ELSE MMD <= MMD + 1;
END IF; --三种模式 END IF; END PROCESS; PROCESS( MMD ) BEGIN
IF MMD = \选择横彩条 ELSIF MMD = \选择竖彩条
ELSIF MMD = \产生棋盘格 ELSE GRBP <= \ END IF; END PROCESS; PROCESS( CLK ) BEGIN
IF CLK'EVENT AND CLK = '1' THEN -- 12MHz 13分频 IF FS = 12 THEN FS <= \ ELSE FS <= (FS + 1); END IF; END IF; END PROCESS;
FCLK <= FS(3); CCLK <= CC(4); PROCESS( FCLK ) BEGIN
IF FCLK'EVENT AND FCLK = '1' THEN
9
IF CC = 29 THEN CC <= \ ELSE CC <= CC + 1; END IF; END IF; END PROCESS; PROCESS( CCLK ) BEGIN
IF CCLK'EVENT AND CCLK = '0' THEN
IF LL = 481 THEN LL <= \ ELSE LL <= LL + 1; END IF; END IF; END PROCESS; PROCESS( CC,LL ) BEGIN
IF CC > 23 THEN HS1 <= '0'; --行同步 ELSE HS1 <= '1'; END IF;
IF LL > 479 THEN VS1 <= '0'; --场同步 ELSE VS1 <= '1'; END IF; END PROCESS;
PROCESS(CC, LL) BEGIN
IF CC < 3 THEN GRBX <= \横彩条 ELSIF CC < 6 THEN GRBX <= \ ELSIF CC < 9 THEN GRBX <= \ ELSIF CC < 12 THEN GRBX <= \ ELSIF CC < 15 THEN GRBX <= \ ELSIF CC < 18 THEN GRBX <= \ ELSIF CC < 21 THEN GRBX <= \ ELSE GRBX <= \ END IF;
IF LL < 60 THEN GRBY <= \竖彩条 ELSIF LL < 120 THEN GRBY <= \ ELSIF LL < 180 THEN GRBY <= \ ELSIF LL < 240 THEN GRBY <= \ ELSIF LL < 300 THEN GRBY <= \ ELSIF LL < 360 THEN GRBY <= \ ELSIF LL < 420 THEN GRBY <= \ ELSE GRBY <= \ END IF; END PROCESS;
HS <= HS1 ; VS <= VS1 ;R <= GRB(2) ;G <= GRB(3) ; B <= GRB(1); END behav;
10