EDA数字跑表课程设计1.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 跑表 课程设计
- 资源描述:
-
EDA课程设计报告 数字跑表 学院:机械与电子工程学院 专业:电子科学与技术 学号:1020630208 姓名:熊 …… 一:设计目的: (1)学会利用QuartusⅡ发热宏单元和所学的数字电路知识,搭建复杂一点的数字电路或系统。 (2)学会使用EDA的程序语言FPGA/CPLD设计数字跑表,设计主要包括功能分析、方案设计和电路测试几个步骤。 二:设计内容: 1.设计一个数字跑表,具有如下功能。 (1)复位和暂停,秒表计时等功能。 (2)跑表计时长度可达1小时,计时精度为0.01 秒。 (3)通过6位数码管分别显示跑表的分、秒和百分秒。 控制端 取值 功能 复位(clr) 1 异步清零 0 计数 计数/暂停键(pause) 1 暂停 0 计数 2.方案论证: 数字跑表设三个输入端,分别为时钟输入(CLK),复位(CLR),启动、暂停按键(PUSE)。复位信号高电平有效,可对跑表异步清零;当启动、暂停键为低电平时跑表开始计时,为高电平时暂停,变低后在原来的数值基础上继续计数。数字跑表的结构示意图如下: 图2-1跑表示意图 3.模块电路设计: 数字跑表实际上为计数器,数据选择器,七段数码管译码器等模块构成,核心模块应为计数器,其次为暂停控制和清零控制。 计时电路 计时电路又分为百分秒计时电路、秒计时电路和分计时电路三个模块。百分秒计时电路是一个100进制的计数器,以100Hz输入信号作为计数时钟,其进位信号作为秒计数电路的计数时钟,当秒计数器计满时,产生的进位信号又作为分计数电路的计数时钟。电路的暂停和复位信号用于控制计时的开始、停止和清零。 计数器模块:数字跑表的计时器功能是,当PAUSE为低电平时开始计数,百分秒低位自加一,加到九时归零,百分秒高位自加一,加到九时归零,且向秒位发出一个高电平,秒低位自加一,加到九时归零,秒高位自加一,加到五时归零,且向分位发出一个高电平,分低位自加一,加到六时系统清零。 数据选择器: 数据选择模块:定义三位二进制数ss作为选择数码管的变量,ss自加一,当ss大于7时归零,当ss为5、4、3、2、1时分别将msl,msh,sl,sh,ml,mh的值赋给coder,当ss为6、7时赋值为零。 七段数码管显示译码器 七段数码管译码器模块:根据数字的显示形状编制真值表,当上一模块coder为0~9时,分别给seg赋以一组八位二进制数,使数码管显示相应的数字。 表1 七段数码管显示译码器真值表: case seg 0 1000000 1 1111001 2 0100100 3 0110000 4 0011001 5 0010010 6 0000010 7 1111000 8 0000000 9 0010000 4.数字跑表的流程图: 数字跑表主要由计时器,七段数码管译码器组成。流程框图如图所示。 数码管译码器 百分秒计数器 CLK msl pause 秒计数器 clr 分计数器 图3-1程序流程图 表2控制信号的作用 复位clr 异步复位信号,高电平有效 pause 同步暂停信号,低电平有效计数。 sel 共阴数码管的位选信号 seg 共阴数码管的段选信号 三:设计总体框图 三:硬件电路设计与程序设计 设计思路 今需设计一个计时范围为0.01 秒~1 小时的数字秒表,首先需要获得一个比较精确的计时基准信号,这里是周期为1/100 s 的计时脉冲,可以把50MHz的信号经过100分频的分频器三次分频得到,其中分频器经过两次分频得到的信号还可作为数码管扫描电路的时钟。其次,还需对每一计数器设置清零信号输入和对六个计数器设置时钟使能信号,即计时允许信号,以便作为秒表的计时起、停控制功能。为了方便控制所有计数模块清零和使能功能设计了一个控制模块。最后把所有计数器的输出数据通过数码管扫描电路模块和七段译码显示模块作为输出,接到实验箱上的8字数码显示电路上就可显示结果了。因此数字秒表可由三个分频器、四个十进制计数器(1/100 秒、1/10 秒、1 秒、1分)、两个六进制计数器(10 秒、10 分)、一个控制器、一个数据选择器以及七段译码显示器组成,如总体框图所示。根据设计思路,本次设计就采用模块化设计,共分为分频器模块(fenpin)、控制模块(kongzhi)、十进制计数模块(cnt10)、六进制计数模块(cnt6)、数码管扫描模块(xuanze)、七段译码显示模块(decl7s)六个模块以及图形式顶层文件。下面我们分别对每个模块的功能进行描述、程序进行设计以及各个模块功能的仿真。 1、分频器模块 根据设计需要,首先需要获得一个比较精确的计时基准信号,这里是周期为1/ 100 s 的计时脉冲。我们可以把50MHz的信号经过100分频的分频器三次分频得到此基准信号,所以需要设计一个100分频的分频器。此外,经过两次分频的信号(10KHz)还可以同时作为数码管扫描电路的时钟。 其模块图如下图所示:Clk为时钟输入信号,newclk为100分频的输出信号。 2、控制模块 为了方便控制所有计数模块清零和使能功能需要设计一个控制模块,所以该模块的功能就是控制什么时候发出置零信号和使能信号来控制计数器工作。 其模块图如下图所示: Clk为开始/暂停功能按钮(下降沿有效),初次按下它时clc(控制计数器清零)为低电平,en(使计数器计数)为高电平;再次按下它时,clc保持为低电平,en跳变为低电平,如此重复循环。Reset为清零按钮(下降沿有效),无论何时按下它时,clc跳变为高电平,en变为低电平,以达到使计数器清零的目的。 3、十进制计数模块 此模块的功能就是完成十进制的计数功能,同时输出进位信号。 其模块图如下图所示: Clk为时钟信号输入端,rst为计数器清零端(高电平有效),en为计数器使能端(高电平有效);daout为数据输出端,cout为进位信号输出端。 4、六进制计数模块 此模块的功能就是完成六进制的计数功能,同时输出进位信号。 其端口功能同十进制计数模块,在次不再重复诉说。 5、数码管扫描模块 该模块的功能是选择各个计数端口来的数据,当相应的数据到来时,数据选择器选择数据后输出给七段译码器,同时输出位选信号,再接入到实验箱上的8字数码显示电路上就可显示了。 其模块图如下图所示: Clk为时钟信号输入端,msec1…...minute2是各个计数端口来的数据的输入端,deout为数据选择器选择数据后输出端,sel为位选信号输出端。 6、七段译码显示模块 该模块的功能就是把输入的四位二进制数据转换为七段数码管的显示编码,再输入到七段数码管中显示出数据。 其模块图如下图所示: A为数据输入端,led7s为数据输出端。 五:程序设计如下: /************************************************************************************ *******************以下引脚锁定基于DE2-35,芯片为EP2C35F672C6***********************【例1】数字跑表(顶层模块) 信号定义如下: Clk50m: 输入50MHz时钟信号; Clr: 异步复位信号; pause: 暂停信号; dotout: 小数点; ledl, led0: 百分秒的高位和低位; led3, led2: 秒信号的高位和低位; led5, 1ed4: 分信号的高位和低位 */ module paobiao (clk,pause,clr,led0,led1,led2,led3,led4,led5,dotout); parameter WIDTH=7; //input clk50m; input clk; input pause; input clr; output dotout; output[WIDTH-1:0] led5; output[WIDTH-1:0] led4; output[WIDTH-1:0] led3; output[WIDTH-1:0] led2; output[WIDTH-1:0] led1; output[WIDTH-1:0] led0; wire isstop; wire zero; switch # (8) switchstop (clk50m,pause, isstop) ; switch # (8) switchzero (clk50m, clr, zero) ; //reg [18 : 0 ] counter_l00hz ; reg clk100; //assign clkl00=counter_l00hz [18]; assign dotout=1'b1; /*always @(posedge clk50m) begin if(!isstop) begin if(counter_l00hz==19'b1111_0100_0010_0100_000) counter_l00hz<=0; else counter_l00hz<=counter_l00hz+1; end end*/ always @(*) begin if(!isstop) clk100<=clk; end reg [ 3 : 0 ] fs0 ; reg fscarry0; reg [3 : 0] fs1; reg fscarry1; reg [3 :0 ] s0; reg scarry0; reg [3 :0 ] s1; reg scarry1; reg [3 :0 ] minu0; reg miucarry0; reg [3 :0 ] minu1; always@ (posedge clk100 or posedge zero) begin if (zero) begin fs0<=0; fscarry0<=0; end else if (clk100==1) begin if(fs0==9) begin fs0<=0; fscarry0<=1; end else begin fs0<=fs0+1; fscarry0<=0 ; end end end always@ (posedge fscarry0 or posedge zero) begin if (zero) begin fs1<=0; fscarry1<=0;end else if (fscarry0==1) begin if(fs1==9) begin fs1<=0;fscarry1<=1;end else begin fs1<=fs1+1; fscarry1<=0;end end end always@ (posedge fscarry1 or posedge zero) begin if (zero) begin s0<=0; scarry0<=0;end else if ( fscarry1==1) begin if (s0==9) begin s0<=0;scarry0<=1;end else begin s0<=s0+1;scarry0<=0;end end end always@(posedge scarry0 or posedge zero) begin if(zero) begin s1<=0;scarry1<=0;end else if (scarry0==1) begin if(s1==5) begin s1<=0;scarry1<=1;end else begin s1<=s1+1;scarry1<=0;end end end always@ (posedge scarry1 or posedge zero) begin if (zero) begin minu0<=0;miucarry0<=0;end else if (scarry1==1) begin if (minu0==9) begin minu0<=0;miucarry0<=1;end else begin minu0<=minu0+1;miucarry0<=0;end end end always@ (posedge miucarry0 or posedge zero) begin if (zero) begin minu1<=0;end else if (miucarry0==1) begin if (minu1==5) minu1<=0; else minu1<=minu1+1; end end led ledfs0 (fs0,led0); led ledfsl (fs1,led1); led leds0 (s0,led2); led ledsl (s1,led3); led ledmiu0 (minu0,led4); led ledmiul (minu1,led5); endmodule /*【例1】数字跑表(7段数码管译码显示模块)。 led.v:7段数码管(led)译码显示模块 datain: 4位,10进制数输入 ledout:7位,数码管的7段*/ module led(datain,ledout); parameter INWIDTH=4; parameter OUTWIDTH=7; input [INWIDTH-1: 0] datain; output [OUTWIDTH-1:0] ledout; reg [OUTWIDTH-1:0] dataout; assign ledout=dataout; always begin case (datain) 0 : dataout<=7'b1000000; 1 : dataout<=7'b1111001; 2 : dataout<=7'b0100100; 3 : dataout<=7'b0110000; 4 : dataout<=7'b0011001; 5 : dataout<=7'b0010010; 6 : dataout<=7'b0000010; 7 : dataout<=7'b1111000; 8 : dataout<=7'b0000000; 9 : dataout<=7'b0010000; default : dataout<=7'b1000000; endcase end endmodule /*【例1】数字跑表(按键廾关消抖电路)。 switch-v: 对按键开关的消抖电路,采用一个频率较低的时钟, 对输入进行采样,消除抖动*/ module switch(clk,keyin,keyout); parameter COUNTWIDTH=8; input clk, keyin; output reg keyout; reg [COUNTWIDTH-1: 0] counter; wire clk_use; //频率较低的时钟 assign clk_use=counter [COUNTWIDTH-1]; always@ (posedge clk) counter<=counter+1'b1; always@ (posedge clk_use) keyout<=keyin; endmodule 六:编译仿真及硬件测试 1、编译仿真 当完成了以上秒表系统各个模块的VHDL设计,就可以使用QuartusⅡ对本设计进行编译和仿真。首先使用文本编辑器输入本设计的所有模块的源程序,先对各个模块进行编译和仿真,当所有模块全部编译通过和仿真功能正确后,就可以利用图形编辑工具完成顶层设计,其设计图如顶层设计图所示。然后再对图形编辑器编辑出的顶层设计图进行全程编译,通过之后就可以进行系统的整体仿真了。其中各个模块的仿真已在模块设计中完成,在此从略,下面只说明系统的整体仿真。 2.顶层设计图: 在仿真中,clk取10ns的信号,合理选取start和reset信号,就可以进行系统的整体仿真了。 3.仿真后得到如下仿真波形图: 七.实验心得及体会 从实验中,我对整个流程有了初步了解;对实验进行了深入学习,让我掌握硬件描述语言Verilog HDL语言的语言规则,数据类型,语句结构和模块设计;接着是最关键的编程,需要根据任务书分析需要的模块,编程并仿真。 两天的课程设计已经结束,虽然时间很短,但我不仅学到了许多关于EDA的知识,认识到了EDA的强大功能,更重要的是增强了我的实践动手能力,使我深刻地认识到仅仅学习课本上的知识是远远不够的,必须要多多动手,多多实践,才能真正理解并掌握所学的知识,达到学以致用的目的,为以后的工作积累了宝贵的经验,同时我也深深地感受到严谨的态度对于科学研究的重要性。由于在设计的过程中,一点点的失误都可能造成整个系统的瘫痪,所以每一个细节都要认真思考,认真操作,不能有丝百分的大意。这使我认识到要想做一个科研工作者是多么的不易!自己身上的缺点还有很多,要靠以后艰苦的努力来克服! 这次的EDA课程设计给了我一次非常重要也非常难得的实践机会,使我可以将平时课本上学习的理论知识应用于实际操作。设计的过程是十分艰苦的,由于从未接触过类似的领域,所以刚开始的时候一片茫然,不知道该干些什么。随着研究的逐渐深入,自己渐渐的摸出头绪,掌握了一些规律和方法,设计的成果也逐步成型,最终按照要求完成了设计。在实际操作的过程中,碰到了许多的困难,但最终在老师的耐心指导和同学的热情帮助下,按时完成了任务。在此对老师和同学们表示衷心的感谢! 最后感谢老师给与我这次宝贵的实践机会!展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




EDA数字跑表课程设计1.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2939924.html