⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vga.vhd.bak.bak

📁 vga显示驱动,在EDA中实现对VGA显示器的驱动控制。
💻 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 + -