ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:381.21KB ,
资源ID:21180608      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21180608.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多功能电子钟设计报告Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多功能电子钟设计报告Word格式.docx

1、3.1分频模块及其仿真73.2计时模块及其仿真93.3定时模块及其仿真11 3.4按键消抖模块及其仿真14 3.5译码显示模块及其仿真15 3.6例化模块184 元件的选择445 电路安装、调试与测试.45 5.1电路安装.45 5.2电路调试.46 5.3系统功能及性能测试.465.3.1测试方法设计.465.3.2测试结果及分析.476 结论.487 参考文献.488 总结、体会和建议.49 附录:电路原理图.50 元器件清单.53 1设计任务及要求1.1设计任务 设计任务是进行设计的基础,根据对设计任务的分析和理解进行设计电路及相应元器件的选择,从而进行电路仿真和调试。所以对设计任务的理

2、解和分析是进行设计的关键。本设计的设计任务为:利用CPLD/FPGA设计一个多功能电子钟。数字电子钟是一种用数字显示秒、分、时的计时装置,由于十足集成电路技术的发展,使数字钟走时准确、多功能化且性能稳定等优点。利用CPLD/FPGA设计一个可实现计时、校时、整点报时、定时闹叫多功能的电子钟,需要分两步走。首先,通过Verilog HDL 硬件描述语言进行代码的编写,利用Quartus进行编译和仿真。其次,根据设计任务和要求选择器件进行电路的焊接。1.2设计要求 设计要求是完成设计指标的导航,只有很好的分析和了解设计的要求,才可以完成相应的设计。设计要求:利用实验室EDA实验箱上的CPLD/FP

3、GA、LED显示器、扬声器、拨码开关等资源,设计一个多功能电子钟,要求具有以下功能:1、 数字形式显示月、日、时、分、秒,在分和秒之间显示“:”,并按1次/秒的速度闪烁;2、 日以24小时为一个记时周期;3、 有校正功能,能够在任何时刻对电子钟进行方便的校正;4、 有定时闹叫功能,能够按照任意预先设置的时间闹叫,驱动小型扬声器工作,并要求在闹叫状态能够手动消除闹叫;5、 整点时刻通过扬声器给出提示;6、 采用CPLD/FPGA可编程逻辑器件实现;针对设计要求可做简单分析:所设计的多功能电子钟需要实现计时、整点报时、定时闹叫和校正功能。计时需要有相应的计时器实现,整点报时需要相应的报时电路和小功

4、率扬声器,定时闹叫需要通过编写的Verilog HDL 程序实现定时和在时间到时驱动小功率扬声器报时,校正电路需要有拨码开关和其他电路实现。对设计要求的理解:2 系统设计 2.1系统要求通过FPGA/CPLD实现多功能电子钟的设计。电子钟要实现计时、校时、定时闹叫等功能。通过对设计要求的每条的详细分析可得出如下结果:1、 要实现显示月、日、时、分、秒,需要十个LED数码管;要在分和秒之间显示“:”,可以利用两个发光二极管,也可以选择含有“:”的LED数码管;要按1次/秒的速度闪烁,则需要1Hz的输入脉冲控制,所以需要通过晶振产生方波,经过分频产生1Hz的方波。2、 要实现24小时为一个计时周期

5、,则需要一个24进制计时器控制其计数。3、 要实现校正功能,则需要一个校正电路(含校正开关)和相应的校正程序。4、 要实现定时闹叫功能,则需要一个时钟脉冲来控制,使其在设定的时刻报时。外接一个小型扬声器,在设定时刻闹叫,并通过开关消除闹叫,同时也需要相应的程序控制。5、 通过分频电路实现整点报时所需时钟信号,需设计相应的程序段使其在59分,59秒时报时。6、 根性要求设计Verilog HDL程序,并在Quartus 软件上进行编译和仿真,从而根据资源的需求选择CPLD/FPGA可编程逻辑器件。 要实现系统要求,需要Verilog HDL程序和Quartus 软件的支持。下面对其进行简单介绍:

6、(1)利用Verilog HDL硬件描述语言实现功能程序。Verilog HDL是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和模拟等多个阶段。通过应用Verilog HDL对多功能电子钟的设计,可实现系统的设计要求。Verilog HDL硬件描述语是一种实用性很强的编程语言,可以实现软件程序和硬件程序的结合,即将所编写的程序在仿真通过后利用下载器下载到电路板上,通过程序控制器件的工作。模块是Verilog 的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述; 设计的数据流行为使用连续赋值语句进

7、行描述; 时序行为使用过程结构描述。一个模块可以在另一个模块中使用。(2)Quartus是Alterat提供的FPGA/CPLD开发集成环境,支持Verilog HDL 的设计流程。其包括模块化的编辑器,也可以利用第三方的综合工具,具有仿真功能。Quartus的设计流程为:设计输入,综合或编译,适配器件,仿真,下载。通过Quartus可实现对程序的仿真和下载,从而实现系统的要求。2.2方案设计 根据系统要求,将设计程序分为计时模块、整点报时模块、定时闹叫模块、校正模块四大模块,通过模块的例化实现所有功能。所对应的硬件连接可分为集成芯片、复位电路、校正电路、晶振电路、响铃电路、译码显示电路几个模

8、块。 对可编程逻辑器件的选择是实现硬件电路的基础。根据要求本设计可选择芯片EPM7023或者芯片EP2C5T144 C8。但通过查阅资料可知EPM7023只有44个引脚,可能会导致资源不足,即引脚不够用,驱动能力不足,所以选择altera公司的cyclone 系列的EP2C5T144 C8芯片。下面对芯片做简要介绍: 拥有丰富的User IO(用户IO引脚),即144个IO接口可供使用。开发板通过2.54mm标准排针,引出了所有的用户IO引脚。芯片引脚分为四组(Bank),每组(每个Bank)的IO引脚供电是独立的,因此可以采用不同的电平标准。 内部需要三个电压:5V、3.3V、1.2V,其中

9、3.3V给IO接口供电,1.2V给内核供电。含有2个PLL。PLL的作用是产生各种频率的时钟,在FPGA中拥有重要的地位。2.3系统工作原理通过晶振产生一个时钟脉冲,成为主时钟。在通过分频电路输出所需要的时钟脉冲,即1Hz的计时脉冲。计时时,当秒计数器计到59时,向分计时器进1;当分钟计数器计到59,秒计数器计到59时,向小时计时器进1;当小时计时器计到23,分钟计数器计到59,秒计数器计到59时,向日期计时器进1;当日期计时器计到29,小时计时器计到23,分钟计数器计到59,秒计数器计到59时,向月份计数器进1。将所计时间通过LED数码管显示出来。定时闹叫时,设置闹铃的分钟和小时,设置的时候

10、由转换按键控制调整分钟及调整小时之间的切换,每按一次调整键,所调整的计数器加1,分钟计数器计满60就清0,小时计时器计满24就清0。当到所定时间时,驱动小功率扬声器工作,发出响铃声。整点报时的工作原理为当秒计数器为0,分计时器为0时,驱动小功率扬声器发出报时声。校时为修正日期、月份、小时和分钟的时间以及秒钟的精确调整清零。由转换按键控制调整分钟和调整小时之间的切换,每按一下调整键所调整的计数器加1,分钟计数器满60清零,小时计数器满24清零;秒种的精确调整清零具体为在正常计时的情况下,长时间按住转换按键,即可使秒钟清零,进行精确调时。秒表工作原理为进行手动计时,按一下计数按键为计时,再按一次计

11、数按键为停止计时,保存计数数值,依此类推;按一次清零键为计数清零,停止计数。3电子钟功能模块及仿真3.1分频模块分频模块的程序:timescale 1ns/100ps module count32 ( asyn_clr_n , /input, 异步清零信号 syn_clr , /input, 同步清零信号 clk , /input, 全局时钟信号 en , /input, 计数使能信号, 计数器的门控开关,计数器关闭后,保持数值不变。 counter /output,计数器计数值 );/* 参数声明 */parameter U_DLY = 1 ; / Unit delay input asyn

