已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华东交通大学论文报告纸 第23页 共23页 微波炉定时控制器摘要:本文针对日常生活用品微波炉进行设计,使用VHDL语言实现多种常用功能,然后进行组合拼装,形成一个具有一定功能的硬件。关键词:EDA,VHDL硬件描述语言,微波炉定时控制器。目录一、设计题目和要求-3二、方案分析与方案比较-4三、单元模块设计-6 3.1、FENPIN模块设计-6 3.2、FIRST模块设计-7 3.3、JIANJISHU模块设计-8 3.4、CHOICE和VIEW模块设计-10四、硬件实验-12五、收获与体会-14附页:程序代码- 15参考文献-23一、设计题目和要求设计题目为:微波炉定时控制器设计要求:1、复位开关: 2、启动开关: 3、烹调时间设置: 4、烹调时间显示:5、七段码测试:6、启动输出:7、按TEST键可以测试七段码管,显示为“8888”; 8、设定时间后,按启动键开始烹调,同时七段码显示剩余时间,时间为0时,显示烹调完成信息“CDEF”二、方案分析与方案比较方案一:刚开始准备用状态机做,鉴于题目的要求应该有五个状态,状态图为此方案的缺点是:在设定时间时需要四个按钮分别控制秒,十秒,分,十分4个数值的初始化加,另外有些状态转换不是很稳定,效果很难在实验板看出来,刚开始试了一下,没有成功;方案二:用一般的VHDL语言写,没有牵涉到状态,反而比较简单,而且设定时间可以采用两个按钮分别提供一个移位信号和一个加信号(这与实际比较相符),管脚绑定简单(特别是数码管),这里采用的是动态扫描位选输出数据,不需对四个数码管都进行绑定;综合比较发现还是方案二好,不仅程序简单,而且符合实际。A先有一个大概的模块化设计,就如下图:预设初值 倒计时减计数 输出数据 B:再在上面大模块的基础上进行改进 增加复位端和测试端 复位输出数据 预设 倒计时 实现闪烁初值 减计数 测试C:具体的设计过程:1、刚开始设计是先完成了FENPIN模块的设计,因为这个模块比较简单。2、然后是对设初值大模块的设计,在这一部分的设计遇到两方案:(1)设计四个按钮的初始话模块,四个按钮分别控制秒,十秒,分,十分4个数值的初始化加;(2)设计两个按钮的初始化模块,两个按钮分别提供一个移位信号和一个加信号;两个方案都用了一下,发现还好是2号方案比较好,不仅程序上比较简单而且省了很多按钮的使用,比较符合实际应用的要求;3、在完成了初始化模块的设计之后,接下来就是减计数模块的设计,只要把由初始化模块所提供的数据进行减计数即可;4、在完成以上三个模块时,程序的已经初见雏形了,然后把这三个模块连接起来,添加上复位和测试按钮就可以了;5、用动态扫描的方法队数据进行输出,其中在输入数据是使相应的数据进行闪烁。三.单元模块设计单元模块设计部分主要有4部分组成:(一)、FENPIN模块,用于给后面的JIANJISHU模块和VIEW模块提供合适的频率。(二)、FIRST模块,用于设定微波炉的初试时间而用。(三)、JIANJISHU模块,配合FENPIN模块提供的时钟频率实现每秒减一的计数。(四)、CHOICE模块和VIEW模块,利用动态扫描的方法显出对应数字。3.1 FENPIN模块的设计FENPIN模块主要利用1Khz的时钟信号进行分频。得到1s的outclk时钟信号(用于后期JIANJISHU模块的使用)和0.5s的screen的时钟信号(用于VIEW的显示闪烁使用)。为数码管的闪烁提供时钟信号输出1s的时钟信号说明:试验箱上有1Khz,2Khz等多个时钟信号。而在这里采用1Khz的信号使用。1Khz/1000=1s,所以采用1Khz进行千分频得到1s的信号。实验波形图: 每秒产生一个时钟脉冲(程序代码见附录。)Move此时数码管有输出Move选中时数码管无输出3.2 FIRST模块设计FIRST模块主要用于对时间设定初始值而用,其中设有ABLE和CLK两时钟信号,分别用于外接按钮信号而用,其中CLK用于进行加计数,ABLE用于移位而用。输出o1,o2,o3和o4分别是输出秒,十秒,分,十分。而输出o5是为VIEW实现闪烁而用的。其中的RES和TEST要配合JIANJISHU模块中的RES和TEST同时控制才能有效(具体会在JIANJISHU模块中详细介绍)。输出初始数据说明:开始设计时,由于没有考虑全面设计了一个有4个按键分别控制秒,十秒,分,十分的方案,因为课设要接近与实际设计,而实际不可能给予如此多的按键,这样不仅占用大量空间而且产品也是非常的不美观,所以之后就改成现在的由ABLE控制移位,再由CLK给予时钟脉冲的方式进行设计,最后发现这样的设计不仅没有上述的缺点更加使我的程序变的更加的简单。波形图仿真: 每个上升沿都会进行加计数 当res和test为零时输出分别是“0000”和“8888” Able在每个脉冲到来是都会进行移位,而o5正好显示出正在加的位数注意:编写此段代码是要注意秒位和分位都是记从1记到9然后进位自己变成0的,而十秒位和十分位是记到5然后变成0的。(程序代码见附页)3.3 JIANJISHU模块的设计 JIANJISHU模块的主要用于对FIRST的数据进行选择性的处理和输出: (一)、当JIANJISHU模块中的res=0时,由于res作为输入同样也连接这FRIST模块中的res,他们是由一个输入共同控制的,所以此时输出的就是“0000”; (二)、当JIANJISHU模块中的test=0时,同res一样的道理,此时输出为“8888”; (三)、当q4=15(输出为F)或start=0时,LED就不会亮了,表示工作完成或处于等待状态,此时不对FIRST模块中的数据进行任何处理就直接输出; (四)、在以上条件都不满足的情况下,若此时start=1,那么JIANJISHU模块才开始了真正的工作状态,即配合FENPIN模块中时钟outclk开始每秒减一的记时计数;本程序中复位键res和test的详细说明:这里的res和test和模块FRIST中的res和test是用同一个控制端,而且JIANJISHU的res和test是必不可少的。因为每次进行计数完后由于是利用信号进行减计数,在记完一次数之后q1,q2,q3和q4都会保持最后一次的状态,如果不及时清零的话,那么下一次的res,test以及加计数就是只能对前一级的输入进行复位和测试,输出的将是前一级的各个位数减去q1,q2,q3和q4的值,所以在JIANJISHU模块中进行清零是十分重要的。波形图仿真:输入初值为“0015” 当start=1时开始配合clks的始终上升沿开始减计数 在各位都记到0时,就数码管就会显示 “FEDC”同时LED熄灭这就是上次提到的复位是清零了所有的中间信号,这样输出为FIRST中提供原始数据(程序代码见附页)3.4 CHOICE模块和VIEW模块CHOICE模块和VIEW模块必须放在一起进行使用,CHOICE模块是进行数据选则而使用的,VIEW模块是用于在相应的为进行输出对应的数,两者和起来就是一个动态扫描的过程。A:CHOICE模块;说明:这里的clk时钟信号是使用和FENPIN模块中一样的时钟信号(1Khz),因为人 的眼睛对时间的分辨为20个微秒,用1Khz的信号完全能满足这样的要求;要注意CHOICE有两个输出,o2显然输出的是对应的数据信号,而o1要输出的是一个位选信号,是为下一个模块VIEW显示而用。 B:VIEW模块;说明:f1是接受位信号用的,f2是接受数据而用的。详细说明一下screen和able的作用: Screen是有FENPIN模块通过对时钟信号分频得到的,当在模块FRIST选中某一进行加数初始化是,VIEW就可以在时钟screen在为1是正常输出able所指的那位,当screen为0时,able所指的那位不能对应输出,这样就能达到让相应的数码管闪烁的效果。波形图:( 程序代码见附页)四.硬件实验 管脚设置注释:Clk1:选用的是1Khz的信号; Clk2,Move,Rest,Testt:选用的是按钮信号;Startt:使用的是开关信号;Lighto:LED输出;整体仿真波形实验结果: 本设计实现了要求的所有功能,有复位开关,启动开关。按TEST键可以测试七段数码管,显示为“8888”。可以对烹调时间进行设置,以及烹调时间可以在数码管上显示出来。当随意设置一个烹调时间时,按下启动键时,数码管上时间为烹调完成还需要的时间,当时间减少到0000时,即烹调完成时,数码管显示DONE,表明烹调已完成。五、收获与体会这一个多星期以来我们都在进行这次的课程设计。通过这次课程设计我感觉自己学到了许多,也提高了我的动手能力。从一选到这个设计题目后我就开始紧张的工作,上网查资料,到图书馆查找有关的书籍,以及最后确定设计方法及设计思路。由于在宿舍有电脑,所以工作起来也方便了许多。刚开始主要在自己电脑上运行程序,查找错误,检验自己的设计思路及方法是否正确。最后几天主要到实验室用实验板进行操作,最后顺利实现了设计要求的功能。在整个的设计过程中现在回头好好回想一下我觉得还是有很多不足的,做任何事情起步的时候就应该有一个全局观,但是刚开始由于我没有考虑完全,在FIRST模块种设计了有四个按键控制的初始化程序,之后发现这样不仅程序非常的繁琐,而且这种课设应该和实际好好联系一下,有谁家的微波炉就光是刚开始设定初值都有这么多按钮,那么不仅难看而且比较耗资源,使用也不是最方便的,所以之后经过分析后选择了现在使用的由两个按钮就能事先数据初始化的功能。因此在以后的设计工作中也要学会有大局观。同是在编写复位和测试两个按键的功能是遇到了比较大的麻烦,总是输出一些莫名其妙的数据,之后发现是由于在JIANJISHU模块的中的中间信号没有清零而导致的,这样的一个遇到困难然后去解决这个问题的过程让我对中间信号有了比较深刻的理解。当今电子设计技术获得了飞速的发展,而其核心已日趋转向基于计算机的电子设计自动化技术,即EDA技术,所以学好EDA对我们来说更加重要。这次课程设计给我们提供了一个学习和拓展的平台。总的来说这样的课程设计比上课有意思多了,在实际中还是有很多不是在课本上能学的到的东西,这个需要自己去理解,去总结的。附页:微波炉定时控制器程序代码第一部分:TOP(顶层文件)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity top isport(rest,clk1,clk2,move,startt,testt:in std_logic; lighto:out std_logic; sel:out std_logic_vector(2 downto 0); seg:out std_logic_vector(7 downto 0);end;architecture three of top iscomponent fenpin is port(clk:in std_logic; 分频 outclk,screen:out std_logic);end component;component first isport(clk,able,res,test:in std_logic; 初始化数据 o1,o2,o3,o4,o5:out std_logic_vector(3 downto 0);end component;component jianjishu isport(clks,start,res,test:in std_logic; in1,in2,in3,in4:in std_logic_vector(3 downto 0); 减计数 light:out std_logic; out1,out2,out3,out4:out std_logic_vector(3 downto 0); end component;component choice isport(clk:std_logic; f1,f2,f3,f4:in std_logic_vector(3 downto 0); o1:out std_logic_vector(1 downto 0); 位选 o2:out std_logic_vector(3 downto 0);end component;component view isport(screen:in std_logic; f1:in std_logic_vector(1 downto 0); f2,able:in std_logic_vector(3 downto 0); 显示输出 segout:out std_logic_vector(7 downto 0); selout:out std_logic_vector(2 downto 0);end component;signal b,c,d,e,f,g,h,i,j:std_logic_vector(3 downto 0);signal a,k:std_logic;signal q:std_logic_vector(1 downto 0);signal p:std_logic_vector(3 downto 0);beginu1: fenpin port map (clk=clk1,outclk=a,screen=k);u2: first port map (clk=clk2,res=rest,test=testt,able=move, o1=b,o2=c,o3=d,o4=e,o5=j);u3:jianjishu port map (clks=a,start=startt,res=rest,test=testt,in1=b,in2=c,in3=d,in4=e,light=lighto,out1=f,out2=g,out3=h,out4=i);u4:choice port map (clk=clk1,f1=f,f2=g,f3=h,f4=i,o1=q,o2=p);u5:view port map (able=j,screen=k,f1=q,f2=p,segout=seg,selout=sel);end;第二部分:FENPIN(时钟分频)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(clk:in std_logic; outclk,screen:out std_logic);end;architecture first of fenpin is signal Q1,Q2:std_logic; begin one:process(clk) variable count1:integer range 0 to 1002; begin Q11000 then Q1=1;count1:=0; elsif clkevent and clk=1 then count1:=count1+1; 分出1秒信号 end if; end process;two:process(clk)variable count2:integer range 0 to 500;begin if clkevent and clk=1 then if count2250 then Q2=1;count2:=count2+1;else Q2499 then count2:=0;end if; end process;outclk=Q1;screen=Q2;end; 第三部分:FIRST(数据初始化)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity first isport(clk,able,res,test:in std_logic; o1,o2,o3,o4,o5:out std_logic_vector(3 downto 0);end;architecture two of first issignal q1,q2,q3,q4,q5:std_logic_vector(3 downto 0);beginprocess(able)beginif ableevent and able=1 then if q54 then q5=q5+1; 位选信号,选择相应的位进行初始else q5=0000; 化,其中“0000”为空位。end if;end if;end process; process(clk,res,test,q4)beginif res=0 then q1=0000;q2=0000;q3=0000;q4=0000; -复位键elsif test=0 then q1=1000;q2=1000;q3=1000;q4 if q19 then q1=q1+1;else q1 if q25 then q2=q2+1;else q2 if q39 then q3=q3+1;else q3 if q45 then q4=q4+1;else q4null;end case;end if;end process;o1=q1;o2=q2;o3=q3;o4=q4;o5=q5; -在VIEW模块中选择闪烁位end;第四部分:JIANJISHU(数据按秒倒计时)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jianjishu isport(clks,start,res,test:in std_logic; in1,in2,in3,in4:in std_logic_vector(3 downto 0); light:out std_logic; out1,out2,out3,out4:out std_logic_vector(3 downto 0);end;architecture one of jianjishu issignal q1,q2,q3,q4:std_logic_vector(3 downto 0);beginprocess(start,clks,res,test,q4) variable a:std_logic_vector(1 downto 0); begin if res=0 or test=0 then q1=0000;q2=0000;q3=0000;q4=0000; -对信号都清零设置 elsif q4=(in4-15) or start=0 then a:=00;light=0; -当q4=15或start=0时不进行减计数,同时LED不亮 elsif start=1 then a:=11;lightif clksevent and clks=1 then if (in1-q1)=0 then q1=(in1-9);q2=q2+1;else q1=q1+1;end if; -q1开始为0,当q1=in1时,对q1赋值为(in1-9),为负数,同时对q2进行加1,那么(in2-q2)就可以视线减1,若不是那么q1=q1+1,可以实现(in1-q1)从9开始的倒计数if (in2-q2)=0 and (in1-q1)=0 then q3=q3+1;q2=(in2-5);q1=(in1-9);end if; -当输出out1=0和out2=0时进位减1,同时out1=9,out2=5;if (in3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 then q4=q4+1;q3=(in3-9);q2=(in2-5);q1=(in1-9);end if;if (in4-q4)=0 and (in3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 thenq4=(in4-15);q3=(in3-14);q2=(in2-13);q1null;end case;end if;end process;out1=(in1-q1);out2=(in2-q2);out3=(in3-q3);out4=(in4-q4);end;第五部分:CHOICE(数据选择模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity choice isport(clk:std_logic; f1,f2,f3,f4:in std_logic_vector(3 downto 0); o1:out std_logic_vector(1 downto 0); o2:out std_logic_vector(3 downto 0);end;architecture one of choice issignal q:std_logic_vector(1 downto 0);beginprocess(clk)beginif clkevent and clk=1 then q o2 o2 o2 o2 null;end case;end process;o1=q; -位选信号end;第六部分:VIEW(显示模块)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity view i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 痛经护理健康知识库
- 2026生物医用材料行业技术突破与市场需求规模的投资评估文献报告
- 电气巡检规程知识测试题及答案
- 2026中国智能养殖传感器自动化管理与经济效益研究报告
- 2026中国石油化工行业产业链现状调研及产业升级规划
- 2026中国智能无人配送车市场发展机遇挖掘及行业投资坐标布局规划分析资料
- 2026Fast芯片组市场规模预测与增长驱动因素分析报告
- 2026生物制药行业融资模式与市场前景研判
- 2026中国新能源汽车零部件市场现状竞争分析及未来发展前景预测报告
- 2026中国工业母机数控系统自主化率提升与专精特新扶持
- 超声科住院医师规范化培训结业临床实践能力考核标准方案(2022版)
- 沉香与健康课件图片
- 财务资金管理培训
- 儿童碰伤应急处理
- 中建室外管网专项施工方案
- 污水处理PPP项目招标文件
- SYT 6378-2021 油水井取套回接工艺作法-PDF解密
- 监理抽检记录表格
- YY 0469-2023医用外科口罩
- 山西兰花科技创业股份有限公司大阳煤矿分公司煤炭资源开发利用、地质环境保护与土地复垦方案
- 中国越剧唱腔知到章节答案智慧树2023年浙江艺术职业学院
评论
0/150
提交评论