实验九_步长可变的加减计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九步长可变的加减计数器
一、实验目的
1.掌握加减法计数器以及特殊功能计数器的的设计原理。
2用VHDL语言设计多功能计数器。
二、实验原理
计数分同步计数器和异步计数器,如果按工作原理和使用情况来分那就更多了。
1.加减工作原理
加减计数也称为可逆计数,就是根据计数控制信号的不同,在时钟脉冲的作用下,计数器可以进行加1计数操作或者减1计数操作。
2.变步长工作原理
如步长为3的加法计数器,计数状态变化为0、3、6、9、12……,步长值由输入端控制。在加法计数时,当计数值达到或超过99时,在计数器下一个时钟脉冲过后,计数器清零;在减法计数时,当计数值达到或小于0时,在计数器下一个时钟脉冲过后,计数器也清零。
三、实验内容
1 设计的计数步长可在0~79之间变化
2 通过仿真或观察波形图验证设计的正确性。
3 编译下载验证结果。
四、设计提示
1.注意IF语句的嵌套。
2.注意加减计数状态的变化,计数值由9变0(加法)及由0变9(减法)各位的变化。
由于计数器为十进制计数器,还应考虑进位或借位后进行加6及减6校正。
五、实验报告要求
1.写出多模加减计数器的VHDL源程序。
2.叙述多模加减计数器的工作原理。
SF = ‘1’加标志,SF=’0’减标志
3.画出计数器工作波形图.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CHANGABLE IS
PORT(CLK,RESET,SF:IN STD_LOGIC;
SIZE:IN STD_LOGIC_VECTOR(6 DOWNTO 0);
DO:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
);
END ENTITY CHANGABLE;
ARCHITECTURE C_SIZE OF CHANGABLE IS
SIGNAL C_COUNT: STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN
PROCESS(CLK,RESET,SF,SIZE)
V ARIABLE TP:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN
IF(RESET = '1')THEN
C_COUNT<=(OTHERS=>'0');
ELSIF(CLK'EVENT AND CLK = '1')THEN
IF(SF='1')THEN
TP:=C_COUNT+SIZE;
IF(TP>79)THEN
C_COUNT<=(OTHERS=>'0');
ELSE
C_COUNT<=C_COUNT+SIZE;
END IF;
ELSE
IF(TP < SIZE)THEN
C_COUNT<=(OTHERS=>'0');
ELSE
C_COUNT<=C_COUNT-SIZE;
END IF;
END IF;
END IF;
DO<=C_COUNT;
END PROCESS;
END ARCHITECTURE C_SIZE;