FPGA驅(qū)動LED靜態(tài)顯示和動態(tài)顯示的VHDL程序
din1 : in std_logic_vector(6 downto 0); --譯碼后的數(shù)據(jù)信號1(4位2進(jìn)制數(shù)據(jù)
通過例1中的decoder模塊譯碼得到din1,din2,din3,din4)
din2 : in std_logic_vector(6 downto 0); --譯碼后的數(shù)據(jù)信號2
din3 : in std_logic_vector(6 downto 0); --譯碼后的數(shù)據(jù)信號3
din4 : in std_logic_vector(6 downto 0); --譯碼后的數(shù)據(jù)信號4
shift: out std_logic_vector(3 downto 0); --位選信號
bus4 : out std_logic_vector(6 downto 0)); --數(shù)據(jù)信號
end dynamic;
architecture Behavioral of dynamic is
signal scan_clk:std_logic_vector(1 downto 0);
begin
process(clk,scan_clk,reset) --分頻進(jìn)程
variable scan:std_logic_vector(17 downto 0);
begin
if reset='1' then
scan:=000000000000000000;
scan_clk=00;
elsif clk'event and clk='1'then
scan:=scan+1;
end if;
scan_clk=scan(17 downto 16);
end process;
process(scan_clk,din1,din2,din3,din4) --掃描進(jìn)程
begin
case scan_clk is
when 00=>
bus4=din1;
shift=0001;
when 01=>
bus4=din2;
shift=0010;
when 10=>
bus4=din3;
shift=0100;
when 11=>
bus4=din4;
shift=1000;
when others=> bus4=0000000;shift=0000;
end case;
end process;
end Behavioral;
評論