2022年电子表微控器设计FPGA课程设计分析方案.docx

上传人:H****o 文档编号:12957253 上传时间:2022-04-27 格式:DOCX 页数:19 大小:317.24KB
返回 下载 相关 举报
2022年电子表微控器设计FPGA课程设计分析方案.docx_第1页
第1页 / 共19页
2022年电子表微控器设计FPGA课程设计分析方案.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《2022年电子表微控器设计FPGA课程设计分析方案.docx》由会员分享,可在线阅读,更多相关《2022年电子表微控器设计FPGA课程设计分析方案.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品学习资源西安邮电学院FPGA 课程设计报告题目:电子表微控器设计院系:电子工程学院专业班级:微电子 0901同学姓名:邢青青导师姓名:黄海生起止时间: 2021/6/18至 2021/6/29年月日欢迎下载精品学习资源基于 FPGA的电子表微控器设计一 试验目的:设计一个简洁的电子表微控器;用 FPGA开发板的按键作为电子表的时间初值设置掌握信号,数码管当前时间值输出;用按键挑选分别输出:分、秒、1/10 秒;二 功能描述:1 用开发板的拨码开关作为电子表时间初值设置掌握信号,第一设置初始时 间,并用数码管显示出当前时间,共用 5 个数码管,分别显示分,秒,和1/10秒,其中,分和秒均用两

2、个数码管表示高低位,1/10秒用一个数码管表示;2 当复位信号有效时 复位信号低有效 ,系统清零,并且将全部时间都清零,不管是显示状态仍是调整状态;3 拨码开关是总掌握开关,为低时才可以修改即设置新时间,为高是显示当前时间,包括修改后的时间;4 按键 1 是 1/10 秒的初值设置和修改掌握键;5 按键 2 是秒的初值设置和修改掌握键;6 按键 3 是分的初值设置和修改掌握键;7 用数码管显示开头和修改后的时间;输入输出信号描述:8 结构框图:三其中:Clk: 输入信号,系统时钟,为 50MHZ;Reset: 异步复位信号,当下降沿来暂时有效,此时系统清零,全部输出均为0;欢迎下载精品学习资源

3、Key: 模式挑选键,用拨码开关实现;当为低电平常,修改当前时间;当为高电平常,输出并用数码管显示当前时间;此操作在复位端无效时进行,如复位端有效,就输出和显示均为 0;Button1:输入信号,按键 1 是 1/10 秒的初值设置和修改掌握键,当满10 后进一;Button2:输入信号,按键 2 是秒的初值设置和修改掌握键,当满60 后进一;Button3:输入信号,按键 3 是分的初值设置和修改掌握键,当满60 后进一;Clk1 ,2: 内部输出信号,为分频后的输出时钟,clk1掌握按键消抖模块, clk2 掌握时钟显示模块;Fen: 内部变量,分的输出;Miao: 内部变量,秒的输出;1

4、/10miao:,内部变量,用于 1/10 秒的输出;Count:用于计数;LED:是八位输出,用于显示时间;其中分和秒的显示均用两个数码管,一个显示高位,一个显示低位,当低位显示到9 时,向高位进一,直到高位为6 时清零;而 1/10 秒特用两个数码管分别输出,同样低位为9 时向秒位进一, 1/10 秒的数码管清零;四 功能模块描述:1 依据设计思想,大体要分以下几个模块,顶层结构框图如图:2 顶层模块划分:1时钟模块:a在这个模块中有1/10秒,秒,分,通过这几个时间来反映做出来的电子表, 用板子里面的 50MHZ产生出 10HZ的分频 即 0.1 秒作为 1/10 秒,从而进行计时;b

5、初值设置开关 时, 1/10秒,秒,分都停止,开头修改时间;当拨到高电平1 时,说明时间设置完毕,时钟开头正常显示和计时;按键 1修改 1/10 秒):按一次, 1/10 秒加 1,加到 10 清零;按键 2修改秒):按一次,秒加 1,加到 60 清零;按键 3 按键消抖模块:这个模块完成的是按键的消抖,使用系统自带 50MHZ时钟分频得到的25MHZ,再进行按键采样,人一般的反应时间在 50ms 左右,所以采样的计数设置为 25MHZ*50m;s3 LED 显示模块:将计时模块所计数,输出到LED 的输入端,从而来掌握 LED 灯的显示,即对应的哪一段该亮那一段该灭,以此来显示时间;4 时钟

6、分频模块:将板子的 50MHZ时钟经过分频,从而得到10HZ 时钟,用于电子表计时,分频得到 25MHZ,用于按键消抖模块时对按键采样的频率;3 子模块具体设计:1键盘模块设计:Key: 用它作为时钟的总开关,拨码开关,当它低电平0)有效时,开头设置电子表的初值,否就,显示当前时间;当按键1 为 1 时显示 1/10 秒,当按键 2 为1 时显示秒,当按键 3 为 1 时显示分;Reset:作为电子表的复位,当它为低电平常,把电子表的1/10 秒,秒, 分清零;Button1:作为 1/10 秒的初值设置掌握键 每按键一次, 1/10 秒加 1,到9 时在返回到 0 并且向秒进位 1);But

7、ton2:作为秒的初值设置和修改掌握键每按键一次,秒加1,累加到 59 时,返回到 0 并且向分进位 1);Button3:作为分的初值设置和修改掌握键 时钟模块设计:1. 利用板子中晶振产生的 50MHZ频率,把它分频成 0.1 秒即 10HZ;2. 上面分频得到的0.1 秒就是电子表的最小时间单位,当1/10 秒从 0 开头走到 9 时,向秒进位 1 的同时,从 9 跳转到 0,重新开头从零计时;3. 秒从 0 开头计数,当从 1/10 秒得到进位时,秒加 1,直到计数计到59 时,向分进位 1 的同时,从 59 跳转到 0,重新开头从零计时;4. 分从 0 开头计数,当从秒得到进位时,分

8、加1,直到计数计到59时,跳转到 0,从零开头重新计时;3 LED数码管显示模块:第一显示初值 1/10 秒,秒,分,假如有修改,那么LED 液晶显示当前的时间值;数码管编码:输入输出010000001111100120100100301100004001101150010010欢迎下载精品学习资源6000001071111000800000009其他0010000xxxxxxx五 程序清单:1 分频器:;input clk,reset;output clk1,clk2;reg clk1, clk2 ;reg22:0count1;Reg1:0count2;alwaysposedge clk o

9、r negedge reset/clk1 beginif.reset begincount1=0;clk1begincount1=0;clk1=clk1;endelsebegincount122:0/clk2begin if.reset beginCount2=0;Clk2 beginCount2=0;Clk2=clk2;end elsebeginCount21:0=count21:0+1b1;endend endendmodule;input clk1,reset;input button1,button2,button3,key;output7:0 fen,miao;output3:0 o

10、ne_miao;欢迎下载精品学习资源reg 7:0 fen,miao;reg3:0 one_miao;alwaysposedge clk1 or negedge reset /reset. beginif.reset beginone_miao=0 ;fen=0 ;miao/key=1 beginone_miao3:0 beginone_miao3:0=0;miao3:0 beginmiao3:0=0;miao7:4 beginmiao6:0=0;fen3:0 beginfen3:0=0fen7:4 begin;fen7:4=0;miao=0one_miao/ beginone_miao3:0

11、 beginone_miao3:0=0;miao3:0 beginmiao3:0 beginmiao3:0=0;miao7:4beginmiao7:0=0;fen3:0 beginfen3:0 beginfen3:0=0fen7:4 begin;fen7:4=0;miao=0one_miao ;input3:0dec_in1;output6:0dec_out1;reg6:0dec_out1;alwaysdec_in13:0begincasedec_in13:0 4d0:dec_out1=7b1000000;4d1:dec_out1=7b1111001;4d2:dec_out1=7b010010

12、0;4d3:dec_out1=7b0110000;4d4:dec_out1=7b0011001;4d5:dec_out1=7b0010010;4d6:dec_out1=7b0000010;4d7:dec_out1=7b1111000;4d8:dec_out1=7b0000000;4d9:dec_out1=7b0010000;default:dec_out1;input clk2; /50MHz clock in input key_in;output key_out;reg 22:0 count_high;reg 22:0 count_low;reg key_reg ;assign key_o

13、ut = key_reg;always posedge clk2 / if key_in = 1b0 count_low = count_low + 1;elsecount_low / if key_in = 1b1 count_high = count_high +1;elsecount_high / beginif count_high = 23h 25_0000 key_reg key_reg = 1b0;欢迎下载精品学习资源elsekey_reg ;input clk,key,reset,button1,button2,button3;output7:0dec_out1,dec_out

14、2,dec_out3,dec_out4,dec_out5;wire3:0one_miao;wire7:0miao,fen;fenpinqi u1.clkclk,.resetreset,.clk1clk1;clock u2.resetreset,.clk1clk1,.keykey,.button1button1,.button2button2,.button3button3,.fenfen,.miaomiao,.one_miaoone_miao;key u3.clk2clk2,.key_inkey_in,.key_outkey_out;shumaguan1 u4.dec_in1one_miao,

15、.dec_out1dec_out1;shumaguan2 u5.dec_in2miao3:0,.dec_out2dec_out2;shumaguan3 u6.dec_in3miao7:4,.dec_out3dec_out3;shumaguan4 u7.dec_in4fen3:0,.dec_out4dec_out4;shumaguan5 u8.dec_in5fen7:4,.dec_out5dec_out5;endmodule鼓励:module top_test;reg clk,key,reset,button1,button2,button3;wire7:0dec_out1,dec_out2,d

16、ec_out3,dec_out4,dec_out5;top top_testreset,clk,key,button1,button2,button3,dec_out1,dec_out2,dec_ out3,dec_out4,dec_out5;initialbeginreset=0;clk=0;button1=1;button2=1;button3=1;#10 reset=1;#10key=1;#20 key=0 ;欢迎下载精品学习资源button1=0;#20 button2=0 ;#20 button3=0 ;endalways#5 clk=clk;endmodule六 仿真结果:1 总体

17、波形显示:2 综合及布局布线报告和引脚分布报告:欢迎下载精品学习资源七 试验心得体会:我觉得这次的课程设计是我上高校以来最有收成的一次课程设计;第一,通过这次课程设计,我对更加的明白了,不像以前,写好程序,不会下载到板子,仍要找同学帮忙;而且,对所使用的这个板子有了进一步的明白,由于这次课程设 计,我使用到了它的按键、拨动开关、LED 显示;其次,我这次做的是电子表,虽然说难度不是很大,但当把按键加到程序中时,我碰 到了难题;每次按下按键调整秒和1/10 秒时,分也在发生变化,后来才发觉是由于没有button3 的有效语句,我把它全写在case情形下,所以会显现那种情形;一开头自己思路很清晰,

18、但是就是写不出来正确的代码,不是这有问题就是那有问题每次加入按键,转变的时间不是老师所要求的,经过老师的提示和同学的争论,我才发觉存在的问题,一个是按键消抖时采样的时间不够,一个是通过按键转变时钟的时间时,要把clock 第一置成低电平,这样没有上升沿后,电子表的1/10 秒就不会走了;而且按键消抖模块必需得有,有时候由于按得时间长了,他就会连续跳过好几个,加上按键消抖,这种现象就不会产生;通过解决这些问题,使我的FPGA 的功底更加的坚固了,这将会对我将来找工作有很大的帮助;我们的指导老师是促成我这次能胜利的尽早的完成课程设计最大帮忙;以前由于自己动手的比较少,对软件很生疏,不周到怎么装驱动

19、,不知道怎么下载,老师检查让我自己从头操作一遍,感觉很难,可怕自己不会弄,结果发觉仍可以,就是管脚安排有点问题, 由于不知道怎么全部复制,只会一个一个输入,显得很慢,后来才知道可以一起输进去, 但是要留意,一起复制过去要在管脚次序相同的条件下,要不然显示的就是与本身完全相反的数字,由于你的管脚安排的就是反的,除非你改程序中的译码,不过仍是挺庆幸的, 究竟学会了些东西一其他的仍好了,也对软件的操作更加熟识了;最终,人不行能始终坐在电脑面前写代码,所以适当的时候应当转移一下留意力,比如去帮忙一下其他同学,由于有可能通过帮忙其他同学,你能找到解决你自己问题的方 法;刚开头时我写时钟计时模块的代码时,

20、仿真总不胜利,就是由于没有留意时钟的上升沿;仍有一点就是写电子表计时代码时,没有联系到LED 是使用 BCD 码,当我看到其他人在写代码时才豁然开朗;原先写成BCD 码更简洁,由于直接可以使用到显示;总之,收成很大;八 参考资料等verilog数字系统设计教程其次版夏宇闻著杜慧敏.基于 verilog 的 FPGA 设计基础 .西安电子科技高校,欢迎下载精品学习资源西安邮电学院电子功能学院系FPGA 成果鉴定表同学姓名邢青青班级/学号微电子 0901 /04094030/进行时间2021年 6 月 18 日 2021 年 6 月 28 日欢迎下载精品学习资源成果鉴定学习内容20 分)接受单位评

21、判20 分)与教案任务方案结合程度 10 分) 与专业培育结合程度 6 分)其它4 分)实践才能 10 分) 学习态度 6 分) 学习纪律 4 分)欢迎下载精品学习资源报告内容与实践过程紧密结合 15 分)欢迎下载精品学习资源报告鉴定60 分)报告内容与教案方案内容紧密结合 欢迎下载精品学习资源评阅老师姓名职称成果评语评阅老师签字年 月 日欢迎下载精品学习资源西安邮电学院电子工程学院系FPGA 过程考核表同学姓名邢青青班级 / 学号微电子 0901/04094030承担任务试验室 单位)所在部门实施时间2021 年 6 月 18 日 2021 年 6 月 28 日第一周欢迎下载精品学习资源具体内容其次周欢迎下载精品学习资源指导老师 师傅)姓名职务或职称学习态度仔细一般不仔细欢迎下载精品学习资源指导老师 师傅) 对同学的评判学习纪律全勤有时缺勤常常缺勤实践才能很强一般较差欢迎下载精品学习资源欢迎下载精品学习资源指导老师 师傅)对同学专业学问或社会实践能力等情形的看法指导老师 师傅)签字年月日欢迎下载

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