人人范文网 范文大全

EDA VHDL 实验2计数器100[小编推荐]

发布时间:2020-03-02 10:29:46 来源:范文大全 收藏本文 下载本文 手机版

实验二

计数器的设计

一、实验内容

1.结合教材中的介绍熟悉Quartus Ⅱ软件的使用及设计流程; 2.计数器设计原理; 3.对应的VHDL 代码源程序。

二、实验目的

1.掌握文本输入设计方法;

2.熟悉QuartusⅡ软件的使用及设计流程; 3.掌握计数器原理,能进行计数器的设计。

三、实验器材

PC机一台、EDA教学实验系统一台、导线若干

四、实验要求

1、用文本输入法编写一个计数器代码,用波形编辑工具生成一个计数器的测试向量,完成计数器的时序仿真。

2、至少两种方案实现。

3、分析实验数据。 4.个人总结及感想。

五、实验原理与内容

1、原理:

将时钟信号作为计数器的信号,当RST = \'1\'时,计数器异步复位。当RST=‘0’时并到时钟上升沿时,由使能端EN控制计数,高电平开始计数。并通过逻辑运算,实现计数进位并清零。

2.实验方案:【本实验选择方案1】

方案1:增加一个同步使能控制端口,利用它来控制计数器是否计数。设置中间变量,采用顺序描述语句IF来实现功能。

方案2:设置两个变量,根据算术原理,当个位数(变量1)大于9时,向十位(变量2)进位实现功能。

六、实验步骤

1、用文本输入法设计一个计数器;

1》 建立项目:启动QuartusII,选择菜单File——New progect wizard,输入项目名与实体名一致。

2》 编译:选择菜单File—New,新建VHDL File文件,输入程序代码并保存。

2、利用步骤一得到的计数器使用图形输入法实现波形时序仿真;

1》打开波形编辑器:选择File--New---Vector Waveform File。 2》 导入全部引脚 : 选择View---Utility Windows---Node Finder选择Pins:all。选择Edit——End time设置50us。

3》仿真:手动绘制输入波形向量。并设置为时序仿真。进行仿真

七、实验报告

1、实验源程序:

方案一代码:

--------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ---------- ENTITY count100 IS

PORT (CLK,RST,EN : IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

COUT : OUT STD_LOGIC );

END count100; ---------- ARCHITECTURE behav OF count100 IS BEGIN

PROCESS(CLK, RST, EN)

VARIABLE CQI : STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

IF RST = \'1\' THEN

CQI := (OTHERS =>\'0\') ; --计数器异步复位

ELSIF CLK\'EVENT AND CLK=\'1\' THEN

--检测时钟上升沿

IF EN = \'1\' THEN

--检测是否允许计数(同步使能)

IF CQI

CQI := CQI + 1;

--允许计数, 检测是否小99

ELSE CQI := (OTHERS =>\'0\');

--大于99,计数值清零

END IF;

END IF;

END IF;

IF CQI = 99 THEN COUT

--计数大于99,输出进位信号

ELSE

COUT

END IF;

CQ

--将计数值向端口输出

END PROCESS; END behav;

方案二代码:

--------------------

library ieee; use ieee.std_logic_1164.all; --------------------- entity counter100 is

port (clk,reset:in std_logic;

cout1,cout2:out std_logic_vector(6 downto 0)); end counter100; --------------------- architecture counter of counter100 is begin

proce (clk,reset)

variable temp1: integer range 0 to 10; ----temp1为个位

variable temp2: integer range 0 to 10; ----temp2为十位

begin ------------------------- ------counter100:-----

if (reset=\'1\') then

temp1 := 0;

temp2 := 0;

elsif (clk\'event and clk = \'1\') then

temp1 := temp1+1;

if (temp1=10) then

temp1 := 0;

--------个位等于10时进位

temp2 := temp2+1;

if (temp2=10) then

--------十位等于10时计数100

temp2 := 0;

end if;

end if;

end if;

end proce;

end counter; -------------------- 2.仿真图:

功能仿真:

Add0CQI[7..0]PREDA[7..0]8\' h01 --B[7..0]OUT[7..0]Q1\' h0 --ENACLRADDER9\' h063 --A[8..0]B[8..0]OUTEqual0COUTLeThan0EQUALCQ[7..0]A[7..0]8\' h63 --B[7..0]OUTCQI~[7..0]SELLESS_THAN8\' h00 --DATAADATABOUT0MUX21RSTCLKEN

3、分析实验结果: 由波形图可知: 当复位信号 RST=‘1’时计数值立即清零.当使能信号EN=‘0’无效时,输出cq保持当前状态.只有在复位信号RST=‘0’且使能信号EN=‘1’有效时,计数器正常工作.当计数值CQ为9时,COUT输出一个高电平。可见实验达到了理想情况 基本符合逻辑结果,部分由于时间延迟会发生冲突乱码现象。

4、心得体会:

本次计数器实验为含异步清0和同步时钟使能的加法模100的功能。要想完成实验,需要了解以下东西:

1.熟悉计数器的工作原理和实现方法,这对编写程序代码有用。方案2就是根据算术原理而来。

2.实验前后分别对实验原理仔细理解,加上对实验波形的分析,会加深对实验程序的分析与吸收。

3.通过本次实验,重温了顺序描述语句,加深了其顺序执行的作用。 4.本次实验还可以采用一下来实现:

对时钟信号上升沿和下降沿连续计数

单片机实验三 定时计数器实验

加1减1计数器实验说明

实验二 单片机定时器和计数器编程

VHDL100进制计数器

实验2

实验2

单片机课程设计频率计数器

loadrunner计数器分析总结

竹丝计数器开题报告

竹丝计数器开题报告

EDA VHDL 实验2计数器100[小编推荐]
《EDA VHDL 实验2计数器100[小编推荐].doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档