《EDA技术课程大作业(共10页).doc》由会员分享,可在线阅读,更多相关《EDA技术课程大作业(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上安阳工学院电子信息与电气工程学院课程大作业:EDA技术题目: 组数:第 11 组班级:(电子信息工程10-1)教师成绩由以下评分标准累计得出1、 电路设计和仿真结果正确清晰合理 25% 2、 设计和仿真结果分析正确合理。 25% 3、 大作业报告重点突出、阐述清晰。 25% 4、 小组能很好的组织、合作,过程顺利,按时完成大作业。 15% 5、 陈述清晰正确、有说服力,能够正确回答问题。 10% 总分 学生自评分值任务分值 (%) 个人贡献分值 (%)1计划和组织20735322电路设计和仿真35686873设计完成和结果分析20344544报告15433235陈述和
2、回答问题1012223个人平均分值(%)2120202019大作业总成绩姓名成绩总成绩=J*60%+(J+J*(X-25%)*40%J为教师成绩,X为学生自评分值数字时钟1. 设计任务和设计方案1.1设计任务 1、依据预先设定的数字数字时钟的功能,完成对数字钟的设计。 2、通过数字时钟的设计,学习Quartus II中基于VHDL设计的流程。 3、通过这次的设计,掌握简单时序逻辑电路的设计方法与功能仿真技巧。1.2 设计方案在方案中要实现的功能是:(1) 设置复位、清零等功能(2)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时(3)有校时功能,可以分别对时及分进
3、行单独校时,使其校正到标准时间(4)时钟通过数码管显示且时钟计数显示时有LED灯显示;总体方框图时调整分调整分显示60进制60进制24进制使能端信号信号控制单元时显示秒显示数字时钟显示2. 方案实施根据系统设计要求,系统由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。1) 时钟计数:思路:时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、.、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1
4、,其显示器将显示00、01、02、.、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、.、23、00。即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲,数字钟将自动显示00点00分00秒。实现:首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可以调整时钟的小时部分, setmin可以调整分钟,步进为1。由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。CLK端连接外部10Hz的时钟输入信号clk。对clk进行计数,当
5、clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。2) 时间设置:思路:当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动reset开关,电子钟从设置的时间开始往后计时。实现:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用
6、的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。3) 清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己进行任意时间复位。原理图3. 结果和结论 实验箱使用模式7,键8为复位按键,键8为1时正常工作。键4设置小时,键7设置分钟。 下载成功后,按下键8,及使六个LED复位清零,显示数秒的自动计时,可以通过4键设置小时数,7键设置分钟数。当秒数满60则进一位,分钟数满60进一位,当显示为23:59:59时,秒数在加一则显示00:00:00,之后从新计时。仿真结果及分析时序仿真建立波形文件:选择 FileNewOther FileVecto
7、r Waveform FileNameInsert Nod or BusNode Finder PinsList单击“”(所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定)OK 设定仿真时间宽度:选择 Edit End time在End time选择窗中选择适当的仿真时间域,以便有足够长的观察时间。波形文件存盘:选择FileSave as 选项,直接存盘即可。运行仿真器:在菜单中选择项,直到出现,仿真结束。1.秒时序仿真图2.分时序仿真图3.小时时序仿真4. 显示时序仿真4,分析与心得 这次的EDA实验设计报告我们做的是时钟电路,采用了
8、自顶向下设计方法。由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。通过手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字时钟真正具有使用功能。通过这次实验设计,让我们对EDA有了更深刻的认识,加深了同学之间探讨问题的积极性,增强了动手解决问题的能力。同时,提高了我们学习这门课程的热情。在此,感谢李老师给我们这次机会,能让我们在这貌似枯燥的课本理论知识里发现了甘露。5任务分工翟扬帆进行程序的仿真曾凡超绘制原理图杨鹏程序的编写与调试李许彦依据功能,设计方案模块仲李岸整理报告6.参考文献1潘松 黄继业 EDA技术实用教程(第四版)科学出版社2010年6月7.附录VHDL源
9、程序秒计数模块的VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is port(clk,reset,semin:in std_logic; enmin:out std_logic; daout:out std_logic_vector(6 downto 0);end second;architecture one of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,e
10、nmin_2:std_logic; begin daout=count; enmin_2=(semin and clk); enmin=(enmin_1 or enmin_2); process(clk,reset,semin) begin if(reset=0)then count=; enmin_1=0; elsif(clkevent and clk=1)then if(count(3 downto 0)=1001)then if(count16#60#)then if(count=)then enmin_1=1;count=; else count=count+7; end if; el
11、se count=; end if; elsif(count16#60#)then count=count+1; enmin_1=0; else count=;enmin_1=0; end if; end if; end process;end one;分计数模块VHDL程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,reset,clks,sethour:in std_logic; enhour:out std_logic; daout:ou
12、t std_logic_vector(6 downto 0);end minute;architecture rtl of minute is signal count:std_logic_vector(6 downto 0); signal enhour_1,enhour_2:std_logic; begin daout=count; enhour_2=(sethour and clk); enhour=(enhour_1 or enhour_2); process(clk,reset,sethour) begin if(reset=0)then count=; enhour_1=0; el
13、sif(clkevent and clk=1)then if(count(3 downto 0)=1001)then if(count16#60#)then if(count=)then enhour_1=1;count=; else count=count+7; enhour_1=0; end if; else count=; end if; elsif(count16#60#)then count=count+1; enhour_1=0 after 100 ns; else count=;enhour_1=0; end if; end if; end process;end rtl;时计数
14、模块VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic; daout:out std_logic_vector(5 downto 0);end hour;architecture rtl of hour is signal count:std_logic_vector(5 downto 0); begin daout=count; process(clk,reset) begin if(reset=0)
15、then count=; elsif(clkevent and clk=1)then if(count(3 downto 0)=1001)then if(count16#23#)then count=count+7; else count=; end if; elsif(count16#23#)then count=count+1; else count=; end if; end if; end process;end rtl;时间设置模块VHDL程序libraryieee; useieee.std_logic_1164.all; endprocess;process(clk,reset)b
16、eginif(reset=0)thendaout=0000;dp=0;seldaout=sec(3downto0);dp=0;seldaout(3)=0;daout(2downto0)=sec(6downto4);dp=0;seldaout=min(3downto0);dp=1;seldaout(3)=0;daout(2downto0)=min(6downto4);dp=0;seldaout=hour(3downto0);dp=1;seldaout(3downto2)=00;daout(1downto0)=hour(5downto4);dp=0;seldaout=0000;dp=0;sel=;
17、endcase;endif;endprocess;endrtl;useieee.std_logic_unsigned.all; useieee.std_logic_arith.all;entitysettimeisport(clk,reset:instd_logic;sec,min:instd_logic_vector(6downto0);hour:instd_logic_vector(5downto0);dp:outstd_logic;sel:outstd_logic_vector(5downto0);daout:outstd_logic_vector(3downto0);endsettim
18、e;architecturertlofsettimeissignalcount:std_logic_vector(2downto0);beginprocess(clk,reset)beginif(reset=0)thencount=101hencount=000;elsecount=count+1;endif;endif;译码显示模块的VHDL程序(deled.vhd)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydeledisport(num:instd_logic_vector(3do
19、wnto0);led:outstd_logic_vector(6downto0);enddeled;architecturertlofdeledisbeginled=whennum=0000elsewhennum=0001elsewhennum=0010elsewhennum=0011elsewhennum=0100elsewhennum=0101elsewhennum=0110elsewhennum=0111elsewhennum=1000elsewhennum=1001elsewhennum=1010elsewhennum=1011elsewhennum=1100elsewhennum=1101elsewhennum=1110elsewhennum=1111;endrtl;专心-专注-专业