1、嵌入式系统实验报告实验四:看门狗定时器姓名 院系 软件学院 学号 任课教师 指导教师 实验地点 实验时间 2005-6-151. 实验前准备(4 分)1, 通过阅读课本,复习了课堂中所讲述的关于看门狗定时器的实现和工作原理,明白了看门狗的实现过程。做了有关分频和定时器预置数据相关方面的计算问题,使自己对看门狗记时器有了更深刻的理解。2, 搜集了一些关于分频器的资料,这些资料都是网上描述用 VHDL 实现分频器实现的基础知识。3, 为实验中使用自动状态转换作了一些准备工作。4,编写了自己的实验用的 VHDL,程序 WATCHDOG.VHD,并自己调试和模拟成功。得分:2. 实验内容和目的(
2、4 分)实验内容:利用看门狗定时器模拟自动自动提款机的计时超时功能,实现一分钟以内的计时操作,超时给出相应的警示信号,告诉使用者定时时间已到,结束交易。使用时钟信号分频,在指示灯上显示模拟实现的结果,实验的目的是:通过并看门狗定时器设计的实验,学会用分频技术实现对时钟的分频和以计数器为基础实现状态的自动转换。最终将模拟的结果正确的显示出来。得分:3. 实验步骤(4 分)1, 编写二位计数器的 VHDL 代码并将文件存成 WATCHDOG.VHD,其中包括真正的利用计数器实现计数和时钟分频和自动状态转换的实现。2, 检查编译,并且进行硬件管脚的分派和相应的波形模拟。3, 下载运行,结果虽然正确,
3、可以实现超时、复位功能,但是程序结构过于简单,没有达到实验要求,通过老师的指导,发现自己并没有严格遵循课本上的要求编码,比如说计数器的个数设定和分频的设置上。4, 重新添加相应的一些变量,在原基础上进行二次分频,重新调试编译,进行管脚分派和波形模拟。5, 下载程序到板子上重新进行演练,结果正确。得分:4. 实验总结(4 分)通过这次实验, 加深了自己对自动状态转换机工作的原理认识和了解,学会了使用自动状态转换来进行相应的 VHDL 程序设计,也加深了对计数器的使用和了解,学会了使用计数器来进行相应的多次分频操作。同时对课堂学习的看门狗定时器以及相关的计时器原理和实现方式有了更深的理解,对 PL
4、D 板子的分布和引脚使用的熟悉程度有很大提高,实验中也帮助了同学解决了很多困难。与此同时在实验过程中也发现了自己很多不足之处,开始考虑问题不认真,有些草率,在知道运行环境不支持循环语句后修改了很多语句,导致自己写的程序逻辑上很繁琐。前两次分频的结果显示不是很明显,最终指示灯显示的结果和我最初的设计还有一定的差距,最后通过老师的指导达到了理想的效果。总的来说,无论是通过这次实验还是前几次实验,自己都学到了很多知识,也锻炼了自己的动手能力,能清楚地感觉到自己经历着由懵懂到知道,由知道到熟练的阶段过程,同时也感受到了理论和实际还是有差距的。 最后感谢老师在课堂上和实验中的悉心指导和教诲,谢谢各位老师
5、。得分:5. 程序源代码附到实验报告后(4 分)Library IEEE ;use IEEE.std_logic_1164.all ;use IEEE.std_logic_arith.all ;ENTITY calculagraph ISPORT( clk : IN BIT;reset : IN BIT;cardin : IN BIT;sign : OUT BIT;alarm : OUT BIT- outdata : OUT STD_LOGIC_VECTOR( 8 DOWNTO 0);END calculagraph;ARCHITECTURE TIME OF calculagraph ISSI
6、GNAL clkin : BIT;SIGNAL clkin1 : BIT;BEGINfenpin : PROCESS(clk)VARIABLE counter : UNSIGNED( 1 downto 0):=“00“;BEGINIF(clk event and clk =1)THENIF( counter = 0 )THENclkin = 1;ELSEclkin = 0;END IF;IF( counter 3)THENcounter := counter + 1;ELSE counter := “00“;END IF;END IF;END PROCESS;fenpin1 : PROCESS
7、(clkin)VARIABLE counter1 : UNSIGNED( 1 downto 0):=“00“;BEGINIF(clkin =1)THENIF( counter1 = 0 )THENclkin1 = 1;ELSEclkin1= 0;END IF;IF( counter1 3)THENcounter1 := counter1 + 1;ELSE counter1 := “00“;END IF;END IF;END PROCESS;timer : PROCESS(clkin1)VARIABLE heat : UNSIGNED( 1 downto 0 ):=“00“;BEGINWAIT UNTIL(clkin1 event and clkin1=1);IF(reset = 1)THENsign = 0;alarm = 0;END IF;IF(cardin = 1)THENIF(heat 3)THENsign = 1;alarm = 0;heat := heat + 1;ELSEheat := “00“;sign = 0;alarm = 1;END IF;END IF;END PROCESS;END TIME;得分:课堂表现分(5 分): (总 25 分) 总得分:指导教师评语:指导教师(签字): 日期: