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

📄 sec_clock.vhd.bak

📁 基于CYCLONE系列FPGA EP1C3T144C8的VHDL秒表代码
💻 BAK
字号:
library ieee;
use ieee.std_logic_1164.all;
entity sec_clock is
port( clk:in std_logic;
         rst:in std_logic;
	   start:in std_logic;
         sel:out std_logic_vector(7 downto 0);
       data:out std_logic_vector(7 downto 0));
end entity;
architecture min of sec_clock is
signal     clk1:std_logic;
signal     num:integer range 0 to 399999:=0;
signal  seclect:integer range 0 to 7 :=0;
signal    seg:integer range 0 to 9:=0;
signal led_1:integer range 0 to 9:=0;
signal led_2:integer range 0 to 9:=0;
signal led_3:integer range 0 to 9:=0;
signal led_4:integer range 0 to 9:=0;
signal led_5:integer range 0 to 9:=0;
signal led_6:integer range 0 to 9:=0;
signal led_7:integer range 0 to 9:=0;
signal led_8:integer range 0 to 9:=0;
signal   start1:std_logic:='0';
signal     rst1:std_logic:='0';

begin
--************分频器***********
P1:process(clk)
begin 
	if clk 'event and clk='1' then
		if num<199999 then
			num<=num+1;
		else
			num<=0;
			clk1<=not clk1;
		end if;
	end if;	
end process;
--************动态扫描**********
P2:process(clk)
variable scan:integer range 0 to 1999:=0;
begin
	if clk 'event and clk='1' then
		if scan=1999 then
			scan:=0;		
			if seclect<7 then
				seclect<=seclect+1;
			else
				seclect<=0;
			end if;
		else
			scan:=scan+1;
		end if;
	end if;
end process;
--************显示**********
P3:process(clk1,start1,rst1)
begin
	if rst1='1' then
	
	if(clk1 'event and clk1='1' and start1='1') then
		if(led_8=9) then
			led_8<=0;
			if(led_7=9) then
				led_7<=0;
				if(led_6=9) then
					led_6<=0;
					if(led_5=5) then
						led_5<=0;
						if(led_4=9) then	
							led_4<=0;
							if(led_3=5) then
								led_3<=0;
								if(led_2=9) then
									led_2<=0;
									led_1<=led_1+1;
								else
									led_2<=led_2+1;
								end if;								
 							else
	    						led_3<=led_3+1;
							end if;
						else
		   					led_4<=led_4+1;
						end if;
 					else
	    				led_5<=led_5+1;
					end if;
				else
  					led_6<=led_6+1;
				end if;
	 		else
				led_7<=led_7+1;
			end if;
		else
		   led_8<=led_8+1;
		end if;
	end if;
	else 
		led_1<=0;
		led_2<=0;
		led_3<=0;
		led_4<=0;
		led_5<=0;
		led_6<=0;
		led_7<=0;
		led_8<=0;
	end if;
end process;
--开始计时
P4:process(start)
begin
	if (start 'event and start='0') then
		start1<=not start1; 
	end if;
end process;

P5:process(rst)
begin
	if (rst 'event and rst='1') then
		rst1<=not rst1;
	end if;
end process;
seg <=led_1 when seclect=0 else
	      led_2 when seclect=1 else
	      led_3 when seclect=2 else
	      led_4 when seclect=3 else
	      led_5 when seclect=4 else
	      led_6 when seclect=5 else
	      led_7 when seclect=6 else
	      led_8 when seclect=7 else
	      0;

data <= "00111111" when seg=0 else
		    "00000110" when seg=1 else
		    "01011011" when seg=2 else
		    "01001111" when seg=3 else
		    "01100110" when seg=4 else
		    "01101101" when seg=5 else
		    "01111101" when seg=6 else
		    "00000111" when seg=7 else
		    "01111111" when seg=8 else
		    "01101111" when seg=9 else
		    "00000000";
		
sel <= "00000001" when seclect=7 else
		 "00000010" when seclect=6 else
		 "00000100" when seclect=5 else
		 "00001000" when seclect=4 else
		 "00010000" when seclect=3 else
		 "00100000" when seclect=2 else
		 "01000000" when seclect=1 else
		 "10000000" when seclect=0 else
        "00000000";
end architecture;

⌨️ 快捷键说明

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