浙江科技学院
嵌入式系统(EDA技术)
课程
书
课题名称:基于MAX II系列CPLD的微波炉控制器芯片设计
院、系 : 自动化与电气工程学院
专业班级: 建筑电气智能化
目 录
1
第一章 绪论
2
第二章 设计目的
3
第三章 设计要求
3
3.1 微波炉的功能要求
3
3.2设计步骤
4
第四章 设计思想
4
4.1微波炉定时器的工作过程
4
4.2根据系统的基本要求
5
第五章 设计内容
6
5.1状态控制电路模块
8
5.2数据装载电路模块
9
5.3计时器模块
11
5.4状态控制源程序
20
5.5控制器仿真及分析
23
设计总结
24
感 言
25
参考文献
第1章 绪论
随着人们生活水平的提高和信息化的发展,家用电器层出不穷,各种功能也越来越完善,其中微波炉是现代家庭的必备产品已经成为人们日用生活中的必不可少的厨房电器,大大降低了家庭妇女的工作量和工作强度,它的质量和性能的高低,将会极大的影响人们的生活水平和质量。为此,设计一个高质量的微波炉控制系统是非常有必要的。微波炉开始进入越来越多的家庭,他给人们的生活带来了极大的方便。微波炉由2450MHz的超高频来加热食物。他省时、省电、方便和卫生,作为现代的烹饪工具,微波炉的控制器体现着他的重要性能指标。目前大部分微波炉控制器采用单片机进行设计,带南路比较复杂性能不够灵活。本文采用先进的EDA技术,利用QuartusII工作平台和VHDL设计语言,设计了一种新型的微波炉控制器芯片,该芯片具有系统复位、时间设定和烹饪计时的功能,用一片FPGA芯片实现,所以能设计出一款方便安全操作的微波炉是非常有必要的。
第2章 设计目的
该设计用VHDL语言在MAX+PLUSⅡ软件平台上通过编译、模拟、仿真,完成了微波炉控制功能,实现了微波炉的测试、时间设置、烹调计时、完成提示等设计,并对时钟分频作了一定的探讨。此设计采用了现场可编程逻辑器件FPGA的 ASIC设计,由控制模块、装载模块、计时模块和显示模块四大模块组成,而且它可以将所有器件集成在一块芯片上,体积大大减小,且外围电路很简单,易于实现。
第3章 设计要求
3.1 微波炉的功能要求
要求设计一个基于MAXII系列的可调式数字闹钟,器件型号为EPM240T100C5,功能要求如下:
1、上电后,系统自动复位:数码管显示全零,功率选择小火档,显示“1”,三挡加热输出均为低电平;
2、可以进行烹调时间的分、秒设置,并使用数码管显示时间信息,设要求最长的烹调时间为59分59秒;
3、可以选择加热功率,分三档:高火、中火、小火,分别显示“3”,“2”,“1”;
4、按“开始”按键进入烹调状态,根据功率选择输出加热控制信号,时间显示数码管按每秒减1的倒计时方式显示剩余烹调时间;
5、烹调定时结束后,输出通知信号,系统回到复位状态。
3.2设计步骤
采用VHDL的系统设计,一般有以下6个步骤:
(1)要求的功能模块划分;
(2)VHDL的设计描述(设计输入);
(3)代码仿真模拟(前仿真);
(4)计综合、优化和布局布线;
(5)布局布线后的仿真模拟(后仿真);
(6)设计的实现(下载到目标器件)。
第4章 设计思想
4.1微波炉定时器的工作过程
上电后,系统处于复位状态。工作时首先进行烹调时间设置,并使用数码管显示时间信息,设要求最长的烹调时间为59分59秒,时间设置完毕后系统自动回到初始状态;按开始烹调按键进入烹调状态,时间显示数码管按每秒减1的倒计时方式显示剩余烹调时间;烹调结束后,系统回到复位状态。
4.2根据系统的基本要求
(1) 计时电路的设计:芯片内部产生和外部提供。本例中由外部时钟电路以BCD码的形式提供。
(2) 时间设置出错及工作过程的取消等情况的处理:设置一个复位按键。 (3)数码管状态的检测:设置数码管检测按键,按动该按键后,数码管能够显示“8888”的信息。
(4) 时间显示电路:采用4位7段显示数码管显示,并由芯片直接驱动。
(5) 微波管的驱动:设置一个输出驱动控制烹调状态的继电器即可。
第5章 设计内容
微波炉控制器的功能设计要求,本系统可由一下4个模块组成:①状态控制器KZQ;②数据装载器ZZQ;③烹调计时器JSQ;④显示译码器YMQ47;状态控制电路,其功能是控制微波炉工作过程中的状态转换,并发出相关控制信号;数据装载电路,其功能是根据控制信号选择定时时间,测试数据或计时完成信息的载入;计时器电路,其功能是对时钟进行减法计数,提供烹调完成时的状态信号。译码器,就是负责将各种显示信息的BCD转换成七段数码管显示的驱动信息编码。微波炉控制器的系统框图如图1所示。其中,CLK为时钟输入信号,时钟上升沿敏感;RESET为复位信号,高电平有效时系统复位清零;TEST为数码显示管测试信号,高电平有效系统显示8888;SET_T高电平有效时允许设置烹饪时间;KEY为定时时间输入信号,用于设置烹饪时间的长短,其高到低分别
示时间分、秒的十位、个位;START为烹调开始信号,高电平有效时开始烹调;输出信号COOK指示微波炉状态,高电平时表示烹调进行时;SEC0 、SEC1、MIN0、MIN1分别表示秒个位、秒十位、分个位、分十位。
图1 微波炉控制器的系统框图
SHAPE \* MERGEFORMAT
首先,对系统进行复位清零,使其各电路模块均处于初始状态;当烹饪时间设置信号SET_T有效时,读入时间信号KEY[3..0]的取值,此时系统显示设置的时间信息,再按下SET_T确定设置时间完成。按下开始键START,系统进入烹调状态,COOK信号变为高电平,时钟计数器开始减法计数,MIN1、MIN0、SEC1、SEC0显示剩余烹调时间。烹调结束,系统恢复初始状态。
当系统处于复位清零状态时,按下显像管测试按钮TEST,将对显像管是否正常工作进行测试,正常工作时,显像管输出全8。
5.1状态控制电路模块
状态控制器的功能根据输入信号和自身当时所处的状态完成状态的转换和输出相应的控制信号,其模块框图如图3所示。其中,输出信号LD_DONE指示数据装载电路载入的烹调结束的状态信息的显示的驱动信息数据;LD_CLK显示数据装载电路的设置的时间数据;LD_TEST指示数据装载电路载入的用于测试的数据,以显示驱动信息数据;COOK指示烹饪的状态,并提示计时器进行减法计算;KEY为定时时间输入信号,用于设置烹饪时间的长短,其高到低分别表示时间分、秒的十位、个位。当LD_DONE有效时,输出烹调结束数据。当LD_CLK有效时,输出烹调的设置时间数据。当LD_TEST有效时,输出数码管测试数据--包括6个输入信号和4个输出信号。
图3 状态控制电路模块框图
根据微波炉工作
的描述,分析状态转换条件及输出信号,可以得到如图4所示的微波炉控制器的状态转换图。
SHAPE \* MERGEFORMAT
图中,当RESET信号有效时,系统复位清零;输入/输出对应烹调时间设置、显示译码测试、完成信号显示和减法计数定时四种状态进行相应的转换。
5.2数据装载电路模块
数据装载电路的本质是一个三选一多路选择器,其模块框图如图5所示。
图5 数据装载电路模块框图
当LD_DONE有效时,输出烹调结束的信息数据数据。当L_CLK有效时,输出烹调的设置时间数据。当L_TEST有效时,输出数码管测试数据。LOAD信号为LD_DONE时DATEOUT输出KEY有效指示。
5.3计时器模块
电路计时模块可以由十进制减法计数器和六进制减法计数器级联组成,其中,两个十进制的减法计数器用于分、秒的个位减法计数,两个六进制的减法计数器用于分、秒的十位减法计数。由六进制计数器和十进制计数器级联构成的计时模块原理图如图6所示。
图6 计时器模块原理图
计时器模块的框图如图7所示。
图7 计时器模块框图
LOAD有效时完成装入功能,COOK(EN)有效时执行减计数;CLR由RESET发出信号,清除装载已存的数据;DONE返回给控制器,MIN和SEC显示所剩时间和测试状态信息、烹调结束状态信息等。
显示译码控制部分的设计
显示的数字或字母
BCD编码
七段显示驱动编码(g~a)
0
0000
0111111
1
0001
0000110
2
0010
1011011
3
0011
1001111
4
0100
1100110
5
0101
1101101
6
0110
1111101
7
0111
0000111
8
1000
1111111
9
1001
1101111
d
1010
1011110
o
1011
1011100
n
1100
1010100
E
1101
1111001
设计内容
状态控制符号图
5.4状态控制源程序
--状态控制电路的VHDL实现如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY controllor IS
PORT(
RESET:IN STD_LOGIC; --复位信号
KEY: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
--输入时间
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; --指示数据装载电路载入设置时间数据
DATA:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--16位数据
LED_SET_T:OUT STD_LOGIC; --LED显示状态
LD_DONE:OUT STD_LOGIC
--LED显示完成
);
END controllor;
ARCHITECTURE rtl OF controllor IS
TYPE STATES IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG);
SIGNAL NXT,CUR:STATES; --2个信号:下一状态、当前状态
SIGNAL DATATMP:STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL SET_T0: STD_LOGIC; --设置时间信号
BEGIN
PROCESS(CLK,RESET) --时钟和复位的进程
BEGIN
IF RESET='1' THEN --复位时将IDLE(显示0000)赋予当前状态
CUR<=IDLE;
ELSIF CLK'EVENT AND CLK='1' THEN
CUR<=NXT; --如果不是,遇到上边沿则自动跳转下一状态
END IF;
END PROCESS;
PROCESS(RESET,KEY) --复位和输入的进程
BEGIN --可以让输入4位数字 显示时间
IF RESET = '1' THEN --复位时不论任何状态数码管都将显示0000
DATATMP <= (others => '0');
ELSE
IF KEY(3)'EVENT AND KEY(3) = '1' THEN --设置分的十位
IF DATATMP(15 DOWNTO 12) = "0101" THEN --5自动跳转到0
DATATMP(15 DOWNTO 12) <= "0000";
ELSE
DATATMP(15 DOWNTO 12) <= DATATMP(15 DOWNTO 12) + 1;
END IF; --否则自动加1
END IF;
IF KEY(2)'EVENT AND KEY(2) = '1' THEN --设置分的个位
IF DATATMP(11 DOWNTO 8) = "1001" THEN --9自动跳转到0
DATATMP(11 DOWNTO 8) <= "0000";
ELSE
DATATMP(11 DOWNTO 8) <= DATATMP(11 DOWNTO 8) + 1;
END IF; --否则自动加1
END IF;
IF KEY(1)'EVENT AND KEY(1) = '1' THEN --设置秒的十位
IF DATATMP(7 DOWNTO 4) = "0101" THEN --5自动跳转到0
DATATMP(7 DOWNTO 4) <= "0000";
ELSE
DATATMP(7 DOWNTO 4) <= DATATMP(7 DOWNTO 4) + 1;
END IF; --否则自动加1
END IF;
IF KEY(0)'EVENT AND KEY(0) = '1' THEN --设置秒的个位
IF DATATMP(3 DOWNTO 0) = "1001" THEN --9自动跳转到0
DATATMP(3 DOWNTO 0) <= "0000";
ELSE
DATATMP(3 DOWNTO 0) <= DATATMP(3 DOWNTO 0) + 1;
END IF;
END IF; --否则自动加1
END IF;
DATA <= DATATMP;
END PROCESS;
PROCESS(SET_T,RESET) --设置时间和复位进程
BEGIN
IF RESET = '1' THEN --复位时设置时间变为低电平
SET_T0 <= '0';
ELSIF SET_T'EVENT AND SET_T = '1' THEN --按下SET_T键时
SET_T0 <= NOT SET_T0;
--SET_T非它前之状态
END IF;
IF SET_T0 = '1' THEN
LED_SET_T <= '1'; --赋予SET_T持续电平
ELSE
LED_SET_T <= '0'; --赋予SET_T持续电平
END IF;
END PROCESS;
PROCESS(CLK,CUR,SET_T,START,TEST,DONE) IS
BEGIN
NXT<=IDLE; --将IDLE载入NXT
LD_TEST<='0'; --复位
LD_DONE<='0';
LD_CLK<='0';
COOK<='0';
CASE CUR IS
WHEN LAMP_TEST=> --译码器显示测试状态
LD_TEST<='1';
COOK<='0';
WHEN SET_CLOCK=> --烹调时间测试状态
LD_CLK<='1';
COOK<='0';
WHEN DONE_MSG=> --完成信息显示状态
LD_DONE<='0';
COOK<='0';
WHEN IDLE=> --初始状态定义
IF TEST='1' THEN
NXT<=LAMP_TEST; --设置TEST
LD_TEST<='1';
ELSIF SET_T0='1' THEN --设置 SET_T
NXT<=SET_CLOCK;
LD_CLK<='1';
ELSIF START='1' AND DONE='0' THEN --设置计时模式
NXT<=TIMER;
COOK<='1';
END IF;
WHEN TIMER=>
IF DONE='1' THEN --设置计时完成
NXT<=DONE_MSG;
LD_DONE<='0';
ELSE
NXT<=TIMER;
COOK<='1';
END IF;
-- WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END rtl;
数据装载的符号图
数据装载的源程序
--数据装载电路的VHDL实现如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY loader IS
PORT(
DATAIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0); --输入16位数据
LD_TEST:IN STD_LOGIC;
LD_CLK:IN STD_LOGIC;
LD_DONE:IN STD_LOGIC;
DATAOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); --输出16位数据
LOAD:OUT STD_LOGIC --选择状态
);
END loader;
ARCHITECTURE rtl OF loader IS
BEGIN
PROCESS(DATAIN,LD_TEST,LD_CLK,LD_DONE)
CONSTANT ALLS:STD_LOGIC_VECTOR(15 DOWNTO 0)--测试信息
:="1000100010001000"; --显示8888
CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0)--烹调完成信息
:="1010101111001101";
VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
LOAD<=LD_TEST OR LD_DONE OR LD_CLK; --三选一状态
TEMP:=LD_TEST&LD_DONE&LD_CLK; --中间变量定义
CASE TEMP IS
WHEN"100"=>--测试
DATAOUT<=ALLS;
WHEN"010"=>--烹调完成
DATAOUT<=DONE;
WHEN"001"=>
DATAOUT<=DATAIN;
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END rtl;
计时器电路的符号图
计时器电路的源程序
--十进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt10 IS
PORT(
CLK:IN STD_LOGIC;
LOAD,CLR:IN STD_LOGIC; --CLR:清除数据
EN:IN STD_LOGIC; --信号使能
DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入的4位数据
Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --输出的4位数据
CARRY_OUT:OUT STD_LOGIC --数据装载
);
END cnt10;
ARCHITECTURE rtl OF cnt10 IS
SIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); --链接输入输出
BEGIN --数据的信号
PROCESS(CLK,LOAD,CLR,EN)
BEGIN
IF CLR = '1' THEN --当CLR高电平,数据变为0000
TMP<= "0000";
ELSIF LOAD='1'THEN --否则装载输入的数据
TMP<=DATAIN;
ELSIF CLK'EVENT AND CLK='0'THEN --上升沿时,执行10进制减法
IF EN='1'THEN
IF TMP="0000"THEN --0跳转到9
TMP<="1001";
ELSE --自动减1
TMP<=TMP-'1';
END IF;
END IF;
END IF;
IF TMP="0000"THEN
CARRY_OUT<='1'; --COOK<=CARRY_OUT
ELSE
CARRY_OUT<='0';
END IF;
END PROCESS;
Q<=TMP;
END rtl;
--六进制减法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt6 IS
PORT(
CLK:IN STD_LOGIC;
LOAD,CLR:IN STD_LOGIC;
EN:IN STD_LOGIC;
DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CARRY_OUT:OUT STD_LOGIC
);
END cnt6;
ARCHITECTURE rtl OF cnt6 IS
SIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CLK,LOAD,CLR,EN)
BEGIN
IF CLR = '1' THEN
TMP<= "0000";
ELSIF LOAD='1' THEN
TMP<=DATAIN;
ELSIF CLK'EVENT AND CLK='0'THEN --上升沿时进行6进制减法
IF EN='1'THEN
IF TMP="0000"THEN --0自动跳转到5
TMP<="0101";
ELSE
TMP<=TMP-'1'; --否则自动减1
END IF;
END IF;
END IF;
IF TMP="0000"THEN
CARRY_OUT<='1'; --赋值给COOK
ELSE
CARRY_OUT<='0';
END IF;
END PROCESS;
Q<=TMP;
END rtl;
--计时电路的VHDL实现如下:
--计数器电路模块设计
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY counter IS
PORT(
COOK:IN STD_LOGIC;
LOAD,CLR:IN STD_LOGIC;
CLK:IN STD_LOGIC;
DATA:IN STD_LOGIC_VECTOR(15 DOWNTO 0);
SEC0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --秒个位
SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --秒十位
MIN0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --分个位
MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --分十位
DONE:OUT STD_LOGIC --完成
);
END counter;
ARCHITECTURE rtl OF counter IS
--定义十进制和六进制计数器电路模块
COMPONENT cnt10 IS
PORT(
CLK:IN STD_LOGIC;
LOAD,CLR:IN STD_LOGIC;
EN:IN STD_LOGIC;
DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入
Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --输出
CARRY_OUT:OUT STD_LOGIC --状态
);
END COMPONENT cnt10;
COMPONENT cnt6 IS
PORT(
CLK:IN STD_LOGIC;
LOAD,CLR:IN STD_LOGIC;
EN:IN STD_LOGIC;
DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CARRY_OUT:OUT STD_LOGIC
);
END COMPONENT cnt6;
SIGNAL CLK0:STD_LOGIC;
SIGNAL S0:STD_LOGIC;
SIGNAL S1:STD_LOGIC;
SIGNAL S2:STD_LOGIC;
SIGNAL S3:STD_LOGIC;
BEGIN
--元件例化
CLK0 <= NOT CLK;
U1:cnt10 PORT MAP(CLK0,LOAD,CLR,COOK,DATA(3 DOWNTO 0),SEC0,S0);
U2:cnt6 PORT MAP(S0,LOAD,CLR,COOK,DATA(7 DOWNTO 4),SEC1,S1);
U3:cnt10 PORT MAP(S1,LOAD,CLR,COOK,DATA(11 DOWNTO 8),MIN0,S2);
U4:cnt6 PORT MAP(S2,LOAD,CLR,COOK,DATA(15 DOWNTO 12),MIN1,S3);
DONE<=S0 AND S1 AND S2 AND S3;
END rtl;
显示译码的符号图
显示译码的源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY YMQ47 IS
PORT(
AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY YMQ47;
ARCHITECTURE rtl OF YMQ47 IS
BEGIN
PROCESS(AIN4)
BEGIN
CASE AIN4 IS
WHEN"0000"=>DOUT7<="0111111"; --0
WHEN"0001"=>DOUT7<="0000110"; --1
WHEN"0010"=>DOUT7<="1011011"; --2
WHEN"0011"=>DOUT7<="1001111"; --3
WHEN"0100"=>DOUT7<="1100110"; --4
WHEN"0101"=>DOUT7<="1101101"; --5
WHEN"0110"=>DOUT7<="1111101"; --6
WHEN"0111"=>DOUT7<="0000111"; --7
WHEN"1000"=>DOUT7<="1111111"; --8
WHEN"1001"=>DOUT7<="1101111"; --9
WHEN"1010"=>DOUT7<="1011110"; --d
WHEN"1011"=>DOUT7<="1011100"; --o
WHEN"1100"=>DOUT7<="1010100"; --n
WHEN"1101"=>DOUT7<="1111001"; --e
WHEN OTHERS=>DOUT7<="0000000";
END CASE;
END PROCESS;
END ARCHITECTURE rtl;
5.5控制器仿真及分析
状态控制模块仿真
数据载入模块仿真
计数模块仿真
显示模块仿真
设计总结
这次的项目设计结束了,通过这次课程设计我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对数字时钟原理和设计思路的了解。
同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅大量的相关知识,要把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
在此,也感谢郑老师的悉心指导使自己学到了很多东西!!
感 言
1.这次课程设计让我学到了FPGA的内容,主要是针对微波炉控制器方面。
2.知道了微波炉控制器系统是由三部分电路模块组成:状态控制电路模块controller,数据装载电路模块loader,最后加上计时器模块。
3.同时复习了QUARTUSII软件的应用,对该软件的语言有了更深一层次的理解。
4.本次学习课程的时间虽然是两个星期,但还是复习了书本的知识,对自己来说更是一大进步。
5.通过这次课程实验,知道做什么事情都要认真,而且没有一次性的成功,特别是对程序不能编译成功的时候,我们更需要一种耐心和毅力。
6.虽然这次实验有很多不足,我会在以后的实验中努力弥补不足之处。
参考文献
[1]李景华,杜玉远 可编程逻辑器件与EDA技术. 沈阳:东北大学出版社,2000
[2]王国强 EDA技术与应用. 北京:电子工业出版社,2006
[3]亿特科技. CPLD/FPGA应用系统设计与产品开发.北京:人民邮电出版社,2005
[4]徐光辉,程东旭,黄如. 基于FPGA的嵌入式开发与应用。北京:电子工业出版社,2006
[5]陈荣,陈华. VHDL芯片设计. 北京:机械工业说出版社,2006
[6]王诚,吴继华,范丽珍. Altera FPGA/CPLD设计:基础篇. 北京:人民邮电出版社,2005
接通电源
初始状态
时间设置
显示8888
烹调
完成
SET_T
TEST?
START?
时间到?
N
Y
N
Y
N
Y
N
Y
图2 工作流程图
TEST/LD_TEST
RESET
初 始
状 态IDLE
SET_
CLOCK
LAMP_TEST
DONE_MSG
TIMER
START&DONE&TEST&SET_T/COOK
LD_DONE/COOK
X/LD_DONE
X/LD_CLK
SET_T&TEST/LD_CLK
X/LD_TEST
DONE/LD_DONE
图4 状态控制器状态转换图
减法计数定时状态
T
完成信息显示状态
T
烹调时间设置状态
T
显示译码测试状态
T