版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA技术及其应用实 训 报 告 班 级 姓 名 学 号 指导教师 目 录一 设计要求21.0 设计目的及意义21.1 设计要求2二 设计流程:22.0 原理框图22.1 VHDL设计思路3三 VHDL程序33.0 天计数模块63.1 月计数模块73.2 年计数模块93.3 调时控制模块113.4 译码模块12 3.5 扫描模块.12四 心得体会144.014五 附录.155.0 顶层文件151、 设计目的及意义1.0 设计目的及意义 在掌握EDA理论知识的基础上进一步了解EDA开发软件QuartusII的使用,掌握VHDL编程的技巧及方法,学会并熟练掌握PC机与实验箱的连接下载及使用,进一步
2、提高自己的动手操作能力。1.1 设计要求 利用QuartusII编写程序在实验箱上实现万年历的 年月日的显示,要求能够区分闰年与平年;年月日,时分秒可以自由调整并能随意切换;能够清楚地分辨出年月日,时分秒的显示状态。2、 设计流程2.0 原理框图2.1 VHDL设计思路 编写年月日模块,年模块要有一个反馈端口控制月;月也要有一个反馈端口控制日;最后编写调时模块和扫描模块,以及译码模块,可以用k1,k2调节年月,用对应的LED等的亮灭来表示调节状态。3、 VHDL程序3.0 天计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_lo
3、gic_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 is signal q1:std_logic_vector(3 downto 0);signal q2:std_logic_vector(2 downto 0);signal ab:std_logic_vector(1 downto 0
4、);begin process(clk,pan) begin if 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;w
5、hen "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 &quo
6、t;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
7、_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 downt
8、o 0);beginprocess(clk,run,q1,q2)beginif clk'event and clk='1' then q1<=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 is whe
9、n "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<=&q
10、uot;00"when "0000110"=>pan<="01" when "0000111"=>pan<="00"when "0001000"=>pan<="00"when "0001001"=>pan<="01"when "0001010"=>pan<="00"when "0001011"=>pan
11、<="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
12、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' then q1<=q1+1;q3<=q3+1; if q1=9 then q2<=q2+1;q1<="0000
13、"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;us
14、e 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) begin if k1'event and k1='1' then q<=q+1;if q=2 then q<=&qu
15、ot;0000" end if;end if; case q is when"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
16、9; 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
17、_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"else
18、count<=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"0
19、11"=>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
20、;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&qu
21、ot;when "0001"=>ledo<="0110000"when "0010"=>ledo<="1101101"when "0011"=>ledo<="1111001"when "0100"=>ledo<="0110011"when "0101"=>ledo<="1011011"when "0110"=>l
22、edo<="1011111"when "0111"=>ledo<="1110000"when "1000"=>ledo<="1111111"when "1001"=>ledo<="1111011"when others=>null;end case;end process;end one; 4、 心得体会 通过本次万年历实训,让我从中收获很多,感触也很多。在实训这段时间里,我对EDA有了更深的理解,以前很多不
23、知道的东西,实训中一大部分的问题都得到了解决,比如说:以前学EDA理论课时,只知道在电脑上敲程序,然后仿真,生成模块,它能实现的功能在老师的解说下也知道,但是它功能实现的形式是什么样的,只能靠着想象力去猜测。做了实训后才明白它是通过实验箱上的模块和一些电路来实现的。平时我总是眼高手低,不想去做一些实际的东西,通过这次实训,我明白了,只有自己亲手做,才会对每一个细节了如指掌,即使在中间遇到一些小问题,自己也能够有条理的寻找错误,寻找漏洞,不至于不知道该从哪里开始找错误。实训过程中切身体会到理论和实践的差别有多大,老师在课堂上讲时讲的很清楚,听课也比较认真,能听的懂老师讲的什么,所以就以为自己真的
24、懂了,但在实训时当我们动手写程序时,就出了问题,各底层文件总是出现小错误,导致顶层文件万年历不能实现功能。万年历一路编来可谓是坎坎坷坷,但大家都没有放弃项目的开发,在做的过程中遇到问题时,同学们都积极主动的找老师找同学帮忙解决难题,使得整个实训能够顺利进行直至完成。通过这次实训,我不仅在知识上得到很大程度的提升,而且还让我意识到合作的重要性,作为一个小组,一个团队,就要有合作精神,彼此之间要有很好的沟通,要及时提出自己的见解,这样才能使整个小组的工作顺利的进展下去。此次万年历实训我们是四个人作为一个团队,在实训过程中,有时候一个人在编写程序时出现一点很小的错误(例如:程序中少了一个分号或者少了
25、一个字母)就会导致整个程序编译不能通过,而四个人在一起,出现错误时一起去寻找,总会有一个人及时发现错误的,发现后及时纠正错误,然后继续开展下面的工作。这样三个人互相协作,共同努力,各自发挥自身的优势,这样工作便能顺利的进行下去,如果是一个人单独去完成,在出现错误的时候自己要想发现错误便需要很长的时间才能发现,这样很浪费时间,浪费时间的结果就是直接导致工作效率低。而在如今的社会工作中,许多公司企业都要求应聘者要有很好的团队合作精神,工作时要有高效的工作效率。因此,在这次实训中我也切身体会到了团队合作的重要性。实训是对每个学生综合能力的检验是让我们能够更好的巩固专业知识,积累工作经验,掌握工作技能
26、。通过这次实训,让我深深的体会到要想做好每一件事情,除了自己平时要有一定的专业知识外,还需要一定的实践动手能力,操作能力,说实话,这次实训让我学到了很多东西,也明白了很多事情。在此还要感谢王老师耐心、认真的指导。谢谢薛老师!5、 附录5.0 顶层文件 library ieee;use ieee.std_logic_1164.all;entity nianli isport(clk,clkdsp:in std_logic;k1,k2:in std_logic;dpout,d10,d20:out std_logic;ledout :out std_logic_vector(6 downto 0);
27、sel1:out std_logic_vector(2 downto 0); end entity;architecture one of nianli iscomponent tian port(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 component; component yue port(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 component;component nianport(clk :in std_logic;n1:out std_logic_vector(6 downto 0); run:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学工作计划模板合集5篇
- 消防演练活动总结
- 音乐组教研工作计划(锦集5篇)
- 幼儿园班级计划撰写培训心得
- 暑假学生学习计划模板合集八篇
- 竖笛兴趣小组的活动计划
- 二年级下学期数学教学计划三篇
- 我的青春梦想演讲稿合集15篇
- 餐饮简单辞职报告(9篇)
- 中国与周边国家的领土纠纷
- 兰州生物制品研究所笔试
- 【MOOC】信号与系统-北京邮电大学 中国大学慕课MOOC答案
- 耳鸣、耳聋课件
- 屠宰宰猪场轻工行业双控体系建设文件风险分级管控体系
- 医院护工培训-教学课件
- 考研考博-英语-中国矿业大学(北京)考试押题卷含答案详解
- 栏杆百叶安装施工方案
- 低压配电电源质量测试记录
- 安徽省水利工程质量检测和建筑材料试验服务收费标准
- 2022课程标准解读及学习心得:大单元教学的实践与思考
- OA协同办公系统运行管理规定
评论
0/150
提交评论