设异步清零和同步加载的24位计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二:设异步清零和同步加载的24位计数器
一:实验目的
熟习QuartusII的VHDL文本设计流程全过程,学习计数器的设计,仿真和硬件测试。掌握原理图与文本混合设计方法。
实验内容:说明例中各语句的作用。给出其所有信号的时序仿真波形,根据波形详细描述此设计的功能特点,包括RST,EN,LOAD,DA TA,CLK等信号的异步和同步特性。查阅编译后的计数器的时序特点,从时序仿真图和编译报告中了解技术时钟输入至计数数据输出的延时情况,包括设定不同优化约束后的改善情况,以及当选择不同FPGA目标器件后的延时差距及毛刺情况,给出分析报告。
二:设计程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_unsigned.ALL;
ENTITY hour IS
PORT(CLK,RESET,EN:IN STD_LOGIC;
DAOUT: BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0));
END hour;
ARCHITECTURE behav OF hour IS
SIGNAL c:STD_LOGIC_VECTOR(6 DOWNTO 0);
BEGIN
PROCESS(CLK,RESET)
BEGIN
IF RESET='1' THEN c<="0000000";
ELSIF CLK'EVENT and CLK='1'THEN
IF EN='1'THEN
IF c=16#24# THEN
IF c="0100011"THEN
c<="0000000";
ELSE c<=c+1;
IF c(3 DOWNTO 0)="1001"THEN
c<=c+7;
END IF;
END IF;
END IF;
END IF;
END IF ;
IF c(3 DOWNTO 0)="1001"THEN
c<=c+7;
END IF;
END PROCESS; DAOUT<=c;
END behav ;
三:程序仿真