多功能数字钟设计实验报告
模六十计数器VHDL语言程序如下: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY counter_60 IS
PORT(en:IN std_logic; ----en为使能端 clrn:IN std_logic; ----clrn为清零端 idn:IN std_logic; ---- idn为置数使能端 d:IN std_logic_vector(7 downto 0); ----d为预置数的输入端 clk:IN std_logic; ----clk为时钟端 rco:out std_logic; ----rco为进位输出端 qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );
END counter_60;
ARCHITECTURE behave OF counter_60 IS BEGIN
rco<='1' when(qh=\当计数到59时进位端输出1 PROCESS(clk,clrn) BEGIN
IF(clrn='0')THEN ----定义清零端为低电平有效 qh<=\ql<=\
ELSIF(clk'EVENT AND clk='0')THEN ----定义该计数器为时钟下降沿有效 if(idn='1')then ----定义置数端为高电平有效 qh<=d(7 downto 4); ql<=d(3 downto 0);
elsif(en='1')then ----定义使能端为高电平有效 if(ql=9)then ----模六十的具体说明 ql<=\if(qh=5)then qh<=\else qh<=qh+1; end if;
else ql<=ql+1; end if; END IF; END IF;
END PROCESS; END behave;
类似的,模24计数器也包含有使能端(高电平有效)、清零端(低电平有效)、置数使能端(高电平有效)、预置数端、时钟端(下降沿有效)、进位输出端。
模24计数器VHDL语言程序如下: library ieee;
4
多功能数字钟设计实验报告
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY counter_24 IS
PORT(en:IN std_logic; clrn:IN std_logic; idn:IN std_logic;
d:IN std_logic_vector(7 downto 0); clk:IN std_logic; rco:out std_logic;
qh:buffer std_logic_vector(3 downto 0); ql:buffer std_logic_vector(3 downto 0) );
END counter_24;
ARCHITECTURE behave OF counter_24 IS BEGIN
rco<='1' when(qh=\PROCESS(clk,clrn) BEGIN
IF(clrn='0')THEN qh<=\ql<=\
ELSIF(clk'EVENT AND clk='0')THEN if(idn='1')then
qh<=d(7 downto 4); ql<=d(3 downto 0); elsif(en='1')then
if(qh=\qh<=\ql<=\
elsif(ql<\ql<=ql+1; else
ql<=\qh<=qh+1; end if; END IF; END IF;
END PROCESS; END behave;
计时部分电路图如下:
5
多功能数字钟设计实验报告
d.仿真波形
计时部分仿真波形如下(FUNCTIONAL):
(2)脉冲发生电路
a.基本原理
实验箱提供了48M频率的时钟,所以我们需要将其分频,从而得到1Hz、2Hz、512Hz、1kHz等频率,分别用于计时、报时、校分等电路。 b.实现方式
本实验采用VHDL语言编程的方法实现分频器。在程序中,通过改变不同的count数实现不同的分频,计算公式如下:
f?48M2count
例如要得到1Hz,则count数需为24000000。 c.程序及电路图
分频器VHDL语言程序如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY fenpin3 IS
PORT(clk: IN STD_LOGIC; ----待分频时钟 hz:buffer STD_LOGIC; hz1:buffer STD_LOGIC; hz2:buffer STD_LOGIC;
khz:buffer STD_LOGIC; khz2:buffer STD_LOGIC;
6
多功能数字钟设计实验报告
hz3:buffer STD_LOGIC; hz4:buffer STD_LOGIC); END fenpin3;
ARCHITECTURE beh OF fenpin3 IS
SIGNAL count: integer range 0 to 24000000; SIGNAL countl: integer range 0 to 24000; SIGNAL count2: integer range 0 to 24000000; SIGNAL count3: integer range 0 to 24000000; SIGNAL count4: integer range 0 to 24000; SIGNAL count5: integer range 0 to 480000; SIGNAL count6: integer range 0 to 4; BEGIN
PROCESS(clk) BEGIN
IF (clk='1') THEN count<=count+1; countl<=countl+1; count2<=count2+1; count3<=count3+1; count4<=count4+1; count5<=count5+1; count6<=count6+1;
IF(count=23999999) Then count<=0;
hz<=NOT hz; END IF;
IF(countl=23999) Then countl<=0;
khz<=NOT khz; END IF;
IF(count2=11999999) Then count2<=0;
hz1<=NOT hz1; END IF;
IF(count3=46874) Then count3<=0;
hz2<=NOT hz2; END IF;
IF(count4=11999) Then count4<=0;
khz2<=NOT khz2; END IF;
IF(count5=479999) Then count5<=0;
----hz端口输出1Hz频率 ----khz端口输出1kHz频率 ----hz1端口输出2Hz频率 ----hz2端口输出512Hz频率 ----kh2端口输出2kHz频率 7
相关推荐: