- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《嵌入式系统及应用》
——秒表设计
专 业:
班 级:
姓 名:
学 号:
201*年*月
一、设计要求
秒表计时范围0—999.999秒;
计时值采用字符型LCD显示;
具有计时开始、停止、复位等功能。
设计中时钟输入采用验证电路板上的50MHz作为基准;
程序设计尽可能考虑模块化、参数化设计思想,并遵循基本的格式规范,添加适当的注释及文档说明;
采用模块化设计方式,底层模块必须进行功能仿真;
编写设计总结报告。
二、设计原理
数字钟的读数电路是用两个六十进制和一个二十四进制(或十二进制)计数器实现的。六十进制计数器应由一个十进制计数器与一个六进制计数器组成,分别对秒(或分)的个位和十位进行计数。
本实验用二十四进制计数器作为“时”位计数器,它的计数序列是00,01,02…,23,00,…,也就是当计数器计到23时59分59秒时,若再输入一个秒脉冲,计数器就进到00时00分00秒。
数字钟计数电路的设计可用反馈归零法。当计数器正常读数时,反馈门不起作用,只有当进位脉冲到来时,反馈信号随即将计数电路清零,实现相应模的循环计数。以六十进制为例,当计数器从00,01,02,…,59计数时,反馈门不起作用,只有当第60个脉冲到来时,反馈信号随即将计数电路清零,实现模为60的循环计数。
通过对设计题目的分析,我将整体电路划分为5个子电路来设计,及分频、按键处理、时间计数、数据选择和显示模块,而且还设置了复位信号,随时可以对电路进行复位。
1)分频模块通过对主频信号50MHZ的分频来得到所需的1000HZ的时钟信号,并将此作为之后子电路的标准时钟,实现同步电路的要求,主要采用的是计数的方法,当寄存器记满50000时产生输出脉冲;
2)按键处理模块通过对SW1按键的判别,并采用双D寄存器的应用,在标准时钟的触发下产生starop脉冲,通过判别starop脉冲是否有高电平使mode信号发生高低电平的翻转,mode为高电平时允许计数,为低电平时停止计数;
3)时间计数模块以10进制计数器为基础,10计数器设置了en_in的接收进位和en_out产生进位,实现了全加器的功能;然后用10进制的计数器产生了100进制的,再而产生8位10进制的计数器子电路,取其中的低7位完成计数模块子电路的设计;
4)数据选择模块式通过安检处理模块中产生的mode信号和SW2按键对计数器产生的数据进行处理,当mode为高电平的时候将计数器的产生的结果存入lcd_data_in寄存器中;为低电平时,lcd_data_in内容保持不变;SW2为高电平时进行清零操作,使得lcd_data_in寄存器中的内容全部清零。
5)显示模块是运用LCD显示器的显示原理,将lcd_data_in寄存器中的数据按4位一组的模式赋值给lcd_data_out 8位寄存器的低4位,高四位为4’b 0011,选择的是数字字库,实现LCD的数据输入,并且产生RS,RW,en,cont这4位控制信号,控制LCD的显示。
三、实验程序
1)顶层文件
module ms_clock(clk_50M,SW1,SW2,SW3, //SW1暂停/继续 SW2清零 SW3复位
lcd_data_out,RS,RW,en,cont
);
input clk_50M; //系统时钟
input SW1,SW2,SW3; //按键
output[7:0] lcd_data_out;
output RS,RW;
output en,cont;
wire clk_50M;
wire SW1,SW2,SW3;
wire clk_1000;
wire [3:0] ms_1,ms_2,ms_3,s_1,s_2,s_3,s_4;
wire [27:0] lcd_data_in;
wire [7:0] lcd_data_out;
wire mode;
wire starop;
//分频模块,把50MHZ的时钟分频为1000HZ用于计数器计数
f_div m1(clk_50M,SW3,clk_1000);
//按键处理模块
anjian m2(clk_1000,SW3,SW1,mode,starop);
//时间计数主模块
time_counter m3(mode,clk_1000,SW3,
文档评论(0)