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

📄 moving.vhd

📁 可以受上位机控制的通过fpga的视频信号发生器程序
💻 VHD
字号:
LIBRARY ieee ;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY moving IS PORT( clk    : IN std_logic;  clken_fcount: IN std_logic;  de_out :IN std_logic;  pattern: IN std_logic_vector(2  DOWNTO 0);  brightness: IN std_logic_vector(7  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));CONSTANT HAC:integer:=640;   -- horizontal active pixelsEND moving;ARCHITECTURE rtl OF moving IS	SIGNAL m1countreg:std_logic_vector(10 DOWNTO 0);	SIGNAL m2countreg:std_logic_vector(10 DOWNTO 0);	SIGNAL pm_temp: std_logic;	SIGNAL speed : STD_LOGIC_VECTOR(10 DOWNTO 0);	SIGNAL back: std_logic_vector(7 DOWNTO 0);	SIGNAL front: std_logic_vector(7 DOWNTO 0);BEGINPROCESS(clk)BEGINIF clk'event AND clk='1' THENCASE brightness(7 downto 4) IS    WHEN  "0001"=>front<="10000000";    WHEN  "0010"=>front<="01000000";    WHEN  "0011"=>front<="00100000";    WHEN  "0100"=>front<="00010000";    WHEN  "0101"=>front<="00001000";    WHEN  "0110"=>front<="00000000";    WHEN  OTHERS =>front<="11111111";END CASE;END IF;END PROCESS;PROCESS(clk)BEGINIF clk'event AND clk='1' THENCASE brightness(3 downto 0) IS    WHEN  "0001"=>back<="00001000";    WHEN  "0010"=>back<="00010000";    WHEN  "0011"=>back<="00100000";    WHEN  "0100"=>back<="01000000";    WHEN  "0101"=>back<="10000000";    WHEN  "0110"=>back<="11111111";    WHEN  OTHERS =>back<="00000000";END CASE;END IF;END PROCESS;A:PROCESS(clk)BEGINIF clk'event AND clk='1' THENCASE pattern IS	WHEN  "001"=>speed<="00000000100";	WHEN  "010"=>speed<="00000000101";    WHEN  "011"=>speed<="00000001000";    WHEN  "100"=>speed<="00000001010";    WHEN  "101"=>speed<="00000010000";	WHEN  OTHERS =>speed<="00000000000";END CASE;END IF;END PROCESS;B:PROCESS(clk,clken_fcount,m1countreg)BEGINIF(clken_fcount='0') THENm1countreg<=m1countreg;ELSIF clk'event AND clk='1' THENIF m1countreg>=HAC THENm1countreg<=(OTHERS=>'0');ELSEm1countreg<=m1countreg+speed;END IF;END IF;END PROCESS;C:PROCESS(clk,pm_temp)BEGINIF (pm_temp='1') THENm2countreg<=(OTHERS=>'0');ELSIF clk'event AND clk='1' THENIF de_out='1' THENm2countreg<=m2countreg+1;END IF;END IF;END PROCESS;pm_temp<='1' when m2countreg=HAC ELSE '0';out_r_e<=back  when m2countreg<m1countreg ELSE front;out_g_e<=back  when m2countreg<m1countreg ELSE front;out_b_e<=back  when m2countreg<m1countreg ELSE front;out_r_o<=back  when m2countreg<m1countreg ELSE front;out_g_o<=back  when m2countreg<m1countreg ELSE front;out_b_o<=back  when m2countreg<m1countreg ELSE front;END rtl;

⌨️ 快捷键说明

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