实习报告.docx

上传人:b****5 文档编号:6930505 上传时间:2023-01-12 格式:DOCX 页数:12 大小:107.26KB
下载 相关 举报
实习报告.docx_第1页
第1页 / 共12页
实习报告.docx_第2页
第2页 / 共12页
实习报告.docx_第3页
第3页 / 共12页
实习报告.docx_第4页
第4页 / 共12页
实习报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实习报告.docx

《实习报告.docx》由会员分享,可在线阅读,更多相关《实习报告.docx(12页珍藏版)》请在冰豆网上搜索。

实习报告.docx

实习报告

数字时钟实验报告

【实验目的】:

设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分

【试验中所用器材】:

开发环境MAX—PLUSII,ZY11EDA13BE试验系统,VHDL语言.

【设计原理】

数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。

BCD码经译码,驱动后接数码管显示电路。

秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。

为了实现手动调整时间,在外部增加了setm(调整分),seth(调整时)按键,当这两个按键为低电平时,电路正常计时,当为高电平时,分别调整分,时。

同时在外部还增加了一个清零按键clr.和消抖动电路。

 

采用VHDL语言模块化设计方法,附gdf格式顶层图与COUNT时钟计数主模块接线图。

(一)技术要求:

1.十二进制数字钟,能显示时、分、秒,并可进行时和分的快速校正,秒的清零。

2.有整点报时功能,从59分56秒开始,每秒报时一次,直到00分00秒为整点报时。

整点报时的频率与其他几响不同。

3.数码显示部分采用动态扫描显示法,能指示时钟驱动信号频率LIGHT[0],要求计数器模块异步清零。

(二)模块划分:

底层模块:

小时控制模块(24进制)、分钟、秒控制模块(60进制)响铃控制模块、时间set模块、响铃控制门闸模块;顶层模块(三)器件型号:

Altera公司的FPGA芯片FLEX10K系列20TC144-4或Lattice公司的ISPSI1032-70LJ80

倒计时报警四短一长报警声

daojishi:

PROCESS(CLK,EN)

VARIABLEL:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFCLK'EVENTANDCLK='1'THEN----10秒倒计时

IFEN='0'THEN

IFL=0THEN

S<='1';---超时连续报警

ELSE

L:

=L-1;

S<='0';

ENDIF;

ELSE

S<='0';

L:

="1001";

ENDIF;

ENDIF;

CASELIS

第一章电子设计自动化(EDA)发展概述6

1.1什么是电子设计自动化(EDA)6

1.2EDA的发展历史6

第二章VHDL简介8

2.1硬件描述语言VHDL8

2.2VHDL的组成8

2.3程序包(Package)8

2.4库(Library)9

2.5VHDL运算符9

2.6VHDL数据对象9

2.7VHDL常用语句10

2.8元件声明及元件例化10

2.9配置(Configuration)11

2.10子程序11

2.11其他:

属性、时钟的表示11

2.12CPLD设计流程12

2.12.1设计输入(原理图/HDL文本编辑)12

2.12.2综合12

2.12.3适配13

2.12.4时序仿真与功能仿真13

2.12.5编程下载13

2.12.6硬件测试13

第三章Max+plusII介绍14

3.1Max+plusII的功能14

3.2系统要求14

3.3Max+plusII的设计过程14

第四章电子数字钟的设计方案16

4.1传统方法16

4.2现代方法17

4.3数字钟的设计方法19

4.4  各模块设计21

4.4.1秒计时器(second1)21

4.4.2 分计时器(minute1)21

4.4.3 时计时器(hour1)22

4.4.4星期计时器(day1)22

4.4.5报时模块(alarm1)23

4.5  系统设计23

第五章总结与展望26

5.1总结26

5.2展望26

参考文献27

 

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitysecondis

port(clk,reset:

instd_logic;

cf:

outstd_logic;

second1_out:

outstd_logic_vector(3downto0);

second10_out:

outstd_logic_vector(2downto0));

endentitysecond;

architectureoneofsecondis

signalsecond1n:

std_logic_vector(3downto0);

signalsecond10n:

std_logic_vector(2downto0);

begin

second1_out<=second1n;

