EDA基于Verilog数字秒表_第1页
EDA基于Verilog数字秒表_第2页
EDA基于Verilog数字秒表_第3页
EDA基于Verilog数字秒表_第4页
EDA基于Verilog数字秒表_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、石家庄经济学院信息工程学院电子信息工程专业EDA技术课程设计报告题目: 数字秒表 姓 名 学 号 412109 班 级 电子一班 指导教师 王军芬 2015年 1 月 16日课程设计任务书班级 电子一班 姓名 学号 课程设计题目 数字秒表 课程设计起止日期 2014年12月29日 至 2015年1月16日 实习地点 实验楼5308 课程设计内容与要求:1. 及格:计时显示范围059.99s,有启动和停止两个按键。2.中: 使用四位数码管显示,从零开始计数,前两位显示秒(059),后两位显示0.01秒(099),计满后重新从零开始;有开始、暂停键、复位键,按开始键计数开始,暂停键计数停止,复位计

2、数清零;3.良: 具有记录最近5次计时操作结果的功能。按暂停键后停止计数,再按开始键下一组数据开始计数,按复位全部清零;再按暂停键可查看已保存的数据,按开始键翻看每一组数据,数据存储了几组,查看时就只循环查看几组。4.优: 使用AT24C04记录5次计数操作结果。 指导教师 王军芬 2014年 12月29日一、设计原理与技术方法:1.设计方案本电路的设计实现了中的要求,分成5个模块进行设计,分别为:分频模块、数字秒表计数模块、数码管位选模块,数码管显示模块、按键消抖模块。 (1)分频模块 本模块的主要作用是将50mhz的频率分频为100hz和2000hz的频率。因为秒单位后面的最小单位是0.0

3、1s,所以要用到100hz的频率为计数做准备。且数码管位选需要一个时钟2000hz,目的是为了让扫描速度比较快,让我们视觉觉得四个数码管同时亮。(2)计数模块 执行计时功能,计时方法为对标准时钟脉冲计数。计时范围是0秒-59.99秒,那么计时采用1个六进制计数器和3个十进制计数器构成,其中毫秒位、十毫秒位、秒位采用十进制计数器,十秒位采用六进制计数器。(3)数码管位选模块 因为该芯片用的是并口输出,所以此处应有数码管位选部分,此处是用一个状态机做的,因为是共阳的,所以当哪个管子为低时,哪个管子亮,当扫描速度特别快时,利用人的视觉效果,则四个管子是同时亮的(4)数码管显示模块 该芯片是共阳数码管

4、,所以接有低电平的管段发亮。(5)按键消抖部分 因为计数部分有开始,暂停,复位三个按键,为了消除毛刺现象对实验的影响,所以必须对三个按键消抖。 100HZ2. 方案设计流程图计数模块分频模块50MHZ晶振 2000HZ按键消抖模块数码管位选模块数码管显示部分 图1 设计流程图 分频模块将50MHz分频为100Hz和2000HZ的频率,100赫兹为计数模块计数所使用;计数模块主要完成十秒、秒、十分妙、百分秒的计数工作;消抖模块连接三个按键,此处是为了保证系统能正确识别按键开关,就必须对按键进行消抖动处理,分别实现开始,暂停,复位功能,计数模块输出连接到数码管位选显示模块,数码管位选模块连接到数码

5、管显示模块,2000赫兹连接消抖模块和位选模块,数码管正确显示秒表数字;3.实验程序和原理图3.1管脚分配图3.2总电路连线及波形仿真图:图2 电路原理总图3.3 5个模块原理图、波形仿真图及源程序:(1)分频模块:图3 分频模块原理图 因为将50MHz的频率分成100Hz和2000HZ的过程中涉及到到频率范围太大,进行波形仿真时,无法正常显示。设计原理: 将50MHz分频为clk1100Hz和clk2 2000HZ的频率,先分频到2000HZ,分频倍数,N1=25000,所以此处用到的是偶数倍分频,其原理如下:使用一模N1计数器模块即可实现,即每当模N1计数器上升沿从0开始计数至N1时,输出

6、时钟进行翻转,同时给计数器一复位信号使之从0开始重新计数,在把2000赫兹频率分为100赫兹,分频倍数为N2=20,每当模N2计数器上升沿从0开始计数至N2时,输出时钟进行翻转,同时给计数器一复位信号使之从0开始重新计数,为以此循环即可。源程序:module fenpin(clk,clk1,clk2);input clk;output clk1;output clk2;reg 15:0k2;reg7:0 k1;reg clk2;reg clk1;always(posedge clk)begin if(k2<16'd12499) k2=k2+8'd1;else k2=0;i

7、f(k2=16'd12499)clk2=clk2+1;/clk2=2000hzendalways (posedge clk2)beginif(k1<8'd9)k1=k1+8'd1;else k1=0;if(k1=8'd9)clk1=clk1+1;/clk1=100hzend endmodule(2)计数模块:图4 计数模块原理图 图5 波形仿真图设计原理:此处rst是复位键键,当其处于高电平时,全部清零,start是开始键,pause是暂停键,三个按键都用了 一个T触发器,按下复位键,其他二个按键没用,按下开始键计数开始,按下暂停键计数停止,再按开始键计数

8、开始。其计数部分由一个六进制的计数器和三个十进制的计数器组成,首先是百分秒位msl开始从零计数,当其计数到九时,向十分秒位msh进一,同时将百分秒位清零;当十分位计数到九时,向秒位sl进一,同时将十分妙位和百分秒位清零;当秒位计数到九时,向十秒位sh进一,同时将秒位、十分秒位和百分秒位清零;当十秒位计数到五时,将所有位清零。源程序:module cout(clk,start,pause,msh,msl,sh,sl,rst); input clk; input start,pause,rst; output 3:0msh,msl,sh,sl; reg3:0 msh,msl,sh,sl; reg

9、cn1; reg start1=1,pause1=1,rst1=0; always (posedge start) start1=start1; always (posedge pause) pause1=pause1; always (posedge rst) rst1=rst1+1'b1; always (posedge clk or negedge rst1 ) begin if(!rst1) beginmsh,msl<=8'h00; cn1<=0; end else if(pause1start1) begin if(msl=9) begin msl<

10、=0; if(msh=9) begin msh<=0; cn1<=1; end else msh<=msh+1'h1; end else begin msl<=msl+1'h1; cn1<=0; end end end always (posedge cn1 or negedge rst1 ) begin if(!rst1) beginsh,sl<=8'h00; end else if(start1pause1) begin if(sl=9) begin sl<=0; if(sh=5) sh<=0; else sh<

11、=sh+1'h1; end else begin sl<=sl+1'h1; end endendendmodule(3)按键消抖模块:图6 消抖模块原理图设计原理: 这是一种去除双边沿抖动或毛刺的电路设计,它的主要原理分别用二个计数器对输入信号的高电平和低电平的持续时间(脉宽)进行计数(在时间上同时但在计数上独立)。只有当高电平的计数时间大于某个值,则判为遇到正常信号,若低电平的计数时间大于某值则输出为0.,此处是为了保证系统能正确识别按键开关,就必须对按键进行消抖动处理 源程序:module xiaodou(clk,kin,kout);/按键消抖 input clk,k

12、in; output kout; reg kout; reg 3:0kh,kl; always(posedge clk) begin if(!kin) kl<=kl+1'b1; else kl<=4'b0000; end always(posedge clk) begin if(kin) kh<=kh+1'b1; else kh<=4'b0000; end always(posedge clk) begin if(kh>4'b1100) kout<=1'b1; else if(kl>4'b0111

13、) kout<=1'b0; end endmodule (4)数码管位选模块: 图 7 数码管位选扫描模块原理图设计原理 此处设计用了一个状态机,输入了四个数据当现态c_st为s0=0时,选择第一个管子亮,且显示的是第一个是shi_h数据,当现态c_st为s1=1时,选择第二个管子亮,且显示的是第二位shi_l数据,当现态c_st为s2=2时,选择第3个管子亮,且显示的是第3位fen_h数据,当现态c_st为s3=3时,选择第4个管子亮,且显示的是第4位shi_l数据,且4个管子为共阳,当wei3.0对应的数据为低电平时则哪个管子亮。源程序module wei_choose(cl

14、k,wei,shi_h,shi_l,fen_h,fen_l,duan);input 3:0shi_h,shi_l,fen_h,fen_l;input clk;output 3:0duan;output 3:0wei;reg 3:0duan;reg 3:0wei;parameter s0=0,s1=1,s2=2,s3=3;reg 3:0c_st,n_st;always(posedge clk)beginc_st<=n_st;endalways*begincase(c_st)s0:begin n_st=s1;wei<=4'b0111;duan<=shi_h; ends1:

15、begin n_st=s2;wei<=4'b1011;duan<=shi_l; ends2:begin n_st=s3;wei<=4'b1101;duan<=fen_h; ends3:begin n_st=s0;wei<=4'b1110;duan<=fen_l; enddefault:begin n_st=s1;wei<=4'b0111;duan<=shi_h; endendcaseendendmodule(5)数码管显示模块 图8 数码管显示模块原理图设计原理: 设输入的a3:04位码输出控制7段共阳数码管的LE

16、D7S6:0,输出信号LED7S6:0的7位分别接共阳数码管的7个段,高位在左,低位在右,接有低电平的段发亮源程序:module decl7s (a,led7s); input3:0a; output6:0led7s; reg6:0led7s;always(a) case(a) 4'b0000 : led7s<=7'b0111111; 4'b0001 : led7s<=7'b0000110; 4'b0010 : led7s<=7'b1011011; 4'b0011 : led7s<=7'b1001111;

17、4'b0100 : led7s<=7'b1100110; 4'b0101 : led7s<=7'b1101101; 4'b0110 : led7s<=7'b1111101; 4'b0111 : led7s<=7'b0000111; 4'b1000 : led7s<=7'b1111111; 4'b1001 : led7s<=7'b1101111; 4'b1010 : led7s<=7'b1110111; 4'b1011 : led7s&

18、lt;=7'b1111100; 4'b1100 : led7s<=7'b0111001; 4'b1101 : led7s<=7'b1011110; 4'b1110 : led7s<=7'b1111001; 4'b1111 : led7s<=7'b1110001; default : led7s<=7'b0111111; endcase endmodule 课程设计成果展示图 9 成果展示图一图 10 成果展示图二图 11 成果展示图三 图12 成果展示图4二、课程设计工作记录:1 设计步骤与时间安排:12月28号 确定设计题目,查找相关资料;12月29号 查找学习开发板的相关内容;12月30号到31号 编程、设计模块并进行仿真验证以及下载实现单个模块功能; 1月4号到5号 编程、设计模块并进行仿真验证以及下载实现单个模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论