基于FPGA的计数器

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA课程设计

题目:基于FPGA的计数显示控制设计

班级:微电子学1001班

姓名:李蓓

学号: 1006080101

一:设计任务

1.基于VHDL 语言完成十进制加法计数器设计

2.基于VHDL 语言完成分频器的设计

3.基于VHDL 语言完成数码管动态扫描显示设计

4.将上述设计按一定的连接关系连接起来,使其实现如下功能:指定输入时钟频率为50HZ 。

a 在数码管上显示0—9十进制数;

b 数字跳变时间为1s ;

c 可以通过按键实现显示开启、停止、复位功能。

二、总体设计方案

1.基于QuartusII 软件完成十进制加法计数器、分频器、数码管动态扫描显示设计;

2.采用Modelsim 仿真软件对上述设计进行仿真验证;

3.将上述各模块按照一定的连接关系连接,使其实现功能。

此次试验共分为三个模块进行,分别是分频计,计数器,和译码显示电路。这几个部分的完成都必须靠QuartusII 和Modelsim 完成。

本设计采用数控分频计,可以对信号实现不同分频比,输出信号作为计数器输入。当系统正常工作时,输入信号标提供频率,经过分频器分频,产生计数信号送入计数器模块,计数模块对输入的脉冲个数进行计数数结束后,将计数结果送入锁存器中,保证系统可以稳定显示数据,计数结果能够显示在七段数码显示管上。

图1:设计方案

输入clk

复位端cr

使能端en

三、各功能模块设计

1.十进制加法计数器的设计

分频器

计数器

数码管显示

1.1工作原理

计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T 触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛。

十进制加数的合法设计范围为0到9,故当输入的加数大于9的时候要将其统一变换成0。本实验采用一个带有异步复位和使能端的十进制加法计数器,这种计数器有许多实际的用处。

1.2源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity add10 is

port(clk,cr,en:in std_logic;

Q:out std_logic_vector(3 downto 0));

end entity add10;

architecture arch of add10 is

begin

process(clk,cr,en)

variable Q1:std_logic_vector(3 downto 0);

begin

if(cr='1')then

Q1:="0000";

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

if(en='1')then

if(Q1<9)then

Q1:=Q1+1;

else

Q1:="0000";

end if;

end if;

end if;

Q<=Q1;

end process;

end architecture arch;

1.3仿真波形

2.分频器的设计

2.1工作原理

分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。本实验中采用五十分频和一百分频。

2.2.1五十分频

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.ALL;

ENTITY divclk50 IS

PORT(clk:IN std_logic;

fout:OUT std_logic);

END divclk50;

ARCHITECTURE bhv OF divclk50 IS

signal counter :std_logic_vector(4 DOWNTO 0):="00000";

signal tem:std_logic:='0';

BEGIN

PROCESS(clk)

BEGIN

IF(clk'event AND clk='1') THEN

IF(counter >="11000")THEN

counter <="00000";

tem<=not tem;

else

counter <=counter +'1';

end if;

end if;

end process ;

fout<=tem;

END bhv;

2.3.2一百分频

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.ALL;

ENTITY divclk100 IS

PORT(clk:IN std_logic;

fout:OUT std_logic);

END divclk100;

ARCHITECTURE bhv OF divclk100 IS

signal counter :std_logic_vector(5 DOWNTO 0):="000000";

signal tem:std_logic:='0';

BEGIN

PROCESS(clk)

BEGIN

IF(clk'event AND clk='1') THEN

IF(counter >="110001")THEN

counter <="000000";

tem<=not tem;

else

counter <=counter +'1';

end if;

end if;

end process ;

fout<=tem;

END bhv;

2.3仿真波形

2.3.1五十分频

2.3.2一百分频

3.数码管动态扫描显示设计

数码管数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个发光二极管单元,其基本单元是发

相关文档
最新文档