12、_clr_n ; /0-clear counter;input syn_clr ; /1-clear counter;input clk ;input en ; /1-enable; 0-disable.output 31:0 counter ;reg 15:0 cnt_high ; /计数器高16位0 cnt_low ; /计数器低16位reg cnt_low_max ; /cnt_low达到最大值的标志assign counter = cnt_high, cnt_low;/32位计数器由2个16位计数器拼接而成。/分段计数:低16位计数器always ( posedge clk or ne

13、gedge asyn_clr_n ) if (asyn_clr_n = 1b0) /异步清零 cnt_low = 16h0000; /删除时序逻辑中异步复位的单位延时 else if (syn_clr = 1b1) /同步清零= #U_DLY 16 else if (en = 1b1) /计数器使能= #U_DLY cnt_low + 16h0001; else; /保持/低16位计数器的进位标志b0) /异步清零,清除进位 cnt_low_max = 1b0; /删除时序逻辑中异步复位的单位延时。b1) /同步清零,清除进位= #U_DLY 1b1 & cnt_low = 16hfffe)

14、/计数器使能,且低16位计满则产生进位。 /因为从进位产生到cnt_high进程读到此进位需要一个时钟周期,所以计数器只计到16hfffeb1; else /否则无进位产生 /分段计数:高16位计数器 cnt_high cnt_low_max = 1b1) /计数器使能,且低16位计数器已计满= #U_DLY cnt_high + 16endmodule仿真波形图:3.2 计时模块计数模块仿真程序:module counter(/*/输入PORT 说明 /*/ input wire clk , /输入时钟 input wire rst_n , /输入复位 input wire counter_

15、clk_pul,/计数时钟脉冲 input wire set_add , /设定进位 input wire cin , /设定进位 /输出PORT 说明 output wire cout , /满进位 output wire 3:0 gewei , /输出个位 0 shiwei /输出十位 );parameter 6:0 MAX_NUM = 6d59;reg 6:0 current_num ;always ( posedge clk or negedge rst_n) begin if ( rst_n = 1b0) begin current_num6:0 MAX_NUM ) begin0 -

16、 MAX_NUM-1 ; else ;endassign cout = (current_num MAX_NUM) ;/只取一个时钟脉冲长度assign gewei3:0 = current_num6:0%10 ;assign shiwei3:0 = (current_num6:0/10)%10 ;3.3 按键消抖模块按键消抖模块程序:timescale 1ns/100ps /表示时延单位为1ns, 时延精度为100ps module delay_filter_glitch_high ( input wire rst_n , /input, 异步清零信号 input wire clk , /i

17、nput, 全局时钟信号 input wire en_cnt , /input, 计数使能信号, 可决定计数频率 input wire signal_in_n , /input, 输入信号 output reg signal_out_n /output, 处理后的信号 /*/ /参数声明 /*/ /Unit delay parameter CNT_WIDTH = 5b11111 ; /计数位宽 parameter CNT_TH = 5 /计数门限, 可决定延时时长 /* / / 内部信号申明 /*/ reg CNT_WIDTH-1:0 cnt ; /计数器 reg signal_in_n_1d

18、ly;reg signal_in_n_2dly;reg signal_in_n_3dly;wire signal_in_edge ; /指示输入信号的上升/下降沿 /* 行为描述 */ /异步信号的同步处理 always ( posedge clk or negedge rst_n ) begin b0 ) begin signal_in_n_1dly signal_in_n_2dly signal_in_n_3dly else begin = #U_DLY signal_in_n;= #U_DLY signal_in_n_1dly;= #U_DLY signal_in_n_2dly;end

19、assign signal_in_edge = signal_in_n_3dly signal_in_n_2dly; /产生信号上升/下降沿指示信号 b0 ) cnt d0; else if (signal_in_edge = 1b1) /检测输入信号有跳变后,计数器就清零 else if (en_cnt = 1 cnt != CNT_TH) /计数器没计满后加1计数 = #U_DLY cnt + 1d1; /否则,保持原来的数值 always ( posedge clk or negedge rst_n ) signal_out_n else if ( cnt = CNT_TH ) = #U_DLY signal_in_n_3dly; 仿真波形图3.4定时模块校时模块为在任意时刻可以对月、日、时、分、秒进行校正。校时模块程序:module counter_ds( output wire 3:b0 ;0 + 1b1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1