END PROCESS;
Q<=QN;
END RTL;
编写可逆计数器 VHDL 程序时,在语法上,就是把加法和减法计数器合并,使用一个控制
信号决定计数器作加法或减法的动作。在本例中,利用“控制信号 DIR”可以让计数器的计
数动作加 1 或减 1。
6.1.2 异步计数器的设计
异步计数器又称行波计数器,它将低/高位计数器的输出做为高/低位计数器的时钟信号,这
一级一级串行连接起来就构成了一个异步计数器。异步计数器与同步计数器不同之处就在
于时钟脉冲的提供方式,但是,由于异步计数器采用行波计数,从而使计数延迟增加,在
要求延迟小的领域受到了很大限制。尽管如此,由于它的电路简单,仍有广泛的应用。图
6.2 是用 VHDL 语言描述的一个由 8 个触发器构成的异步计数器.它的程序如例 6.4 所示,采
用元件例化方式生成。与上述同步计数器不同之处主要表现在对各级时钟脉冲的描述上,
这一点请读者在阅读程序时多加注意。
图 6.2 8 位异步计数器原理图
【例 6.4】 用 VHDL 设计一个由 8 个触发器构成的 8 位二进制异步计数器。
--RPLCONT.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DFFR IS
PORT(CLK,CLR,D:IN STD_LOGIC;
Q,QB:OUT STD_LOGIC);
END ENTITY DFFR;
ARCHITECTURE ART1 OF DFFR IS
SIGNAL Q_IN:STD_LOGIC;
BEGIN
QB<=NOT Q_IN;
Q<=Q_IN;
PROCESS(CLK,CLR) IS
BEGIN
IF (CLR='1') THEN
Q_IN<='0';
ELSIF (CLK'EVENT AND CLK='1') THEN
Q_IN<=D;
END IF ;
END PROCESS;
END ARCHITECTURE ART1;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY RPLCONT IS
PORT(CLK,CLR:IN STD_LOGIC;
COUNT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY RPLCONT;