second10_out<=second10n;

process(clk,reset)

begin

if(reset='1')then

second1n<="0000";

second10n<="000";

elsif(clk'eventandclk='1')then

if(second1n="1001")then

second1n<="0000";

if(second10n="101")then

second10n<="000";

cf<='1';

elsesecond10n<=second10n+1;

endif;

elsesecond1n<=second1n+1;

endif;

endif;

endprocess;

endarchitectureone;

 

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityminuteis

port(clk,reset:

instd_logic;

cf:

outstd_logic;

minute1_out:

outstd_logic_vector(3downto0);

minute10_out:

outstd_logic_vector(2downto0));

endentityminute;

architectureoneofminuteis

signalminute1n:

std_logic_vector(3downto0);

signalminute10n:

std_logic_vector(2downto0);

begin

minute1_out<=minute1n;

minute10_out<=minute10n;

process(clk,reset)

begin

if(reset='1')then

minute1n<="0000";

minute10n<="000";

elsif(clk'eventandclk='1')then

if(minute1n="1001")then

minute1n<="0000";

if(minute10n="101")then

minute10n<="000";

cf<='1';

elseminute10n<=minute10n+1;

endif;

elseminute1n<=minute1n+1;

endif;

endif;

endprocess;

endarchitectureone;

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityhouris

port(clk,reset:

instd_logic;

hour1_out:

outstd_logic_vector(3downto0);

hour10_out:

outstd_logic_vector(1downto0));

endentityhour;

architectureoneofhouris

signalhour1n:

std_logic_vector(3downto0);

signalhour10n:

std_logic_vector(1downto0);

begin

hour1_out<=hour1n;

hour10_out<=hour10n;

process(clk,reset)

begin

if(reset='1')then

hour1n<="0000";

hour10n<="00";

elsif(clk'eventandclk='1')then

if(hour1n="1001"or(hour1n="0011"andhour10n="0010"))then

hour1n<="0000";

if(hour10n="10")then

hour10n<="00";

elsehour10n<=hour10n+1;

endif;

elsehour1n<=hour1n+1;

endif;

endif;

endprocess;

endarchitectureone;

 

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYled_7IS

PORT(A:

INSTD_LOGIC_VECTOR(3DOWNTO0);

LED7S:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDentityled_7;

ARCHITECTUREoneOFled_7IS

BEGIN

PROCESS(A)

BEGIN

CASEA(3DOWNTO0)IS

WHEN"0000"=>LED7S<="0111111";--X"3F"0

WHEN"0001"=>LED7S<="0000110";--X"06"1

WHEN"0010"=>LED7S<="1011011";--X"5B"2

WHEN"0011"=>LED7S<="1001111";--X"4F"3

WHEN"0100"=>LED7S<="1100110";--X"66"4

WHEN"0101"=>LED7S<="1101101";--X"6D"5

WHEN"0110"=>LED7S<="1111101";--X"7D"6

WHEN"0111"=>LED7S<="0000111";--X"07"7

WHEN"1000"=>LED7S<="1111111";--X"7F"8

WHEN"1001"=>LED7S<="1101111";--X"6F"9

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREone;

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entitysaomiaoyiis

port(clk:

instd_logic;

reset:

instd_logic;

second1,minute1,hour1:

instd_logic_vector(3downto0);

second_10,minute_10:

instd_logic_vector(2downto0);

hour_10:

instd_logic_vector(1downto0);

dataout:

outstd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0));

endentitysaomiaoyi;

architectureoneofsaomiaoyiis

signalcount:

std_logic_vector(2downto0);

begin

sel<=count;

process(clk,reset)

begin

if(reset='1')then

dataout<="0000";

elsif(clk'eventandclk='1')then

ifcount>="101"then

count<="000";

else

count<=count+1;

endif;

endif;

casecountis

when"000"=>dataout<=second1;

when"001"=>dataout<='0'&second_10;

when"010"=>dataout<=minute1;

when"011"=>dataout<='0'&minute_10;

when"100"=>dataout<=hour1;

whenothers=>dataout<="00"&hour_10;

endcase;

endprocess;

endarchitectureone;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1