数字逻辑课程设计报告-电子钟(2)

2019-08-20 20:15

a 校时模块最初的图形:

3整点报时模块:

59’50’‘起 OR SPEAKER

整点

a整点报时模块VHDL源程序: 此模块主要完成

整点的报时功能。它通过对预设的时间和计时的时间的比较来完成整点报时,当计时到达59分50秒时开始报时,在59分50、52、54、56、58秒鸣叫,鸣叫声频为500Hz。到达59分60秒时为最后一声整点报时。整点报时的频率为1Kz。该模块的VHDL代码为: library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; entity alert_31 is

port(m1,m0,s1,s0:in std_logic_vector(3 downto 0); siga,sigb:out std_logic); end alert_31;

architecture alert of alert_31 is

begin

siga<='1'when(m1=\and m0=\and s1=\and (s0=\or

s0=\ sigb<='1'when(m1=\end alert;

b报时生成器件图:

本模块端口说明:m1,m0,s1,s0分别为分和秒的高低位的输入;siga,sigb分别为500hz和1khz鸣叫的控制信号。

功能实现:定义一个以m1、m0、s1、s0为敏感信号的一个比较进程,在进程判断分是否为59分,若是则判断秒的高位是否是5,若是则如果秒的低位为0、2、6、8则siga为1;若分不是59则判断分和秒是否都为0,若都为0则sigb为1。

4分频模块: CLK

a分频生成器件图: 计数器1 计数器2 计数器3 1KHZ 500HZ 1HZ

b源代码: library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; entity fenpin_31 is

port (clk:in std_logic;

hz512,hz256,hz64,hz4,hz1:out std_logic);

end fenpin_31;

architecture fenpin of fenpin_31 is

signal cc: std_logic_vector(9 downto 0); begin

process(clk) begin

if(clk'event and clk='1') then if(cc=\ cc<=\ else

cc<=cc+1; end if; end if; end process; hz512<=cc(0); hz256<=cc(1); hz64<=cc(3); hz4<=cc(7); hz1<=cc(9); end fenpin;

C分频仿真波形图:

模块说明:由于clk的频率为1024hz,所以可以定义一个std_logic_vecture(9 downto 0),使它不停地从0000000000加到1111111111然后又返回000000000,由于最低位在clk

脉冲到来时从0变成1,然后又在下一个脉冲变回0,因此最低位的时钟周期为clk的时钟周期的两倍,它的频率就为clk频率的1/2即512HZ。同理,次高位的频率就为clk频率的1/2*1/2=1/4,用这种方法就可以得到各种能整除1024的频率,从而实现分频功能。

5. 24进制模块

a 24进制器件生成图

b 24进制源程序:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour24_31 is

port (clk:in std_logic;

h1,h0:out std_logic_vector(3 downto 0)); end hour24_31;

architecture hour of hour24_31 is

signal q1,q0:std_logic_vector(3 downto 0); begin

process(clk) begin

if(clk'event and clk='1')then if(q1=\ q1<=\ elsif(q0=\

q0<=\ else

q0<=q0+'1'; end if; end if; h1<=q1; h0<=q0; end process; end hour;

c 24进制仿真波形图:

本模块端口说明:clk输入端;h1和h0分别为小时的高位和低位输出,用来在数码管中分别显示小时的高位和低位数值,定义为std_logic_vector(3 downto 0).

功能实现:在clk上升沿来临时,如果高位为2,低位为3则高位各低位都变回0,不然再低位进行判断,若低位为9变回0,高位加1,若不为9则低位直接加1即可同样实现.

6.60进制模块:

a 60进制器件生成图:

b 60进制源程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt60_31 is -----60进制的分和秒的计数 port (clk:in std_logic; clear:in std_logic; c:out std_logic;

k1,k0:out std_logic_vector(3 downto 0)); end cnt60_31;

architecture cnt of cnt60_31 is

signal q1,q0:std_logic_vector(3 downto 0); begin

process(clk,clear) begin


数字逻辑课程设计报告-电子钟(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中医护理考试试题6

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: