版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课程设计说明书课程:EDA技术基础题目:微波炉定时控制器的设置 学生姓名: 陈卓学 号: 200965110117班 级: 09光电专 业: 物理学指导教师:贺慧勇 唐立军 文勇军 周晓萍 唐俊龙长沙理工大学课程设计任务书物理与电子科学 学院 物理 专业 光电 班 姓名 陈卓 课程名称 EDA技术基础 题 目 微波炉定时控制器的设计 同组设计者:顾晓辉,陈诗远,王超,文奚,任晓晨,吴勇勇要求:(1)启动开关;(2)复位开关;(3)烹调时间设置和显示;(4)“火力”设置(分大中小三档); (5)七段码测试:上电或按TEST键可以测试七段码管,显示为“8888”;(6)启动输出和”火力”输出(可
2、用LED显示代表); (7)设定时间后,按启动键开始烹调,同时显示剩余时间,时间为0时,显示烹调完成信息“End”,并输出提示音;(8) 故障信号有效时,停止输出,显示信息“Err”,输出间歇报警声音发挥部分: 1.烹调方案预设和调用2. 设计带烧烤功能微波炉控制器工作计划(1)时间本课程设计安排2周时间: 2011.12.5 2011.12.16 (2)进度安排第1周周一周二:查阅资料,拿出整体设计方案,划分模块;第1周周三至周五:各模块的设计、调试、验证。第2周周三前完成项目整体调试和测试。第2周周三周四文档写作整理第2周周五:答辩讨论指导教师:贺慧勇 唐立军 文勇军 周晓萍 唐俊龙 20
3、11年11月20 日教研室意见:同意。教研室主任 文勇军 2011年11月23 日长沙理工大学课程设计成绩评定表学生姓名: 陈卓 学号: 200965110117 专业班级: 09光电 课程设计题目: 微波炉定时控制器的设计 评分项目要求分值得分学习态度学习态度认真,遵守纪律。10设计方案调研充分,方案设计合理。20工作量完成了任务书规定的工作量。实际设计、调试效果好。40设计报告完全符合撰写规范要求,结构严谨,逻辑性强,层次清晰,表述准确,文字流畅。20答辩准备充分,概念清楚,能准确流利地回答各种问题。10总分备注:成绩: 指导教师: 年 月 日21目 录1 设计题目与要求22 硬件描述53
4、 软件设计思路. . .73程序调试过程及问题分析104课程设计中的感想及结论11参考文献13附件131,硬件描述拿到题目后,我们仔细看了我们所需要用到的ALTERA公司的CYCLONE III系列的芯片EP3C16F484C6,FPGA开发板,这是开发板的全图从图以及查资料得知这块开发板包括以下硬件资源Altera Cyclone III 3C16 FPGA device Altera Serial Configuration device EPCS4 USB Blaster (on board) for programming and user API control; both JTAG
5、 and Active Serial(AS) programming modes are supported 8-Mbyte SDRAM 4-Mbyte Flash memory SD Card socket 3 pushbutton switches 10 toggle switches 10 green user LEDs 50-MHz oscillator for clock sources VGA DAC (4-bit resistor network) with VGA-out connector RS-232 transceiver PS/2 mouse/keyboard conn
6、ector Two 40-pin Expansion Headers这里我们要用到的主要就是Cyclone III 3C16芯片,以及green user LED,pushbutton switchs,toggle switchs等控制显示部分的硬件资源。这是整个开发板的Block diagram我们用VHDL硬件描述语言写好程序,然后烧录进开发板,利用user LED,pushbutton switchs等硬件资源来实现整个的微波炉定时控制器的设计。这是开发板的引脚图:通过设置引脚,我们能控制开发板上的按键让LED上显示我们所需要的东西从而实现启动复位等任务书里面的提到的基本要求。2,软件设
7、计思路题目要求设计一个微波炉定时控制器,要求有启动复位开关以及亨调时间的设置,火力设置高中低档,七段码测试,按下测试键后显示四个8,启动输出和”火力”输出; 设定时间后,按启动键开始烹调,同时显示剩余时间,时间为0时,显示烹调完成信息“End”,并输出提示音;故障信号有效时,停止输出,显示信息“Err”,输出间歇报警声音。根据题目要求,经过我们的讨论,我们做了以下方案:用VHDL语言写,设定时间采用两个按钮分别提供一个移位信号和一个加信号(这与实际比较相符),管脚绑定简单(特别是数码管),这里采用的是动态扫描位选输出数据,不需对四个数码管都进行绑定。通过我们的讨论,形成了一个初步的思路,如下图
8、所示:预设初值 倒计时减计数 输出数据然后增加复位端和测试端: 复位输出数据 预设 倒计时 实现闪烁初值 减计数 测试在整个程序的设计思路上,我们将程序分成了5个单元模块,以及一个综合的ZONGHE顶层模块,这五个模块分别为初始化模块(FIRST),分频模块(FENPIN),减计数模块(JIANJISHU),显示模块(VIEW),位选模块(CHOICE)。经过我们组的讨论,决定将每个单元模块分工到人,然后每个人负责一个模块,我分到的模块是减计数模块。减计数(JIANJISHU)模块的设计: JIANJISHU模块的主要用于对FIRST模块的数据进行选择性的处理和输出: (1)、当JIANJIS
9、HU模块中的res=0时,由于res作为输入同样也连接这FRIST模块中的res,他们是由一个输入共同控制的,所以此时输出的就是“0000”; (2)、当JIANJISHU模块中的test=0时,同res一样的道理,此时输出为“8888”; (3)、当q4=15(输出为F)或start=0时,LED就不会亮了,表示工作完成或处于等待状态,此时不对FIRST模块中的数据进行任何处理就直接输出; (4)、在以上条件都不满足的情况下,若此时start=1,那么JIANJISHU模块才开始了真正的工作状态,即配合FENPIN模块中时钟outclk开始每秒减一的记时计数;本程序中复位键res和test的
10、详细说明:这里的res和test和模块FRIST中的res和test是用同一个控制端,而且JIANJISHU的res和test是必不可少的。因为每次进行计数完后由于是利用信号进行减计数,在记完一次数之后q1,q2,q3和q4都会保持最后一次的状态,如果不及时清零的话,那么下一次的res,test以及加计数就是只能对前一级的输入进行复位和测试,输出的将是前一级的各个位数减去q1,q2,q3和q4的值,所以在JIANJISHU模块中进行清零是十分重要的。经过上面的分析,大致程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logi
11、c_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,c
12、lks,res,test,q4) variable a:std_logic_vector(1 downto 0); beginif 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);q
13、2=q2+1;else q1=q1+1;end if; 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 then
14、q4=(in4-15);q3=(in3-14);q2=(in2-13);q1null;end case;end if;end process;out1=(in1-q1);out2=(in2-q2);out3=(in3-q3);out4clk1,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=
15、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(c
16、lk: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; end if; end process; - 分出1秒信号two:process(clk)var
17、iable 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
18、,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; end if;end if;end process; -位选信号,选择相应的位进行初始化,其中“0000”
19、为空位。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=
20、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);e
21、nd;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时不
22、进行减计数,同时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;
23、-当输出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);ou
24、t3=(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
25、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 isport(screen:in std_logic; f1:in std_log
26、ic_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;architecture one of view issignal seg:std_logic_vector(6 downto 0);signal sel:std_logic_vector(2 downto 0);beginselout=sel;segout(6 downto 0)=seg;sel=0
27、00 when f1=0 else 001 when f1=1 else 010 when f1=2 else 011 when f1=3 else 000; -相应的数据选择对应的位进行输出segout(7)=1 when f1=2 else 0; -在第三个数码管输出小数点process(f2,able,sel)beginif (able=0001 and sel=000) or (able=0010 and sel=001) or (able=0011 and sel=010) or (able=0100 and sel=011) thenif screen=1 then seg seg
28、 seg seg seg seg seg seg seg seg seg seg seg seg seg seg segnull;end case; -有输出end if; -实现闪烁elsecase f2 iswhen 0000 = seg seg seg seg seg seg seg seg seg seg seg seg seg seg seg segnull;end case; -在没选中的位正常输出end if;end process;end;附件2:tcl引脚文件#Setup.tcl # Setup pin setting for EP1C12 main board set_gl
29、obal_assignment -name RESERVE_ALL_UNUSED_PINS AS INPUT TRI-STATED set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF set_location_assignment PIN_G21 -to clk set_location_assignment PIN_H5 -to sw1 set_location_assignment PIN_H6 -to sw2 set_location_assignment PIN_G4 -to sw3 set_location_assignme
30、nt PIN_G5 -to sw4 set_location_assignment PIN_H2 -to button0 set_location_assignment PIN_G3 -to button1 set_location_assignment PIN_F1 -to button2 set_location_assignment PIN_J1 -to led0 set_location_assignment PIN_J2 -to led1 set_location_assignment PIN_C1 -to led60set_location_assignment PIN_C2 -to led61 set_location_assignment PIN_B2 -to led62 set_location_assignment PIN_B1 -to led9 set_location_assignment PIN_E11 -t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年光伏设备安装与购买合同
- 2024北京租车公司租赁合同标准版
- 电力巡检机器人行业市场现状供需分析及重点企业投资评估规划分析研究报告(2024-2030版)
- 海上遥控潜水器行业市场现状供需分析及重点企业投资评估规划分析研究报告(2024-2030版)
- 2024年土地使用权转售合同
- 机密资料交易协议书
- 股东合法权益保障协议
- 2024年家庭清洁服务合同模板
- 2024年城市更新项目回迁合同
- 合资协议样本规范
- 空调系统设计规范及标准(全)
- DB32T 3904-2020 电动自行车停放充电场所消防技术规范
- 社会转型与受众变迁课件
- 和利时dcs介绍DCS 系统概述
- 《文明礼仪伴我行》主题班会PPT课件(优秀)
- 2021-2022南宁八年级上册期末考试数学试卷
- 无阀滤池工作原理
- 钢结构厂房施工方案(屋面板及墙板)
- 童声合唱训练讲座
- 操作流程图模板
- 工厂房屋租赁合同范本【标准】(最新版)
评论
0/150
提交评论