EDA技术与应用__万年历的实现_实训报告

合集下载

EDA技术及应用实训报告

EDA技术及应用实训报告

桂林电子科技大学信息科技学院《EDA技术及应用》实训报告学号1252100301姓名指导教师:覃琴2014年4 月29 日实训题目:数字日历电路1 系统设计1.1 设计要求1.1.1 设计任务(1)用Verilog HDL语言设计出能够在EDA实训仪的I/O设备和PLD芯片实现的数字日历。

(2)数字日历能够显示年、月、日、时、分和秒。

(3)用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日(如20140101),然后在另一时间段内显示时、分、秒(如010101099),两个时间段能自动倒换。

(4)数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时。

(5)体现创新部分1.1.2 性能指标要求1)数字电路能够在一定的时间内显示切换的功能,并且能手动校准年月日和时分秒2)具有复位和进位的功能3)能起到提示的作用,如闹钟或亮彩灯等。

1.2 设计思路及设计框图1.2.1设计思路如图1.2.2所示1) EDA实训箱上的功能有限,可以用到的有8支数码管和12个lED灯。

年、月、日和时、分、秒可以通过数码管显示,年月日和时分秒的切换可以通过拨动开关控制,校正可以通过按键实现。

2)输入的秒脉冲由DEA实训仪上的20MHZ晶振经过分频得到,秒脉冲经过60分频后产生1分钟脉冲信号,在经过60分频后产生1小时的脉冲信号,最后进行24分频,得到1天的脉冲送24进制的 cout输出。

在将两个60分频和一个24分频的输出送到送到数码管的译码器输入端,得到24小时的计时显示结果。

由此得到数字日历的计时器模块。

1.2.2设计框图cout cout秒脉冲图1.2.2数字钟的原理框图2 各个模块程序的设计2.1图1 1HZ秒脉冲的分频模块元件符号2.1输入的秒脉冲由EDA实训仪上的20MHZ晶振经过分频得到,设计一个输出频率为1HZ的秒脉冲。

万年历实验报告

万年历实验报告

篇一:电子万年历实验报告重庆电力高等专科学校计算机科学系实训报告课程名称实验名称班级信息0911 姓名廖林单片机应用技术电子万年历学号 200903020243 教师任照富日期 2010-12-28 地点一教七机房一、实训任务:1、看实训要求,计划出自己实训所要用元件,在网上查找资料。

2、思考仿真原理图,然后画出来(具体i/o口暂时不确定)。

3、在网上找一些程序,然后自己改一些,进行编译。

4、编译无误之后,跟原理图相联系,完成最终的仿真图。

5、进行最后的改写,把程序和仿真原理图确定下来。

6、根据仿真图形,制作出实物图。

7、在实物制作过程中,进行电路检查和最后的调试。

二、实训要求:要求:能显示阳历的年、月、日、星期、时、分、秒;能显示阴历的年、月、日;能进行日期、时间的调整。

扩展:能显示当前温度;有闹钟功能(至少2个)选择ds1302时钟芯片,温度传感器采用ds18b20数字温度传感器。

三、实训环境(软件、硬件):软件:keil protues7.5硬件:计算机2单片机的应用四、实训意义:在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。

因此我们需要一个定时系统来提醒这些忙碌的人,而数字化的钟表给人们带来了极大的方便。

由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以单片机为核心,外加一些外围设备来实现。

电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。

因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。

所以,电子万年历无论作为竞赛题目还是毕业设计题目都是很有价值。

