实习报告.docx
- 文档编号:6930505
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:12
- 大小:107.26KB
实习报告.docx
《实习报告.docx》由会员分享,可在线阅读,更多相关《实习报告.docx(12页珍藏版)》请在冰豆网上搜索。
实习报告
数字时钟实验报告
【实验目的】:
设计一个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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实习 报告