SOPC/EDA综合课程设计报告设计题目:微波炉控制器的设计设计者:YY学号:20号班级:自动化071指导老师:JJ完成时间:2010年1月20日SOPC/EDA 综合课程设计――微波炉控制器的设计目录第一章项目设计要求及实现原理 (2)第二章设计原理 (3)第三章设计内容 (4)3.1 项目分块 (4)3.1.1 状态控制器KZQ的设计 (4)3.1.2 数据装载器ZZQ的设计 (4)3.1.3 烹调计时器JSQ的设计 (5)3.1.4 显示译码器YMQ47的设计 (6)3.2 分块源程序及仿真波形 (7)3.2.1 状态控制器KZQ的源程序及仿真波形 (7)3.2.2 数据装载器ZZQ的源程序及仿真波形 (8)3.2.3 六进制计数器的源程序 (9)3.2.4 十进制计数器的源程序 (10)3.2.5 烹调计时器JSQ的源程序及仿真波形 (11)3.2.6 顶层模块的源程序及仿真波形 (13)3.3总体组装图或源程序 (15)第四章设计分析总结 (16)参考文献 (16)袁亮 自动化071班 20号第一章 项目设计要求及实现原理现需设计一个微波炉控制器WBLKZQ ,其外部接口如下图1.1所示。
通过该控制器再配以4个七段数码二极管完成微波炉的定时及信息显示。
图1.1 微波炉控制器外部接口符号图各信号的功能及要求如下:CLK 是秒时钟脉冲输入,它接收每秒一个时钟脉冲的节拍信号。
RESET 为复位信号,高电平有效,用于芯片的复位功能。
TEST 为测试信号,高电平有效,用于测试4个七段数码二极管工作是否正常。
START 为开始加热信号,高电平有效,SET_T 信号为定时设置信号,高电平时可以设置定时时间,DATA0为定时的时间,COOK 为加热输出(用指示灯代替),另外四个输出分别表示显示的定时时间的分和秒。
其他功能自行扩展并设计。
DATA0[15..0] RESET SET_T START TEST CLKCOOKSEC_L[6..0] SEC_H[6..0] MIN_L[6..0] MIN_H[6..0]WBLKZKqSOPC/EDA 综合课程设计――微波炉控制器的设计第二章设计原理首先,对系统进行复位清零,使各电路模块均处于初始状态;当烹调时间设置信号SET_T有效时,读入时间信号DATA[15…0]的取值,此时系统自动复位并显示设置的时间信息。
按下开始键START,系统进入烹调状态,COOK信号变为搞定平,时钟计数器开始减法计数,显示剩余烹调时间。
烹调结束,系统恢复初始状态,数码管显示输出烹饪结束信息。
当系统处于复位清零状态时,按下显示管测试按钮TEST,将对显示管是否正常工作进行测试,正常工作时,显示管输出全为1。
CLK是秒时钟脉冲输入,它接收每秒一个时钟脉冲的节拍信号。
RESET为复位信号,高电平有效,用于芯片的复位功能。
TEST为测试信号,高电平有效,用于测试4个七段数码二极管工作是否正常。
SET_T是烹调时间设置控制信号,高电平有效。
DATA0是一个16位的总线输入信号,输入所设置的时间长短,它由高到低分为4组,每一组是BCD码输入,分别表示分、秒上十位、个位的数字,如12分59秒。
START是烹调开始的控制信号,高电平有效。
COOK是烹调进行信号,它外接用于控制烹调的继电器开关,高电平时表明烹调己经开始或正在进行,低电平表示烹调结束或没有进行。
MIN_H(十分位)、MIN_L(分位)、SEC_H(十秒位)和SEC_L(秒位)是4组七位总线信号,它们分别接4个七段数码管,动态地显示完成烹调所剩的时间以及测试状态信息“8888”、烹调完毕的状态信息“donE”。
该微波炉控制器WBLKZQ的具体功能要求如下:上电后系统首先处于一种复位状态。
在工作时首先按SET_T键设置烹调时间,此时系统读入DATA0的数据作为烹调所需时间,然后系统自动回到复位状态,同时4个七段数码管显示时间信息(假设系统最长的烹调时间为59分59秒)。
再按START键后系统进入烹调状态,COOK信号开始为高电平,此时4个七段数码管每隔一秒钟变化一次,用以刷新还剩多少时间结束烹调。
烹调结束后,COOK信号变为低电平,同时4个七段数码管组合在一起显示“donE”的信息,然后系统回到复位状态。
系统可以通过按RESET键随时回到复位状态。
在复位状态下,按TEST键在4个数码管上会显示“8888”的信息,它可以测试4个七段数码管工作是否正常。
袁亮自动化071班20号第三章设计内容3.1 项目分块根据该微波炉控制器的功能设计要求,本系统可由以下4个模块组成:①状态控制器KZQ;②数据装载器ZZQ;③烹调计时器JSQ;④显示译码器YMQ47。
3.1.1 状态控制器KZQ的设计状态控制器KZQ的功能是控制微波炉工作过程中的状态转换,并发出有关控制信息,因此我们可用一个状态机来实现它。
经过对微波炉工作过程中的状态转换条件及输出信号进行分析,我们可得到其状态转换图如下图3.1所示;图3.1 状态控制器KZQ的状态转换图其输入、输出端口如下图3.2所示:EC图3.2 状态控制器的输入、输出端3.1.2 数据装载器ZZQ的设计ZZQ的输入、输出端口如下图3.3所示,根据其应完成的逻辑功能,它本质上就是一个三选一数据选择器。
本设计采用一个进程来完成,但由于三个被选择的数据只有一个来自输入端口,因此另两个被选择的数据则通过在进程的说明部SOPC/EDA 综合课程设计――微波炉控制器的设计分定义两个常数来产生。
由于用于显示“8888”的常数ALL 8需分解成4个8,分别经过四个4-7译码器译码后才是真正的显示驱动信息编码,因此该常数应是4个分段的4位BCD码,故应设为“1000100010001000”。
同理,显示“donE”的常数DONE可设为“1010101111001101”,其中d、o、n、E的BCD码分别为:“1010”“1011”、“1011”、“1100”。
图3.3 数据装载器ZZQ的输入、输出端口图3.1.3 烹调计时器JSQ的设计烹调计时器JSQ为减数计数器,其最大计时时间为59:59。
因此我们可用两个减计数十进制计数器DCNT10(如图 3.4)和两个减计数六进制计数器DCNT6(如图3.5)级联构成。
其中两个十进制计数器用于分、秒的个位减法计算,两个六进制计数器用于分、秒的十位减法计数。
JSQ的内部组成原理如下图3.5所示。
图3.4 十进制计数器图3.5 六进制计数器袁亮自动化071班20号图3.5 烹调计时器JSQ的内部组成原理图3.1.4 显示译码器YMQ47的设计本显示译码器YMQ47不但要对数字0~9进行显示译码,还要对字母d、o、n、E进行显示译码,其译码对照表如下表3.1所示。
表3.1 显示译码器YMQ47的译码对照表SOPC/EDA 综合课程设计――微波炉控制器的设计3.2 分块源程序及仿真波形3.2.1 状态控制器KZQ的源程序及仿真波形LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY KZQ ISPORT(RESET:IN STD_LOGIC;SET_T:IN STD_LOGIC;START:IN STD_LOGIC;TEST:IN STD_LOGIC;CLK:IN STD_LOGIC;DONE:IN STD_LOGIC;COOK:OUT STD_LOGIC;LD_TEST:OUT STD_LOGIC;LD_CLK:OUT STD_LOGIC;LD_DONE:OUT STD_LOGIC);END KZQ;ARCHITECTURE rtl OF KZQ ISTYPE STATES IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG);SIGNAL NXT,CUR:STATES;BEGINPROCESS(CLK,RESET)BEGINIF RESET='1'THENCUR<=IDLE;ELSIF CLK'EVENT AND CLK='1'THENCUR<=NXT;END IF;END PROCESS;PROCESS(CLK,CUR,SET_T,START,TEST,DONE)ISBEGINNXT<=IDLE;LD_TEST<='0';LD_DONE<='0';LD_CLK<='0';COOK<='0';CASE CUR ISWHEN LAMP_TEST=>LD_CLK<='1';COOK<='0';WHEN SET_CLOCK=>LD_CLK<='1';COOK<='0';WHEN DONE_MSG=>LD_DONE<='1';COOK<='0';袁亮自动化071班20号WHEN IDLE=>IF TEST='1'THENNXT<=LAMP_TEST;LD_TEST<='1';ELSIF SET_T='1'THENNXT<=SET_CLOCK;LD_CLK<='1';ELSIF START='1'AND DONE='0'THENNXT<=TIMER;COOK<='1';END IF;WHEN TIMER=>IF DONE='1'THENNXT<=DONE_MSG;LD_DONE<='1';ELSENXT<=TIMER;COOK<='1';END IF;END CASE;END PROCESS;END rtl;状态控制器KZQ仿真波形如图3.6所示图3.6 状态控制器KZQ仿真波形上图中,当测试信号TEST为高电平有效时,测试输出信号为高电平;否则,当时间设置信号SET_T为高电平时,对应的指示信号LD_CLK输出高电平;当烹饪开始信号START信号为高电平时,对应输出COOK为高电平;当复位信号RESET为高电平时,系统复位清零,回复初始状态。
仿真结果符合模块设计要求。
3.2.2 数据装载器ZZQ的源程序及仿真波形LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY ZZQ ISSOPC/EDA 综合课程设计――微波炉控制器的设计PORT(DATAIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);LD_TEST:IN STD_LOGIC;LD_CLK:IN STD_LOGIC;LD_DONE:IN STD_LOGIC;DATAOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LOAD:OUT STD_LOGIC);END ZZQ;ARCHITECTURE rtl OF ZZQ ISBEGINPROCESS(DATAIN,LD_TEST,LD_CLK,LD_DONE)CONSTANT ALLS:STD_LOGIC_VECTOR(15 DOWNTO 0):="1000100010001000";CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0):="1010101111001101";V ARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINLOAD<=LD_TEST OR LD_DONE OR LD_CLK;TEMP:=LD_TEST & LD_DONE & LD_CLK;CASE TEMP ISWHEN"100"=>DATAOUT<=ALLS;WHEN"010"=>DATAOUT<=DONE;WHEN"001"=>DATAOUT<=DATAIN;WHEN OTHERS=>NULL;END CASE;END PROCESS;END rtl;数据装载器ZZQ仿真波形如图3.7所示图3.7 数据装载器ZZQ仿真波形该模块本质即多路选择译码电路。