八位数码管的动态显示VHDL程序.docVIP

  • 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)

1亿VIP精品文档

相关文档