实验4-加减计数器实验报告

更新时间:2023-12-03 11:13:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上 海 理 工 大 学

计 算 机 工 程 学 院

实 验 报 告

实验名称 步长可变的加减计数

课程名称 ISP在线编程技术

姓名 彭金梅

学号 05010105

日期 2007-12-27

地点 计算机学院机房

成绩

教师 佟国香

一 实验目的:

1 掌握加减计数器以及特殊功能计数器的设计原理。 2.用VHDL语言设计多功能计数器。

二 实验原理:

计数分同步计数器和异步计数器。 1 加减工作原理

加减计数也称可逆计数器,就是根据计数控制信号的不同,在时钟脉冲的作用下,计数器可以进行加1计数操作或者减1计数操作。 2 变步长工作原理

如步长为3的加法计数器,计数状态变化为0 。3。6 。9。12……,步长值由输入端控制。在加法计数时,当计数值达到或超过99时,在计数器下一个时钟脉冲过后,计数器也。

三 实验内容:

1 设计的计数步长可在0~79之间变化

2.通过仿真或观察波形图验证设计的正确性。 3 编译下载验证结果。

四 设计提示

1. 注意IF语句的嵌套。 2. 注意加减计数的变化,计数值由9变0(加法)及由0变9(减法)各位的变化。

由于计数器为十进制计数器,还应考虑进位或借位后进行加6及减6校正。

五 实验步骤:

(1) 代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY count is ――实体 PORT(clk,clr,updn:in STD_LOGIC; ――端口 length:in STD_LOGIC_VECTOR(7 downto 0); S:out STD_LOGIC_VECTOR(7 downto 0) );

END count;

ARCHITECTURE countB of count is SIGNAL C_count: STD_LOGIC_VECTOR(7 downto 0); begin

S<= C_count; PROCESS (clk,clr,length,updn)

VARIABLE temp:STD_LOGIC_VECTOR(8 downto 0); BEGIN

if(clr='1') then

C_count<=(others=>'0');

elsif(clk' EVENT and clk='1') then if(updn='1') then

temp:=C_count+length;

if(temp>\ C_count<=( others=>'0'); else

C_count<=C_count+length; end if; else

if(temp

C_count<=(others=>'0'); else

C_count<=C_count-length; end if; end if; end if; end process; end countB;

――结构体 ――信号量 ――变量

2 仿真截图

上述仿真数据:updn-----判断做加法还是减法 Clk――时钟 Clr――清零 Length(7 downto 0)----步长 S (7 downto 0)――输出

六 实验小结:

这次步长可变的加减计数器需要将二进制数转换成BCD码,代码编了可是没有运行成功。实验过程中的硬件下载出错,没有实现下载结果。不过通过这次实验,可以深刻理解计数器的做法。

本文来源:https://www.bwwdw.com/article/bhxt.html

Top