《2022年电子表微控器设计FPGA课程设计分析方案 .docx》由会员分享,可在线阅读,更多相关《2022年电子表微控器设计FPGA课程设计分析方案 .docx(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 西安邮电学院FPGA 课程设计报告题目:电子表微控器设计院系:电子工程学院专业班级:微电子 0901同学姓名:邢青青导师姓名:黄海生起止时间: 2022/6/18年月日1 / 15 至 2022/6/29名师归纳总结 - - - - - - -第 1 页,共 15 页精选学习资料 - - - - - - - - - 基于 FPGA的电子表微控器设计一 试验目的:设计一个简洁的电子表微控器;用 FPGA开发板的按键作为电子表的时间初值设置掌握信号,数码管当前时间值 输出;用按键挑选分别输出:分、秒、1/10 秒;二 功能描述:1 用开发板的拨码开
2、关作为电子表时间初值设置掌握信号,第一设置初始时 间,并用数码管显示出当前时间,共用 5 个数码管,分别显示分,秒,和1/10 秒,其中,分和秒均用两个数码管表示高低位,示;1/10 秒用一个数码管表2 当复位信号有效时 复位信号低有效 ,系统清零,并且将全部时间都清 零,不管是显示状态仍是调整状态;3 拨码开关是总掌握开关,为低时才可以修改即设置新时间,为高是显示当 前时间,包括修改后的时间;4 按键 1 是 1/10 秒的初值设置和修改掌握键;5 按键 2 是秒的初值设置和修改掌握键;6 按键 3 是分的初值设置和修改掌握键;7 用数码管显示开头和修改后的时间;8 结构框图:三 输入输出信
3、号描述:其中:Clk: 输入信号,系统时钟,为 50MHZ;Reset: 异步复位信号,当下降沿来暂时有效,此时系统清零,全部输出均为 0;2 / 15 名师归纳总结 - - - - - - -第 2 页,共 15 页精选学习资料 - - - - - - - - - Key: 模式挑选键,用拨码开关实现;当为低电平常,修改当前时间;当为高电平常,输出并用数码管显示当前时间;此操作在复位端无效时进行,如复位端有效,就输出和显示均为 0;Button1: 输入信号,按键 1 是 1/10 秒的初值设置和修改掌握键,当满 10 后进一;Button2: 输入信号,按键 2 是秒的初值设置和修改掌握键
4、,当满 60 后进一;Button3: 输入信号,按键 3 是分的初值设置和修改掌握键,当满 60 后进一;Clk1 ,2: 内部输出信号,为分频后的输出时钟,clk1 掌握按键消抖模块, clk2掌握时钟显示模块;Fen: 内部变量,分的输出;Miao: 内部变量,秒的输出;1/10miao:, 内部变量,用于 1/10 秒的输出;Count:用于计数;LED:是八位输出,用于显示时间;其中分和秒的显示均用两个数码管,一个显示高位,一个显示低位,当低位显示到9 时,向高位进一,直到高位为6 时清零;而 1/10 秒特用两个数码管分别输出,同样低位为 秒的数码管清零;四 功能模块描述:9 时向
5、秒位进一, 1/101 依据设计思想,大体要分以下几个模块,顶层结构框图如图 : 2 顶层模块划分:1 时钟模块: a在这个模块中有1/10 秒,秒,分,通过这几个时间来反映做出来的电子表, 用板子里面的 50MHZ产生出 10HZ的分频 即 0.1 秒作为 1/10 秒,从而进行计时;b 初值设置开关 时, 1/10 秒,秒,分都停止,开头修改时间;当拨到高电平 1时,说明时间设置完毕,时钟开头正常显示和计时;按键 1修改 1/10 秒):按一次, 1/10 秒加 1,加到 10 清零;按键 2修改秒):按一次,秒加 按键 3 按键消抖模块:这个模块完成的是按键的消抖,使用系统自带25MHZ
6、,再进行按键采样,人一般的反应时间在 设置为 25MHZ*50ms;3 LED 显示模块:50MHZ时钟分频得到的 50ms 左右,所以采样的计数将计时模块所计数,输出到LED的输入端,从而来掌握LED灯的显示,即对应的哪一段该亮那一段该灭,以此来显示时间;4 时钟分频模块:将板子的50MHZ时钟经过分频,从而得到10HZ 时钟,用于电子表计时,分频得到 25MHZ,用于按键消抖模块时对按键采样的频率;3 子模块具体设计: 1 键盘模块设计:Key: 用它作为时钟的总开关,拨码开关,当它低电平0)有效时,开头设置电子表的初值,否就,显示当前时间;当按键 1 为 1 时显示 1/10 秒,当按键
7、 2 为1 时显示秒,当按键 3 为 1 时显示分;Reset:作为电子表的复位,当它为低电平常,把电子表的 1/10 秒,秒,分清零; Button1:作为 1/10 秒的初值设置掌握键 每按键一次, 1/10 秒加 1,到9 时在返回到 0 并且向秒进位 1); Button2:作为秒的初值设置和修改掌握键每按键一次,秒加1,累加到 59 时,返回到 0 并且向分进位 1); Button3:作为分的初值设置和修改掌握键 时钟模块设计:1. 利用板子中晶振产生的 50MHZ频率,把它分频成 0.1 秒即 10HZ;2. 上面分频得到的 0.1 秒就是电子表的最小时间单位,当 1/10 秒从
8、 0开头走到 9 时,向秒进位 1 的同时,从 9 跳转到 0,重新开头从零计时;1/10 秒得到进位时,秒加1,直到计数计到3. 秒从 0 开头计数,当从59 时,向分进位 1 的同时,从 59 跳转到 0,重新开头从零计时;4. 分从0 开头计数,当从秒得到进位时,分加1,直到计数计到59时,跳转到 0,从零开头重新计时; 3 LED 数码管显示模块:第一显示初值 1/10 秒,秒,分,假如有修改,那么 LED液晶显示当前的时间值;数码管编码: 0 输入1000000 输出 1 1111001 2 0100100 3 0110000 4 0011011 5 0010010 4 / 15 名
9、师归纳总结 - - - - - - -第 4 页,共 15 页精选学习资料 - - - - - - - - - 6 0000010 7 其他1111000 8 0000000 9 0010000 xxxxxxx 五 程序清单:1 分频器:; input clk,reset; output clk1,clk2; reg clk1,clk2 ;reg22:0count1;Reg1:0count2 ; alwaysposedge clk or negedge reset/clk1 begin if.reset begin count1=0; clk1 begin ; count1=0 clk1=cl
10、k1 end else begin count122:0/clk2 begin if.reset begin Count2=0; Clk2 begin Count2=0; Clk2=clk2 end else begin Count21:0=count21:0+1b1; end end end endmodule ;input clk1,reset;input button1,button2,button3,key;output7:0 fen,miao;output3:0 one_miao;6 / 15 名师归纳总结 - - - - - - -第 6 页,共 15 页精选学习资料 - - -
11、- - - - - - reg 7:0 fen,miao reg3:0 one_miao;alwaysposedge clk1 or negedge reset /reset. begin if.reset begin one_miao=0 ; fen=0 ; miao /key=1 begin one_miao3:0 begin one_miao3:0=0; miao3:0 begin miao3:0=0; miao7:4 begin ; miao6:0=0 fen3:0 begin fen3:0=0; fen7:4 begin fen7:4=0; miao=0; one_miao/ beg
12、in one_miao3:0 begin one_miao3:0=0; miao3:0 begin miao3:0 ; begin miao3:0=0; miao7:4 begin miao7:0=0; fen3:0 begin fen3:0 begin fen3:0=0; fen7:4 begin ; fen7:4=0 miao=0; one_miao ; input3:0dec_in1; output6:0dec_out1; reg6:0dec_out1 alwaysdec_in13:0 begin casedec_in13:0 4d0:dec_out1=7b1000000; 4d1:de
13、c_out1=7b1111001; 4d2:dec_out1=7b0100100; 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_hi
14、gh;reg 22:0 count_low;reg key_reg ;assign key_out = key_reg;always posedge clk2 / if key_in = 1b0 count_low = count_low + 1;else count_low / if key_in = 1b1 count_high = count_high +1;else count_high / ;begin if count_high = 23h 25_0000 key_reg key_reg = 1b0;10 / 15 名师归纳总结 - - - - - - -第 10 页,共 15 页
15、精选学习资料 - - - - - - - - - else key_reg ; input clk,key,reset,button1,button2,button3; output7:0dec_out1,dec_out2,dec_out3,dec_out4,dec_out5 wire3:0one_miao; wire7:0miao,fen; fenpinqi u1.clkclk,.resetreset,.clk1clk1 clock u2.resetreset,.clk1clk1,.keykey, .button1button1,.button2button2, o; .button3but
16、ton3,.fenfen,.miaomiao,.one_miaoone_miakey u3.clk2clk2,.key_inkey_in,.key_outkey_out shumaguan1 u4.dec_in1one_miao,.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
17、,.dec_out5dec_out5;endmodule 鼓励:module top_test; reg clk,key,reset,button1,button2,button3; wire7:0dec_out1,dec_out2,dec_out3,dec_out4,dec_out5 top top_testreset,clk,key,button1,button2,button3,dec_out1,dec_out2,dec_ out3,dec_out4,dec_out5; initial begin reset=0; clk=0; button1=1 button2=1; button3=
18、1; #10 reset=1 #10 key=1;#20 key=0 ;11 / 15 名师归纳总结 - - - - - - -第 11 页,共 15 页精选学习资料 - - - - - - - - - button1=0 #20 button2=0 ;#20 button3=0 ; end always#5 clk=clk;endmodule 六 仿真结果:1 总体波形显示:2 综合及布局布线报告和引脚分布报告:12 / 15 名师归纳总结 - - - - - - -第 12 页,共 15 页精选学习资料 - - - - - - - - - 七 试验心得体会:我觉得这次的课程设计是我上高校以
19、来最有收成的一次课程设计;第一,通过这次课程设计,我对更加的明白了,不像以前,写好程序,不会下载到板子,仍要找同学帮忙;而且,对所使用的这个板子有了进一步的明白,由于这次课程设计,我使用到了它的按键、拨动开关、LED 显示;其次,我这次做的是电子表,虽然说难度不是很大,但当把按键加到程序中时,我碰到了难题;每次按下按键调整秒和 button3 的有效语句,我把它全写在1/10 秒时,分也在发生变化,后来才发觉是由于没有 case情形下,所以会显现那种情形;一开头自己思路很清晰,但是就是写不出来正确的代码,不是这有问题就是那有问题每次加入按键,转变的 时间不是老师所要求的,经过老师的提示和同学的
20、争论,我才发觉存在的问题,一个是按键消抖时采样的时间不够,一个是通过按键转变时钟的时间时,要把clock 第一置成低电平,这样没有上升沿后,电子表的 1/10 秒就不会走了;而且按键消抖模块必需得有,有时 候由于按得时间长了,他就会连续跳过好几个,加上按键消抖,这种现象就不会产生;通 过解决这些问题,使我的 FPGA 的功底更加的坚固了,这将会对我将来找工作有很大的帮 助;我们的指导老师是促成我这次能胜利的尽早的完成课程设计最大帮忙;以前由于自己 动手的比较少,对软件很生疏,不周到怎么装驱动,不知道怎么下载,老师检查让我自己 从头操作一遍,感觉很难,可怕自己不会弄,结果发觉仍可以,就是管脚安排
21、有点问题,由于不知道怎么全部复制,只会一个一个输入,显得很慢,后来才知道可以一起输进去,但是要留意,一起复制过去要在管脚次序相同的条件下,要不然显示的就是与本身完全相 反的数字,由于你的管脚安排的就是反的,除非你改程序中的译码,不过仍是挺庆幸的,究竟学会了些东西一其他的仍好了,也对软件的操作更加熟识了;最终,人不行能始终坐在电脑面前写代码,所以适当的时候应当转移一下留意力,比 如去帮忙一下其他同学,由于有可能通过帮忙其他同学,你能找到解决你自己问题的方 法;刚开头时我写时钟计时模块的代码时,仿真总不胜利,就是由于没有留意时钟的上升沿;仍有一点就是写电子表计时代码时,没有联系到LED 是使用 B
22、CD 码,当我看到其他人在写代码时才豁然开朗;原先写成 BCD 码更简洁,由于直接可以使用到显示;总之,收获很大;八 参考资料等verilog数字系统设计教程其次版夏宇闻著杜慧敏 .基于 verilog 的 FPGA 设计基础 .西安电子科技高校,13 / 15 名师归纳总结 - - - - - - -第 13 页,共 15 页精选学习资料 - - - - - - - - - 西安邮电学院电子功能学院系FPGA 成果鉴定表同学姓名 进行时间邢青青班级/学号微电子 0901 /04094030/ 2022年 6 月 18 日 2022 年 6 月 28 日与教案任务方案结合程度10分)学习内容
23、20 分)与专业培育结合程度 6 分)其它4 分)成果鉴定接受单位实践才能 10分)评判学习态度 6 分)20 分)学习纪律 4 分)报告鉴定报告内容与实践过程紧密结合15分)报告内容与教案方案内容紧密结合15分)评阅老师姓名职称成果评语评阅老师签字年月日14 / 15 名师归纳总结 - - - - - - -第 14 页,共 15 页精选学习资料 - - - - - - - - - 西安邮电学院电子工程学院系FPGA 过程考核表同学姓名单位)邢青青班级 /学号微电子 0901/04094030 承担任务试验室所在部门实施时间2022 年 6 月 18 日 2022 年 6 月 28 日第一周具体内容其次周 指导老师 师傅)姓名学习态度职务或职称 不仔细 仔细 一般指导老师 师傅)学习纪律 全勤 有时缺勤 常常缺勤对同学的评判实践才能 很强 一般 较差指导老师 师傅)对同学专业学问或社会实践能力等情形的看法指导老师 师傅)签字年月日15 / 15 名师归纳总结 - - - - - - -第 15 页,共 15 页