- 22
- 0
- 约2.83千字
- 约 3页
- 2017-06-07 发布于北京
- 举报
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
--------------------------------------------------------------------
entity seg_display is
port( clk : in std_logic; --定义动态扫描时钟信号
reset : in std_logic; --定义复位信号
ledag : out std_logic_vector(6 downto 0); --定义数码管的七段输出信号
del : out std_logic_vector(2 downto 0) --定义八位数码管位置显示信号
);
end seg_display;
--------------------------------------------------------------------
architecture whphtao of seg_display is
signal clk1Khz : std_logic; --数码管扫描时钟
signal clk1hz : std_logic; --计数时钟
signal cq : std_logic_vector(3 downto 0);--计数值
begin
PROCESS(clk) --产生1hz信号
variable cnt : INTEGER RANGE 0 TO
BEGIN
IF clk=1 AND clkevent THEN
IF cntTHEN cnt:=0;
ELSE
IF cnTHEN clk1hz=1;
ELSE clk1hz=0;
END IF;
cnt:=cnt+1;
END IF;
END IF;
end process;
PROCESS(clk) --产生1Khz信号
variable cnt1 : INTEGER RANGE 0 TO 49999;
BEGIN
IF clk=1 AND clkevent THEN
IF cnt1=49999 THEN cnt1:=0;
ELSE
IF cnt125000 THEN clk1khz=1;
ELSE clk1khz=0;
END IF;
cnt1:=cnt1+1;
END IF;
END IF;
end process;
process(clk1hz,reset)
variable cqi : std_logic_vector(3 downto 0);
begin
if reset=0 then cqi:=(others =0);-- 计数器异步复位
elsif clk1hzevent and clk1hz=1 then--检测时钟上升沿
if cqi15 then cqi:=cqi+1;
else cqi:=(others =0);
end if;
--end if;
end if;
cq=cqi;--计数值向端口输出
end process;
process(clk1KHZ) --数码管动态扫描
variable dount : std_logic_vector(2 downto 0);
begin
if clk1kHZevent and clk1kHZ=1 then--检测时钟上升沿
dount:=dount
原创力文档

文档评论(0)