文档介绍:实验二计数器
一、实验目的
1、设计一个带使能输入及同步清0的增1计数器,仿真波形图见图20-1,;
2、设计一个带使能输入及同步清0的增1/减1的8位计数器,仿真波形图见图20-2A和20-2B,实验源程序名是up-。
二、实验内容
图20-1 计数器2波形图
图20-2A 加减控制计数器波形图
在用VHDL语言描述一个计数器时,,则在描述计数器时就可以使用其中的函数“+”(递增计数)和“-”(递减计数)。假定设计对象是增1计数器并且计数器被说明为向量,则当所有位均为‘1’时,计数器的下一状态将自动变成‘0’。举例来说,假定计数器的值到达“111”是将停止,则在增1之前必须测试计数器的值。
图20-2B 加减控制计数器波形图
如果计数器被说明为整数类型,则必须有上限值测试。否则,在计数顺值等于7,并且
要执行增1操作时,模拟器将指出此时有错误发生。
下面的例子是一个3位增1/减1计数器:当输入信号UP等于1 时计数器增1;当输入信号UP等于0时计数器减1。
Library ieee;
Use ;
Use ;
Entity up_down is
Port(clk,rst,en,up: in std_logic;
Sum: out std_logic_vector(2 downto 0);
Cout: out std_logic);
End;
Architecture a of up_down is
Signal count: std_logic_vector(2 downto 0);
Begin
Process(clk,rst)
Begin
If rst=’0’ then
Count<=(others=>’0’);
Elsif rising_edge(clk) then
If en=’1’ then
Case up is
When ‘1’=> count<=count+1;
When others =>count<=count-1;
End case;
End if;
End if;
End process;
Sum<=count;
Cout <=’1’ when en=’