100进制同步计数器设计报告

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

浙江万里学院实验报告

实验名称:100进制同步计数器设计

专业班级:电子103姓名:徐强学号: 2010014092 实验日期:2011.5.10

一、实验目的:

1、掌握计数器的原理及设计方法;

2、设计一个0~100的计数器;

3、利用实验二的七段数码管电路进行显示;

二、实验要求:

1、用VHDL 语言进行描写;

2、有计数显示输出;

3、有清零端和计数使能端;

三、实验结果:

1. VHDL程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

PACKAGE my_pkg IS

Component nd2 -- 或门

PORT (a,b: IN STD_LOGIC;

c: OUT STD_LOGIC);

END Component;

Component led_decoder

PORT (din:in std_logic_vector(3 downto 0 ); --四位二进制码输入

seg:out std_logic_vector(6 downto 0) ); --输出LED七段码

END Component;

1

Component CNT60 --2位BCD码60进制计数器

PORT

( CR:IN STD_LOGIC;

EN:IN STD_LOGIC;

CLK:IN STD_LOGIC;

OUTLOW:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);

OUTHIGH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );

END Component;

Component CNT100 --带使能和清零信号的100进制计数器PORT

(

CLK:IN STD_LOGIC;

EN:IN STD_LOGIC;

CLR:IN STD_LOGIC;

OUTLOW:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);

OUTHIGH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ); END Component;

Component freq_div --50MHZ时钟分频出1Hz

PORT

(

clkinput : IN STD_LOGIC;

output : OUT STD_LOGIC

);

END Component;

Component jtd --交通灯控制器

PORT

(

CLKIN:IN STD_LOGIC; --50MHZ

R1,G1,R2,G2,R3,G3,R4,G4:OUT STD_LOGIC; --红绿灯信号输出

GAO,DI:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) --倒计时输出);

END Component;

END my_pkg;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE work.my_pkg.ALL; --打开程序包

ENTITY Demo3 IS

PORT (CRl:IN STD_LOGIC;

ENl:IN STD_LOGIC;

CLKIN: IN STD_LOGIC;

LEDLOW,LEDHIGH: OUT STD_LOGIC_VECTOR(6 downto 0));

END Demo3;

ARCHITECTURE behv OF Demo3 IS

SIGNAL CLKTEMP: STD_LOGIC; --定义中转信号

SIGNAL LEDLOWTEMP,LEDHIGHTEMP:STD_LOGIC_VECTOR(3 downto 0);

BEGIN

u1:freq_div PORT MAP(CLKIN,CLKTEMP); --位置关联方式

u2:CNT60 PORT

MAP(CR=>CRl,EN=>ENl,CLK=>CLKTEMP,OUTLOW=>LEDLOWTEMP,OUTHIGH=>LEDHIGHTE MP); --名字关联方式

u3:led_decoder PORT MAP(LEDLOWTEMP,LEDLOW); --低位数码管输出u4:led_decoder PORT MAP(LEDHIGHTEMP,LEDHIGH); --高位数码管输出END behv;

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY freq_div IS

PORT

(

clkinput : IN STD_LOGIC;

output : OUT STD_LOGIC

);

END freq_div;

ARCHITECTURE rt OF freq_div IS

SIGNAL count_signal : INTEGER RANGE 0 TO 25000000;

signal mid1 : STD_LOGIC ;

BEGIN

PROCESS (clkinput)

BEGIN

IF (clkinput'EVENT AND clkinput = '1') THEN

if count_signal=24999999 then --50MHz division to 1Hz

count_signal <= 0;

mid1<= not mid1;

else

count_signal <= count_signal + 1;

end if;

output <= mid1;

end if;

相关文档
最新文档