计数器简介:
计数器是数字系统中用得较多的基本逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时、产生节拍脉冲和脉冲序列等。例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。 计数器的种类很多。按时钟脉冲输入方式的不同,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器和非二进制计数器;按计数过程中数字增减趋势的不同,可分为加计数器、减计数器和可逆计数器。
以下是VHDL代码和仿真:
- library ieee;
- use ieee.std_logic_1164.all;
- use ieee.std_logic_arith.all;
- use ieee.std_logic_unsigned.all;
- --------------------------------------------------------------------
- entity exp3 is
- port( clk,ret,en : in std_logic; --定义时钟、异步复位、同步使能信号
- cq : out std_logic_vector(3 downto 0); --计数结果
- cout : out std_logic --进位信号
- );
- end exp3;
- --------------------------------------------------------------------
- architecture behave of exp3 is
- begin
- process(clk,ret,en)
- variable cqi : std_logic_vector(3 downto 0);
- begin
- if ret='0' then cqi:=(others =>'0');-- 计数器异步复位
- elsif clk'event and clk='1' then--检测时钟上升沿
- if en='1' then--检测是否允许计数(同步使能)
- if cqi<15 then cqi:=cqi+1;
- else cqi:=(others =>'0');
- end if;
- end if;
- end if;
- if cqi>9 then cout<='1';--输出进位信号
- else cout<='0';
- end if;
- cq<=cqi;--计数值向端口输出
- end process;
- end behave;
复制代码
代码下载:
16位计数器.7z
(188.25 KB, 下载次数: 10)
|