📄 tri_block.vhd
字号:
LIBRARY ieee ;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY tri_block 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 tri_block;ARCHITECTURE rtl OF tri_block 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>=362+VBP+VSY-dist1 AND vcount<462+VBP+VSY-dist1 AND hcount>=nn+HBP+HSY-50 AND hcount<(nn+HBP+HSY) THEN color<="01";ELSIF vcount>=462+VBP+VSY-dist1 AND vcount<462+VBP+VSY THEN color<="10";ELSIF vcount>=462+VBP+VSY AND vcount<562+VBP+VSY AND hcount>=nn+HBP+HSY+dist AND hcount<(nn+HBP+HSY+dist+50)THEN color<="01";ELSIF vcount>=562+VBP+VSY AND vcount<662+VBP+VSY AND hcount>=nn+HBP+HSY-50 AND hcount<(nn+HBP+HSY) THEN color<="01";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 + -