石家庄经济学院信息工程学院
电子信息工程专业 EDA技术课程设计报告
题目: 数字秒表
姓 名 学 号 412109 班 级 电子一班 指导教师 王军芬
2015年 1 月 16日
EDA基于Verilog数字秒表
课程设计任务书
班级 电子一班 姓名 学号 课程设计题目 数字秒表 课程设计起止日期 2014年12月29日 至 2015年1月16日 实习地点 实验楼5—308 课程设计内容与要求: 1. 及格: 计时显示范围0~59。99s,有启动和停止两个按键. 2。中: 使用四位数码管显示,从零开始计数,前两位显示秒(0~59),后两位显示0.01秒(0~99),计满后重新从零开始;有开始、暂停键、复位键,按开始键计数开始,暂停键计数停止,复位计数清零; 3。良: 具有记录最近5次计时操作结果的功能。按暂停键后停止计数,再按开始键下一组数据开始计数,按复位全部清零;再按暂停键可查看已保存的数据,按开始键翻看每一组数据,数据存储了几组,查看时就只循环查看几组。 4.优: 使用AT24C04记录5次计数操作结果。 指导教师 王军芬 2014年 12月29日 一、设计原理与技术方法: 1。设计方案 本电路的设计实现了中的要求,分成5个模块进行设计,分别为:分频模块、数字秒表计数模块、数码管位选模块,数码管显示模块、按键消抖模块。 (1)分频模块 本模块的主要作用是将50mhz的频率分频为100hz和2000hz的频率。因为秒单位后面的最小单位是0.01s,所以要用到100hz的频率为计数做准备。且数码管位选需要一个时钟2000hz,目的是为了让扫描速度比较快,让我们视觉觉得四个数码管同时亮. (2)计数模块 执行计时功能,计时方法为对标准时钟脉冲计数.计时范围是0秒-—-59。99 秒,那么计时采用1个六进制计数器和3个十进制计数器构成,其中毫秒位、十毫秒位、秒位采用十进制计数器,十秒位采用六进制计数器. EDA基于Verilog数字秒表
(3)数码管位选模块 因为该芯片用的是并口输出,所以此处应有数码管位选部分,此处是用一个状态机做的,因为是共阳的,所以当哪个管子为低时,哪个管子亮,当扫描速度特别快时,利用人的视觉效果,则四个管子是同时亮的 (4)数码管显示模块 该芯片是共阳数码管,所以接有低电平的管段发亮。 (5)按键消抖部分 因为计数部分有开始,暂停,复位三个按键,为了消除毛刺现象对实验的影响,所以必须对三个按键消抖。 2. 方案设计流程图 100HZ 50MHZ晶振 分频模块 计数模块 2000HZ 按键消抖模块 数码管位选模块 数码管显示部分 图1 设计流程图 分频模块将50MHz分频为100Hz和2000HZ的频率,100赫兹为计数模块计数所使用;计数模块主要完成十秒、秒、十分妙、百分秒的计数工作;消抖模块连接三个按键,此处是为了保证系统能正确识别按键开关,就必须对按键进行消抖动处理,分别实现开始,暂停,复位功能,计数模块输出连接到数码管位选显示模块,数码管位选模块连接到数码管显示模块,2000赫兹连接消抖模块和位选模块,数码管正确显示秒表数字; 3。实验程序和原理图 3.1管脚分配图 EDA基于Verilog数字秒表
3。2总电路连线及波形仿真图: 图2 电路原理总图 3.3 5个模块原理图、波形仿真图及源程序: (1)分频模块: 图3 分频模块原理图 因为将50MHz的频率分成100Hz和2000HZ的过程中涉及到到频率范围太大,进行波形仿真时,无法正常显示。 设计原理: 将50MHz分频为clk1100Hz和clk2 2000HZ的频率,先分频到2000HZ,分频倍数,N1=25000,所以此处用到的是偶数倍分频,其原理如下:使用一模N1计数器模块即可实现,即每当模N1计数器上升沿从0开始计数至N1时,输出时钟进行翻转,同时给计数器一复位信号使之从0开始重新计数,在把2000赫兹频率分为100赫兹,分频倍数为N2=20,每当模N2计数器上升沿从0开始计数至N2时,输出时钟进行翻转,同时给计数器EDA基于Verilog数字秒表
一复位信号使之从0开始重新计数,为以此循环即可。 源程序: module fenpin(clk,clk1,clk2); input clk; output clk1; output clk2; reg [15:0]k2; reg[7:0] k1; reg clk2; reg clk1; always@(posedge clk) begin if(k2<16'd12499) k2=k2+8'd1; else k2=0; if(k2==16'd12499) clk2=clk2+1;//clk2=2000hz end always @(posedge clk2) begin if(k1〈8’d9) k1=k1+8’d1; else k1=0; if(k1==8'd9) clk1=clk1+1;//clk1=100hz end endmodule (2)计数模块: 图4 计数模块原理图 EDA基于Verilog数字秒表
图5 波形仿真图 设计原理: 此处rst是复位键键,当其处于高电平时,全部清零,start是开始键,pause是暂停键,三个按键都用了 一个T触发器,按下复位键,其他二个按键没用,按下开始键计数开始,按下暂停键计数停止,再按开始键计数开始.其计数部分由一个六进制的计数器和三个十进制的计数器组成,首先是百分秒位msl开始从零计数,当其计数到九时,向十分秒位msh进一,同时将百分秒位清零;当十分位计数到九时,向秒位sl进一,同时将十分妙位和百分秒位清零;当秒位计数到九时,向十秒位sh进一,同时将秒位、十分秒位和百分秒位清零;当十秒位计数到五时,将所有位清零。 源程序: module cout(clk,start,pause,msh,msl,sh,sl,rst); input clk; input start,pause,rst; output [3:0]msh,msl,sh,sl; reg[3:0] msh,msl,sh,sl; reg 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) begin{msh,msl}〈=8’h00; cn1〈=0; end else if(pause1^start1) begin if(msl==9) begin msl〈=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) begin{sh,sl}<=8'h00; end else if(start1^pause1) begin EDA基于Verilog数字秒表
if(sl==9) begin sl〈=0; if(sh==5) sh<=0; else sh<=sh+1'h1; end else begin sl<=sl+1'h1; end end end endmodule (3)按键消抖模块: 图6 消抖模块原理图 设计原理: 这是一种去除双边沿抖动或毛刺的电路设计,它的主要原理分别用二个计数器对输入信号的高电平和低电平的持续时间(脉宽)进行计数(在时间上同时但在计数上独立)。只有当高电平的计数时间大于某个值,则判为遇到正常信号,若低电平的计数时间大于某值则输出为0.,此处是为了保证系统能正确识别按键开关,就必须对按键进行消抖动处理 源程序: module xiaodou(clk,kin,kout);//按键消抖 input clk,kin; output kout; reg kout; reg [3:0]kh,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; EDA基于Verilog数字秒表
end always@(posedge clk) begin if(kh>4’b1100) kout<=1’b1; else if(kl〉4'b0111) 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个管子为共阳,当wei[3.。0]对应的数据为低电平时则哪个管子亮。 源程序 module wei_choose(clk,wei,shi_h,shi_l,fen_h,fen_l,duan); input [3:0]shi_h,shi_l,fen_h,fen_l; input clk; output [3:0]duan; output [3:0]wei; reg [3:0]duan; reg [3:0]wei; parameter s0=0,s1=1,s2=2,s3=3; reg [3:0]c_st,n_st; always@(posedge clk) begin c_st<=n_st; end always@* begin case(c_st) EDA基于Verilog数字秒表
s0:begin n_st=s1;wei〈=4'b0111;duan<=shi_h; end s1:begin n_st=s2;wei〈=4’b1011;duan〈=shi_l; end s2:begin n_st=s3;wei<=4'b1101;duan<=fen_h; end s3:begin n_st=s0;wei〈=4'b1110;duan〈=fen_l; end default:begin n_st=s1;wei〈=4'b0111;duan〈=shi_h; end endcase end endmodule (5)数码管显示模块 图8 数码管显示模块原理图 EDA基于Verilog数字秒表
设计原理: 设输入的a[3:0]4位码输出控制7段共阳数码管的LED7S[6:0],输出信号LED7S[6:0]的7位分别接共阳数码管的7个段,高位在左,低位在右,接有低电平的段发亮 源程序: module decl7s (a,led7s); input[3:0]a; output[6:0]led7s; reg[6:0]led7s; always@(a) case(a) 4'b0000 : led7s〈=~7'b0111111; 4’b0001 : led7s〈=~7'b0000110; 4’b0010 : led7s<=~7’b1011011; 4'b0011 : led7s<=~7’b1001111; 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; EDA基于Verilog数字秒表
4’b1011 : led7s<=~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 成果展示图一 EDA基于Verilog数字秒表
图 10 成果展示图二 图 11 成果展示图三 EDA基于Verilog数字秒表
图12 成果展示图4 二、课程设计工作记录: 1.设计步骤与时间安排: 12月28号 确定设计题目,查找相关资料; 12月29号 查找学习开发板的相关内容; 12月30号到31号 编程、设计模块并进行仿真验证以及下载实现单个模块功能; 1月4号到5号 编程、设计模块并进行仿真验证以及下载实现单个模块功能; 1月6号到7号 编程、设计模块并进行仿真验证以及下载实现单个模块功能; 1月8号到10号 根据课程设计要求连接电路模块,设计出及格所要求实现的功能.调试程序,完善模块功能; 1月12号到16号 完成报告,进行验收; 2. 调试步骤与时间安排: 12月28号到31号 对分频模块和计数模块的调试; 1月4号到7号 对数码管显示模块和数码管位选扫描模块的调试; 1月8号 对消抖模块的调试。 EDA基于Verilog数字秒表
1月12号到1月13号 对整个程序的调试。 3。课题完成结果说明: 本方案完成了数字秒表中所要求的功能。其能正确显示计时范围0~59.99s,有启动和停止,复位三个按键,当启动键按下时计数开始,当停止键按下时,计数停止。按下复位键全部清零。 此方案的缺点不能锁存其记录的数据。 4.我对课程设计的心得与体会: 通过这次课程设计我学到了很多,再设计过程中按照老师所教的分模块来设计调试,遇到问题能很快到找到并在予以解决。为此我总结了一下几点 1:设计时分模块进行,发现问题及时解决。 2:经常动手编写程序,便于解决程序调试中的问题。 3:设计过程中要胆大心细,敢于尝试,发现问题尽快解决,学会合作,不懂的地方及时寻求老师和同学的帮助。 总而言之,这次课设让我将理论与实践进一步的结合到了一起,培养了我的动手能力和独立思考解决问题的能力,为以后的学习打下了基础。 EDA基于Verilog数字秒表
课程设计验收
指导教师评语及成绩: 成绩 指导教师签字 年 月 日 教研室主任意见 教研室主任签字 年 月 日
因篇幅问题不能全部显示,请点此查看更多更全内容