1、目录第1章 概述31.1 VHDL介绍31.2 Quartus 开发平台31.3选题背景41.4选题的技术现状4第2章 微波炉控制器的设计规定52.1基本规定52.2发挥部分52.3方案设想5第3章 系统硬件的设计73.1系统硬件的组成原理图73.2电源电路73.3 有源晶体83.4数码管83.5LED93.6按键使用93.7报警电路103.8 8X8 点阵103.9 8路拨码开关输入11第4章 系统软件设计114.1 分频程序设计114.2数码管显示设计程序设计124.3报警提醒设计程序设计164.4门是否关紧程序设计164.5 开关按键解决程序设计17第5章管脚分派及显示结果185.1管脚
2、分派图185.2 管脚分派表195.3硬件显示结果195.4用户使用方法20第6章 总结21参考文献22附录一 电路原理图23附录二 微波炉控制器系统程序清单26摘要随着社会的发展与科学的进步微波炉在人们的生活中使用非常普遍。微波炉内部的电子元件有不多,本设计只设计其中的核心部分控制器,该控制器具有系统复位、状态控制、时间设定、火力档位、烹饪计时、温度控制、显示译码和音响效应等功能,基于CPLD 芯片实现。本设计完毕微波炉控制器的设计与分析。以VHDL语言为开发工具,Quartus作为程序运营平台。通过设计和实验,对开发的程序进行调试运营和波形仿真测实验证,初步实现了设计目的。运用硬件描述语言
3、VHDL,大大减少了硬件数字系统设计,使得程序设计直观简洁,设计效率高。 关键词 微波炉、控制器、VHDL Quartus 仿真第1章 概述本文所设计的电子钟系统是运营在Quartus环境下的一个小型的数字系统。我采用了自顶向下的设计方法,应用功能强大的硬件描述语言VHDL完毕系统的设计仿真。下面就本设计所用到的技术作一下简朴的介绍。1.1 VHDL介绍VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,是在ADA语言的基础上发展起来的硬件描述语言。VHDL诞生于1983年,1987年12月,VHDL
4、被接纳为标准硬件描述语言,即IEEE1076标准。通过不断更改和改善,1993年,VHDL重新修订并增长了一些功能,即IEEE 1076-93标准。目前在电子工程领域,作为IEEE的工业标准硬件描述语言,VHDL已成为事实上的通用硬件描述语言。电路设计的描述层次可分为系统级、算法级、寄存器传输级、门级和晶体管级,VHDL的建模范围可以从最抽象的系统级一直到门级,从多个层次对电路进行模拟仿真。它除了具有硬件特性的语句外,其语言形式和描述风格以及句法和一般的计算机高级语言相称类似,然而它又有同软件语言完全不同的性质。以下是一个VHDL的实例:这个程序是一个简朴的2选1多路选择器的VHDL完整描述。
5、它体现出了VHDL程序的一般结构:使用库(Use)定义区实体(Entity)定义区结构(Architecture)定义区。其中Use定义区描述的是这个程序使用的定义库,类似于C语言的头文献涉及;Entity 定义区描述的电子的外部结构,就是指元件的输入和输出接口,它用以定义一个芯片的管脚状态;Architecture定义区里面是这个程序的关键部分,涉及算法,功能,硬件的行为等都是在Architecture区里面描述的。一个完整的VHDL程序是对一个功能元件从外部和内部两个方面来进行描述,由于元件自身具有层次性,因此它既可以作为完毕某一功能的逻辑电路单元而独立存在,也可以作为一个部件,和其他功能
6、元件一起构成更复杂的功能元件或数字系统,因此其单元的概念很清楚,可以灵活地应用于自顶向下的数字系统设计流程。1.2 Quartus 开发平台Quartus II是Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入到器件编程的所有功能。Quartus II可以产生并辨认EDIF网表文献、VHDL网表文献,为其他 EDA 工具提供了方便的接口;可以在Quartus II集成环境中自动运营其他 EDA 工具。Quartus II 软件的开发流程可概括为以下几步:设计输入、设计编译、设计时序分析、设计仿真和器件编程,具有FPGA和CPLD芯片设计的所有阶段的解决方案。(1)设计输入 Q
7、uartus II软件在File菜单中提供“New Project Wizard.”向导,引导设计者完毕项目的创建。当设计者需要向项目中添加新的VHDL文献时,可以通过“New”选项选择添加。(2)设计编译 Quartus II编译器完毕的功能有:检查设计错误、对逻辑进行综合、提取定期信息、在指定的Altera系列器件中进行适配分割,产生的输出文献将用于设计仿真、定期分析及器件编程。(3)设计定期分析 单击Project菜单下的“Timing Settings.”选项,可以方便地完毕时间参数的设定。Quartus II软件的时序分析功能在编译过程结束之后自动运营,并在编译报告的Timing A
8、nalyses文献夹中显示。(4)设计仿真 Quartus II软件允许设计者使用基于文本的向量文献(.vec)作为仿真器的激励,也可以在Quartus II软件的波形编辑器中产生向量波形文献(.vwf)作为仿真器的激励。(5)器件编程 设计者可以将配置数据通过MasterBlaster或ByteBlasterMV通信电缆下载到器件当中,通过被动串行(Passive Serial)配置模式或JTAG模式对器件进行配置编程,还可以在JTAG模式下给多个器件进行编程。1.3选题背景随着生活水平的不断提高, 人们对家用电器的功能和质量的规定越来越高。而现有市售的微波炉其重要弊端为: 不能按既有程序进
9、行烹调, 需要使用者根据食物的类型、数量、温度等因素去设定微波炉的工作时间, 若设定的工作时间过长, 含水分较多的食物也许会产生过热碳化的现象, 若时间过短则达不到预期的烹调效果。 不仅在节能方面未做过多考虑,使用者还需要经常翻看使用说明书才干完毕操作过程。针对这些问题, 笔者认为有必要研制一种操作简朴且烹调效果好的微波炉,根据一些家常菜按固定程序烹调的现象,可采用分时、分档火力加热,节时又节能。1.4选题的技术现状应用CPLD 芯片和硬件描述语言(VHDL)设计该微波炉控制器系统,该系统用VHDL 编程实现各底层模块的功能,顶层设计用图形输入完毕。设计依据如下:1)技术可行性:采用EDA作为
10、开发方法,VHDL语言为开发工具,通过设计和实验,对开发的程序进行调试运营和波形仿真测实验证,实现设计目的;2)经济可行性:合理运用实验室已有软件、实验箱、开发板,对该微波炉控制器设计进行开发、调试运营、仿真测试,以及结果验证等;3)以现有网络资源为依据,以辅导老师的指导为参考,根据已学知识,综合该控制器设计规定,具体细化设计;第2章 微波炉控制器的设计规定2.1基本规定(1) 制定一个在不同功能时火力的控制时序表。具有三档微波加热功能,分别表达微波炉工作状态为烹调、烘烤、解冻,实验使用LED模拟。(2) 实现工作环节:复位待机检测显示电路设立输出功能和定期器初值启动定期和工作开始结束烹调、音
11、响提醒。(3) 在上电或手动按复位键时,控制器输出的微波功率控制信号为0,微波加热处在待机状态,时间显示电路显示为00.00。(4) 具有4位时间预置电路,按键启动时间设立,最大预设数为99分99秒。(5) 设定初值后,按启动键,一方面按选择的挡位启动相应的微波加热;另一方面使计时电路以秒为单位作倒计时。当计时届时间为0则断开微波加热器,并给出声音提醒,即扬声器输出23s的双音频提醒音。(6) 若在待机状态时按测试键,则4位数码管交替显示全亮和全灭两种状态,以检测数码管各发光段的好坏。2.2发挥部分(7) 微波炉火力档位的增长。(8) 输出显示方面的扩展。(9) 实现智能控制、信息控制。2.3
12、方案设想根据该微波炉的功能设计规定,和慎重的思考后,我的方案拟定为以EPM240芯片为核心的基础上结合外围电路,再加上软件上的设计,从而实现可编程逻辑微波炉控制设计。在EPM240的学习板上,我运用了板上的时钟电路、数码管显示电路、按键控制电路、电源电路、点阵显示电路、报警提醒电路。在程序编程方面采用了分频器、计数器、点阵显示、调节控制、显示译码器、彩灯控制、门是否关紧。系统预计操作流程如下图2.3 系统流程图其相应的键盘控制布局如下所示:图2.4 系统控制键布局图第3章 系统硬件的设计3.1系统硬件的组成原理图数码管显示电路键盘控制电路Max EMP240T100C5电源电路下载电路50M时
13、钟振荡电路LED电路提醒报警电路点阵显示电路 3.2 电源电路电源可以采用 USB 上电,也可以外接5V DC 电源。外接5V DC电源时请注意正负极性.内正外负。 3.3 有源晶体 采用有源晶体频率为 50M Hz 给 CPLD 的 I/O12(CLKIN)提供时钟。 我们在使用时钟的时候要分派相应的脚。3.4数码管本设计采用共阴极动态显示驱动。由于CPLD的I/O驱动能力比较强,所以可以直接驱动数码管,但为了保护I/O口在一个回路之中串接100欧姆的限流电阻。为了灵活使用I/O口,采用了插针方式,硬件上并没有直接连接上去。3.5LED 注意:在 LED 发光二极管的时候,要把二极管的 J1
14、0 用跳冒短接起来,J10 是 LED 发光二极管的电源跳线设立.假如你不用 LED 发光二极管也可以把 J10 的跳冒取下来,当然也可以不用取。 3.6按键使用注意:板子上面的几个独立按键都可以作为程序的复位脚,CPLD 和其他的 51 单片机或者 ARM 或者 DSP 不同样的。可编程 CPLD 器件每一个可编程的 I/O 口都可以作为复位脚。而其他的 MPU 就是一个固定的脚,这个大家要分清楚。 3.7报警电路BELL当 I/O15 为低电平时 BELL发出嘟嘟的声音。3.8 8X8 点阵 为了让用户在选择档位调节火候大小的时候能更加明显显示,我也设计一个8*8 共阴极的点阵显示,通过程
15、序不断进行扫描,使得行高列低。从而实现要显示的符号。具体电路如图3-9-1。3.9 8路拨码开关输入通过拨码开关可做相应的输入等实验,拨码开关和按键的用途差不多,只但是拨码开关可以固定电平,而按键一松手又回到以前的状态了。 第4章 系统软件设计4.1 分频程序设计 在接口电路中,时钟信号的作用至关重要,一般CPLD的外部时钟信号可达成几十MHZ,但是由于一些接口电路的特性所致,这样高频率的时钟不适合电路工作,所以应当引入时钟分频电路产生适合接口的工作频率。时钟发生器的输入是全局时钟clk,是从50MHZ的晶振得到的信号。为了产生合适的扫描时钟、计数时钟和闪烁时钟,所以要让50MHZ信号变成cl
16、k1为50000hz和 clk2为1hz。 具体程序如下:-*50000hz分频信号*-process(clk)variable cntt : integer range 1 to 500; begin if(clkevent and clk=1)then if cntt=500 then cntt:=1; clk1= not clk1; else cntt:=cntt+1; end if; end if;end process;-*1hz钟信号 *-process(clk1) variable cnt : integer range 1 to 25000; begin if(clk1even
17、t and clk1=1)then if cnt =25000 then cnt:=1;clk2= not CLK2; else cnt:=cnt+1; end if; end if;end process;在产生1HZ信号的进程中之所以用了上一个进程中产生的5000hz的clk1,这样用的目的是为让系统剩下资源,由于EPM240的系统资源本来就是很少的,为了更好的实现更加智能化,所以要尽量节约系统资料。所以用clk1来产生clk2。4.2数码管显示设计程序设计根据规定,通过数码管的显示来显示倒计时的其实时间,客户调节时间的显示,调节火候的显示,所以程序必须设计一个可以进行倒计时的计数器,一个
18、调节时间功能的进程。让用户通过调节时间来制定要进行倒计时的开始时间。一开始时我原本打算通过设计一个4*4矩阵键盘来实现更加智能化设计,让用户可以很轻松通过键盘上的数字按键来控制显示数字来设立全自动时间以及其他功能。程序及硬件电路图都设计好了,但是由于EPM240的系统资源极其有限,矩形键盘所需的系统资源大。所以让我不得不放弃用矩形键盘来控制。所以最终选择用6个独立按键来控制。再说EPM240的端口又多,6个端口对它也只是小菜一碟。整个程序中需要一个倒计时进程来控制数码管到显示计时,原理很简朴就是相称计时秒表同样,只是把条件的当0就变为9,变成当9变为0就好了,这样就能实现数码管倒计时功能了。为
19、了控制指示灯和防止用户忘掉关门就直接开始工作导致微波伤害人体健康,所以在进行倒计时工作时我加上了一个条件判断是否要进行计时工作。为了实现假如用户调节时间的时候不用一定要调节四位,就直接可以按开始按钮,数码管就不会不断止那里闪烁。所以又要在工作计时时加上一个判断条件。具体程序如下ELSIF(CLK2EVENT AND CLK2=1) THEN if (L=0 and kaimeng=0)then -为了控制指示灯和防止用户忘掉关门就直接开始工作导致微波伤害人体健康- cnt1led3led4led5led6=0000; led5=0000; led4=0000; led3led6 led5led
20、4led3case led3 is when1001= led3 led3case led4 is when0101= led4 led4case led5 is when1001= led5 led5case led6 is when1001= led6 led6 null; end case;同理就可以编写实现递减功能的程序。由于我的数码管到管脚是统一连在一起的,目的是为了节约IO口,所以要用不断扫描数码管才干让数码管显示你想要的数字,扫描数码管到方法有很多种,为了让用户知道他调节时间时所控制数码管到位置,所以我加上了当那个数码管受到控制时,还会不断闪烁,加以显示。这由于加上了这个功能,所
21、以要打破传统的扫描方法。顺便节约系统资源。编写程序如下:-*-调整闪烁时间*-process(cnt,en_xhdl,data4)begin if(clk1event and clk1=1)then if cnt=4 then cnt=0; else cnt en_xhdl=111110;dian case cnt1 is when 4= en_xhdlclk2,others=1);dian en_xhdl=111011;dian case cnt1 is when 3= en_xhdlclk2,others=1);dian en_xhdl=110111;dian case cnt1 is w
22、hen 2= en_xhdlclk2,others=1);dian en_xhdl=101111;dian case cnt1 is when 1= en_xhdlclk2,others=1);dian en_xhdl=011111;dian null; end case; case en_xhdl is when 111110= data4 case dingshi is when 1=DATA4data4 case dingshi is when 1=DATA4data4 case dingshi is when 1=DATA4data4 case dingshi is when 1=DA
23、TA4data4 null; end case;END PROCESS;前面完毕编码后肯定要完毕译码显示,所以一定要一个译码进程来通过对数码管管脚的输出进行编码。我选择的数码管是8段共阴极。当为“1”时该管相应的段显示变亮。具体程序-*-译码-*-process(data4)begincase data4 is WHEN 0000 =dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataou
24、t_xhdl1 null; END CASE;END PROCESS;4.3报警提醒设计程序设计根据规定,当用户设立微波炉加热时间届时要产生报警提醒,所以我就设计一个当倒计时到最后两秒钟的时间就开始提醒加热时间以到的报警信号,通过蜂鸣器来提醒。具体程序的原理就是当数码管显示到最后两秒的时间就激活一个信号让蜂鸣器产生鸣叫报警,用绿色的LED点亮来让用户知道加热结束了,红灯灭。软件设计的提醒报警程序应当是在数码管正常倒计时的程序进程里面的,因素是为了控制绿灯显示。所以这里不能单独作为一个进程解决。具体程序如下:-提醒语音- if (led6=0000 and led5=0000 and led4=
25、0000 and (led3=0001 or led3=0010) then bell=1;-提醒时间到了,响声2s- green=1; led1=0000; else bell=0; end if; 4.4门是否关紧程序设计 炉门是食品的进出口,也是微波炉炉腔的重要组成部分。对它规定很高,绝对不能让微波泄漏出来。炉门由金属框架和玻璃观测窗组成。观测窗的玻璃夹层中有一层金属微孔网,既可透过它看到食品,又可防止微波泄漏。由于玻璃夹层中的金属网的网孔大小是通过精密计算的,所以完全可以阻挡微波的穿透。钛膜也多作为微波炉炉门的材料。 为了防止微波的泄漏,微波炉的开关系统由多重安全联锁微动开关装置组成。
26、炉门没有关好,就不能使微波炉工作,微波炉不工作,也就谈不上有微波泄漏的问题 。所认为了让用户使用的更加放心舒心和符合现代家用电器的制作理念。我也设立一个开门按钮,当用户不小心或者忘掉关门的时候可以及时让微波炉不工作,以致对用户的安全负责。 当用户不小心或者忘掉时,微波炉的倒计时进程就不能实现,这个在上面的数码管显示那里就已经设立了,加上了一句检测是否开门,假如开门,它就不能进行倒计时工作。为了更加明显告诉用户门是否关紧,我还设计了一个进程负责解决,关不紧的时候,黄色的LED就会以1s钟不断闪烁来更加明显告诉用户。具体程序如下:-*检查门有没有关好*-process(kaimeng,CLK2)b
27、eginIF(CLK2=1 and kaimeng=1 ) then -当kaishi为1时 为危险使用-黄灯1s不断闪烁- yellow=1;else yellow=0;end if;end process;4.5 开关按键解决程序设计开关按钮就是当用户将时间设立和档位选择好了之后就可以按下按钮就可以让微波炉正常启动工作具体程序如下:-*开关按键解决*-process(start,P)variable n:integer range 0 to 1:=0;-用于锁存-begin IF(CLK2EVENT AND CLK2=1) THEN if (start=0 and n=0) then L=
28、0;-是为了让倒计时能是否正常工作的信号指示- n:=n+1; red=1; elsif (start=0 and n=1)OR (led6=0000 and led5=0000 and led4=0000 and led3=0000) then -当倒计时结束时,红灯能自动灭。 n:=n+1; L=1; red=0; end if; end if;END PROCESS;第5章管脚分派及显示结果5.1管脚分派图图 5-3-1 管脚分派图5.2 管脚分派表表5-3-2 管脚分布表5.3硬件显示结果这里所用到的硬件是天祥电子CPLD/FPGA系列TX-2A的开发板,所用的芯片是EPM240T10
29、0C5。先测试一下数码管,看看闪烁时数码管显示是否正常,测试好之后复位,测试和复位都是用按键开关,之后调档位,用按钮开关控制火力档位,火力显示为一个数码管,和点阵显示,火力为0时不能工作(不能倒计时),档位调好之后就是设立时间,设立时间只用一个按键调节按键来控制位置,按递加或递减按键进行自加,自减。自加或者自减的频率是一秒加或着减一次,加或减到想要的时间后按下开始按钮,红灯变亮。检测关门键(拨码开关)假如门关和开始按键按下则就可以开始工作,即可以进行倒数。假如工作中忽然关门按键开着则就不能进行工作,并且黄灯以1s一下闪烁提醒用户,关门键其实是对微波炉系统的扩展,这里只能简朴的用一个拨码开关进行
30、描述,设想关门键是装在微波炉的门那边,用来感应微波炉的门是否关紧,如没关紧,则不能工作。倒计时进行时,红灯亮,说明正处在工作状态,当倒计时完毕时,亮绿灯,说明工作已完毕,最后二秒蜂鸣器还会进行报警。5.4用户使用方法1、把需放入微波炉的食物放入,关好微波炉的门2、.上电按下复位按钮(数码管显示00.00 0,前四位表达时间,最后一位表达当前选择档位)。3、.选择火力(有三个档位,每按一下选档按钮,数码管就会改变数字0-3,点阵就会产生不同的图案形象告诉用户你选择的火候大小)4、.按下移位按键(先按下调节按键,看相应是那个数码管在闪烁,那个闪烁就表达相应控制那位数码管显示,通过按下递增或者递减来
31、控制闪烁那位数码管相应的数字显示。调节范围为0000到9959)。5、按下开始按键(当按下开始按键时,相应的红灯会亮,表达在加热中,当加热到最后两秒时红灯就会灭,绿灯亮,蜂鸣器会产生两秒钟报警提醒,从而提醒用户加热结束可以安全打开。当然假如用户操作不妥,半途打开门,那么黄灯亮,红灯也亮。微波炉暂停工作)。第6章 总结 会选择可编程微波炉这个课题是由于我对可编程这门课还是比较喜欢的,为了完毕这个设计,我由查阅资料编辑设计总体框架,再完毕代码编辑,到最后的程序仿真成功。用了两周的时间完毕,在完毕的过程中经历了一次又一次的挫折,从开始只有计时功能到慢慢的可以调时,报警,彩灯,点阵,看着最后所有功能都
32、实现的那一下,我真的是觉得很有成就感。下面是我对实现每个功能的一些设计技巧a) 在产生1HZ信号的进程中之所以用了上一个进程中产生的5000hz的clk1,这样用的目的是为让系统剩下资源,为了更好的实现更加智能化,所以要尽量节约系统资料。所以用clk1来产生clk2。b) 在数码管显示调时反面,最大的定期是59.59.而调时我是采用了按键,同时有递增递减功能,可以让用户更快捷方便的进行定期。c) 具体程序的原理就是当数码管显示到最后两秒的时间就激活一个信号让蜂鸣器产生鸣叫报警,用绿色的LED点亮来让用户知道加热结束了,红灯灭。d) 开关按钮就是当用户将时间设立和档位选择好了之后就可以按下按钮就
33、可以让微波炉正常启动工作e) 在微波炉工作状态的选档方面,除了数码管会显示选当的号码,在点阵反面也会给予提醒 通过这次的毕业设计,让我在可编程这门课程有了更深的了解,并且也提高了我的专业知识,总的来说这样的课程设计比上课故意思多了,在实际中还是有很多不是在课本上能学的到的东西,这个需要自己去理解,去总结的。参考文献【1】. 谭会生,瞿遂春. EDA技术综合应用实例与分析 西安电子科技大学出版社,2023【2】. 廖日坤 CPLD/FPGA应用开发技术白金手册. 中国电力出版社,2023【3】. 张友汉. 数字电子技术基础M. 北京:高等教育出版社,2023【4】. 顾斌. 数字电路EDA设计M. 西安:西安电子科技大学出版社,2023【5】. 徐志军. CPLD/FPGA的开发与应用M. 北京:北京电子工业出版社,2023【6】. 李国丽. EDA与数字系统设计M. 北京:北京机械工业出版社,2023【7】. 罗朝霞. CPLD/FPGA设计及应用M. 北京:人民邮电出版社,2023【8】. 辛春燕. VHDL硬件描述语言. 北京:国防工业出版社,2023【9】. 龚兰芳. EDA技术课程设计及实训指导书. 广东水利电力职业技术学院, 2023【10】. 龚兰芳. EDA技术实验指导书. 广东:广东水利电力职业技术学院,2023【11】. 尹常永. EDA技术与数字系统设计. 西