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

📄 leddrv.vhd

📁 电子钏的硬件描述语言设计
💻 VHD
字号:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY leddrv IS
PORT
(
 ms10       :IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
 sec        :IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
 min        :IN  STD_LOGIC_VECTOR(7 DOWNTO 0);
 en         :IN STD_LOGIC;
 clk		:IN STD_LOGIC;
 Lseg       :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
 Lcs        :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END leddrv;

ARCHITECTURE behave OF leddrv IS
SIGNAL v:STD_LOGIC_VECTOR(3 DOWNTO 0); --取得要的单个七段管的实际数值
BEGIN
PROCESS(clk)
VARIABLE n:INTEGER RANGE 0 TO 9;
BEGIN
IF en='0' THEN Lseg<="00000000"; Lcs<="00000000";
 ELSIF rising_edge(clk) THEN --时钟上升沿后
   n:=n+1;
   if n>8 then n:=1;end if;
     if     n=1 then v<=ms10(3 downto 0);Lcs<="00000001";
      elsif n=2 then v<=ms10(7 downto 4);Lcs<="00000010";
      elsif n=3 then v<="1110";          Lcs<="00000100";
      elsif n=4 then v<=sec(3 downto 0); Lcs<="00001000";
      elsif n=5 then v<=sec(7 downto 4); Lcs<="00010000";
      elsif n=6 then v<="1111";          Lcs<="00100000";
      elsif n=7 then v<=min(3 downto 0); Lcs<="01000000";
      elsif n=8 then v<=min(7 downto 4); Lcs<="10000000";
      else Lcs<="00000000";
   end if;
   if     v="0000" then Lseg<="11111100";
    elsif v="0001" then Lseg<="01100000";
    elsif v="0010" then Lseg<="11011010";
    elsif v="0011" then Lseg<="11110010";
    elsif v="0100" then Lseg<="01100110";
    elsif v="0101" then Lseg<="10110110";
    elsif v="0110" then Lseg<="10111110";
    elsif v="0111" then Lseg<="11100000";
    elsif v="1000" then Lseg<="11111110";
    elsif v="1001" then Lseg<="11110110";
    else Lseg<="00000001";--不为0~9,显示成小数点
   end if;
END IF;
END PROCESS;
END behave;

⌨️ 快捷键说明

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