对于这个实验项目,我们还要有一些其他的基本知识掌握和意义:(1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,为了培养动手能力和解决实际问题的经验,了解专用时钟芯片ds1302,并会用ds1302芯片开发时钟模块,应用到其他系统中去。

EDA技术及应用实训报告

EDA技术及应用实训报告

EDA技术及应用实训报告
1.设计自动化技术
设计自动化技术(Design Automation)是一项将新科技与新技术结合在一起的实际工程学科,它将工程设计和制造过程的各个方面进行自动建模、自动仿真、自动集成,从而实现对制造技术的模拟和控制,实现优化系统设计和提高设计效率的目的。

设计自动化是达到设计自动化的途径之一,它强调了“从设计中抽象出规则、流程、模型和算法”,并对它们进行自动化,从而克服了手动设计中的过程繁琐、重复劳动的缺点,为设计师提供了更快、更准、更节劳的方法。

2、EDA技术
EDA(电子设计自动化)是在电子产品设计的整个流程中使用计算机软件和硬件工具来实现设计自动化的过程,也称之为电子产品设计自动化(EDA)。

EDA技术已经发展到成熟阶段,&&主要用于电路板设计、电路仿真、CAD/CAM设计、电路布线和测试等领域。

EDA万年历实训报告

EDA万年历实训报告

《EDA技术及其应用》实训报告班级 11241姓名苏合信,张明伟,朱迎新,王亚坤学号 22,11,28,29指导教师薛瑞2013年05月26 日北华航天工业学院11级电子工程系目录一设计要求 (2)1.0 设计目的及意义 (2)1.1 设计要求 (2)二设计流程: (2)2.0 原理框图 (2)2.1 VHDL设计思路 (3)三 VHDL程序 (3)3.0 天计数模块 (6)3.1 月计数模块 (7)3.2 年计数模块 (9)3.3 调时控制模块 (11)3.4 译码模块 (12)3.5 扫描模块 (12)四心得体会 (14)4.0 (14)五附录 (15)5.0 顶层文件 (15)一、设计目的及意义1.0 设计目的及意义在掌握EDA理论知识的基础上进一步了解EDA开发软件QuartusII的使用,掌握VHDL编程的技巧及方法,学会并熟练掌握PC机与实验箱的连接下载及使用,进一步提高自己的动手操作能力。

1.1 设计要求利用QuartusII编写程序在实验箱上实现万年历的年月日的显示,要求能够区分闰年与平年;年月日,时分秒可以自由调整并能随意切换;能够清楚地分辨出年月日,时分秒的显示状态。

二、设计流程2.0 原理框图2.1 VHDL设计思路编写年月日模块,年模块要有一个反馈端口控制月;月也要有一个反馈端口控制日;最后编写调时模块和扫描模块,以及译码模块,可以用k1,k2调节年月,用对应的LED等的亮灭来表示调节状态。

三、VHDL程序3.0 天计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tian isport(clk:in std_logic;pan:in std_logic_vector(1 downto 0);T1:out std_logic_vector(6 downto 0);cout:out std_logic);end tian;architecture one of tian issignal q1:std_logic_vector(3 downto 0);signal q2:std_logic_vector(2 downto 0);signal ab:std_logic_vector(1 downto 0);beginprocess(clk,pan)beginif clk'event and clk='1'then q1<=q1+1;if q1=9 then q1<="0000";q2<=q2+1;end if;case pan iswhen "00"=>if q2=3 and q1=1 then q2<="000" ;q1<="0001";cout<='1'; else cout<='0';end if;when "01"=>if q2=3 and q1=0 then q2<="000" ;q1<="0001";cout<='1'; else cout<='0';end if;when "10"=>if q2=2 and q1=8 then q2<="000" ;q1<="0001";cout<='1'; else cout<='0';end if;when "11"=>if q2=2 and q1=9 then q2<="000" ;q1<="0001";cout<='1'; else cout<='0';end if;when others=>null;end case;end if;end process;T1(3 downto 0)<=q1;T1(6 downto 4)<=q2;end one;3.1 月计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yue isport(clk,run:in std_logic;cout:out std_logic;pan:out std_logic_vector(1 downto 0);Y1:out std_logic_vector(6 downto 0));end yue;architecture behav of yue issignal q1:std_logic_vector(3 downto 0);signal q2:std_logic_vector(2 downto 0);signal q3:std_logic_vector(6 downto 0);beginprocess(clk,run,q1,q2)beginif clk'event and clk='1' thenq1<=q1+1;if q1=9 then q1<="0000";q2<=q2+1;end if;if q1=2 and q2=1 thenq1<="0001";q2<="000";cout<='1';else cout<='0';end if;q3<=q2&q1;case q3 iswhen "0000001"=>pan<="00";when "0000010"=>if run='1' then pan<="11";else pan<="10"; end if;when "0000011"=>pan<="00";when "0000100"=>pan<="01";when "0000101"=>pan<="00";when "0000110"=>pan<="01";when "0000111"=>pan<="00";when "0001000"=>pan<="00";when "0001001"=>pan<="01";when "0001010"=>pan<="00";when "0001011"=>pan<="01";when "0001100"=>pan<="00";when others=>null;end case;end if;Y1(3 downto 0)<=q1;Y1(6 downto 4)<=q2; end process;end behav;3.2 年计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity nian isport(clk :in std_logic;n1:out std_logic_vector(6 downto 0); run:out std_logic);end entity;architecture one of nian issignal q1,q3:std_logic_vector(3 downto 0); signal q2:std_logic_vector(2 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenq1<=q1+1;q3<=q3+1;if q1=9 then q2<=q2+1;q1<="0000";end if;if q3=3 thenq3<="0000";run<='1';else run<='0';end if;if q1=9 and q2<=7 then q1<="0001";q2<="000"; end if;end if;end process;n1(3 downto 0)<=q1;n1(6 downto 4)<=q2;end one;3.3 调时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tiaoshi isport(k1,k2:in std_logic;m1,m2:in std_logic;n1,n2,d1,d2:out std_logic);end entity;architecture one of tiaoshi issignal q:std_logic_vector(3 downto 0);beginprocess(k1,q,m1,m2)beginif k1'event and k1='1' then q<=q+1;if q=2 then q<="0000";end if;end if;case q iswhen"0000"=>n1<=m1;n2<=m2;d1<='0';d2<='0'; when"0001"=>n1<=k2;n2<='0'; d1<='1';d2<='0'; when"0010"=>n1<='0';n2<=k2; d1<='0';d2<='1'; when others=>NULL;end case;end process;end one;3.4 扫描模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime isport(clk1:in std_logic;tian,yue:in std_logic_vector(6 downto 0); nian:in std_logic_vector(6 downto 0);daout:out std_logic_vector(3 downto 0);dp:out std_logic;sel:out std_logic_vector(2 downto 0));end seltime;architecture fun of seltime issignal count:std_logic_vector(2 downto 0); beginsel<=count;process(clk1)beginif(clk1'event and clk1='1')thenif(count>="101")thencount<="000";elsecount<=count+1;end if;end if;case count iswhen "000"=>daout<=tian(3 downto 0);dp<='0'; when"001"=>daout(3)<='0';daout(2 downto 0)<=tian(6 downto 4);dp<='0';when "010"=>daout<=yue(3 downto 0);dp<='1'; when"011"=>daout(3)<='0';daout(2 downto 0)<=yue(6 downto 4);dp<='0';when "100"=>daout<=nian(3 downto 0);dp<='1'; when others=>daout(3 downto 2)<="00"; daout(2 downto 0)<=nian(6 downto 4);dp<='0';end case;end process;end fun;3.5 译码模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led isport(ledi:in std_logic_vector(3 downto 0);ledo:out std_logic_vector(6 downto 0));end entity;architecture one of led isbeginprocess(ledi)begincase ledi iswhen "0000"=>ledo<="1111110";when "0001"=>ledo<="0110000";when "0010"=>ledo<="1101101";when "0011"=>ledo<="1111001";when "0100"=>ledo<="0110011";when "0101"=>ledo<="1011011";when "0110"=>ledo<="1011111";when "0111"=>ledo<="1110000";when "1000"=>ledo<="1111111";when "1001"=>ledo<="1111011";when others=>null;end case;end process;end one;四、心得体会通过本次万年历实训,让我从中收获很多,感触也很多。

EDA实训万年历

EDA实训万年历

《EDA技术与应用》实训报告学号姓名指导教师:实训题目:数字日历1.系统设计1.1 设计要求1.1.1 设计任务:设计一个数字日历电路1.1.2 技术要求:⑴用Verilog HDL语言设计一个数字日历。

⑵数字日历能正确显示年、月、日、时、分和秒。

⑶通过开关分别控制对年、月、日或时、分、秒校对及自动切换、,并且运用按钮对年、月、日或时、分、秒校对。

⑷通过按钮对数码管全部清零。

⑸拓展功能:添加时钟闹钟功能,并通过LED管显示。

1.2 方案比较:由于这次实验用到的仪器是EDA实训仪,数码管个数只有八个,因此不能同时显示年、月、日、时、分、秒。

但是实训仪的LED管只有12个,因此在拓展功能时12小时做一个周期的整点记时显示。

在多次的测试和修改后,得到此最好方案。

1.3 方案论证1.3.1 总体思路:通过EDA课程的学习,可知运用Verilog HDL语言设计一个数字日历括计时器模块(jsq60、jsq24)、年月日模块(nyr2009)、控制模块(conr)、校时选择模块(mux_4)、显示选择模块(mux_16)和闹钟定时模块(LED1)、闹钟灯模块(nzd);然后将各个模块连接起来画成原理图再下载到实训仪上,调节开关及按钮来实现数字日历的功能。

1.3.2 设计方案:总原理图如下:2.各个模块程序的设计(1)设计一个分频器进行20MHz分频得到实训所需的1Hz的频率分析:这是个20MHZ时钟的分频器,将原来EDA实训仪提供的频率为20MHZ 的时钟转换成频率1HZ的时钟,然后输出到有需要的端口,触发模块起作用。

(2)分别设计一个能显示年月日和时分秒的程序校准年月日和秒分时的原理图如下:分析:①当k=0时,开关j1,j2,j3校秒时分然后将信号分别送到jsq24模块的jm(校秒)、jf(校分)、js(校时)。

②当k=1时,开关j1,j2,j3校年月日然后将信号分别送到nyr2009模块的jr(校日)、jy(校月)、jn(校年)。

EDA技术及应用实训报告

EDA技术及应用实训报告

桂林电子科技大学信息科技学院《EDA技术及应用》实训报告学号1252100301姓名指导教师:覃琴2014年4 月29 日实训题目:数字日历电路1 系统设计1.1 设计要求1.1.1 设计任务(1)用Verilog HDL语言设计出能够在EDA实训仪的I/O设备和PLD芯片实现的数字日历。

(2)数字日历能够显示年、月、日、时、分和秒。

(3)用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日(如20140101),然后在另一时间段内显示时、分、秒(如010101099),两个时间段能自动倒换。

(4)数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时。

(5)体现创新部分1.1.2 性能指标要求1)数字电路能够在一定的时间内显示切换的功能,并且能手动校准年月日和时分秒2)具有复位和进位的功能3)能起到提示的作用,如闹钟或亮彩灯等。

