基于EDA自动打铃系统设计课后作业资料.docx

上传人:b****2 文档编号:17196570 上传时间:2023-07-22 格式:DOCX 页数:15 大小:73.53KB
下载 相关 举报
基于EDA自动打铃系统设计课后作业资料.docx_第1页
第1页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第2页
第2页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第3页
第3页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第4页
第4页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第5页
第5页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第6页
第6页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第7页
第7页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第8页
第8页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第9页
第9页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第10页
第10页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第11页
第11页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第12页
第12页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第13页
第13页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第14页
第14页 / 共15页
基于EDA自动打铃系统设计课后作业资料.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于EDA自动打铃系统设计课后作业资料.docx

《基于EDA自动打铃系统设计课后作业资料.docx》由会员分享,可在线阅读,更多相关《基于EDA自动打铃系统设计课后作业资料.docx(15页珍藏版)》请在冰点文库上搜索。

基于EDA自动打铃系统设计课后作业资料.docx

基于EDA自动打铃系统设计课后作业资料

考试序号:

**

 

自动打铃系统设计说明书

学生姓名:

***

学号:

*******1610

专业班级:

电子13-1BF

报告提交日期:

2015.11.18

理工学院物电学院

自动打铃系统设计

 

第一章设计题目及总体要求简介2

第二章设计方案说明3

第三章各部分功能介绍及程序4

3.1系统框图4

3.2选择的FPGA芯片及配置4

3.3各模块(元件)说明4

3.3.1计时器模块及手动校时模块4

3.3.2闹钟模块5

3.3.3显示模块6

3.3.4顶层设计及原理图7

附录:

8

 

第一章设计题目及总体要求简介

随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,对以硬件语言HDL为系统逻辑描述手段完成的设计文件,然后由是计算机自动地完成逻辑编辑、化简、分割、综合、优化、布局、布线、和仿真直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

本设计是基于VHDL语言的自动打铃系统。

在论文中,介绍了基于CHDL语言自动打铃系统的思路,整个系统需包含计时模块、校时模块、打铃模块。

在QuartusII开发环境中编译和仿真所设计的程序,并逐一调试验证程序的运行状况。

仿真和验证的结果证明,该设计方法切实可行,该打铃系统可以实现调时定时打铃功能,具有一定的实际应用性

本设计是基于VHDL的自动打铃系统,而自动打铃就像是现在的闹钟一样,起到提醒作用,6点起床闹铃,闹铃延迟时间5秒,本设计还是一个实时时钟,通过功能选择键选择计时功能、闹钟功能、手动校时功能。

第二章设计方案说明

自动打铃是一种现代提醒工具,有着广泛的应用,本设计具体实现如下:

(1)计时功能,24小时制显示、动态扫描显示、显示格式88-88-88;

(2)闹钟功能,6点闹钟,打铃5S;

(3)手动校时功能;可设置分、时;

为了高效率验证设计的结果另外增加了一个手动校时模块,用两个按键(选择调分或调时,计数器增加)。

在整个设计中,首先先做一个顶层模块,以top命名,然后再将各个模块在顶层模块中做好再生成各模块元器件,最后在top模块中将各个元件按功能要求连接好后进行编译,看是否通过,设置引脚后对顶层文件编译,在进行波形仿真,如果时序仿真与功能仿真的波形都正确,最后在实验箱上验证铃声是否能响起。

第三章各部分功能介绍及程序

3.1系统框图

图3.1自动打铃系统框图

3.2选择的FPGA芯片及配置

本设计选择ACEX1K系列EP1K100QC208-3芯片。

3.3各模块(元件)说明

3.3.1计时器模块及手动校时模块

计数器模块包括秒计数器模块、分计数器模块、时计数器模块以及功能按键的设计。

给定固定频率的时钟信号,输入计数60秒的计数器模块,等到计数器到60秒的瞬间,进位至60分的分计数器模块加1后,秒计数器模块同时清零从新计时,时计时模块与秒、分计时模块类似,当来自分计时模块的进位达到24瞬间,时计数器模块清零,再从零进行计时。

这样秒、分、时计时模块依次进行计时完成24进制的计时功能。

本设计将计时模块集成与一体,还添加了手动校时模块,通过编译后生成计时模块的元器件如图3.1。

图3.1计时、校时模块的元器件

通过对该模块的仿真,得到如图3.2的秒计时仿真图,图3.3的分计时仿真图,图3.4的时计时仿真图。

图3.2秒计时仿真图

图3.3分计时仿真图

图3.4时计时仿真图

校时模块的仿真图如图3.5所示。

图3.5校时按键功能仿真

模块说明:

K1按键是功能选择按键,若没按下,则默认为普通计时模式,若按下一次,则为闹钟模式,若按下两次,则为手动校时模块。

按键turn则为,在模式2下的分校时、时校时选择按键,而m则是哪种校时选择的状态显示变量,按键change则为校时增加按键。

由仿真波形可以看出:

在模式2中,当turn按下时m的值反转,校时由分校时变为时校时。

3.3.2闹钟模块

闹钟模块利用IF语句实现时间控制,在预设的铃声响起时间给alert一段连续的5S高电平。

通过对代码的编译后生成的的闹钟模块的元器件如图3.6所示:

图3.6闹钟模块元器件

仿真图如图3.7所示:

图3.7闹钟模块仿真图

仿真说明:

有仿真图可得,闹钟时间为06:

00,当到6:

00时,给alert一个高电平。

3.3.3显示模块

本设计用6位数码管显示,同过位选信号outb经过3-8译码后选择1位数码管,段选信号outa将要显示数据传给数码管,完成显示功能。

对代码编译、生成元器件如图3.8所示,仿真图如图3.9所示:

图3.8显示模块元器件

图3.9显示模块仿真图

3.3.4顶层设计及原理图

顶层模块说明:

顶层设计即把电路的各个模块放在一个顶层模块中,建立一个TOP顶层文件,在这个模块中分别完成每个模块的编译,统一设定结束时间我1MS。

在完成单个模块编译前先把这个模块置顶,成为活的窗口,否则就找不到对应的模块,就会出错。

但要注意的是,整个模块名一定为TOP,而且每个模块的名称一定要用英文,在一个单独的模块编译通过时要生成元器件,以便在之后的顶层文件画电路图时用到该元器件。

等各个模块都编译完成后,进行模块连接,将每个模块按照其所要求的实现的功能进行连接起来,然后进行引脚设定,设定后的顶层模块电路图如3.10所示:

图3.10顶层模块的电路图

顶层设计波形仿真:

先给一个CLK脉冲,若不按K1,则为默认的24小时计时器,按下K1的次数不同即选择不同的功能,1次为闹铃功能,2次为手动校时功能。

本设计中,闹铃功能,闹铃时间为6:

00。

 

附录:

源程序:

moduleconter_time(

SL,

SH,

ML,

MH,

HL,

HH,

clr,

clk,

k1,

turn,

change

);

output[3:

0]SL,SH,ML,MH,HL,HH;

inputclr,clk,k1,turn,change;

reg[3:

0]SL=0;

reg[3:

0]SH=0;

reg[3:

0]ML=0;

reg[3:

0]MH=0;

reg[3:

0]HL=0;

reg[3:

0]HH=0;

regm=1'b0;

reg[1:

0]mode=2'd0;

 

always@(posedgeclk)

begin

if(k1==1)

begin

if(mode==2)

mode<=0;

else

mode<=mode+1;

end

end

always@(posedgeclk)

begin

if(turn==1)

begin

m<=!

m;

end

end

always@(posedgeclk)

begin

 

if(clr==1)//1系统复位

begin

SL<=0;

SH<=0;

ML<=0;

MH<=0;

HL<=0;

HH<=0;

end

else

begin

if(SL==9)

begin

SL<=0;

if(SH==5)

begin

SH<=0;

if(ML==9)

begin

ML<=0;

if(MH==5)

begin

MH<=0;

if(HL==((HH==2)?

3:

9))

begin

HL<=0;

if(HH==2)

begin

HH<=0;

end

elseHH<=HH+1;

end

elsebegin

HL<=HL+1;

end

end

elseMH<=MH+1;

end

elsebegin

ML<=ML+1;

if(change==1)

if(mode==2)

begin

case(m)

1'd0:

ML<=ML+1;

1'd1:

HL<=HL+1;

endcase

end

end

end

elseSH<=SH+1;

end

elseSL<=SL+1;

end

end

endmodule

/*******************显示*********************/

moduleshow(clr,

clk,

outa,

outb,

sl,sh,

ml,mh,

hh,hl

);

input[3:

0]ml;

input[3:

0]mh;

input[3:

0]hl;

input[3:

0]hh;

input[3:

0]sl;

input[3:

0]sh;

inputclk;

inputclr;

output[7:

0]outa;

output[2:

0]outb;

reg[3:

0]mseg;

reg[2:

0]st;

reg[2:

0]outb;

reg[7:

0]outa;

 

always@(posedgeclkorposedgeclr)

begin

if(clr==1)

st<=3'b0;

else

st<=st+1;

end

always@(st)

begin

case(st)

3'b000:

begin

mseg<=sl;

outb<=3'b000;

end

3'b001:

begin

mseg<=sh;

outb<=3'b001;

end

3'b010:

begin

mseg<=ml;

outb<=3'b010;

end

3'b011:

begin

mseg<=mh;

outb<=3'b011;

end

3'b100:

begin

mseg<=hl;

outb<=3'b100;

end

3'b101:

begin

mseg<=hh;

outb<=3'b101;

end

default:

begin

mseg<=0;

end

endcase

end

always@(mseg)//数码管显示

begin

case(mseg)

4'b0001:

outa<=8'b00000110;

4'b0010:

outa<=8'b01011011;

4'b0011:

outa<=8'b01001111;

4'b0100:

outa<=8'b01100110;

4'b0101:

outa<=8'b01101101;

4'b0110:

outa<=8'b01111101;

4'b0111:

outa<=8'b00000111;

4'b1000:

outa<=8'b01111111;

4'b1001:

outa<=8'b01101111;

4'b0000:

outa<=8'b00111111;

default:

outa<=8'b00111111;

endcase

end

endmodule

/*******闹铃*********/

moduleclock(ml,

mh,

hl,

hh,

clk,

alert,

);

input[3:

0]ml,mh,hl,hh;

inputclk;

outputalert;

regalert;

always@(posedgeclk)

begin

if({hh,hl,mh,ml}==16'h0600)

begin

alert<=1'b1;

end

else

alert<=1'b0;

end

endmodule

 

致读者:

本设计为本人的课后作业,按键功能尚未实现,也有很多不正确的地方,望指正。

谢谢。

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2