欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    EDA课程设计多功能数字钟.docx

    • 资源ID:5119457       资源大小:553.60KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    EDA课程设计多功能数字钟.docx

    1、EDA课程设计多功能数字钟 EDA课程设计 实用多功能数字钟 学 院: 机械与电子工程学院 专 业: 电子科学与技术 班 级: 学 号: 姓 名: 指导教师: 2012年1月13日摘 要:本次课程设计用Verilog语言,选择Quartus II 开发工具来设计多功能数字钟。就在前不久,我们还刚刚完成了单片机的多功能时钟的设计,继而又做EDA电子钟实验。通过两者之间的对比可以发现EDA的许多特点。电子设计自动化(EDA Electronic Design Automation)技术是一种以计算机作为工作平台,以EDA软件工具为开发环境,以硬件描述语言和原理图描述为设计入口,以可编程逻辑器为实验

    2、载体,以ASIC、SOC和SOPC嵌入式系统为设计目标,以数字系统系统设计为应用方向的电子产品自动化设计技术。而Quartus是Altera公司推出的的第四代PLD开发系统。主要用于设计新器件和大规模CPLD/FPGA。使用Quartus的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,Quartus把这些设计转自动换成最终所需的格式。设计方法分为:硬件描述语言,verilog语言描述。verilog语言描述可能精确和简练地表示电路的逻辑功能,现在PLD的设计过程中广泛使用。以上是对EDA和Quartus的了解。本次EDA的课程设计虽然时

    3、间有限,但是设计的题目多功能数字钟很贴近人的日常生活,让我们学生对最基本的电子产品有个深入的认识。本次的课程设计是基于Verilog HDL的多功能数字钟,完成时、分、秒的显示功能。设计利用Verilog HDL语言自顶向下的设计理念,突出其作为硬件描述语言的良好的可读性、可移植性以及易于理解等优点。整个程序语言功能主要包含计时,闹钟,校时,整点报时等功能。关键词:EDA软件,Verilog语言,Quartus II 开发工具,多功能时钟 4.2.1整点报时程序模块 6 4.2.2仿真波形及分析 7 4.3.1闹铃程序模块 81 Quartus仿真软件的使用简介Quartus是Altera公司

    4、推出的的第四代PLD开发系统。主要用于设计新器件和大规模CPLD/FPGA。使用Quartus的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,Quartus把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用Quartus,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。设计处理一般在数分钟内内完成。特别是在原理图输入等方面。PLD器件的逻辑功能描述一般分为原理图描述和硬件描述语言描述,原理图描述是一种直观简便的方法,它可以将现有的小规模集成电路实现的功能直接用PLD器件来实现,而不必

    5、去将现有的电路用语言来描述,但电路图描述方法无法做到简练;硬件描述语言描述是可编程器件设计的另一种描述方法,语言描述可能精确和简练地表示电路的逻辑功能,现在PLD的设计过程中广泛使用。常用的硬件描述语言有ABEL,VHDL语言等。12-13在这里我们可以先看一看用FPGACPLD开发工具进行电路设计的一般流程通常可将FPGA/CPLD设计流程归纳为以下7个步骤,这与ASIC设计有相似之处。1.设计输入。在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。自90年代初, Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。2.功能仿真。设计的电路必须

    6、在布局布线前验证电路功能是否有效。PLD设计中,有时跳过这一步。3.设计编译。设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。4.优化。对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元,并与指定的库映射生成新的网表,这是减小电路规模的一条必由之路。5.布局布线。在PLD设计中,3-5步可以用PLD厂家提供的开发软件自动一次完成。6.时序仿真。需要利用在布局布线中获得的精确参数再次验证电路的时序。7.生产。布线和后仿真完成之后,就可以开始ASCI或PL

    7、D芯片的投产。同样,使用Quartus基本上也是有以上几个步骤,但可简化为:设计输入、设计编译、设计仿真、下载。2课程设计任务应用Verilog HDL设计一个多功能的数字钟,具有下述功能:(1)计时功能:包括时,分,秒的计时;(2)定时与闹钟功能:能在设定的时间发出闹铃音;(3)校时功能:对小时,分钟和秒能手动调整以校准时间;(4)整点报时功能:每逢整点,产生“嘀嘀嘀嘀嘟”,四短一长的报时音。3设计依据和设计方案3.1设计原理:数字电子钟由振荡器、分频器、计数器、译码显示器、报时等电路组成。其中振荡器和分频器组成标准秒信号发生器 由不同进制的计数器、译码器和显示器组成计时系统。秒信号送入计数

    8、器进行计数 把累加的结果以时、分、秒的数字显示出来。时显示由12进制计数器、译码器、显示器构成。分、秒显示分别由60进制计数器、译码器、显示器构成。可进行整点报时 计时出现误差时 可以用校时电路校时、校分。 3.2设计目标和方法: Quartus软件作为电子钟设计工作平台 以数字电路为设计数字时钟的理论基础 按照“自顶向下”的层次化设计方法设计该电路 对整个系统进行方案设计和功能划分 系统的关键电路用一片或几片专用集成电路实现 应用Quartus软件进行数字电路的设计与仿真。3.3 设计总体方案数字计时器基本功能是计时,因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实

    9、验中可以使用的振荡频率源为50MHz。数字计时器要实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能,所有功能都基于计时功能。因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为50MHZ,通过分频获得所需脉冲频率1Hz。得到1Hz脉冲后,要产生计时模块,必须需要加法器来进行加法。时钟能够产生时间前进是对秒脉冲计数产生形成的,为了形成时分秒,需要对秒进位信号进行计数从而产生分,对分进位信号进行计数产生时信号。秒和分均为60进制,时为24进制,所以需要有模60和模24计数器。3.4 总体模块分类介绍总共分为11各

    10、模块,一个总的顶层调用模块:(1)sound_ddd_du嘀嘀嘀嘟声音模块。(2)sound_ddd嘀嘀嘀闹铃声(3)hexcounter16 进制计数器模块。(4)adder加法器模块。(5)bitsel将输出解码成时分秒选择模块。(6)switch去抖模块。(7)led译码显示模块 :7段数码管显示器,分别显示小时、分钟、秒。(8)clk50mto1 时钟分频模块:50mhz时钟分频到1hz。(9)counter_time 计时模块:生成60进制、24进制计数器。(10)alarm_time闹钟时间设定模块。(11)alarm闹铃模块.(12)clock顶层模块。4设计步骤 4.1 CLO

    11、CK顶层调用模块 4.1.1顶层程序模块顶层模块中,调用各个模块来实现多功能数字钟。首先是建立在计时模块上完成整个数字钟的走时,计时模块又是建立在50mhz分频至1hz、八位全加器、十六进制计数器等模块上完成整体的基本走时。然后可以建立闹钟模块,且设置modestate置00为计时模式,10选择闹钟模块,01手动调整模式,11非法模式来避免闹钟模块与走时模块的冲突。其次在闹铃模块中,ld_alert是否设置了闹铃控制闹铃的开关,mcheck手动调整时间,turn来控制调整的时间在分与时的选择,change是调整信号,alert为闹铃输出。再通过led输出时分秒。 module clock(cl

    12、k50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led_minu0,led_sec1,led_sec0,alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec); input clk50m; input mode; input turn; input change; input mreset; output alert; output ld_alert; output ld_check; output ld_hour; output ld_min; output ld_sec; outpu

    13、t7:0 led_hour1; output7:0 led_hour0; output7:0 led_minu1; output7:0 led_minu0; output7:0 led_sec1; output7:0 led_sec0; reg 1:0 modestate; wire nowmode; wire ischecking; assign nowmode,ischecking=modestate; always(negedge mode) begin case(modestate) 2b00: modestate=2b10; 2b10: modestate=2b01; 2b01: m

    14、odestate=2b00; default:modestate=2b00; endcase end wire rest,clk_1hz; switch #(8) rmjitter(clk50m,mreset,reset); clk50mtol (clk50m,clk1hz); wire2:0 selcode; bitsel seldecoder(nowmode,ischecking,turn,selcode,rest);wire3:0 clocktime0,clocktime1,clocktime2,clocktime3,clocktime4,clocktime5;wire clockala

    15、rmon;wire 2:0 counterselcode;assign counterselcode=(modestate=2b01)?selcode:3b000;counter_time clock_time(clk_1hz,counterselcode,change,clocktime5,clocktime4,clocktime3, clocktime2,clocktime1,clocktime0,clockalarmon,reset);wire 3:0 alarmtime0,alarmtime1,alarmtime2,alarmtime3;wire alarmon;alarm_time

    16、alarm_time(clk_1hz,nowmode,selcode2:1,change,clocktime5,clocktime4,clocktime3, clocktime2,clocktime1,alarmtime3,alarmtime2,alarmtime1,alarmtime0, alarmon,reset);wire voiceout;alarm alarmvoice(clk50m,clockalarmon,alarmon,voiceout,reset);assign ld_hour,ld_min,ld_sec=(ischecking|nowmode)?selcode:3b000;

    17、assign alert=voiceout;reg3:0 showout2,showout3,showout4,showout5;led led5(showout5,1b1,led_hour1);led led4(showout4,1b0,led_hour0);led led3(showout3,1b1,led_minu1);led led2(showout2,1b0,led_minu0);led led1(clocktime1,1b1,led_sec1);led led0(clocktime0,1b1,led_sec0);always begin if(nowmode) begin show

    18、out5=alarmtime3;showout4=alarmtime2; showout3=alarmtime1;showout2=alarmtime0; end else begin showout5=clocktime5;showout4=clocktime4; showout3=clocktime3;showout2=clocktime2; end end assign ld_alert=nowmode;assign ld_check=ischecking; endmodule 4.1.2 仿真波形及分析 在clock为1ps周期情况下,设置modestate置00为计时模式,10选择闹

    19、钟模块,01手动调整模式,11非法模式,在闹铃模块中,ld_alert高电平闹铃开,mcheck为高电平则可以手动调整时间,turn控制了调整的时间在分与时的选择,change有效则改变调整的数值,alert有效闹铃输出。led hourl,led_hour0,led_minul,led_minu0,led_secl,led sec0输出时分秒。4.2sound_ddd_du嘀嘀嘀嘟声音模块4.2.1整点报时模块module sound_ddd_du(clk_lk,on,out);parameter SOUNDSPACE=300;parameter shotstopspace=200; par

    20、ameter longsoundspace=600; input clk_lk,on;output reg out;reg sound_di,sound_du;always(posedge clk_lk) sound_di=sound_di;always(posedge sound_di) sound_du=sound_du;reg11:0 mscount;always(posedge clk_lk)begin if(on) begin if(mscount(SOUNDSPACE+shotstopspace)*3+longsoundspace+10) mscount=mscount+1b1;e

    21、nd else mscount=0)&(mscountSOUNDSPACE) out=SOUNDSPACE)&(mscount(SOUNDSPACE+shotstopspace) out=(SOUNDSPACE+shotstopspace)&(mscount(SOUNDSPACE+shotstopspace)+SOUNDSPACE) out=(SOUNDSPACE+shotstopspace)+SOUNDSPACE)&(mscount(SOUNDSPACE+shotstopspace)*2) out=(SOUNDSPACE+shotstopspace)*2)&(mscount(SOUNDSPA

    22、CE+shotstopspace)*2+SOUNDSPACE) out=(SOUNDSPACE+shotstopspace)*2+SOUNDSPACE)&(mscount(SOUNDSPACE+shotstopspace)*3) out=(SOUNDSPACE+shotstopspace)*3)&(mscount( (SOUNDSPACE+shotstopspace)*3+longsoundspace) out=sound_du; else out=0; end endmodule4.2.2仿真波形及分析 再出现低信号后连续出现三个高电平,一段延时再出现一个高电平4.3sound_ddd嘀嘀嘀

    23、闹铃声模块 4.3.1闹铃模块 module sound_ddd(clk_lk,on,out);parameter soundspace=300; parameter shotstopspace=200; parameter longstopspace=500; input clk_lk,on;output reg out;reg sound;always(posedge clk_lk) begin sound=sound;endreg10:0 mscount;always(posedge clk_lk)begin if(mscount=(soundspace*3+shotstopspace*

    24、2+longstopspace-1) mscount=0; else mscount=0)&(mscountsoundspace) out=soundspace)&(mscount(soundspace+shotstopspace) out=(soundspace+shotstopspace)&(mscount(soundspace+shotstopspace)+soundspace) out=(soundspace+shotstopspace)+soundspace)&(mscount(soundspace+shotstopspace)*2) out=(soundspace+shotstop

    25、space)*2)&(mscount(soundspace+shotstopspace)*2+soundspace) out=sound; else out=0;end else out=0;end endmodule 4.3.2 仿真波形及分析 4.4 hexcounter16进制计数器模块 4.4.1H进制计数器模块 经过分频后,输出脉冲频率为1hz,即周期为1s,通过16进制计数器,将其转化为16进制数字。 16进制采用4位二进制,因此寄存器长度为四位。当set高电平有效时,将数据送给counter计数器,carrtbit清零,如若counter计数器达到16进制中max即15时,cou

    26、nter清零,而carrtbit置高电平有效。如若set一直处于低电平,则counter计数器自加一进行计数,carrtbit清零。module hexcounter(clk,set,max,setdata,dataout,carryout);input clk,set;input3:0 max,setdata;output carryout;output3:0 dataout;reg3:0 counter;reg carrybit;assign carryout=carrybit;assign dataout=counter;always(posedge clk or posedge set

    27、)begin if(set) begin counter=setdata; carrybitmax) begin counter=0;carrybit=1;end else begin counter=counter+1b1;carrybit=0;endend endendmodule 4.4.2仿真波形及分析 调试试验结果如图所示,set一直处于低电平状态下,当datout计数置3后再加一即清零,而carrybit置1,再来一个脉冲上升沿又回来置数,符合十六进制计数器。4.5加法器模块 4.5.1加法器模块本实验中adder采用8位全加器,out=in1+in2,带进位。module add

    28、er(in1,in2,out);parameter in1width=8; parameter in2width=8;parameter outwidth=8;inputin1width-1:0 in1; inputin2width-1:0 in2; outputoutwidth-1:0 out;assign out=in1+in2;Endmodule4.5.2仿真波形及分析 由输出的十进制数相加符合结果4.6 bitsel将输出解码成时分秒选择模块 4.6.1解码选择程序模块 将输出解码成时分秒选择,并且分闹钟设置还是计时模式。为了不产生冲突,Alarmmode为是否设置闹钟模式,check

    29、mode为是否设置调整时间模式,且相互之间不能同时有效。当reset有效时,对所有输出清零。module bitsel(alarmmode,checkmode,sel,selcode,reset);input alarmmode,checkmode,sel,reset;output reg2:0 selcode;reg2:0 check_code;reg1:0 alarm_code;always(negedge sel or posedge reset) begin if(reset) check_code=3b000; else begin case(check_code) 3b000:check_code=3b001; 3b001:check_code=3b010; 3b010:check_code=3b100; 3b100:check_code=3b001; default:check_code=3b000; endcase end end


    注意事项

    本文(EDA课程设计多功能数字钟.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开