综合课程设计报告基于FPGA的嵌入式51核的数字钟设计

上传人:仙*** 文档编号:34503745 上传时间:2021-10-21 格式:DOC 页数:16 大小:2.03MB
返回 下载 相关 举报
综合课程设计报告基于FPGA的嵌入式51核的数字钟设计_第1页
第1页 / 共16页
综合课程设计报告基于FPGA的嵌入式51核的数字钟设计_第2页
第2页 / 共16页
综合课程设计报告基于FPGA的嵌入式51核的数字钟设计_第3页
第3页 / 共16页
点击查看更多>>
资源描述
基于基于 FPGAFPGA 的嵌入式的嵌入式 5151 核的数字钟设计核的数字钟设计摘要摘要此次设计的数字钟具有年、月、日、时、分、秒计数显示功能,以 24 小时循环计时显示;具有清零,调节小时、分钟功能;具有整点提示、定时报警功能,使用蜂鸣器报警;由键盘输入进行数字钟设计的校时、清零、启停功能。数字钟在日常生活中经常用到,可利用现在所学知识自行设计一个数字钟。我们在本次实验中采用了基于 FPGA 的嵌入 51 软核的设计方法。基于 EDA 技术,在 Quartus II 工具软件环境下,采用自顶向下的设计方法,在 FPGA 中嵌入 51 软核。在 FPGA 中嵌入 51 软核后,FPGA 就有了 51 单片机所有的功能,就相当于在 51 单片机上进行数字钟的设计。系统主芯片采用 EP2C5T144C8,由时钟模块、控制模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证。 关键字:关键字:FPGA;51 软核;整点提示;定时报警;对时目录目录第一章第一章 题目分析题目分析 .31.1、功能要求及指标.31.2、设计思路.3第二章第二章 方案比较与选择方案比较与选择 .42.1 方案一.42.2 方案二.42.3 方案三.5第三章第三章 系统各模块设计系统各模块设计 .63.1、8051 IP 软核的嵌入.63.1.1 基本结构和功能.63.1.2 8051 软核系统构建和软件测试.73.2 系统软件设计.8第四章第四章 系统测试系统测试 .9第五章第五章 结论结论 .10参考文献参考文献 .10第一章第一章 题目分析题目分析1.11.1、功能要求及指标、功能要求及指标本设计是基于 FPGA 嵌入式 51 软核的设计性实验。在 FPGA 中嵌入 51 软核后,FPGA 就有了 51 单片机所有的功能,就相当于在 51 单片机上进行数字钟的设计。此次设计的数字钟具有年、月、日、时、分、秒计数显示功能,以 24 小时循环计时显示;具有清零,调节小时、分钟功能;具有整点提示、定时报警功能,使用蜂鸣器报警。1.21.2、设计思路、设计思路 本设计首先要解决的就是嵌入 51 软核的问题。现在网络上有很多现成的 51软核的 VQM 程序,可以直接拿来使用。把 CPU、锁相环、数据 RAM、程序ROM,都放在同一片 FPGA 内,从而构成 SOC 系统,这将使系统的设计效率和系统性能获得极大的提高,这也是现代电子设计技术的发展方向。其次就是单片机程序编写的问题。在了解数字钟所要实现的功能之后就可以用 C 来编写程序,只要有一定的单片机编程基础就可以很快写出。图 1 是总体设计思路框图。图 1 总体设计思路框图第二章第二章 方案比较与选择方案比较与选择2.12.1 方案一方案一利用 EDA 技术自顶向下的设计方法,完全由 VHDL/Verilog HDL 硬件描述语言,在 Quartus II 开发平台下进行编译、仿真、下载,实现基本计时显示和设置、调整时间、闹钟和秒表功能。系统主要由计数器组成,再加上控制及显示电路实现数字钟的设计。系统框图如图 2 所示。图 2 基于 FPGA 控制的系统框图采用硬件描述语言和 PLD 器件相结合进行数字集成电路的设计简单方便,EDA 技术的发展在一定程度上实现了硬件设计的软件化。但是此方法很难实现整点提示这一功能,不能完全实现题目的要求,在定时和对时时也很麻烦,显示界面太单一,不够直观。2.22.2 方案二方案二采用 AT89C51 为控制核心,使用单片机的 T0 定时器来实现秒的计数,T1产生 1KHZ 的报警频率。结合相关的元器件(LCD1602 液晶显示器、4*4 键盘等) ,再通过编写单片机程序语言,达到制作数字钟的目的。使用此方法价格便宜,但与使用 FPGA 相比,前者系统集成度低,外围电路复杂,功耗高。系统框图如图 3 所示。图 3 基于单片机控制的系统框图2.32.3 方案三方案三在 FPGA 中嵌入 51 软核,软核在接上 ROM、RAM 和 PLL 等外围电路之后就成为一个完整的 8051 单片机。此单片机 CPU 核与传统 MCS-51 单片机完全兼容,但速度约为传统单片机的 20 倍,优化良好的条件下,主频最高可达250MHz;同样用 C 或汇编语言完成软件设计,而且系统集成度高,稳定。使用 LCD1602 作显示器,可以使显示界面更加的直观,多样化。系统框图如图 4所示。图 4 基于 51 IP 软核控制的系统框图 综合以上分析、比较,此处选择方案三进行设计。第三章第三章 系统各模块设计系统各模块设计3.13.1、80518051 IPIP 软核的嵌入软核的嵌入3.1.1 基本结构和功能ALUI/O/UARTRAM图 5 8051 结构模块框图 图 6 8051 原理图元件8051 的指令系统与 8051/2、8031/2 等完全兼容,硬件部分也基本相同,例如可接 64KB 外部存储器,可接 256 字节内部数据 RAM,含两个 16 位定时/计数器,全双工串口,含节省功耗工作模式,中断响应结构等等。结构模块框图和原理图元件分别如图 5 和 6 所示。与普通 8051 不同之处主要有:1、8051 是以网表文件的方式存在的,只有通过编译综合,并载入 FPGA 中才以硬件的方式工作,而普通 8051 总是以硬件方式存在的;2、8051 无内部 ROM 和 RAM,所有程序 ROM 和内部 RAM 都必须外接。3、以软核方式存在能进行硬件修改和编辑;能对其进行仿真和嵌入式逻辑分析仪实现实时时序测试;能根据设计者的意愿将 CPU、RAM、ROM、硬件功能模块和接口模块等实现于同一片 FPGA 中(即 SOC) 。4、与普通 8051 不同,8051 的 4 个 I/O 口是分开的。例如 P1 口,其输入端P1I 和输出端 P1O 是分开的,如果需要使用 P1 口的双向口功能,必须外接一些电路才能实现。图 7 所示的是单片机中的一个端口构成的双向口(P1 口)电路连接方法。图 7 8051 单片机 I/O 口设置成双向口的电路3.1.2 8051 软核系统构建和软件测试图 8 是 8051 核实用系统的最基本构建顶层原理图,主要由 4 个部件构成:1、8051 核。由 VQM 原码表述:CPU_Core.vqm,可以直接调用。该元件可以与其他不同语言表述的元件一同综合与编译。2、嵌入式锁相环 PLL50。本实验锁相环的频率设置为 24MHz。3、程序 ROM,LPM_ROM。图 8 中设置的 ROM 容量是 4K 字节,对于一般的应用足够了。此 ROM 可以加载 HEX 格式文件作为单片机的程序代码。这里 HEX 程序代码由 KEIL 程序编译器生成(图中已加载了 1.HEX) 。4、数据 RAM,LPM_RAM。图 8 中设置的 LPM_RAM 容量是 256 字节。高 128字节须用间接寻址方式访问。图 8 8051 核实用系统的最基本构建顶层原理图向软核中下载程序代码有两种方法,如下:1、Quartus II 打开的工程,在工程管理窗,双击图左侧 rom4KB,在右侧出现该元件文件,其初始化文件路径指示在 1.HEX 上(图 9) 。下载 SOF 文件后可以测试数字钟的功能了。图 9 ROM 初始化文件路径2、利用 In-System Memory Content Editor 下载。在单片机程序编译环境KEIL 中修改程序 Text1.c,编译,并用“Tools”菜单中的工具:In-System Memory Content Editor(图 10)下载编译代码:1.hex,再观察软硬件的工作情况。8051 的软件调试也可以使用 In-System Memory Content Editor 来完成。图 10 利用 In-System Memory Content Editor 下载程序 HEX 代码3.23.2 系统软件设计系统软件设计本程序是在 KEIL 中,使用 C 语言编写。以 LCD1602 为显示器,4*4 键盘为输入设备,很好的完成了数字钟的所有功能。软件流程图如下所示:键盘扫描有键按下?判断键值指令对时定时切换显示否是图 11 系统软件流程图第四章第四章 系统测试系统测试 本次设计完全实现了题目的所有要求,系统的实物图见附录 1。系统测试方法及结果如下所述:1、系统上电后,开机界面显示“welcome to use!”5s。5s 之后清屏,并显示软件初始化时的年、月、日、时、分、秒。系统自动走时。实物图见附录2 所示。2、当按下 4*4 键盘上的“定时”键后,LCD 上出现提示“Set time:” ,然后在键盘上输入要定时的时间,按下确定键 LCD 上显示“Set time:”+输入的时间。如果输入错误,可以按下“删除”键删除当前输入值。实物图见附录 2所示。3、当按下键盘上的“对时”键后,LCD 上出现提示“Adjust time:” ,初始化开始然后输入要对时的时间,按下确定键 LCD 上显示当前输入的时间, “Adjust time:”消失。如果输入错误,可以按下“删除”键删除当前输入值。实物图见附录 2 所示。4、按下键盘上的“取消”键可以取消任意时刻的对时或定时操作。5、按下键盘上的“切换”键可以切换年、月、日和定时时间的显示。6、当时间到达之前定时时间后,开始报警。由蜂鸣器发出 1KHZ 的报警声音,只有按下取消键报警才会停止。7、具有整点报时功能。整点报时时间如果同报警时间一致,则只报警,不会整点报时。整点报时时间持续 1s,也是由蜂鸣器发出 1KHZ 的报警声音。第五章第五章 结论结论经过两个礼拜的努力,设计出了完全符合此次题目要求的数字钟。此数字钟操作简单、方便、稳定,显示界面也很清晰、明了。把 CPU、锁相环、数据RAM、程序 ROM、接口模块、通信模块、显示控制模块、数据采样和信号发生模块等等,都放在同一片 FPGA 内,从而构成 SOC 系统,这将使系统的设计效率和系统性能获得极大的提高,这也是现代电子设计技术的发展方向。参考文献参考文献1 康华光 电子技术基础 数字部分M 北京.高教出版社 2006.12 潘 松 EDA 技术实用教程M.北京.科学出版社2002.103 潘 松. EDA 技术与 VHDLM.北京.清华大学出版社,2005.7附录 1:实物总体图附录 2:功能演示图 附录 3:源程序#include #include #include #include void set_time();void adjust_time();void display_day();void display_time();void display_Settime();void main(void) unsigned char temp1=0; init(); Lcd_Init(); DisplayString(0,0,Welcome to use!); display_time();/调用显示时间函数 Delay(65535);Delay(65535);Delay(65535);Delay(65535); clear_lcd(15,0); display_day();/调用显示日期 while(1) temp1=KeyScan(); switch(temp1) case 10:temp1=0;if(flag=0) display_day();flag=1;else if(flag=1) display_Settime();flag=0; break;/切换定时和日期显示 case 11:temp1=0;flag2=0;clear_lcd(15,0);display_day();TR1=0;ts=0;break;/取消报警时间 case 14:temp1=0;clear_lcd(15,0);set_time();break;/14 为定时键,只清屏一次 case 15:temp1=0;clear_lcd(15,0);adjust_time();break;/15 为对时键 default:break; void set_time(void)/时间设定子函数 unsigned char i=0,temp; unsigned char l_hour,l_minite; unsigned char s_temp=0,0,0,0;/定时 DisplayString(0,0,Set: 00:00 ); while(1) temp=KeyScan(); if(temp10&i4) s_tempi=temp; l_hour=s_temp0*10+s_temp1; l_minite=s_temp2*10+s_temp3; if(i=0) DisplayOneChar(5,0,l_hour/10+0 x30);/将时间显示出来 else if(i=1) DisplayOneChar(6,0,l_hour%10+0 x30); else if(i=2) DisplayOneChar(8,0,l_minite/10+0 x30); else if(i=3) DisplayOneChar(9,0,l_minite%10+0 x30); i+; else if(temp=13) /有确认键,确认输入 DisplayString(0,0,Time:);flag=0; s_hour=l_hour;s_minite=l_minite; break; else if(temp=11)/输入过程中有取消键,退出输入 clear_lcd(15,0);display_day();flag=1; break; void adjust_time() unsigned char temp,i=0; unsigned char a_temp=0,0,0,0;/对时 DisplayString(0,0,Adjust: 00:00 ); while(1) temp=KeyScan(); if(temp10&i59) second=0;minite+; if(hour=s_hour&minite=s_minite) TR1=1;/闹铃报警,按下取消键才会停止报警 if(minite59) minite=0;hour+; if(hour=s_hour&minite=s_minite) TR1=1;/闹铃报警,按下取消键才会停止报警 else TR1=1;flag1=1; /*整点报时 2s*/ if(hour23) hour=0;day+; display_day(); if(day30) day=1;month+; display_day(); if(month12) month=1;year+; display_day(); display_time();/将时间显示出来 TH0=0 x06; TL0=0 x06;void t1(void) interrupt 3/起报警作用 ts=ts;if(flag1=1) tcount+;if(tcount=500) TR1=0;tcount=0;flag1=0; TH1=(65535-4000)/256; TL1=(65535-4000)%256;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!