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

📄 synchro.vhd

📁 actel BASYs开发板自带的demo程序
💻 VHD
字号:
------------------------------------------------------------------------
--  synchro.vhd -- Ritzi Pitzi game MAIN VHDL file
------------------------------------------------------------------------
--  Author : Mircea Dabacan
--           Copyright 2005 Digilent, Inc.
------------------------------------------------------------------------
-- This is the source file for the synchro component, 
-- provided by the Digilent Reference Component Library.

------------------------------------------------------------------------
-- Revision History:
--	15/01/2005(MirceaD): created
------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Synchro is

    port (
		ck25MHz: in std_logic;			-- ck 25MHz
		HS: out std_logic;					-- horizontal synchro signal					
		VS: out std_logic;					-- verical synchro signal 
		Hcnt: out std_logic_vector (9 downto 0); -- horizontal counter
		Vcnt: out std_logic_vector (9 downto 0)	 -- verical counter
		);
end Synchro;

architecture Behavioral of Synchro is
-- constants for Synchro module
constant HPW:integer:=96;		--Horizontal synchro Pulse Width (pixels)
constant HFP:integer:=16;		--Horizontal synchro Front Porch (pixels)
constant HBP:integer:=48;		--Horizontal synchro Back Porch (pixels)
constant VPW:integer:=2;		--Verical synchro Pulse Width (lines)
constant VFP:integer:=10;		--Verical synchro Front Porch (lines)
constant VBP:integer:=29;		--Verical synchro Back Porch (lines)
constant PAL:integer:=640;		--Pixels/Active Line (pixels)
constant LAF:integer:=480;		--Lines/Active Frame (lines)
-- constants for Synchro module (also used in FieldGen)
constant PLD: integer:=800;	--Pixel/Line Divider
constant LFD: integer:=521;	--Line/Frame Divider

signal intHcnt: integer range 0 to PLD-1; --PLD-1	-- horizontal countersignal intVcnt: integer range 0 to LFD-1; -- LFD-1	-- verical counter

begin
syncro: process (ck25MHz)
begin

if ck25MHz'event and ck25MHz='1' then
	if intHcnt=PLD-1 then
		intHcnt<=0;
		if intVcnt=LFD-1 then intVcnt<=0;
		else intVcnt<=intVcnt+1;
		end if;
	else intHcnt<=intHcnt+1;
	end if;
	
	-- Generates HS - active low
	if intHcnt=PAL-1+HFP then 
		HS<='0';
	elsif intHcnt=PAL-1+HFP+HPW then 
		HS<='1';
	end if;

	-- Generates VS - active low
	if intVcnt=LAF-1+VFP then 
		VS<='0';
	elsif intVcnt=LAF-1+VFP+VPW then
		VS<='1';
	end if;
end if;
end process; 

-- mapping itnernal integers to std_logic_vector ports
  Hcnt <= conv_std_logic_vector(intHcnt,10);
  Vcnt <= conv_std_logic_vector(intVcnt,10);
end Behavioral;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -