多功能数字钟设计fpga verilog

上传人:第*** 文档编号:57343514 上传时间:2018-10-21 格式:DOCX 页数:31 大小:338.98KB
返回 下载 相关 举报
多功能数字钟设计fpga  verilog_第1页
第1页 / 共31页
多功能数字钟设计fpga  verilog_第2页
第2页 / 共31页
多功能数字钟设计fpga  verilog_第3页
第3页 / 共31页
多功能数字钟设计fpga  verilog_第4页
第4页 / 共31页
多功能数字钟设计fpga  verilog_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《多功能数字钟设计fpga verilog》由会员分享,可在线阅读,更多相关《多功能数字钟设计fpga verilog(31页珍藏版)》请在金锄头文库上搜索。

1、NJUST多功能数字钟设计基于 VerilogHDL 语言学院: 电子工程与光电技术学院学号: 912104220139 姓名: 匡鑫 指导教师: 谭雪琴 20142014 年年 1111 月月 2121 日星期五日星期五摘要:基于 FPGA 平台,运用 Verilog 语言编写设计一多功能数字钟,包括基本 的时钟,校时校分,整点报时功能。扩展闹钟,秒表,万年历,键盘输入功能。Abstract:FPGA-based platform, using Verilog language to design a multi-functional digital clock, including bas

2、ic function of clock, school hours, school minutes,the whole point timekeeping. And extended function of alarm clock, stopwatch, calendar, keyboard input. 关键词:多功能数字钟,可编程逻辑器件,EDA 设计,VerilogKeywords:multi-functional digital clock, FPGA, EDA disign, Verilog目录目录1 设计要求22 设计方案选择及思路分析.23 各子模块设计原理和分析 33.1 分

3、频模块 33.2 时分秒模块.53.3 时分调整模块63.4 报时模块 73.5 扫描显示模块73.6 秒表模块 93.7 闹钟模块 103.8 万年历模块.123.9 键盘扫描模块134 调试仿真155 编程下载166 结论 167 参考文献178 实验感想179 源代码.171 设计要求基于 FPGA 可编程逻辑器件,用 quatusII 软件设计一个多功能数字钟,其基本要求如下:1.有基础的计时显示功能,即时、分、秒显示在 6 个七段管上2.K0,K1,K2,K3 分别为系统使能(暂停),时钟清零,校时,校分开关。由于按键是长期处于“1”状态,故在这里采用低电平“0”为有效电平(本人认为

4、原要求中“1”为有效电平不合理)。3. 使时钟具有整点报时功能(当时钟计到 5953”时开始报时,在 5953”, 5955”,5957”时报时频率为 500Hz,5959”时报时频率为 1KHz, )。提高部分要求:添加按键:K4,K5 分别为设置位选择,设置位加一。K6,K7 为组合功能选择,当 K6K7 值:(11)为时钟功能,(10)为秒表功能,(01)为闹钟设置,(00)为万年历功能。1.闹时功能,按动方式键,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器相连,利用前面手动校时,校分方式进行预置,预置后回到正常模式。当计时计至预置的时间时,扬声器发出闹铃信号,时间为半分钟

5、,闹铃信号可以用开关“止闹”,按下此开关后,闹铃声立刻中止,正常情况下应将此开关释放,否则无闹时作用。2.秒表功能。按 start 键开始计秒,按 stop 键停止计秒并保持显示数不变,直到复位信号加入。3.万年历功能,4使用 4*4 矩阵键盘输入设置信号2 设计方案选择及思路分析由于之前参加过华为杯电子设计大赛,当时采用的是 VerilogHDL 语言,而且 EDA 实验一曾经做过用器件搭数字钟的实验,如果再用原理图方法的话没有挑战性,而且 VerilogHDL 语言更为灵活方便,因此决定采用其完成本次电子设计。设计的总体部分按照要求可以分为基本模块:分频模块、时钟计时及调整模块、扫描显示。

6、附加模块:万年历、整点报时、闹钟功能和秒表功能。其总体设计框图如下:3 各子模块设计原理和分析3.1 分频模块初步分析后面所需要的信号频率,分频器的功能主要有 4 个:分别是产生计时用的标准秒脉冲 1HZ 信号;闹钟及万年历设置时用的 2HZ 闪烁信号整点报时及显示扫描用的 1kHZ 高音频信号和 500HZ 低音频信号。分析系统时钟为48M,经过 48K 的分频后得到 1K 信号,再经过 2 分频可以得到 500HZ 方波,1K经过 5 分频得到 200HZ 信号,最后 100 分频得到的 2HZ 信号,再 2 分频得到1HZ 的时钟。原理框图如下图 5 所示。图 5 分频信号框图 Veri

7、log 设计分频器很简单,在偶数分频时,在输入脉冲下直接计数到所分频 数的一半,然后翻转即可。如:分频秒分时计数日月年计数扫描显示秒表闹钟报时嗡鸣器48M1K 500HZ200HZ 2HZ1HZalways(posedge clk) begin f1kminute-hour/-day-month-year/ /always(posedge clk_1hz or negedge key1 or negedge key2 or negedge key3) always(posedge clk_1hz or negedge key1) begin if(key1=0)/clear begin hou

8、r=8b0; minute=8b0; second=8b0; end else if(key7:6=2b11 if(hour3:0=4ha) begin hour3:0=4h0; hour7:4=hour7:4+1; if(hour7:4=4h6) hour7:4=4h0; end endelse if(key7:6=2b11 if(minute3:0=4ha) begin minute3:0=4h0; minute7:4=minute7:4+1; if(minute7:4=4h6) minute7:4=4h0; end endelse if(key0)/no pause begin seco

9、nd3:0=second3:0+1b1; if(second3:0=4ha) begin second3:0=4h0; second7:4=second7:4+1b1; if(second7:4=4h6) begin second7:4=4h0; minute3:0=minute3:0+1b1; if(minute3:0=4ha) begin minute3:0=4h0; minute7:4=minute7:4+1b1; if(minute7:4=4h6) begin minute7:4=4h0; hour3:0=hour3:0+1b1; if(hour3:0=4ha) begin hour3

10、:0=4h0; hour7:4=hour7:4+1b1; if(hour=8h24) begin hour7:4=4h0; day3:0=day3:0+1b1; if(day3:0=4ha) begin day3:0=4h0; day7:4=day7:4+1b1; if(day7:4=4h3) begin day7:4=4h0; month3:0=month3:0+1b1; if(month3:0=4ha) begin month3:0=4h0; month7:4=month7:4+1b1; if(month7:0=8h12) begin month=8h0; year=year+1; end

11、 end end endend end end end end end end end / /设置闹钟 always(negedge key) if(key7:6=2b01) begin if(!key2) hour1=hour+1; else if(!key3) minute1=minute1+1; end / /秒表 always(posedge clk_1k) begin f100hz=50) begin clk_500khz=clk_500khz;count=0;end else count=count+1; endalways (posedge clk_500khz or neged

12、ge reset) if(!reset) begin col=4b0000;state=3d0;end else begin case (state) 3d0: begin col3:0=4b0000; key_flag=1b0; if(row3:0!=4b1111) begin state=3d1;col3:0=4b1110;end /有键按下,扫 描第一列 else state=3d0; end 3d1: begin if(row3:0!=4b1111) begin state=3d5;end /判断是否是第一列 else begin state=3d2;col3:0=4b1101;end

13、 /扫描第二列 end 3d2: begin if(row3:0!=4b1111) begin state=3d5;end /判断是否是第二列 else begin state=3d3;col3:0=4b1011;end /扫描第三列 end 3d3: begin if(row3:0!=4b1111) begin state=3d5;end /判断是否是第三列 else begin state=3d4;col3:0=4b0111;end /扫描第四列 end 3d4: begin if(row3:0!=4b1111) begin state=3d5;end /判断是否是第一行 else sta

14、te=3d0;end 3d5: begin if(row3:0!=4b1111) begin col_reg=col; /保存扫描列值 row_reg=row; /保存扫描行值 state=3d5; key_flag=1b1; /有键按下 end else begin state=0; end end endcase endalways (clk_500khz or col_reg or row_reg)beginif(key_flag=1b1) begincase (col_reg,row_reg)8b1110_1110:key_value=8h7;8b1110_1101:key_value=8h4;8b1110_1011:key_value=8h1;8b1110_0111:key_value=8h0;8b1101_1110:key_value=8h8;8b1101_1101:key_value=8h5;8b1101_1011:key_value=8h2;8b1101_0111:key_value=8ha;8b1011_1110:key_value=8h9;8b1011_1101:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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