CPLD数字时钟设计

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

Cpld课程学习报告第1页

一、课题简介:

此次CPLD设计是借助MAX+PLUSII软件完成十进制计数器的制作,其中需要编译、生成GDF文件、接引脚、传输数据等过程;并以十进制计数器为引导,完成基本时钟、闹钟、整点报时、跑表的制作,并最终完成整个数字钟的综合设计另外。在此基础上可添加更多额外功能的扩展。

二、课题要求:

时、分、秒六位数码管显示(标准时间23点59分

59秒);

具有小时、分钟校准功能;

整点报时:55,56,57,58,59低音响,正点高音,间断振铃(嘟--嘟--嘟--嘟--嘟--嘀);

跑表:最大计时99分59秒999毫秒。独立的跑表功能,不影响数字钟正常工作;

定时花样闹钟:可在00:00到23:59之间由用户设定任一时间,到时报警;

插入一段音乐,在跑表工作时开始播放。

Cpld课程学习报告第2页

三、数字钟设计的逻辑结构:

四:数字钟设计的基本步骤:

(1)具有调时、调分功能的基本时钟:

运用24进制及60进制计数器组装,并接入相应输入输出器件。通过频率为1Hz的脉冲作为输入端接到60进制的计数器,以进位标志carry作为下一级的频率脉冲,从而实现了一个可以表示实际时间的时钟。此处用或门将外部的手动脉冲信号送进驱动实现了调时功能。

Cpld课程学习报告第3页

60进制计数器的程序:(24、1000进制等计数器原理类似)

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity mp62_cnt60_5 is

port(clk,clr,en: in std_logic;

carry : out std_logic;

ge,shi : out std_logic_vector( 3 downto 0));

end ;

architecture one of mp62_cnt60_5 is

signal g,s :std_logic_vector(3 downto 0);

begin

process(clk,clr,en,g,s )

begin

Cpld课程学习报告第4页if clr='1' then

g<="0000";s<="0000";

elsif clk'event and clk='1' then

if en='0' then

if g="1001"and s="0101" then

g<="0000";s<="0000";carry<='1';

elsif g="1001" then

g<="0000" ; s<=s+1;

else g<=g+1;carry<='0';

end if;

end if;

end if;

end process;

ge<=g;shi<=s;

end;

(2)定时部分:

Cpld课程学习报告第5页

定时部分有两个方面的说明:

1、二选一模块:当S为0时,显示正常时间;当S为1时,显示定时时间。

2、定时:因此,用an1控制调节的数字钟的类别,当an1为高电平,显示

的定时的时间,通过定时(dingshi)和定分(dimgfen)按键输入所要定时的时间,当为低电平的时候显示正常的时钟时间。

Cpld课程学习报告第6页(3)整点报时:

整点报时功能具体实现方法为:整点前五秒(55~59秒)发出du的声音,正整点的时候发出di的声音。具体程序段为:

process(a,b,c,d)

begin

if a>"0100" and b="0101" and c="1001" and d="0101"then

du<='1';

elsif a="0000" and b="0000" and c="0000" and d="0000"then

Cpld课程学习报告第7页di<='1';

else du<='0';

di<='0';

end if;

end process;

end;

(4)闹钟+整点报时:

Cpld课程学习报告第8页

(5)附加功能——跑表:

跑表功能本质体现各种计数器的灵活运用。分频处理:实验装置中没能提供1khz的脉冲,可将3Mhz通过3k分频得到了想要的频率信号。具体过程是在计数三千后送出一个进位信号,进位信号就是1Khz的频率。跑表显示的时间是99:59:999。因此要用1000进制计数器,60进制计数器,100进制计数器。

Cpld课程学习报告第9页

(6)定时+整点报时+跑表:

有两个方面的说明:

1、二选一模块:当S为0时,显示正常时间;当S为1时,显示跑表计时。

Cpld课程学习报告第10页部分程序如下:

process(a,b,c,d,e,f,g,h,i,j,k,l,m,s)

begin

if s='0' then

t<="0000";u<=a;v<=b;w<=c;x<=d;y<=e;z<=f;

else t<=g;u<=h;v<=i;w<=j;x<=k;y<=l;z<=m;

end if;

end process;

end;

2、选择:用按键an2控制调节的数字钟的类别,当an2为高电平,显示跑表计数的时间,当an2为低电平的时候显示正常的时钟当时间。

最终结果:

相关文档
最新文档