|
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity desplay is
port(
clk:in std_logic;
indate:in integer range 0 to 9;
inadd:in integer range 1 to 8;
outdateut std_logic_vector(7 downto 0);
outaddut std_logic_vector(7 downto 0));
end desplay;
architecture behave of desplay is
signal num:integer range 0 to 3;
signal indata:std_logic_vector(7 downto 0);
begin
U1: process(indate)
begin
case indate is
when 0 =>indata<=x"c0";
when 1 =>indata<=x"f9";
when 2 =>indata<=x"a4";
when 3 =>indata<=x"b0";
when 4 =>indata<=x"99";
when 5 =>indata<=x"92";
when 6 =>indata<=x"82";
when 7 =>indata<=x"f8";
when 8 =>indata<=x"80";
when 9 =>indata<=x"90";
when others =>indata<=x"ff";
end case;
end process;
U2: process(clk,inadd,indata)
begin
if clk'event and clk='1'then
if num=3 then
num<=0;
case inadd is
when 1 =>outadd<="00000001";
when 2 =>outadd<="00000010";
when 3 =>outadd<="00000100";
when 4 =>outadd<="00001000";
when 5 =>outadd<="00010000";
when 6 =>outadd<="00100000";
when 7 =>outadd<="01000000";
when 8 =>outadd<="10000000";
when others =>outadd<="11111111";
end case;
outdate<=indata;
else
num<=num+1;
end if;
end if;
end process;
end behave;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity zhong is
port(
s :in std_logic;
outdateut std_logic_vector(7 downto 0);
outadd ut std_logic_vector(7 downto 0));
end zhong;
architecture art of zhong is
component desplay
port(
clk:in std_logic;
indate:in integer range 0 to 9;
inadd:in integer range 1 to 8;
outdateut std_logic_vector(7 downto 0);
outaddut std_logic_vector(7 downto 0));
end component desplay;
type news is array(1 to 8)of integer;
signal dizhi: news;
signal a, b,clk: std_logic;
signal n:integer range 0 to 5;
signal shi: integer range 0 to 23;
signal miao,fen: integer range 0 to 59;
signal shi_shi: integer range 0 to 2;
signal shi_ge: integer range 0 to 3;
signal fen_shi: integer range 0 to 5;
signal fen_ge: integer range 0 to 9;
signal miao_shi: integer range 0 to 5;
signal miao_ge: integer range 0 to 9;
begin
clk<='1'when(n=5) else '0';
a<='1'when(maio=59) else '0';
b<='1'when(fen=59) else '0';
L1: process(s)
begin
if(s'event and s='1')then
n<=n+1;
if(n=5)then
n<=0;
end if;
end if;
if(clk'event and clk='1')then
miao<=miao+1;
if(miao=59)then
miao<=0;
end if;
end if;
if(a'event and a='0')then
fen<=fen+1;
if(fen=59)then
fen<=0;
end if;
end if;
if(b'event and b='0')then
shi<=shi+1;
if(shi=23)then
shi<=0;
end if;
end if;
end process L1;
L2: process(shi,fen,miao)
begin
shi_shi<=shi mod 10;
shi_ge<=shi rem 10;
fen_shi<=fen mod 10;
fen_ge<=fen rem 10;
miao_shi<=miao mod 10;
miao_ge<=miao rem 10;
dizhi<=1;
u1:desplay port map (s,miao_ge,dizhi,outdate,outadd);
u2:desplay port map (s,miao_shi,dizhi+1,outdate,outadd);
u3:desplay port map (s,fen_ge,dizhi+2,outdate,outadd);
u4:desplay port map (s,fen_shi,dizhi+3,outdate,outadd);
u5:desplay port map (s,shi_ge,dizhi+4,outdate,outadd);
u6:desplay port map (s,shi_shi,dizhi+5,outdate,outadd);
end process L2;
end art; |
|