实验四 计数器电路设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

六、实验报告

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。

七、选做实验

相关文档
最新文档