logo资料库

EDA_设计基于VHDL的简易全自动控制洗衣机.doc

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY student IS
PORT(COUNT_N,COUNT_M,START,COOK,CLK:IN STD_L
LOOK:OUT STD_LOGIC;
DOUT :OUT STD_LOGIC_VECTOR(1 DOWNTO 0));
END STUDENT;
ARCHITECTURE BEHAV OF student IS
SIGNAL DT1,DT2:STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL DICSOUNT,TEM:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL DCP:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL CT:STD_LOGIC_VECTOR(5 DOWNTO 0);
SIGNAL CT1,CT2:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL SG,CMKS:STD_LOGIC;
BEGIN
PROCESS(COUNT_N,SG)
BEGIN
IF SG='1' THEN
DT1<="00";
ELSIF COUNT_N'EVENT AND COUNT_N='1' THEN
IF DT1=3 THEN
DT1<="01";
ELSE
DT1<=DT1+1;
END IF;
END IF;
END PROCESS;
PROCESS(COUNT_M,SG)
BEGIN
IF SG='1' THEN
DT2<="00";
ELSIF COUNT_M'EVENT AND COUNT_M='1' THEN
IF DT2=3 THEN
DT2<="01";
ELSE
DT2<=DT2+1;
END IF;
END IF;
END PROCESS;
PROCESS(START)
BEGIN
IF SG='1' THEN
CMKS<='0';
ELSIF START'EVENT AND START='1' THEN
DICSOUNT<=DT1&DT2;CMKS<=CMKS XOR '1';
END IF;
END PROCESS;
PROCESS(CLK,START,COOK)
BEGIN
IF START='1' AND DCP="0000" THEN
DCP<=DICSOUNT;
ELSIF CLK'EVENT AND CLK='1' THEN
IF COOK='1' THEN
ELSIF START='1' AND DCP>"0000" THEN
ELSIF SG='1' THEN
IF CT1<"0001" THEN
CT1<="0000";SG<='0';
END IF;
ELSIF CMKS='1' THEN
CASE DCP IS
IF CT<35 THEN
CT<=CT+1;
IF CT1<8 THEN
ELSIF CT1=8 THEN
ELSIF CT2<8 THEN
ELSIF CT2=8 THEN
END IF;
ELSE
END IF;
WHEN "0110"=>
IF CT<27 THEN
CT<=CT+1;
IF CT1<6 THEN
ELSIF CT1=6 THEN
ELSIF CT2<6 THEN
ELSIF CT2=6 THEN
END IF;
ELSE
END IF;
WHEN "0111"=>
IF CT<8 THEN
CT<=CT+1;
IF CT1<3 THEN
ELSIF CT1=3 THEN
ELSIF CT2<3 THEN
ELSIF CT2=3 THEN
END IF;
ELSE
END IF;
WHEN "1001"=>
IF CT<27 THEN
CT<=CT+1;
IF CT1<6 THEN
ELSIF CT1=6 THEN
ELSIF CT2<6 THEN
ELSIF CT2=6 THEN
END IF;
ELSE
END IF;
WHEN "1010"=>
IF CT<15 THEN
CT<=CT+1;
IF CT1<3 THEN
ELSIF CT1=3 THEN
ELSIF CT2<3 THEN
ELSIF CT2=3 THEN
END IF;
ELSE
END IF;
WHEN "1011"=>
IF CT<8 THEN
CT<=CT+1;
IF CT1<3 THEN
ELSIF CT1=3 THEN
ELSIF CT2<3 THEN
ELSIF CT2=3 THEN
END IF;
ELSE
END IF;
WHEN "1101"=>
IF CT<19 THEN
CT<=CT+1;
IF CT1<4 THEN
ELSIF CT1=4 THEN
ELSIF CT2<4 THEN
ELSIF CT2=4 THEN
END IF;
ELSE
END IF;
WHEN "1110"=>
IF CT<11 THEN
CT<=CT+1;
IF CT1<2 THEN
ELSIF CT1=2 THEN
ELSIF CT2<2 THEN
ELSIF CT2=2 THEN
END IF;
ELSE
END IF;
WHEN "1111"=>
IF CT<8 THEN
IF CT1<3 THEN
ELSIF CT1=3 THEN
ELSIF CT2<3 THEN
ELSIF CT2=3 THEN
END IF;
ELSE
END IF;
WHEN OTHERS=>
END CASE;
END IF;
END IF;
END PROCESS;
LOOK<=SG;
END BEHAV;
信工 073 余海军 10079006 华东理工大学 2009 -2010 学年第 2 学期 《电子综合设计 DEA》课程设计作业 2010.6 班级:XXXX 学号: XXX 姓名:XXXX 开课学院:信息学院 任课老师: XXXX 成绩: 题目:1、简易全自动洗衣机控制器设计 2、通信系统信道编码器设计 作业要求: 《电子系统设计 EDA》课程是电子信息工程、自动控制、计算机科学与工程 等专业的技术课之一,具有很强的工程实践性。课程学习要求学生:掌握现代硬 件数字电路的软件化设计的基本方法、掌握应用 VHDL 及 EDA 工具开发设计数字 系统的基本方法以及对现代电子系统设计技术有一定的了解 设计报告要求:1、按照设计题目要求构建设计框图 2、用 EDA 设计软件按照 设计题目要求进行原型设计并给出仿真结果 3、对仿真结果进行一定的讨论 4、 原程序和仿真波形等附录。 教师评语: 教师签名: 年 月 日
信工 073 余海军 10079006 电子综合设计 EDA 综合设计题 设计一简易全自动洗衣机控制器。该控制器由两大状态 A 和 B 组成,每个状态分三个子状 态,每个状态分别由选择 A 和选择 B 控制。其中 A 为步进选择按纽,每步跳转一个子状态、 B 也为步进选择按纽,但每步选择 B 中的所有组合中的一种。当启动时,时间序列控制器 按已选的 B 类子状态顺序执行。 过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停/恢复过程) 过程启动后机盖开启应均能暂停过程,复盖间停 30 秒后重新继续原过程。 A:强洗 标准 弱洗 B:洗涤 漂洗 甩干 (洗涤,漂洗时电机分别正转、反转) 强洗:(共 36 分钟) 18 分 洗涤 14 分 4 分 漂洗 甩干 (洗涤时电机分别正转 4 分、反转 4 分,正反转间停 30 秒;漂洗时电机分别正转 3 分、反 转 3 分,正反转间停 30 秒;甩干时电机分别正转 1.5 分,间停 30 秒) 标准:(共 26 分钟) 14 分 洗涤 8 分 4 分 漂洗 甩干 (洗涤时电机分别正转 3 分、反转 3 分,正反转间停 30 秒;漂洗时电机分别正转 1.5 分、 反转 1.5 分,正反转间停 30 秒;甩干时电机分别正转 1.5 分,间停 30 秒) 弱洗(共 20 分钟) 洗涤 10 分 6 分 4 分 漂洗 甩干 (洗涤时电机分别正转 2 分、反转 2 分,正反转间停 30 秒;漂洗时电机分别正转 1 分、反 转 1 分,正反转间停 30 秒;甩干时电机分别正转 1.5 分,间停 30 秒) 设定秒脉冲已给定,指示为 LED,整过程完成后,蜂鸣器响 30 秒。整个设计为正逻辑。 一、程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY student IS PORT(COUNT_N,COUNT_M,START,COOK,CLK:IN STD_LOGIC; LOOK:OUT STD_LOGIC; DOUT :OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END STUDENT; ARCHITECTURE BEHAV OF student IS SIGNAL DT1,DT2:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL DICSOUNT,TEM:STD_LOGIC_VECTOR(3 DOWNTO 0);
信工 073 余海军 10079006 SIGNAL DCP:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CT:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL CT1,CT2:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SG,CMKS:STD_LOGIC; BEGIN PROCESS(COUNT_N,SG) BEGIN IF SG='1' THEN DT1<="00"; ELSIF COUNT_N'EVENT AND COUNT_N='1' THEN IF DT1=3 THEN DT1<="01"; ELSE DT1<=DT1+1; END IF; END IF; END PROCESS; PROCESS(COUNT_M,SG) BEGIN IF SG='1' THEN DT2<="00"; ELSIF COUNT_M'EVENT AND COUNT_M='1' THEN IF DT2=3 THEN DT2<="01"; ELSE DT2<=DT2+1; END IF; END IF; END PROCESS; PROCESS(START) BEGIN IF SG='1' THEN CMKS<='0'; ELSIF START'EVENT AND START='1' THEN DICSOUNT<=DT1&DT2;CMKS<=CMKS XOR '1'; END IF; END PROCESS; PROCESS(CLK,START,COOK) BEGIN IF START='1' AND DCP="0000" THEN
信工 073 余海军 10079006 DCP<=DICSOUNT; ELSIF CLK'EVENT AND CLK='1' THEN IF COOK='1' THEN DOUT<="00"; ELSIF START='1' AND DCP>"0000" THEN DOUT<="00"; ELSIF SG='1' THEN IF CT1<"0001" THEN CT1<="0000";SG<='0'; END IF; ELSIF CMKS='1' THEN CASE DCP IS WHEN "0101"=> IF CT<35 THEN CT<=CT+1; IF CT1<8 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=8 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<8 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=8 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="0110";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00"; END IF; WHEN "0110"=> IF CT<27 THEN CT<=CT+1; IF CT1<6 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=6 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<6 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=6 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="0111";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00"; END IF;
信工 073 余海军 10079006 WHEN "0111"=> IF CT<8 THEN CT<=CT+1; IF CT1<3 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=3 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<3 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=3 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="0000";CT<="000000";CT1<="0000";CT2<="0000";SG<='1'; END IF; WHEN "1001"=> IF CT<27 THEN CT<=CT+1; IF CT1<6 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=6 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<6 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=6 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="1010";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00"; END IF; WHEN "1010"=> IF CT<15 THEN CT<=CT+1; IF CT1<3 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=3 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<3 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=3 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF;
信工 073 余海军 10079006 ELSE DCP<="1011";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00"; END IF; WHEN "1011"=> IF CT<8 THEN CT<=CT+1; IF CT1<3 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=3 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<3 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=3 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="0000";CT<="000000";CT1<="0000";CT2<="0000";SG<='1'; END IF; WHEN "1101"=> IF CT<19 THEN CT<=CT+1; IF CT1<4 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=4 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<4 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=4 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="1110";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00"; END IF; WHEN "1110"=> IF CT<11 THEN CT<=CT+1; IF CT1<2 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=2 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<2 THEN
信工 073 余海军 10079006 DOUT<="10";CT2<=CT2+1; ELSIF CT2=2 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="1111";CT<="000000";CT1<="0000";CT2<="0000";DOUT<="00"; END IF; WHEN "1111"=> IF CT<8 THEN CT<=CT+1; IF CT1<3 THEN DOUT<="01";CT1<=CT1+1; ELSIF CT1=3 THEN DOUT<="00";CT1<=CT1+1; ELSIF CT2<3 THEN DOUT<="10";CT2<=CT2+1; ELSIF CT2=3 THEN DOUT<="00";CT1<="0000";CT2<="0000"; END IF; ELSE DCP<="0000";CT<="000000";CT1<="0000";CT2<="0000";SG<='1'; END IF; WHEN OTHERS=> DOUT<="00"; END CASE; END IF; END IF; END PROCESS; LOOK<=SG; END BEHAV;
余海军 10079006 信工 073 二、仿真波形如下 强洗全部过程 强洗 漂洗、甩干 强洗(甩干)
分享到:
收藏