📄 vga.vhd.bak.bak
字号:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
ENTITY VGA IS
PORT(red, green, blue: IN STD_LOGIC;
red_out, green_out, blue_out,
horiz_sync_out, vert_sync_out : OUT STD_LOGIC;
h_count:in STD_LOGIC_VECTOR(10 DOWNTO 0);
v_count :in STD_LOGIC_VECTOR(10 DOWNTO 0);
pixel_row, pixel_column: OUT
STD_LOGIC_VECTOR(10 DOWNTO 0);
hload,vclk,vload:out std_logic
);
END VGA;
ARCHITECTURE a OF VGA IS
SIGNAL horiz_sync, vert_sync : STD_LOGIC;
SIGNAL video_on_h, video_on_v,
video_on : STD_LOGIC;
BEGIN
-- video_on is high only when RGB data is displayed
video_on <= video_on_H AND video_on_V;
PROCESS(h_count,v_count)
BEGIN
-- WAIT UNTIL(clock_25Mhz'EVENT) AND (clock_25Mhz='1');
-- H_count counts pixels (640 + extra time for sync signals)
-- Horiz_sync ------------------------------------__________--------
-- H_count 0 640 659 755 799
-- IF (h_count = 1905) THEN--1919
-- h_count <= "00000000000";--0000000000
-- ELSE
-- h_count <= h_count + 1;
-- END IF;
IF (h_count <= 1799) AND (h_count >= 1571) THEN--755 659
horiz_sync <= '0';
ELSE
horiz_sync <= '1';
END IF;
--Vert_sync -----------------------------------------------_______-----
-- V_count 0 480 493 – 494 524
-- IF (v_count >=524 ) AND (h_count >=1905 ) THEN--524 699
-- v_count <= "0000000000";--0000000000
-- ELSIF (h_count =1905 ) THEN--699
-- v_count <= v_count + 1;
-- END IF;
IF (v_count <=814 ) AND (v_count >=813 ) THEN--494 493
vert_sync <= '0';
ELSE
vert_sync <= '1';
END IF;
IF (h_count <=1525 ) THEN--640
video_on_h <= '1';
pixel_column <= h_count;
ELSE
video_on_h <= '0';
END IF;
IF (v_count <=792 ) THEN--479
video_on_v <= '1';
pixel_row <= v_count;
ELSE
video_on_v <= '0';
END IF;
END PROCESS;
red_out <= red AND video_on;
green_out <= green AND video_on;
blue_out <= blue AND video_on;
horiz_sync_out <= horiz_sync;
vert_sync_out <= vert_sync;
process (h_count)
begin
if(h_count=1907) then
hload<='1';
else
hload<='0';
end if;
end process;
process (v_count,h_count)
begin
IF (v_count >=865 ) AND (h_count >=1666 ) THEN--524 699
vload<= '1';--0000000000
else
vload<='0';
-- ELSIF (h_count =1905 ) THEN--699
-- v_count <= v_count + 1;
END IF;
end process;
process(h_count)
begin
vclk<='0';
if(h_count=1666) then
vclk<='1';
end if;
end process;
END a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -