实验四 计数器电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四、计数器电路的设计
一、实验目的
1、掌握计数器电路的设计方法;
2、进一步掌握电路的设计、编译、仿真和下载测试的方法。
二、实验要求
1、基本要求
1)设计一个具有异步复位和同步使能的4位二进制加法计数器
2)设计一个具有异步复位和同步使能、并行置数的加减可控的8位二进制计数器
3)设计一个具有异步复位和同步使能的BCD码加法计数电路,
2、扩展要求
1)设计一个具有异步复位和同步使能的六十进制加法计数电路
2)设计一个具有异步复位和同步使能的二十四进制加法计数电路
三、实验原理
四、实验内容及步骤
1、建立一个工程项目,路径如:D:\A0512301\forth,项目名和顶层实体名为count。
2、设计一个具有异步复位和同步使能的4位二进制计数器,并进行编译仿真与下载测试;
3、设计一个具有异步复位和同步使能、并行置数的加减可控的8位二进制计数器,并进行编译仿真与下载测试;
4、设计一个具有异步复位和同步使能的十进制加法计数电路,并进行编译仿真与下载测
试;
五、参考程序
1、四位加法计数器
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
ENTITY CNT4 IS
PORT ( CLK : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END ;
ARCHITECTURE bhv OF CNT4 IS
SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ;
END IF;
END PROCESS ;
Q <= Q1 ;
END bhv;
2、异步复位,同步使能十进制加法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT16 IS
PORT (CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC );
END CNT16;
ARCHITECTURE behav OF CNT16 IS
BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) CQI := CQI + 1;
END IF;
END IF;
IF CQI = 15 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0';
END IF;
CQ <= CQI; --将计数值向端口输出
END PROCESS;
END behav;
3、8位二进制加减计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY updowncnt8 IS
PORT(clr,clk,ena,load,updown:IN STD_LOGIC;
d:IN INTEGER RANGE 0 TO 255;
cout:OUT STD_LOGIC;
q:BUFFER INTEGER RANGE 0 TO 255);
END updowncnt8;
ARCHITECTURE one OF updowncnt8 IS
BEGIN
PROCESS(clk,ena,clr,d,load,updown)
BEGIN
IF CLR='0' THEN q <= 0;
ELSIF clk'EVENT AND clk='1' THEN
IF load = '1' THEN q <= d;
ELSIF ena='1' THEN
IF updown = '0' THEN q <= q+1;
IF q = 255 THEN COUT <= '1';
END IF;
ELSE q <= q-1;
IF q = 0 THEN COUT <= '1';
END IF;
END IF;
END IF;
END IF;
END PROCESS;
END one;
六、实验报告
根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。
七、选做实验