1.2 设计思路及设计框图1.2.1设计思路如图1.2.2所示1) EDA实训箱上的功能有限,可以用到的有8支数码管和12个lED灯。

年、月、日和时、分、秒可以通过数码管显示,年月日和时分秒的切换可以通过拨动开关控制,校正可以通过按键实现。

2)输入的秒脉冲由DEA实训仪上的20MHZ晶振经过分频得到,秒脉冲经过60分频后产生1分钟脉冲信号,在经过60分频后产生1小时的脉冲信号,最后进行24分频,得到1天的脉冲送24进制的 cout输出。

在将两个60分频和一个24分频的输出送到送到数码管的译码器输入端,得到24小时的计时显示结果。

由此得到数字日历的计时器模块。

1.2.2设计框图cout cout秒脉冲图1.2.2数字钟的原理框图2 各个模块程序的设计2.1图1 1HZ秒脉冲的分频模块元件符号2.1输入的秒脉冲由EDA实训仪上的20MHZ晶振经过分频得到,设计一个输出频率为1HZ的秒脉冲。

eda实训报告(全)

eda实训报告(全)

《EDA技术及其应用》实训报告班级电信一班姓名 xxxx学号 103001231 指导教师 xxxx2012年05月21 日xxxxxxxx学院10级机械电子工程系目录1.1 课题 (3)1.2 实验的目的及意义 (3)1.3 实验的内容及要求 (3)1.4 实验的地点 (3)1. 5 实验的器材 (3)1. 6 实验设计思想 (3)1. 7 各模块的设计程序和元件介绍 (3)1. 8 实验感想 (11)1.1实验的课题:万年历1.2实验的目的及意义:(1)掌握EDA技术及FPGA技术的开发流程。

