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

📄 andor.vhd

📁 可以受上位机控制的通过fpga的视频信号发生器程序
💻 VHD
字号:
LIBRARY ieee ;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY andor IS PORT( clk    : IN std_logic;  vcount : IN std_logic_vector(11 DOWNTO 0);  hcount : IN std_logic_vector(10 DOWNTO 0);  clken_fcount: IN std_logic;  pattern: IN std_logic_vector(3  DOWNTO 0);  distance:IN std_logic_vector(3  DOWNTO 0);  distance1:IN std_logic_vector(3  DOWNTO 0);  out_r_e   : OUT std_logic_vector(7 DOWNTO 0);  out_g_e   : OUT std_logic_vector(7 DOWNTO 0);  out_b_e   : OUT std_logic_vector(7 DOWNTO 0);  out_r_o   : OUT std_logic_vector(7 DOWNTO 0);  out_g_o   : OUT std_logic_vector(7 DOWNTO 0);  out_b_o   : OUT std_logic_vector(7 DOWNTO 0);  level1    :IN   std_logic_vector(7 DOWNTO 0);level2    :IN   std_logic_vector(7 DOWNTO 0);level3    :IN   std_logic_vector(7 DOWNTO 0));CONSTANT HAC:integer:=640;   -- horizontal active pixels 1448*1151CONSTANT HSY:integer:=20;     -- horizontal sync width (negative polarity)CONSTANT HBP:integer:=20;     -- horizontal back porchCONSTANT VAC:integer:=1024;    -- vertical active pixelsCONSTANT VSY:integer:=25;      -- vertical sync width (negative polarity)CONSTANT VBP:integer:=25;     -- vertical back porchEND andor;ARCHITECTURE rtl OF andor IS	SIGNAL speed,dist,dist1 : integer;	SIGNAL nn    : std_logic_vector(10 DOWNTO 0);	SIGNAL color : std_logic_vector(1 DOWNTO 0);		BEGINPROCESS(distance)BEGINCASE distance IS	WHEN  "0000"=>dist<=0;	WHEN  "0001"=>dist<=2;	WHEN  "0010"=>dist<=4;    WHEN  "0011"=>dist<=6;    WHEN  "0100"=>dist<=8;    WHEN  "0101"=>dist<=10;    WHEN  "0110"=>dist<=12;    WHEN  "0111"=>dist<=14;    WHEN  "1000"=>dist<=16;    WHEN  "1001"=>dist<=18;    WHEN  "1010"=>dist<=20;    WHEN OTHERS=>dist<=20;END CASE;END PROCESS;process(distance1)BEGINCASE distance1 IS	WHEN  "0000"=>dist1<=0;	WHEN  "0001"=>dist1<=1;	WHEN  "0010"=>dist1<=2;    WHEN  "0011"=>dist1<=3;    WHEN  "0100"=>dist1<=4;    WHEN  "0101"=>dist1<=5;    WHEN  "0110"=>dist1<=6;    WHEN  "0111"=>dist1<=7;    WHEN  "1000"=>dist1<=8;    WHEN  "1001"=>dist1<=9;    WHEN  "1010"=>dist1<=10;    WHEN  "1011"=>dist1<=12;    WHEN  "1100"=>dist1<=14;    WHEN  "1101"=>dist1<=16;    WHEN  "1110"=>dist1<=18;    WHEN  "1111"=>dist1<=20;END CASE;END PROCESS;speed<=conv_integer(pattern);PROCESS(clk)BEGINIF clk'event AND clk='1' THENIF vcount>=40+VBP+VSY-dist1 AND vcount<60+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=40+VBP+VSY-dist1 AND vcount<60+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=60+VBP+VSY AND vcount<80+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=80+VBP+VSY AND vcount<100+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=142+VBP+VSY-dist1 AND vcount<162+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=142+VBP+VSY-dist1 AND vcount<162+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=162+VBP+VSY AND vcount<182+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=182+VBP+VSY AND vcount<202+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=244+VBP+VSY-dist1 AND vcount<264+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=244+VBP+VSY-dist1 AND vcount<264+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=264+VBP+VSY AND vcount<284+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=284+VBP+VSY AND vcount<304+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=346+VBP+VSY-dist1 AND vcount<366+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=346+VBP+VSY-dist1 AND vcount<366+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=366+VBP+VSY AND vcount<386+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=386+VBP+VSY AND vcount<406+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=448+VBP+VSY-dist1 AND vcount<468+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=448+VBP+VSY-dist1 AND vcount<468+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=468+VBP+VSY AND vcount<488+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=488+VBP+VSY AND vcount<508+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=550+VBP+VSY-dist1 AND vcount<570+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=550+VBP+VSY-dist1 AND vcount<570+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=570+VBP+VSY AND vcount<590+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=590+VBP+VSY AND vcount<610+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=652+VBP+VSY-dist1 AND vcount<672+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=652+VBP+VSY-dist1 AND vcount<672+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=672+VBP+VSY AND vcount<692+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=692+VBP+VSY AND vcount<712+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=754+VBP+VSY-dist1 AND vcount<774+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=754+VBP+VSY-dist1 AND vcount<774+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=774+VBP+VSY AND vcount<794+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=794+VBP+VSY AND vcount<814+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=856+VBP+VSY-dist1 AND vcount<876+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=856+VBP+VSY-dist1 AND vcount<876+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=876+VBP+VSY AND vcount<896+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=896+VBP+VSY AND vcount<916+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=958+VBP+VSY-dist1 AND vcount<978+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=958+VBP+VSY-dist1 AND vcount<978+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=978+VBP+VSY AND vcount<998+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+25+dist)THEN color<="01";ELSIF vcount>=998+VBP+VSY AND vcount<1018+VBP+VSY AND hcount>=nn+HBP+HSY-25 AND hcount<(nn+HBP+HSY)THEN color<="01";ELSIF vcount>=60+VBP+VSY-dist1 AND vcount<60+VBP+VSY THEN color<="10";ELSIF vcount>=162+VBP+VSY-dist1 AND vcount<162+VBP+VSY THEN color<="10";ELSIF vcount>=264+VBP+VSY-dist1 AND vcount<264+VBP+VSY THEN color<="10";ELSIF vcount>=366+VBP+VSY-dist1 AND vcount<366+VBP+VSY THEN color<="10";ELSIF vcount>=468+VBP+VSY-dist1 AND vcount<468+VBP+VSY THEN color<="10";ELSIF vcount>=570+VBP+VSY-dist1 AND vcount<570+VBP+VSY THEN color<="10";ELSIF vcount>=672+VBP+VSY-dist1 AND vcount<672+VBP+VSY THEN color<="10";ELSIF vcount>=774+VBP+VSY-dist1 AND vcount<774+VBP+VSY THEN color<="10";ELSIF vcount>=876+VBP+VSY-dist1 AND vcount<876+VBP+VSY THEN color<="10";ELSIF vcount>=978+VBP+VSY-dist1 AND vcount<978+VBP+VSY THEN color<="10";ELSE color<="00";END IF;END IF;END PROCESS;PROCESS(clk)BEGINIF clk'event AND clk='1' THENIF clken_fcount='1' THENIF nn>=HAC+50 THEN nn<="00000000000";ELSEnn<=(nn+speed);END IF;END IF;END IF;END PROCESS;PROCESS(clk)BEGINIF clk'event AND clk='1' THENIF color="01" THENout_r_e<=level1;out_g_e<=level1;out_b_e<=level1;out_r_o<=level1;out_g_o<=level1;out_b_o<=level1;ELSIF color="10" THENout_r_e<=level2;out_g_e<=level2;out_b_e<=level2;out_r_o<=level2;out_g_o<=level2;out_b_o<=level2;ELSEout_r_e<=level3;out_g_e<=level3;out_b_e<=level3;out_r_o<=level3;out_g_o<=level3;out_b_o<=level3;END IF;END IF;END PROCESS;END rtl;

⌨️ 快捷键说明

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