FPGA设计实践课程设计报告自动打铃系统设计

上传人:cn****1 文档编号:503930496 上传时间:2023-12-27 格式:DOC 页数:13 大小:42KB
返回 下载 相关 举报
FPGA设计实践课程设计报告自动打铃系统设计_第1页
第1页 / 共13页
FPGA设计实践课程设计报告自动打铃系统设计_第2页
第2页 / 共13页
FPGA设计实践课程设计报告自动打铃系统设计_第3页
第3页 / 共13页
FPGA设计实践课程设计报告自动打铃系统设计_第4页
第4页 / 共13页
FPGA设计实践课程设计报告自动打铃系统设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《FPGA设计实践课程设计报告自动打铃系统设计》由会员分享,可在线阅读,更多相关《FPGA设计实践课程设计报告自动打铃系统设计(13页珍藏版)》请在金锄头文库上搜索。

1、 课程设计报告课程设计名称: FPGA设计实践课程 设计课题名称: 自动打铃系统设计 班级: 指导老师: 姓名: 学号: 20072668 成绩: 设计时间: 7,5-7,9 设计地点: 计算机信息与工程学院自动打铃系统设计报告一、 设计目的:1 进一步熟悉FPGA开发系统环境、C语言、调试方式。2 了解FPGA中如何使用总线频率制作时钟。3 会使用各个模块的拼接与联系。二、 实验器材和工具软件: 1,ALTER DE2实验板。 2,Quartus II 实验用程序。三、 设计内容:1. 基本计时和现实功能(用12小时制显示):包括上下午标志,时、分的数字显示,秒信号显示。2. 可以自由设置当

2、前时间(包含上、下午,时、分)。3. 可以实现基本的打铃功能,规定: 上午06:00起床铃,打铃5s,停2s,再打铃5s; 下午10:30熄灯铃,打铃5s,停2s,再打铃5s。 铃声可以用LED灯光显示,如果实验装置没有LED发光管,那么可以用七段显示管的小数点显示,也可以用显示小时的十位数码管的多余段显示。凡是用到铃声功能的均可以如此处理。 4. 增加整点报时功能,整点时响铃5s。要求有控制启动和关闭功能。5. 增加调整起床铃、熄灯铃时间的功能。 6. 增加调整打铃时间长短和间隙时间长短的功能。 7. 增设上午4节课的上、下课打铃功能,规定: 7:30上课,8:20下课 8:30上课,9:2

3、0下课 9:40上课,10:30下课 10:40上课,11:30下课。 每次铃响5s。四、 设计具体步骤:1,首先需要对整个系统做一个详细的认识,FPGA中是没有定时器的所以我们需要通过计数器来达到计时的效果。为此,我们先从总线频率那分频得到50M分频的频率那么我们需要分频器“clk_1_gen”。程序如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity clk_1_gen isport(clkin :in std_logic; clkout:out std_logic);end

4、 clk_1_gen;architecture behave_clk_div8 of clk_1_gen isconstant N: Integer:=24999999;signal Counter:Integer RANGE 0 TO N; signal Clk: Std_Logic;begin process(clkin) begin if rising_edge(clkin) then if Counter=N then Counter=0; Clk=NOT Clk; else Counter= Counter+1; end if; end if; end process; clkout

5、= Clk; end behave_clk_div8; 2,在题目中我们看到这个程序的目的不光光是现实时间,同时也可以修改时间,同时具备闹铃、修改闹铃等功能。那么为了切换这些功能我们需要一个状态机,为了输出当前处于什么状态,同时有些什么操作。这个就是statemachine所要完成的任务。这里涉及两大重要参数,一个是“command”一个是“adjbotton和flash”前者是当前的状态一共有五个,每一位象征着一个状态,而后者则是修改时间用的变化与位选。我们的目的是按一个按键那么状态就改变,那么我们就可以把输入变量的变化与输出地变化相一致即可。module statemachine (clo

6、ck, changemode, adjposition, adjval, command, adjbotton, flash);input clock;input changemode;input adjposition;input adjval;output 4:0 command;reg4:0 command;output2:0 adjbotton;reg2:0 adjbotton; output2:0 flash;reg2:0 flash;parameter2:0 timer = 0;parameter2:0 adj_timer = 1;parameter2:0 adj_morningt

7、ime = 2;parameter2:0 adj_eveningtime= 3;parameter2:0 adj_ringlength = 4;parameter2:0 adj_12or24 = 5;reg2:0 state;reg1:0 pos;always (posedge clock) /mo kuai 1 gong neng shi tong guo changemode de an xia lai gai bian zhuang taibegincase (state) /case state timer : /timer 0 shi beginif (changemode = 1b

8、0) /beginstate = adj_timer ;endendadj_timer :beginif (changemode = 1b0)beginstate = adj_morningtime ;endendadj_morningtime :beginif (changemode = 1b0)beginstate = adj_eveningtime ;endendadj_eveningtime :beginif (changemode = 1b0)beginstate = adj_ringlength ;endendadj_ringlength :beginif (changemode

9、= 1b0)beginstate = adj_12or24 ;endendadj_12or24 :beginif (changemode = 1b0)beginstate = timer ;endenddefault :beginstate = timer ;endendcaseendalways (posedge clock) /mo kuai 2begincase (state)timer : /zheng chang ji shi shibegin / command = 5b00000 ; /shu chu command wei 00000pos = 0 ; /pos wei 0en

10、dadj_timer : /tiao zheng shi jian shibeginif (command = 5b00000) /ru guo dang qian wei zheng chang ji shi zhuang taibegin/command=5b00001;pos = 1 ; / pos wei 1endelsebegin /ru guo bu shi zheng chang ji shi zhuang taiif (adjposition = 1b0) /erqie ci shi adiposition wei 1beginif (pos = 3) /erqie pos w

11、ei 3beginpos = 1 ; /pos wei 1endelsebegin /pos bu wei3 de hua pos =pos +1pos = pos + 1 ;endendendcommand = 5b00001 ; /zuo wan shang mian zhi hou command wei 00001endadj_morningtime : /tiao zheng qi chuang shi jian zhuang taibeginif (command = 5b00001) /ruguo dang qian wei tiao zheng shi jian zhuang

12、taibeginpos = 1 ; /pos wei 1endelsebeginif (adjposition = 1b0) /fou zhe ru guo adjposition wei 1 beginif (pos = 1) /erqie pos wei 1beginpos = 2 ; /pos wei 2endelsebeginpos = 1 ; /fou ze pos bu wei 1 shi pos wei 1endendendcommand = 5b00010 ;/ zuo wan zhi hou command shu chu wei 00010 tiao zheng xi de

13、ng zhuang taiendadj_eveningtime :beginif (command = 5b00010) / tiao wan shang shi jian de zhuang tai dang command wei 00010 shibeginpos = 1 ; /pos wei 1endelsebeginif (adjposition = 1b0) /command bu wei 00010 shi adjposition wei 1 shibeginif (pos = 1) /ru guo pos wei 1beginpos = 2 ; /pos wei2endelsebeginpos = 1 ; /fou ze wei 1endendendcommand = 5b00100 ; /zhi hou command shu chu wei 00100endadj_ringlength : /tiao zheng xiang liang zhuang tai beginif (command = 5b00100) /ru guo command wei 00100beginpos = 1 ; /pos w

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号