(2)掌握系统设计的方法和层次化设计的方法。

(3)掌握QuartusII软件的使用方法。

(4)掌握VHDL语言的程序设计、编写、编译和错误修改。

(5)掌握熟悉EDA实验箱的各个模块(6)掌握EDA试验箱与pc机的连接、下载和引脚绑定的全过程和方法,实现功能仿真。

1.3 实验的内容及要求:(1)实现年、月、日、时、分、秒的显示并具有闰年判断计数的功能(2)在试验箱上通过按键实现年月日和时分秒的显示切换。

(3)利用试验箱和pc机进行功能测试并实现万年历的显示功能。

1.4 实验的地点:郑州信息科技职业学院EDA实验室1.5 实验的器材:硬件:计算机、EDA试验箱软件:QuartusII软件1.6 实验设计思想:将万年历分为各个模块分项处理,每个小模块实现一个小的功能,最后在万年历的顶层文件中将各个模块整好在一起,实现万年历的整体功能。

这是万年历实验整体的设计思想。

其中组成模块有:秒计时模块cnt60、分计时模块cnt60、时计时模块cnt24、日计时模块tian、月计时模块yue、年计时模块nian、调整模块tz、控制模块mux21,然后在顶层文件中连接个各个模块组成万年历的完整连接图,之后再pc机上进行编译,完成引脚绑定再下载到实验箱上,根据程序内容及引脚绑定通过按键控制和led 灯的显示最终完成测试。

