基于EDA的万历设计.docx
- 文档编号:15960850
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:26
- 大小:533.20KB
基于EDA的万历设计.docx
《基于EDA的万历设计.docx》由会员分享,可在线阅读,更多相关《基于EDA的万历设计.docx(26页珍藏版)》请在冰点文库上搜索。
基于EDA的万历设计
《EDA技术及其应用》
实验报告
万年历设计
班级
姓名
学号
苏
摘要
21世纪是信息爆炸的时代,生活的节奏越来越快,大家的时间观念越来越强,但是老式的钟表以及日历等时间显示工具已经不太合适。
如钟表易坏,需经常维修,日历每天都需要翻页等。
对此,数字万年历的设计就用了用武之地。
基于DEA的万年历设计,采用软件开发模块,开发成本底,而且功能设计上有很大的灵活度,需要在软件上进行简单的修该就能实现不同的功能要求,能够满足不同的环境要求。
同时,该设计在精度上远远超过钟表,并且不需要维修,也不用没天的翻页,极其的方便。
且能够添加各种不同的功能要求。
例如:
在其上加闹钟,同时显示阴阳历等。
。
综上所述本设计具有设计方便、功能多样、电路简洁成本低廉等优点,符合社会发展的趋势,前景广阔。
基于EDA的万年历设计,主要完成的任务是使用VHDL语言,在QuartusII上完成电路的设计,程序的开发,基本功能是能够显示、修改年、月、日、时、分、秒。
电路的设计模块分为几个模块:
控制、时间显示调整、时、分、年、月、日各模块。
各个模块完成不同的任务,合在一起就构成了万年历。
软件模块直接在QuartusII上进行,使用VHDL语言,根据各个模块的不同功能和它们之间的控制关系进行编写。
关键字:
万年历;EDA;仿真;VHDL;QuartusII
Abstract
The21stcenturyistheeraofinformationexplosion,thepaceoflifeismoreandmorequick,everyone'sconceptoftimeismoreandmorestrong.Buttheoldclockandcalendartimedisplaytoolsarenotverysuitable.Tothis,thedesignofdigitalcalendarisveryuseful.BasedonDEAperpetualcalendardesign,thesoftwaredevelopmentcostlowandthefunctiondesignisofgreatnimbleness.Atthesametime,thedesignismorecorrectthanclocksandwatches,anddon'tneedtobemaintained.Andyoucanaddallsortsofdifferentfunctionalrequirements.TheperpetualcalendarbasedonEDAdesign,themaintaskistouseVHDLlanguagetocompletecircuitdesign,programdevelopmentintheQuartusII.Basicfunctionistodisplay,modify,year,month,day,points,Thedesignofthecircuitmodulecanbedividedintoseveralmodules:
control,timedisplayadjustment,,points,year,month,dayeachmodule.Eachmodulecompletedifferenttasks,andtheyformaperpetualcalendar.Writetheprogramaccordingtothedifferentfunctionofeachmoduleandtherelationshipbetweenthem.
第一章EDA技术简介
EDA(ElectronicDesignAutomation),即电子设计自动化,是指利用计算机完成电子系统的设计。
EDA技术是以计算机和微电子技术为先导的,汇集了计算机图形学、拓扑学、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。
EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。
设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可以极大地提高设计效率。
1.1EDA技术的发展概况
从20世纪60年代中期开始,人们就不断开发出各种计算机辅助设计工具来帮助设计人员进行电子系统的设计。
电路理论和半导体工艺水平的提高,对EDA技术的发展起到了巨大的作用,使EDA作用范围从PCB板设计延伸到电子线路和集成电路设计,直至整个系统的设计,也使IC芯片系统应用、电路制作和整个电子生产过程都集成在一个环境之中。
根据电子设计技术的发展特征,EDA技术发展大致分为三个阶段。
1.2EDA技术的基本特征
EDA技术代表了当今电子设计技术的最新发展方向,它的基本特征是:
设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。
这样的设计方法被称为高层次的电子设计方法。
下面介绍与EDA基本特征有关的几个概念。
1.2.1“自顶向下”的设计方法
10年前,电子设计的基本思路还是选择标准集成电路“自底向上”(Bottom-Up)地构造出一个新的系统,这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高而且还容易出错。
1.2.2高层次设计
高层次设计提供了一种“自顶向下”(Top-Down)的全新的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。
然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
第二章工作原理
2.1任务概述
基于EDA万年历的设计:
能进行正常的年、月、日和时、分、秒的日期和时间计时功能,能够进行模式切换,分别显示年、月、日和时、分、秒;能利用实验系统上的按键实现年、月、日和时、分、秒的校对功能。
2.2系统设计思路
首先,建立整体的系统框图,然后分模块设计元件,最后进行元件之间的连接。
在设计元件中,考虑到不同月份有31天,30天,28天(平年),29天(闰年),所以在年的低位设计一个闰年判断输出返回到月模块的判断输入,由于每隔四年是一个闰年,所以有四个进位即输出是闰年。
在月模块中设计一个月份判断输出返回到天计数模块的判断输入,由于有四种不同的天数,所以可以设置一个2位的二进制数作为判断输出。
在调时和控制显示模块中,通过按键来选择、控制,比较简单,另外设置有LED输出显示作为标记,为了在调时、控制显示时,不容易混淆。
2.3系统原理图
系统按功能分为:
秒计时模块;分计时模块;时计时模块;天计时模块;月计时模块;年低位计时模块;年高位计时模块;校对模块和显示控制模块。
2.4工作过程
将实验箱选择工作在模式三,从CLK端输入一个频率为1Hz的时钟信号,万年历开始计时
(1)切换显示模式:
按下按键1,当LED8亮时,显示时、分、秒,再按一下按键1,LED8熄灭,显示年、月、日。
(2)校对调时
按键2具有校对功能,按1下按键2,选择调分钟,对应的LED1亮,这时按下按键3可以进行分钟的加减;按2下按键2,选择调小时,对应的LED2亮,这时按下按键3可以进行小时的加减;按3下按键2,选择调日期,对应的LED3亮,这时按下按键3可以进行日期的加减;按4下按键2,选择调月份,对应的LED4亮,这时按下按键3可以进行月份的加减;按5下按键2,选择调年份的低两位,对应的LED5亮,这时按下按键3可以进行年份的低两位时的加减;按6下按键2,选择调年份的高两位,对应的LED6亮,这时按下按键3可以进行年份的高两位的加减。
第三章设计过程
3.1各子模块的VHDL程序以及时序仿真
3.1.1秒/分计时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT60IS--60进制计数器
PORT(CLK:
INSTD_LOGIC;
Q1,Q2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT60;
ARCHITECTUREONEOFCNT60IS
SIGNALQ11,Q22:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--上升沿到来时计数
Q11<=Q11+1;
IFQ11=9THENQ11<=(OTHERS=>'0');
Q22<=Q22+1;
ENDIF;
IFQ22=5ANDQ11=9THEN
Q22<="0000";Q11<="0000";COUT<='1';
ELSECOUT<='0';
ENDIF;
ENDIF;
ENDPROCESS;
Q1<=Q11;Q2<=Q22;
END;
(2)时序仿真
由上时序仿真图所示,Q1(个位)计到9后,Q2(十位)加1,Q2计到5后,即计满60个时钟脉冲,COUT输出一个进位脉冲,正确,满足设计要求。
(3)元件图
3.1.2时计时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT24IS
PORT(CLK:
INSTD_LOGIC;
Q1,Q2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDCNT24;
ARCHITECTUREONEOFCNT24IS
SIGNALQ11,Q22:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
Q11<=Q11+1;
IFQ11=9THENQ11<=(OTHERS=>'0');
Q22<=Q22+1;
ENDIF;
IFQ22=2ANDQ11=3THEN
Q22<="0000";Q11<="0000";COUT<='1';
ELSECOUT<='0';
ENDIF;
ENDIF;
ENDPROCESS;
Q1<=Q11;Q2<=Q22;
END;
(2)时序仿真
由上时序仿真图所示,记满24个时钟脉冲,COUT输出一个进位脉冲,正确,满足设计要求。
(3)元件图
3.1.3天计时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTIANIS
PORT(PANDUAN:
INSTD_LOGIC_VECTOR(1DOWNTO0);
CLK:
INSTD_LOGIC;
CQ1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CQ2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREONEOFTIANIS
SIGNALCQ3,CQ4:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALPAN:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PROCESS(CLK,PANDUAN)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
CQ3<=CQ3+1;
IFCQ3=9THENCQ3<=(OTHERS=>'0');
CQ4<=CQ4+1;
ENDIF;
PAN<=PANDUAN;
CASEPANIS
WHEN"00"=>IFCQ3="0001"ANDCQ4="0011"THENCQ3<="0001";CQ4<="0000";COUT<='1';ELSECOUT<='0';ENDIF;
WHEN"01"=>IFCQ3="0000"ANDCQ4="0011"THENCQ3<="0001";CQ4<="0000";COUT<='1';ELSECOUT<='0';ENDIF;
WHEN"10"=>IFCQ3="1000"ANDCQ4="0010"THENCQ3<="0001";CQ4<="0000";COUT<='1';ELSECOUT<='0';ENDIF;
WHEN"11"=>IFCQ3="1001"ANDCQ4="0010"THENCQ3<="0001";CQ4<="0000";COUT<='1';ELSECOUT<='0';ENDIF;
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
CQ1<=CQ3;
CQ2<=CQ4;
ENDPROCESS;
END;
(2)时序仿真
当PUANDUAN=‘00’时,计满31个时钟脉冲,COUT输出一个进位脉冲,正确,满足设计要求;
当PUANDUAN=‘01’时,计满30个时钟脉冲,COUT输出一个进位脉冲,正确,满足设计要求;
当PUANDUAN=‘10’时,计满29个时钟脉冲,COUT输出一个进位脉冲,正确,满足设计要求;
当PUANDUAN=‘10’时,计满28个时钟脉冲,COUT输出一个进位脉冲,正确,满足设计要求;
(3)元件图
3.1.4月计时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYMONTHIS
port(clk:
INSTD_LOGIC;
run:
INSTD_LOGIC;
cout:
OUTSTD_LOGIC;
pan:
OUTSTD_LOGIC_VECTOR(1DOWNTO0);
cq1,cq2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREbehavOFMONTHIS
signalcq3,cq4:
STD_LOGIC_VECTOR(3DOWNTO0);
signalcq5:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(clk)
BEGIN
IFclk'EVENTandclk='1'THEN
cq3<=cq3+1;
IFcq3=9THENcq4<=cq4+1;cq3<="0000";ENDIF;
IFcq3=2andcq4=1THENcq3<="0001";cq4<="0000";cout<='1';ELSEcout<='0';
ENDIF;
ENDIF;
cq5<=cq4&cq3;
CASEcq5IS
WHEN"00000001"=>pan<="00";--一月
WHEN"00000010"=>ifrun='1'thenpan<="11";elsepan<="10";endif;--—二月
WHEN"00000011"=>pan<="00";--三月
WHEN"00000100"=>pan<="01";--四月
WHEN"00000101"=>pan<="00";--五月
WHEN"00000110"=>pan<="01";--六月
WHEN"00000111"=>pan<="00";--七月
WHEN"00001000"=>pan<="00";--八月
WHEN"00001001"=>pan<="01";--九旁
WHEN"00010000"=>pan<="00";--十月
WHEN"00010001"=>pan<="01";--十一月
WHEN"00010010"=>pan<="00";--十二月
WHENothers=>NULL;
ENDCASE;
cq1<=cq3;
cq2<=cq4;
ENDPROCESS;
END;
(2)时序仿真
从仿真图中可以看出,计满12时钟有一个进位,当run=0(即平年)时,输出pun=‘10’(即二月为28天),当run=1(即闰年)时,输出pun=‘11’(即二月为29天),当月份为1,3,5,7,8,10,12时输出pun=‘00’(即该月为31天),当月份为4,6,9,11时,输出pun=‘01’(即该月为30天)。
正确,满足设计要求。
3.1.5年低位计时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYYEARIS
PORT(CLK:
INSTD_LOGIC;
Y1,Y2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
RUN,COUT:
OUTSTD_LOGIC);
ENDYEAR;
ARCHITECTUREONEOFYEARIS
SIGNALQ1,Q2,Q3:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
Q1<=Q1+1;
IFQ1=9THENQ1<=(OTHERS=>'0');
Q2<=Q2+1;
ENDIF;
IFQ2=9ANDQ1=9THEN
Q2<="0000";Q1<="0000";COUT<='1';
ELSECOUT<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--每记四次数为闰年
Q3<=Q3+1;
IFQ3=3THENQ3<=(OTHERS=>'0');
RUN<='1';
ELSERUN<='0';
ENDIF;
ENDIF;
Y1<=Q1;Y2<=Q2;
ENDPROCESS;
END;
(2)时序仿真
从图中可以看出每四年run有一个进位,计数记满100个,COUT有一个进位,满足设计要求。
(3)元件图
3.1.6年高位计时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYYEAR1IS
PORT(CLK:
INSTD_LOGIC;
Y3,Y4:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDYEAR1;
ARCHITECTUREONEOFYEAR1IS
SIGNALQ1,Q2:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
Q1<=Q1+1;
IFQ1=9THENQ1<=(OTHERS=>'0');
Q2<=Q2+1;
ENDIF;
IFQ2=9ANDQ1=9THEN
Q2<="0000";Q1<="0000";COUT<='1';
ELSECOUT<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
(2)时序仿真
从图中可以看出计数计满100个时钟COUT有一个进位,满足设计要求。
(3)元件图
3.1.7调时模块
(1)VHDL程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJIAODUIIS
PORT(K1,K2:
INSTD_LOGIC;
MI,FI,SI,TI,YI,N1I:
INSTD_LOGIC;
FO,SO,TL,YO,NO,N2O:
OUTSTD_LOGIC;
L1,L2,L3,L4,L5,L6:
OUTSTD_LOGIC);
END;
ARCHITECTUREBEHAVOFJIAODUIIS
SIGNALA:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(K1,K2)
BEGIN
IFK1'EVENTANDK1='1'THEN
A<=A+1;
IFA=5THENA<="0000";
ENDIF;
ENDIF;
CASEAIS
WHEN"0000"=>FO<=MI;SO<=FI;TL<=SI;YO<=TI;N1O<=YI;N2O<=NI;--选通秒模块
L1<='0';L2<='0';L3<='0';L4<='0';L5<='0';L6<='0';
WHEN"0001"=>FO<=K2;SO<='0';TL<='0';YO<='0';N1O<='0';N2O<='0';--选通分模块
L1<='1';L2<='0';L3<='0';L4<='0';L5<='0';L6<='0';
WHEN"0010"=>FO<='0';SO<=K2;TL<='0';YO<='0';N1O<='0';N2O<='0';--选通时模块
L1<='0';L2<='1';L3<=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 EDA 万历 设计