您的当前位置:首页EDA数字钟程序代码

EDA数字钟程序代码

来源:乌哈旅游
--分频器 library ieee;

use ieee.std_logic_1164.all; entity fenpin is port(clk:in std_logic; qH: buffer std_logic; qout:buffer std_logic); end entity;

architecture c20 of fenpin is begin process(clk)

variable num : integer :=1; variable num1 : integer :=1 begin

if clk'event and clk='0' then

if(num=2)--0000000) --1HZ--10000000 to timer then num:=1;qout<=not qout; else

num:=num+1; end if;

if(num1=1)--000000) --1000HZ--10000 to wei then num1:=1;qH<=not qH; else

num1:=num1+1; end if; end if; end process; end c20; --timer library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Clock3 is port(clk:in std_logic;

duan: out std_logic_vector(3 downto 0); wei: in std_logic_vector(2 downto 0); wei2: out std_logic_vector(2 downto 0) ); end entity;

architecture clo of Clock3 is signal clk2:std_logic ;

signal keys: std_logic_vector(2 downto 0); begin

keys<=key_h&key_m&key_s; clk2<=clk or flag;

process(key_que) begin

if key_que'event and key_que='0' then flag<= not flag; end if; end process;

process(clk2,keys)--如果用拨码开关,就将clk2 改为clk begin case flag is when '0' =>

if clk2'event and clk2='0' then ---正常计时

if scn=59 and min=59 and hor=23 then scn:=0;min:=0;hor:=0; elsif scn=59 and min=59

then scn:=0;min:=0;hor:=hor+1; elsif scn=59

then scn:=0;min:=min+1; else scn:=scn+1; end if;

if min=59 ---整点报时500hz

then if scn=50 or scn=52 or scn=54 or scn=56 or scn=58 then music_out<=musicL; else music_out<='0'; end if;

elsif min=0 and scn=0---整点报时1000HZ then music_out<=musicH; else music_out<='0'; end if; end if; when '1' => case keys is when \"011\" => if hor=23 then hor:=0; else hor:=hor+1; end if; --keys<=\"00\"; when \"101\" => if min=59

then min:=0; else min:=min+1; end if; -- keys<=\"00\"; when \"110\" => if scn=59 then scn:=0; else scn:=scn+1; end if; -- keys<=\"00\";

when others => null;-- keys<=\"00\"; end case; end case;

h:=hor/10; --除法,特别是取余数运算会占用很多逻辑资源 hH<=\"0000\"+h; hL<=\"0000\"+(hor-10*h); m:=min/10; mH<=\"0000\"+m; mL<=\"0000\"+(min-10*m); s:=scn/10; sH<=\"0000\"+s; sL<=\"0000\"+(scn-10*s); end process; end clo; 去抖

library ieee;--去抖电路 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity qudou is

port( clk,key_in:in std_logic; key_out:out std_logic); end entity;

architecture key_qudou of qudou is begin

process(clk)--5ms

variable num: integer :=0; variable s: integer :=0; begin

if clk'event and clk='0' then case s is when 0 => key_out<='1'; if key_in='0'

then num:=num+1;--用状态机思路更清晰,但是程序体积更庞大 if num=3

then num:=0;s:=1; end if; else num:=0; end if; when 1 => key_out<='0'; if key_in='1' then s:=0; end if;

when others=> null; end case; end if; end process; key_qudou; --顶层文件

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Clock is port( clk:in std_logic;

music_out:out std_logic; key_in:in std_logic; keyh_in:in std_logic; keym_in:in std_logic; keys_in:in std_logic;

duan: out std_logic_vector(6 downto 0); wei: buffer std_logic_vector(2 downto 0)); end entity;

architecture clo of Clock is component fenpin port(clk:in std_logic;

musicH: buffer std_logic; musicL: buffer std_logic; qH: buffer std_logic; qM: buffer std_logic; qout:buffer std_logic); end component;

component counter_8 port( clk: in std_logic;

count: buffer std_logic_vector(2 downto 0));

end component;

component Clock3 port(clk:in std_logic; key_que:in std_logic; key_h:in std_logic; key_m:in std_logic; key_s:in std_logic; musicH:in std_logic; musicL:in std_logic; music_out:out std_logic;

duan: out std_logic_vector(3 downto 0); wei: in std_logic_vector(2 downto 0); wei2: out std_logic_vector(2 downto 0) ); end component;

component seg7dec

port( din: in std_logic_vector(3 downto 0);

qout:out std_logic_vector(6 downto 0));--a,b,c...f,g end component;

component qudou

port( clk,key_in:in std_logic; keyh_in:in std_logic; keym_in:in std_logic; keys_in:in std_logic; key_out:out std_logic; keyh_out:out std_logic; keym_out:out std_logic; keys_out:out std_logic); end component; begin

u1: fenpin port map(clk=>clk,qH=>clkH,qout=>clkL,qM=>clkM,musicH=>c_m_H,musicL=>c_m_L); u2: counter_8 port map(clk=>clkH,count=>wei_in); u3: seg7dec port map(din=>duan_in,qout=>duan); u4:

Clock3

port

map(clk=>clkL,duan=>duan_in,wei=>wei_in,wei2=>wei,key_que=>key0,key_h=>key1,key_m=>key2,key_s=>key3,musicH=>c_m_H,musicL=>c_m_L,music_out=>music_out); u5:

_out=>key1,keym_out=>key2,keys_out=>key3); end clo;

qudou

port

map(clk=>clkM,key_in=>key_in,keyh_in=>keyh_in,keym_in=>keym_in,keys_in=>keys_in,key_out=>key0,keyh

因篇幅问题不能全部显示,请点此查看更多更全内容