ISE实现多功能数字钟设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、任务要求
用FPGA器件和EDA技术实现多功能数字钟的设计。
基本功能要求:能显示小时、分钟、秒钟(时、分用7段LED显示器,秒用LED灯)。
小时计数器为同步24进制;
要求手动校时、校分。
扩展功能要求:任意时刻闹钟;
小时显示(12/24)切换电路
自动报整点时数。
二、建立工程
在ISE 14,9软件中建立名为clock 的工程文件。芯片系列选择Spatan3E,具体芯片型号选择XC3S100E,封装类型选择CP132,速度信息选择-5。
三、原理设计
四、顶层模块设计
创建名为top_clock的文件,本设计中顶层模块用于调用各个子模块,以及将闹钟与整点报时模块综合在内,顶层源码如下:
module top_clock(
input Hchange, LK_50M(CLK_50),
.nCLR(nCR),
.CLK_1HzOut(CP_1Hz));LK_50M(CLK_50),
.nCLR(nCR),
.CLK_1HzOut(CP_200Hz));
(Q),
.nCR(nCR),
.EN(EN),
.CP(CP)
);
parameter PERIOD =40;
(Q),
.nCR(nCR),
.EN(EN),
.CP(CP)
);
parameter PERIOD =40;
ntH(CntH),
.CntL(CntL),
.nCR(nCR),
.EN(EN),
.CP(CP)
);
parameter PERIOD =40;
CLR(nCLR),
.Clk(Clk),
.EN(EN),
.CntH(CntH),
.CntL(CntL)
);
parameter PERIOD =40;将文件导入至xc3s5001中
右击xc3s5001,选择program选项,将程序烧录至FPGA实
验板中
1.观察运行情况
1)测试基本功能:
打开使能开关L3,数码管可以正常显示分和时,拨动时分和秒的切换显示开关G3,数码管可以切换显示秒。拨动
K3和B4,可以实现校时功能。拨动清零开关P11,可以实
现清零功能。当时间到23:59时,能运行至00:00。
2)测试扩展功能:
拨动F3,可实现24小时与12小时的切换。当时间为整点时,LED灯G1会根据当前整点时数闪烁对应次数,拨
动N3,闹钟使能。拨动E2,进入闹钟设置状态,此时设置
闹钟时间。当正常时间跳到闹钟设置时刻时,闹钟对应LED
灯N4会常亮,表示闹钟响。当正常时间已经越过闹钟设置
时间时,N4会熄灭。闹钟响时关闭闹钟使能端N3时,N4也
会熄灭。
五、实验总结
本次实验是一个中等规模的设计实验,相比步进电机实验,难度
明显上升,这就对我们的分析和设计能力有了更高的要求。要实现这个多功能的数字钟,关键要做到思路清晰,先构思好顶层架构,再一一考虑需要调用的模块,最后依次编写各个模块。在调试的时候,先要做到各子模块调试无误,再通过整机联调观察出现的不正常结果,列出可能的错误,再去对应的位置进行改正。
本次实验中,不可避免地出现了若干错误之处,例如在实现24进制和12进制转换时,没有发现代码中的计算方式是以8421BCD码来进行计算的,于是在最后的12进制显示中出现了很多不正常状态,花费了一些时间才找到解决办法。这也提醒我在之后的学习过程中要保持细心的态度,不断学习纠正错误的方法,提高效率。