1.7各模块设计:1、秒分时、年月日、调整模块、控制模块设计程序(1)秒计时模块cnt60(六十进制计数器)程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT60 isport( CLK:in std_logic;CQ1,CQ2:out std_logic_vector(3 downto 0);COUT:OUT std_logic);end entity CNT60;architecture art of CNT60 issignal s1,s2:std_logic_vector(3 downto 0);beginprocess(clk)beginIF clk'event AND clk='1' then S1<=S1+1;IF S1=9 THEN S1<="0000"; S2<=S2+1; END IF;IF s2=5 AND S1=9 then s1<="0000"; s2<="0000"; COUT<='1';else COUT<='0'; end if;end if;CQ1<=S1; CQ2<=S2;end process;END art;将程序用QuartusII软件编译之后生成的cnt60模块元件如图所示:(此模块实现六十进制计数,用它实现分和秒功能)(2)分计时模块cnt60:(六十进制计数器)分计时模块和秒计时秒快一样,同样是用六十进制计数器cnt60,程序和生成元件同上所述。

万年历的实训报告模板

万年历的实训报告模板

摘要:本实训报告旨在通过对万年历的设计与应用,加深对时间管理、编程技术以及用户界面设计的理解。

通过实训,我们不仅学会了万年历的基本原理,还掌握了编程实现和用户体验优化的方法。

以下是对实训过程的详细记录和分析。

一、实训目的1. 理解万年历的基本原理和设计思路。

2. 掌握编程语言(如Python、Java等)在万年历开发中的应用。

3. 提升用户界面设计能力,优化用户体验。

4. 培养团队合作与沟通能力。

二、实训环境1. 操作系统:Windows 102. 开发工具:Python3.8、PyCharm3. 用户界面设计工具:Qt Designer4. 数据库:SQLite三、实训原理万年历是一种用于记录和显示日历的工具,它按照公历或农历的日期排列,方便用户查看和查询。

