下面是74LS49的VHDL描述,74LS49就是一个驱动共阴极数码管的译码器:
LIBRARY IEEE;

USE IEEE.Std_logic_1164.ALL;
ENTITY ls49 IS
PORT(bl_n:IN Std_logic;
bi:IN Std_logic_vector(3 DOWNTO 0);
a,b,c,d,e,f,g:OUT Std_logic);
END ls49;
ARCHITECTURE behave_49 OF ls49 IS
SIGNAL s:Std_logic_vector(6 DOWNTO 0);
BEGIN
PROCESS(bi,bl_n)
BEGIN
IF bl_n = ′0′ THEN
s <= (OTHERS => ′0′);
ELSE
CASE bi IS
WHEN ″0000″ => s <= B″011_1111″;
WHEN ″0001″ => s <= B″000_0110″;
WHEN ″0010″ => s <= B″101_1011″;
WHEN ″0011″ => s <= B″100_1111″;
WHEN ″0100″ => s <= B″110_0110″;

WHEN ″0101″ => s <= B″110_1101″;
WHEN ″0110″ => s <= B″111_1101″;
WHEN ″0111″ => s <= B″010_0111″;
WHEN ″1000″ => s <= B″111_1111″;
WHEN ″1001″ => s <= B″110_1111″;
WHEN ″1010″ => s <= B″101_1000″;
WHEN ″1011″ => s <= B″100_1100″;
WHEN ″1100″ => s <= B″110_0010″;
WHEN ″1101″ => s <= B″111_1001″;
WHEN ″1110″ => s <= B″111_1000″;
WHEN ″1111″ => s <= B″000_0000″; -- 熄灭
WHENOTHERS=> s <= (OTHERS => ′0′); -- 熄灭
END CASE;
END IF;
END PROCESS;
a <= s(0);
b <= s(1);
c <= s(2);
d <= s(3);

e <= s(4);
f <= s(5);
g <= s(6);
END behave_49;
用两片74LS90芯片,一片控制个位,为十进制;另一片控制十位,为六进制。利用74LS90本身的两控制端(见摘要关于74LS90的注解)完成十进制,在达到1001(即十进制的九)时,给第二个芯片一个脉冲,这样反复,直到第二片达到0110时第二片自身清零,这样完成一次60的计数,且回到初态,两片74LS90全部清零,继续重复计数。(见图3)时计数器具体设计方案为:用两片74LS90芯片,一片控制个位,为十进制;另一片控制十位,为二进制。利用74LS90本身的两控制端(见摘要关于74LS90的注解)完成十进制,在达到1001(即十进制的九)时,给第二个芯片一个脉冲,这样反复,直到第二片达到0010(即十进制的二)且第一片达到0100(即十进制的四)时第一片和第二片同时清零,这样完成一次24的计数,且回到初态,继续重复计数。(见图4)(3)译码输出显示单元电路为了将计数器输出的8421BCD 码显示出来,需用译码输出显示电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑,我们采用较熟悉的七段译码显示电路。本设计可选器件74LS47为译码电路。


