带异步复位,同步使能的十进制计数器的设计

一:实验原理
计数器对输入的时钟信号进行计数。十进制计数器由叫BCD码计数器,它利用四位二进制计数器对10个时钟脉冲计数。有效码字为0000~1001。所设计的计数器中,rst是异步清零信号,高电平有效;clk是计数时钟信号;ena为计数器使能控制。当ena为‘1’时,
计数器正常计数,当ena为‘0’时,计数器的值保持不变。计数器的输出为Q[3:0],进位信号为cout。
二:实验内容
1)用Verilog HDL语言完成上述计数器的行为级设计。
2)用QuartusII对上述设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。
3)锁定引脚并硬件下载测试。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。硬件实验中,注意测试所有控制信号和显示信号,包括rst、ena等的同步、异步特性,进位信号等。
4) (可选项)使用SignalTap II对此计数器进行实时测试, 为此项设计加入一个可用于SignalTap II采样的独立的时钟输入端CLK0。计数时钟可以低一点,而采样时钟可高一些,如选择clock0=2MHz,而计数时钟CLK可分别选择256Hz、16384Hz、6MHz,并进行实时测试。记录测试波形,给出报告。
引脚锁定:
计数脉冲clk: 50_1HZ
复位信号rst: L1 133
使能信号ena: L2 135
计数器输出
Q[3]: D5 4
Q[2]: D6 7
Q[1]: D7 10
Q[0]: D8 11
cout: D1 144

k是控制置数的,en是计数使能,clr是清零:

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

use IEEE.std_logic_arith.all;

entity cnt_16 is

port (

clk: in STD_LOGIC;

qin: in STD_LOGIC_VECTOR (15 downto 0);

clr:in std_logic;

k: in std_logic;

en: in STD_LOGIC;

qout: out STD_LOGIC_VECTOR (15 downto 0);

q: out STD_LOGIC

if qqout="1111111111111111" then

qq<='1' ;

qqout<="0000000000000000";

else

qqout<=qqout '1';

end if;

end process suocun;

end cnt_16_arch;

扩展资料:

n位二进制异步计数器由n个处于计数工作状态(对于D 触发器,使Di=Qin;对于JK 触发器,使Ji=Ki=1) 的触发器组成。各触发器之间的连接方式由加、减计数方式及触发器的触发方式决定。

对于加计数器,若用上升沿触发的触发器组成,则应将低位触发器的Q 端与相邻高一位触发器的时钟脉冲输入端相连(即进位信号应从触发器的Q 端引出);若用下降沿触发的触发器组成,则应将低位触发器的Q 端与相邻高一位触发器的时钟脉冲输入端连接。对于减计数器,各触发器的连接方式则相反。

参考资料来源:百度百科-二进制计数器

温馨提示:答案为网友推荐,仅供参考