万年历的设计原理主要包括以下几个方面:1. 闰年判断:通过判断年份是否为4的倍数来确定是否为闰年,同时还需考虑能被100整除但不能被400整除的年份不是闰年。

2. 月份天数:根据月份和闰年/非闰年的判断来确定每月的天数。

3. 星期计算:根据年、月、日计算出星期几。

4. 农历转换:根据农历的算法将公历日期转换为农历日期。

四、实训过程1. 确定项目需求:根据实训要求,设计一个功能齐全、界面友好的万年历软件。

2. 设计软件架构:确定软件的模块划分,包括主界面、日期计算、农历转换等模块。

3. 编写代码实现:使用Python语言实现万年历的各个功能模块。

4. 用户界面设计:使用Qt Designer设计软件的用户界面,包括日期选择、查询结果展示等。

5. 数据库设计:使用SQLite数据库存储万年历的数据,包括日期、农历信息等。

6. 调试与优化:对软件进行调试,修复可能出现的问题,并优化用户体验。

五、实训结果1. 成功实现万年历的基本功能,包括公历和农历的日期转换、查询等。

2. 软件界面简洁美观,用户操作方便。

3. 数据库设计合理,保证了数据的完整性和安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《EDA技术及其应用》实训报告班级 **级通信一班姓名 * * *学号 *********指导教师 * * *2010 年* 月* 日******学院机械电子工程系目录一课程设计的目的及意义 (1)1.0设计目的 (1)1.1设计意义 (2)1.2设计要求 (2)二设计流程: (2)2.0 万年历原理 (2)2.1 原理框图 (2)2.2原理框图中各子模块的VHDL语言表述及生成模块框图 (3)2.3 VHDL设计流程 (3)三VHDL程序 (3)3.0 60进制计数器 (4)3.1 24进制计数器 (4)3.2 天计数模块 (5)3.3 月计数模块 (6)3.4 年计数模块 (7)3.5 秒分时和日月年分组输出控制模块...............................................错误!未定义书签。

3.6秒分时和日月年分两种模式切换和调整模块..................................错误!未定义书签。

3.7下载到试验箱上实现其功能..............................................................错误!未定义书签。

四总结 (10)4.0 (10)一课程设计的目的及意义1.0设计目的本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的数控分频器基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。

进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤1.1设计意义巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。

为了进一步了解计算机工作组成原理与系统结构,深入学习EDA技术,用VHDL技术,用VHDL语言去控制将会使我们对本专业知识可以更好地掌握。

熟悉QUARUS II软件的应用。

熟悉EDA实验开发系统的基本使用。

学习用VHDL基本单元电路的时间应用。

进一步掌握EDA的多层次设计方法1.2 设计要求(1)在Quartus中编写VHDL程序实现年、月、日、时、分、秒各模块的功能。

(2)将各模块在原理图中连接起来实现百年历计时功能。

(3)将年、月、日和时、分、秒两种模式分别在试验箱模式7下显示,并设置键8为模式的切换键,键3 为调整数键,键6为在当前模式下切换调整位键。

将各端口引脚绑定好并下载到实验箱实现其功能,观察是否能实现相应功能效果,如是否可以进位,是否能判断闰年等等。

二设计流程:2.0 万年历原理秒、分是60进制,时是24进制,日31天由月1.3.5.7.8.10.12控制,日28/29由2月和润年控制,日30由月4.6.9.11控制。

原理如下图:2.1 原理框图根据实验要求,截得实验原理框图如下:CLK CQ1[3..0]CQ2[3..0] COUT CNT60inst82.2 原理框图中各子模块的VHDL 语言表述及生成模块框图:2.3 VHDL 设计流程(1)设计输入根据电路设计所提出的要求,将程序输入到VHDL 编辑器中区编辑。

(2)功能及模拟用VHDL ,模拟器对编辑后的程序进行模拟,如果达不到设计要求,则可以重新修改程序,直到通过功能模拟。

(3)逻辑综合与优化,将通过功能模拟的程序放到VHDL 编译器中,进行逻辑、综合与优化。

