📄 andor.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 + -