(4)门级模拟对电路用VHDL 。

仿真器仿真。

可对门级电路的延时、定时状态、驱动能力进行仿真。

三 VHDL 程序3.0 60进制计数器library ieee; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60 ISPORT(CLK:IN STD_LOGIC;CQ1,CQ2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT60;ARCHITECTURE behav OF CNT60 ISBEGINPROCESS(CLK)V ARIABLE Q1,Q2: STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENQ1:=Q1+1;IF Q1>9 THEN Q1:="0000";Q2:=Q2+1;END IF;IF Q2=6 AND Q1=0 THEN Q1:="0000";Q2:="0000";COUT<='1';ELSE COUT<='0';END IF;END IF;CQ1<=Q1;CQ2<=Q2;END PROCESS;END;3.1 24进制计数器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt24 ISPORT(CLK:IN STD_LOGIC;CQ1,CQ2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT:OUT STD_LOGIC);END cnt24;ARCHITECTURE behav OF cnt24 ISBEGINPROCESS(CLK)V ARIABLE Q1,Q2: STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENQ1:=Q1+1;IF Q1>9 THEN Q1:="0000";Q2:=Q2+1;END IF;IF Q2=2 AND Q1=4 THEN Q1:="0000";Q2:="0000";COUT<='1';ELSE COUT<='0';END IF;END IF;CQ1<=Q1;CQ2<=Q2;END PROCESS;END;3.2 天计数模块Library ieee;USE IEEE.STD_LOGIC _UNSIGNED.ALL;USE IEEE.STD_LOGIC _1164.all;Entity day isPort( clk : in std_logic;a,b : in std_logic;T1,T2 : out std_logic_vector(3 downto 0);cout : out std_logic);end day;Architecture one of day issignal Q1,Q2: STD_LOGIC_VECTOR(3 DOWNTO 0);signal ab: STD_LOGIC_VECTOR(1 DOWNTO 0);BeginPROCESS(clk,a,b)beginIF CLK'EVENT AND CLK='1' THENQ1<=Q1+1;IF Q1=9 THEN Q1<="0000";Q2<=Q2+1;end if;ab<=a&b;case ab iswhen"00"=>if Q2=3 AND Q1=1 THENQ2<="0000"; Q1<="0001"; cout<='1';else cout<='0';end if;when"01"=>if Q2=3 and Q1=0 THENQ2<="0000" ;Q1<="0001";cout<='1';else cout<='0';end if;when"10"=>if Q2=2 AND Q1=8 thenQ2<="0000" ;Q1<="0001";cout<='1';else cout<='0';end if;when"11"=>if Q2=2 AND Q1=9 thenQ2<="0000" ;Q1<="0001";cout<='1';end if;when others =>NULL;end case;END IF;T1<=Q1;T2<=Q2;END PROCESS;END ARCHITECTURE one;3.3 月计数模块library ieee;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY yue123 ISPORT(CLK,run:IN STD_LOGIC;Y1,Y2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);a,b:OUT STD_LOGIC;COUT:OUT STD_LOGIC);END yue123;ARCHITECTURE ONE OF yue123 ISsignal Q2,Q1:STD_LOGIC_VECTOR (3 DOWNTO 0);signal Q2Q1:STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINPROCESS(CLK,run)BEGINIF CLK'EVENT AND CLK='1' THENQ1<=Q1+1;IF Q1=9 THEN Q1<="0000";Q2<=Q2+1;END IF;IF Q2=1 AND Q1=2 THEN Q1<="0001";Q2<="0000";COUT<='1';ELSE COUT<='0';END IF;end if;end PROCESS;PROCESS(q2,q1)beginQ2Q1<=Q2&Q1;case Q2Q1 iswhen"00000001"=> a<='0';b<='0';when"00000010"=>if run='1'then a<='1';b<='1';else a<='1';b<='0';end if;when"00000011"=>a<='0';b<='0';when"00000100"=>a<='0';b<='1';when"00000101"=>a<='0';b<='0';when"00000110"=>a<='0';b<='1';when"00000111"=>a<='0';b<='0';when"00001000"=>a<='0';b<='0';when"00001001"=>a<='0';b<='1';when"00010000"=>a<='0';b<='0';when"00010001"=>a<='0';b<='1';when"00010010"=>a<='0';b<='0';when others=>null;end case;END PROCESS;Y1<=Q1;Y2<=Q2;END ARCHITECTURE ONE; 3.4 年计数模块library ieee; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY nian IS PORT(CLK:IN STD_LOGIC;N1,N2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);run:OUT STD_LOGIC);END nian;ARCHITECTURE ABC OF nian ISsignal Q1,Q2,Q3:STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINPROCESS(CLK,Q1,Q2)BEGINIF CLK'EVENT AND CLK='1' THENQ1<=Q1+1;Q3<=Q3+1;IF Q1=9 THEN Q1<="0000";Q2<=Q2+1;END IF;IF Q3=3 THEN Q3<="0000";run<='1';else run<='0';end if;IF Q2=9 AND Q1=9 THEN Q1<="0000";Q2<="0000";END IF;end if;end PROCESS;N1<=Q1;N2<=Q2;end;3.5秒分时和日月年分组输出控制模块library ieee;USE IEEE.STD_LOGIC _1164. ALL;USE IEEE.STD_LOGIC _ UNSIGNED.ALL;entity kong isport(s1,s2,f1,f2,h1,h2,t1,t2,y1,y2,n1,n2:in std_logic_vector(3 downto 0);k:in std_logic;st1,st2,fy1,fy2,hn1,hn2:out std_logic_vector(3 downto 0);l:out std_logic);end kong;architecture one of kong isbeginprocess(k)beginif k='0' thenst1<=s1;st2<=s2;fy1<=f1;fy2<=f2;hn1<=h1;hn2<=h2;l<='1';elsest1<=t1;st2<=t2;fy1<=y1;fy2<=y2;hn1<=n1;hn2<=n2;l<='0';end if;end process;end; 3.6 秒分时和日月年分两种模式切换和调整模块library ieee; USE IEEE.STD_LOGIC _1164. ALL; USE IEEE.STD_LOGIC _ UNSIGNED.ALL; entity tiaoshi is port(mo,fo,so,ro,yo:in std_logic; k2,k3:in std_logic; fi,si,ri,yi,ni:out std_logic; l2,l3,l4,l5,l6:out std_logic);end tiaoshi;architecture one of tiaoshi issignal a:std_logic_vector(3 downto 0);beginprocess(k2,k3)beginif k3'event and k3='1' then a<=a+1;if a=5 then a<="0000";end if;end if;case a iswhen "0000"=>fi<=mo;si<=fo;ri<=so;yi<=ro;ni<=yo;l2<='0';l3<='0';l4<='0';l5<='0';l6<='0'; when "0001"=>fi<=k2;si<='0';ri<='0';yi<='0';ni<='0';l2<='1';l3<='0';l4<='0';l5<='0';l6<='0'; when "0010"=>fi<='0';si<=k2;ri<='0';yi<='0';ni<='0';l3<='1';l2<='0';l4<='0';l5<='0';l6<='0'; when "0011"=>fi<='0';si<='0';ri<=k2;yi<='0';ni<='0';l4<='1';l3<='0';l2<='0';l5<='0';l6<='0'; when "0100"=>fi<='0';si<='0';ri<='0';yi<=k2;ni<='0'; l5<='1';l3<='0';l4<='0';l2<='0';l6<='0'; when "0101"=>fi<='0';si<='0';ri<='0';yi<='0';ni<=k2; l6<='1';l3<='0';l4<='0';l5<='0';l2<='0'; when others=>null;end case;end process;end one;3.7下载到试验箱上实现其功能:(2)设置引脚(3)下载到试验箱(4)功能实现四总结经过几周的EDA实训,我们在王老师的带领下一步一步的做出了最终的实训结果——万年历,感觉很新奇、很高兴。

相关文档
最新文档