第一篇:电子技术课程设计智能洗衣机控制器
电子技术基础课程设计 ——智能洗衣机控制器 目录 一、课程设计的目的 二、课程设计的课题与要求 1.课程设计的课题 2.课程设计的要求 三、设计思路与过程 1.设计前提概述 2.ASM图 3.状态图 4.输入输出设计 四、程序内容 五、仿真波形图 1.模式一的仿真 2.模式二的仿真 3.模式三的仿真 4.模式四的仿真 5.模式五的仿真 六、课设感想与收获 一、课程设计的目的 1.了解数字系统的组成,学习数字系统的设计方法。
2.学习数字系统由上向下设计法的工具-ASM图 3.熟悉现代数字系统的实现方法:用PLD器件取代传统的中规模集成器件实现数字电路与系统。
4.学习分层次化实现数字电路与系统的方法。
5.学习使用硬件描述语言(Hardware Description Language)对数字电路与系统进行建模、仿真与实现的方法。
二、课程设计的课题与要求 1.课程设计的课题 设计一个智能洗衣机(全自动洗衣机)控制器,能够实现洗衣,漂洗和脱水的功能。
2.课程设计的要求 能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机的工作模式和所剩的工作时间用数码管显示出来,能够将洗衣机当前所处的状态用发光管或者数码管显示出来。
【模式1】:洗特别脏的衣服(洗衣30秒钟)【模式2】 :洗脏的衣服(洗衣20秒钟)【模式3】 :洗一般的衣服(洗衣10秒钟)【模式4】 :漂洗(每次漂洗5秒钟)【模式5】 :脱水(每次脱水3秒钟)【洗衣全过程】:洗衣+脱水+漂洗+脱水+漂洗+脱水,注水完成使用外部传感器S=1表示。
【漂洗模式】:漂洗+脱水+漂洗+脱水,注水完成使用外部传感器S=1表示。
【脱水模式】:脱水。
【注】:操作完毕使用蜂鸣器鸣叫两秒提示。
三、设计思路与过程 1.设计前提概述 本设计任务主要是实现各个模式之间的切换以及各个状态之间的转变。
课题已经要求有模式一到五这五个模式,故按照这五个模式来思考。
另外,课题也明确要求了三个状态:洗衣,漂洗与脱水。但是,注水是洗衣机必须进行的操作,也占有整个模式中的部分时间,所以也将注水当作一种状态,而且洗衣和漂洗之前都必须注水。
综上,设计的模式有五个:模式一,模式二,模式三,模式四和模式五。设计的状态有四个:注水,洗衣,漂洗与脱水,分别对应s1,s2,s3,s4。
2.ASM图 每个状态都有规定的具体时间,时间到了,发生转换。图中T1,T2,T3,T4,T5,T6,TT表示用时间来控制状态的转换。在程序中,有具体的T1,T2,T3,T4,T5,T6,TT的表示,为作图简便,图中不作具体说明。
3.状态图 图中S1,S2,S3,S4分别对应状态注水,洗衣,漂洗,脱水。而图中的T1,T2,T3,T4,T5,T6,TT同ASM图中的符号,在ASM图中已说明,详情见程序,这里不重复说明。
4.输入输出设计 本程序共有5个模式:模式一,模式二,模式三,模式四,模式五。4个状态:注水,洗衣,漂洗,脱水。
设计6个输入按键,分别为K1,K2,K3,K4,K5,K6。K1为控制模式一的按键;
K2为控制模式二的按键;
K3为控制模式三的按键;
K4为控制模式四的按键;
K5为控制模式五的按键;
K6为控制洗衣机工作的按键。
输出设备有一个发光二极管,四个数码管。发光二极管亮表示注水完成,发光二极管灭表示正在注水。一个数码管用来显示当前的模式,1,2,3,4,5分别表示模式一,模式二,模式三,模式四,模式五;
一个数码管用来表示当前的状态,1,2,3,4分别表示注水,洗衣,漂洗,脱水状态;
两个数码管用来显示当前模式所剩下的时间,时间以1递减至0。
四、程序内容 module washclother(clk,clkk,k1,k2,k3,k4,k5,k6,state,mode,ttime,alarm,zhushui);input clk;//整个程序的时钟信号 input clkk;//扬声器的时钟信号 input k1;//模式一的控制按键 input k2;//模式二的控制按键 input k3;//模式三的控制按键 input k4;//模式四的控制按键 input k5;//模式五的控制按键 input k6;//工作使能按键 output [3:0] state;//状态 数码管显示信号 output [3:0] mode;//模式 数码管显示信号 output [7:0] ttime;//模式的总时间 output alarm,zhushui;reg zhushui;//注水信号 reg alarm;//扬声器信号 reg [3:0] jiao;//扬声器响的时间计时 reg [7:0] ttime;reg [3:0] mode;reg [3:0] state;reg work;//开始工作信号 reg over;//结束信号 always @(posedge clk or posedge k6)begin if(k6==1)//k6按下,work为1,开始工作 work<=1;else //k6未按,模式初始化 begin over<=1;jiao<=4'b0000;work<=0;if(k1==1)//初始化为模式一 begin ttime<=8'h55;mode<=4'b0001;end else if(k2==1)//初始化为模式二 begin ttime<=8'h45;mode<=4'b0010;end else if(k3==1)//初始化为模式三 begin ttime<=8'h35;mode<=4'b0011;end else if(k4==1)//初始化为模式四 begin ttime<=8'h20;mode<=4'b0100;end else if(k5==1)//初始化为模式五 begin ttime<=8'h5;mode<=4'b0101;end else //初始化为0 begin mode<=4'b0000;state<=4'b0000;ttime<=8'h0;end end if(work==1)//开始从某一模式工作 begin case(mode)//确定模式 4'b0001:begin //模式一的过程 if(((ttime>8'h53)&&(ttime<8'h56))||((ttime<8'h21)&&(ttime>8'h18))||((ttime<8'h11)&&(ttime>8'h8)))begin //注水状态 zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime>8'h23)&&(ttime<8'h54))state<=4'b0010;//洗衣状态 if(((ttime>8'h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'b0011;//漂洗状态 if(((ttime>8'h20)&&(ttime<8'h24))||((ttime<8'h14)&&(ttime>8'h10))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;//脱水状态 if(ttime>8'h0)begin //时间递减到0 if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0010:begin //模式二的过程 if(((ttime>8'h43)&&(ttime<8'h46))||((ttime<8'h21)&&(ttime>8'h18))||((ttime<8'h11)&&(ttime>8'h8)))begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime>8'h23)&&(ttime<8'h44))state<=4'b0010;if(((ttime>8'h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'b0011;if(((ttime>8'h20)&&(ttime<8'h24))||((ttime<8'h14)&&(ttime>8'h10))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;if(ttime>0)begin if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0011:begin //模式三的过程 if(((ttime>33)&&(ttime<36))||((ttime<21)&&(ttime>18))||((ttime<11)&&(ttime>8)))begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime>8'h23)&&(ttime<8'h34))state<=4'b0010;if(((ttime>8'h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'b0011;if(((ttime>8'h20)&&(ttime<8'h24))||((ttime<8'h14)&&(ttime>8'h10))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;if(ttime>8'h0)begin if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0100:begin //模式四的过程 if(((ttime>8'h18)&&(ttime<8'h21))||((ttime<8'h11)&&(ttime>8'h8)))begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if(((ttime>8'h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'b0011;if(((ttime>8'h10)&&(ttime<8'h14))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;if(ttime>8'h0)begin if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0101:begin //模式五的过程 if((ttime>8'h3)&&(ttime<8'h6))begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime<8'h4)&&(ttime>8'h0))state<=4'b0100;if(ttime>8'h0)begin if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0000:begin //停止工作 state<=4'b0000;ttime<=8'h0;zhushui<=1'b1;alarm<=1'b0;end endcase if((over==1)&&(ttime[7:0]==8'h1))begin over<=0;jiao<=4'b0010;//扬声器鸣叫2S end if(jiao>4'b0000)begin alarm<=~clkk;//扬声器鸣叫 jiao<=jiao-1'b1;//鸣叫时间递减到0 end else alarm<=0;end end endmodule 五、仿真波形图 1.模式一的仿真 2.模式二的仿真 3.模式三的仿真 4.模式四的仿真 5.模式五的仿真 六、课设感想与收获 每次课程设计都有些让我们即恐惧又兴奋,因为它充满挑战。本次课程设计亦是如此,趣味性强,同时也可以学到很多东西。
在这次课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在课设过程中,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
我不仅了解了数字系统的组成,学会了数字系统的设计方法及数字系统由上向下设计法的工具-ASM图,而且熟悉了现代数字系统的实现方法:用PLD器件取代传统的中规模集成器件实现数字电路与系统。我还掌握了分层次化实现数字电路与系统的方法,了解了使用硬件描述语言(Hardware Description Language)对数字电路与系统进行建模、仿真与实现的方法。
课设的过程永远是那么的纠结,那么的刺激,那么的值得回味,在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。很少有人会一步登天吧。永不言弃才是最重要的。
而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
虽然大二学过数电,对Verilog语言有一定的涉猎,但是并不熟悉,未掌握其核心内容,这次课程设计,不仅复习了数电知识的内容,而且使我对Verilog语言有了更进一步的了解,不管是从结构上,还是从语法上。Verilog语言是一门很实用的语言,应该说是一门很精确的语言。
我很高兴能顺利做完这门课程设计,迎接下一个挑战吧。
第二篇:智能控制器简介
苏州工业园区苏容电气有限公司
智能控制器简介
电子智能控制器行业是技术密集型和知识密集型相结合的产业。电子智能控制器是指在仪器、设备、装置、系统中为实现电子控制,而设计的计算机控制单元,它一般是以单片微型计算机(MCU)芯片或数字信号处理器(DSP)芯片为核心,依据不同功能要求辅以外围模拟及数字电子线路,并置入相应的计算机软件程序,经电子加工工艺制造而形成的核心控制部件。
智能控制器以自动控制理论为基础,集成了自动控制技术、微电子技术、电力电子技术、传感技术、通讯技术等诸多技术门类而形成的高科技产品。智能控制器并非以终端产品的形态独立工作,而是作为核心和关键部件内置于仪器、设备、装置或系统中,在其中扮演“神经中枢”及“大脑”的角色,是典型的嵌入式软件产品。
智研数据研究中心调查表示:电子智能控制产品的核心功能是提高用电设备的效率、精度和智能化。随着各种用电设备日益朝数字化、功能集成和智能化方向发展,电子智能控制产品的渗透性进一步增强,应用领域日趋广泛。目前,智能控制器广泛应用于家用电器、健康与护理产品、电动工具、智能建筑与家居、汽车电子等终端产品中。
中国的家电智能控制器专业厂商总体上历史较短,规模不大,但近几年发展迅速。这主要是由以下因素推动:首先,随着中国在电子、集成电路、软件、通信、传感器等方面技术的大幅进步,中国在技术层面上已经能够研发制造出具有优良性能的控制器产品。其次,传统的欧美日韩等国际家电制造巨头受到中国、土耳其、智利等新兴国家的家电制造企业的挑战,成本压力急剧增大,国际家电商开始向中国的家电智能控制器企业进行采购。再次,中国的家电制造业专业化分工已经开始。与国际家电企业不同,由于中国电子行业发展历史较短等因素,国内家电制造商目前尚处于自行研发制造大部分智能控制器的阶段。随着国内智能控制技术的不断提高,从最近几年开始,国内家电制造商由自主生产智能控制器转向由专业第三方供应的趋势越来越明显。这种调整一方面得益于社会精细化分工的总体趋势,更重要的原因是家电整机制造企业发现,采取专业第三方供货,可以有效地克服厂商内部供货带来的效率低下、技术更新慢、服务落后等弊端,能够更好地加快产品更新、有效降低成本。以上因素使近几年中国涌现出一批具有一定专业开发设计能力、实验测试能力和基于专业产品经验的工艺制造能力的本土智能控制器企业。
20世纪90年代中期之后,智能控制器行业日益成熟,作为一个独立的行业,其发展受到了双重动力的驱动:其一是市场驱动,市场需求的增长和市场应用领域的持续扩大,致使智能控制器至今已经在工业、农业、家用、军事等几乎所有领域得到了广泛应用;其二
苏州工业园区苏容电气有限公司
是技术驱动,随着相关技术领域的日新月异,智能控制器行业作为一个高科技行业得到了飞速发展。
目前,在中国等发展中国家智能控制产品的应用仍处于初级阶段,现阶段市场规模不大,但是增长速度较高,拥有巨大的发展空间。
第三篇:全自动洗衣机课程设计
全自动洗衣机课程设计
PLC课程设计
题
目: 全自动洗衣机的控制
院系名称: 机械设计制造及其自动化
专业班级:
学生姓名:
学
号:
指导老师:
目录
目录........................................................................................................................................2 第一章 课程设计任务............................................................................错误!未定义书签。第二章 总体方案分析............................................................................错误!未定义书签。
2.1 分析控制要求......................................................................错误!未定义书签。2.2 选择PLC型号.....................................................................错误!未定义书签。2.3 分配I/O点...........................................................................错误!未定义书签。
第三章 PLC控制系统设计...................................................................错误!未定义书签。
3.1 输入/输出电路设计.............................................................错误!未定义书签。3.2 控制程序设计......................................................................错误!未定义书签。
3.2.1 梯形图设计................................................................错误!未定义书签。3.2.2 指令表........................................................................错误!未定义书签。3.3 控制程序分析......................................................................错误!未定义书签。
第四章 课程设计小结............................................................................错误!未定义书签。参 考 文 献............................................................................................错误!未定义书签。
一、课程设计任务
全自动洗衣机已经是普及的家用电器,并且现在工业用的全自动洗衣机由于其特殊性,也越来越多的采用 PLC、变频器和触摸屏。该控制对象具有如下功能:波轮式全自动洗衣机的洗衣桶(外桶)和脱水桶(内桶)是以同一中心安装的。外桶固定,作乘水用;内桶可以旋转,作脱水(甩干)用。内桶的四周有许多小孔,使内外桶水流相通。洗衣机的进水和排水分别由进水电磁阀和排水电磁阀控制。进水时,控制系统使进水电磁阀打开,将水注入外桶;排水时,使排水电磁阀打开,将水由外桶排到机外。洗涤和脱水由同一台电动机拖动,通过电磁阀离合器来控制,将动力传递给洗涤波轮或甩干桶(内桶)。电磁离合器失电时,电动机带动洗涤波轮实现正、反转,进行洗涤;电磁离合器得电时,电动机带动内桶单向旋转,进行甩干(此时波轮不转)。水位高低分别由高低水位开关进行检测,启动按钮用来启动洗衣机工作。
二、总体方案分析
2.1控制要求
启动时,首先进水,到高位时停止进水,开始洗涤。正转洗涤15s 暂停3s后反转洗涤15s,暂停3s后再正转洗涤,如此反复30次。洗涤结束后开始排水,当水位下降到低水位时,进行脱水(同时排水),脱水时间为10s。这样完成一次从进水到脱水的大循环过程。
经过3次上述大循环后(第2、3次为漂涤),进行完成后报警,报警10s后结束全部过程,自动停机。
此外,还要求可以按下排水按钮以实现手动排水;按下停止按钮以实现手动停止进水、排水、脱水及报警。
所需设备
(1)液位传感器、按钮、报警器、选择开关、电磁离合器、电动机等;(2)计算机(用户自备)一台;(3)可编程控制器(带编程电缆)一根;(4)编程软件;(5)导线若干。2.2 PLC选择、PLC选型及I/O分配图
根据设计要求、控制要求,选定PLC的型号为: 三菱FX2N
● 控制规模:16~256点
● 内置8K容量的RAM存储器,最大可以扩展到16K ● CPU运算处理速度0.08μS/基本指令
● 在FX2N系列右侧可连接输入输出扩展模块和特殊功能模块
● 基本单元内置2轴独立最高20kHz定位功能(晶体管输出型)全自动洗衣机系统的I/0分配:
输人
输出 X0:启动按钮
X1:限位开关SQ
1X2:限位开关SQ
2第三章 PLC控制系统设计
3.1 输入/输出电路设计
Y0:进水电磁阀控制KA1
Y1:电动机正转接触器KM1 Y2:电动机反转接触器KM2
Y3:排水电磁阀控制KA2 Y4:脱水离合器控制KA3
Y5:报警蜂鸣器KA4
全自动洗衣机步进梯形图
指令表
3.3 控制程序分析
连接好PLC,打开软件,选定合适的通信端口。首先用软件远程使PLC停止工作,RUN灯熄灭。然后把编好的程序写入PLC,再用软件启动PLC,发现PLC的RUN指示灯亮,程序运行时,按下启动按钮X0,置位状态寄存器S20,控制进水阀开始进水。由外部跟定液位信号,比如选定高水位洗涤,则闭合X1,过一会儿再闭合X1,相当于已达到高水位,从而置位S21,S20自动复位,关闭进水,同时启动T0计时器暂停3s。计时完毕,T0常开点闭合,置位S22,洗衣机开始正转,并开启T0计时器计时15s。计时完毕,T1常开点闭合,置位S23,开启暂停3s的T2计时器。计时完毕,T2常开点闭合,置位S24,控制电动机反转,同时开启T3计时器计时15s。计时完毕,T3常开点闭合,从而置位S25,开启暂停3s计时器T4。计时到时,并启动计时器C0,计数一次,同时返回S22,直到计数器计到30次时,置位S26,开始排水.当排空后,从而置位S27,启动脱水,并保持排水,同时开启T5计时器计时10s。计时到时,T5常开点闭合,C1计数一次,同时返回S20,直到C1计时3次时,即反复洗涤三次后,C1常开点闭合,置位S28,开启报警电路,扬声器发出响声提示洗衣完成。在每一步顺序运行时,上一步的状态寄存器均自动复位。
在程序运行中,闭合X3,各状态寄存器均无信号,通过选择手动排水和手动脱水档位,可实现手动排水和手动脱水功能。若要实现轻柔洗功能,需添加X0作为轻柔洗档位,把X1设为标准洗档位,轻柔洗的过程可以通过一些计时器把正反转的时间设定的小一些。编程和上述基本类似。
第四章 课程设计小节
经过将近一周的全自动洗衣机PLC课程设计,让我收获颇丰,不仅熟悉了全自动洗衣机的工作过程,还学会了使用步进指令。步进指令简单,直观,易于阅读,使用它来控制洗衣机的工作过程,真的很是方便。几天的课程设计,让我加深了对PLC的认识和理解,也知道了PLC应用于工业控制的优点所在,更重要的是让我看到了自己知识的匮乏,也坚定了以后要不断的学习,不断的向身边的人虚心请教,同时要借助于图书馆和网络来扩充自己的知识面的决心。也只有这样,在以后的社会竞争中,自己才能有立足之地,才能有所作为。
五、参考文献
[1]电气控制与PLC应用,胡汉文 丁如春 主编,人民邮电出版社,2009 [2]科威PLC资料 [3]三菱及西门子PLC资料
[4]可编程控制器教程,黄云龙主编,科学出版社,2003 [5]可编程控制器应用技术,张万忠主编,化学工业出版社,2002 [6]机电电气自动控制(修订版),陈远龄主编,重庆大学出版社出版,2005 [7]可编程控制器原理及应用教程,王晖 孙玉峰 王文华 主编,清华大学出版社出版,2004
第四篇:eda课程设计-彩灯控制器
1.设计目的
学习EDA开发软件和MAX+plus Ⅱ的使用方法,熟悉可编程逻辑器件的使用,通过制作来了解彩灯控制系统。2.设计题目描述和要求
1)设计一个彩灯控制器,使彩灯(LED管)能连续发出四种以上不同的显示形式;
2)随着彩灯显示图案的变化,发出不同的音响声。3)扩充其它功能。3.设计原理 3.1 方案论证
这次的彩灯设计采用的是分模块来完成的,包括分频器、计数器、选择器、彩灯控制器。其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个32进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制。基于上述的介绍本次的彩灯控制采用的模式6来进行显示。
图3-1-1 模式6结构图
3.2 模块设计
1)集成分频器模块
设计要求显示不同的彩灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。模块说明:
Rst:输入信号 复位信号 用来复位集成分频器的输出使输出为“0”,及没有音乐输出。
Clk:输入信号 模块的功能即为分频输入的频率信号。
Clk_
4、clk_
6、clk_
8、clk_10:输出信号 即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/6分频输出、1/8分频输出、1/10分频输出。
图3-2-1 集成分频器
2)32进制计数器模块
32进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出。Rst:输入信号 复位信号 用来复位32进制使其输出为“00000”。Clk:输入信号 用来给模块提供工作频率。
Count_out[4..0]:输出信号 即为32进制计数器的输出。
图3-2-2 32进制计数器
3)彩灯控制模块
彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的花样。Rst:输入信号 使彩灯控制模块的输出为“00000000”,即让彩灯无输出。Input[4..0]:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。
Output[7..0]:输出信号 直接与彩灯相连来控制彩灯。
图3-2-3 彩灯控制模块 4)4选1选择器模块
Rst:输入信号 复位信号 使选择器的输出为“0”。In1、in2、in3、in4:输入信号 接分频器的输出。
Inp[1..0]:输入信号 接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。
Output:输出信号 直接接扬声器即输出的是不同的频率来控制扬声器播放音乐。
图3-2-4 4选1选择器
5)4进制计数器模块
4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。
Clk:输入信号 来为计数器提供工作频率。
Rst:输入信号 复位信号 使计数器的输出为“00”。
图3-2-5 4进制计数器
3.3 系统结构
整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制32进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进行分频处理,最后用来控制扬声器发出不同的音乐,具体分频处理的时钟的频率比实现彩灯控制的时钟频率要高。
图 3-3-1 系统功能模块
4.总结
这次的EDA课程设计有一周的时间,在这一周的时间里我们充分合理的安排了自己的时间来使本次的课程设计能够顺利的完成,当然我们在本次的设计中并不是一帆风顺的,我们遇到了一些的问题,例如我们开始时用的文本的方式用一个总的程序来完成,可以在设计的过程中我们发现程序编到后面变量越到很容易搞混淆同时各个进程间的联系也越来越模糊以至于后面我们自己都不知道程序的整体框图是什么,导致后面不能够继续下去,后面我们再一次对我们这次的设计题目进行了分析和整理,最后我和我的同伴决定采用分模块的方式来完成本次的课题设计,当然最重要的是分析各个模块间的关系。最后我们采用上面分析的结构框图。最后我们的设计很成功,仿真和硬件测试都是正确的,实现了我们的设计要求和目的。
在这次设计中我们收获了很多,首先最直接的收获就是我们巩固了这门课程所学过的知识,把它运用到了实践当中,并且学到了很多在书本撒和那个所没有学到的知识,通过查阅相关资料进一步加深了对EDA的了。总的来说,通过这次课程设计不仅锻炼了我们的动手和动脑能力,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。在我们的共同努力和指导老师的指引下我们圆满的完成了彩灯控制器的设计,实现了设计目的。
6附录一 程序:
---------------分频器模块----------LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY fenpinqi IS
PORT(clk,rst : IN std_logic;
clk_10,clk_4,clk_6,clk_8 : OUT std_logic);
END fenpinqi;
ARCHITECTURE cd OF fenpinqi IS begin p1:process(clk,rst)
variable a:integer range 0 to 20;
begin if rst='1' then
clk_4<='0';
-----
复位信号控制部分 else if clk'event and clk='1'then
if a>=3 then
a:=0;
clk_4<='1';
else
a:=a+1;
clk_4<='0';
end if;
end if;
end if;end process p1;
p2:process(clk,rst)
variable b:integer range 0 to 20;
begin if rst='1' then
clk_6<='0';
-----
复位信号控制部分
else if clk'event and clk='1'then
if b>=5 then
b:=0;
clk_6<='1';
else
b:=b+1;
clk_6<='0';
end if;
end if;
end if;end process p2;
p3:process(clk,rst)
variable c:integer range 0 to 20;
begin if rst='1' then
clk_8<='0';
-----else if clk'event and clk='1'then
if c>=7 then
c:=0;
clk_8<='1';
else
c:=c+1;
clk_8<='0';
end if;
end if;
end if;end process p3;
p4:process(clk,rst)
variable d:integer range 0 to 20;
begin if rst='1' then
clk_10<='0';
-----else if clk'event and clk='1'then
if d>=9 then
d:=0;
clk_10<='1';
else
复位信号控制部分7
复位信号控制部分
d:=d+1;
clk_10<='0';
end if;
end if;
end if;end process p4;end cd;
---------------4选1选择器--------LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY xzq4_1 IS
PORT(rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4 : In std_logic;
output : OUT std_logic);
END xzq4_1;
ARCHITECTURE a OF xzq4_1 IS
BEGIN
PROCESS(rst,inp)BEGIN
if(rst='1')then output<='0';
else
case inp is
when 0=>output<=in1;
when 1=>output<=in2;
when 2=>output<=in3;
when 3=>output<=in4;
when others=>null;
end case;
end if;
END PROCESS;END a;
------------彩灯控制模块---------LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY caideng IS
PORT(input : IN INTEGER RANGE 0 TO 31;
rst:in std_logic;
output : OUT std_logic_vector(7 downto 0);
sm :out std_logic_vector(6 downto 0));
END caideng;
ARCHITECTURE a OF caideng IS
BEGIN
PROCESS(input)BEGIN
if rst='1' then output<=“00000000”;sm<=“0000000”;
else
case input is
when 0=>output<=“10000000”;sm<=“0000110”;
when 1=>output<=“01000000”;sm<=“0000110”;
when 2=>output<=“00100000”;sm<=“0000110”;
when 3=>output<=“00010000”;sm<=“0000110”;
when 4=>output<=“00001000”;sm<=“0000110”;
when 5=>output<=“00000100”;sm<=“0000110”;
when 6=>output<=“00000010”;sm<=“0000110”;
when 7=>output<=“00000001”;sm<=“0000110”;
when 8=>output<=“00010000”;sm<=“0011011”;
when 9=>output<=“00110000”;sm<=“0011011”;
when 10=>output<=“00111000”;sm<=“0011011”;
when 11=>output<=“01111000”;sm<=“0011011”;
when 12=>output<=“01111100”;sm<=“0011011”;
when 13=>output<=“01111110”;sm<=“0011011”;
when 14=>output<=“11111110”;sm<=“0011011”;
when 15=>output<=“11111111”;sm<=“0011011”;
when 16=>output<=“10000001”;sm<=“1001111”;
when 17=>output<=“11000001”;sm<=“1001111”;
when 18=>output<=“11000011”;sm<=“1001111”;
when 19=>output<=“11100011”;sm<=“0011011”;
when 20=>output<=“11100111”;sm<=“1001111”;
when 21=>output<=“11110111”;sm<=“1001111”;
when 22=>output<=“11111111”;sm<=“1001111”;
when 23=>output<=“00001000”;sm<=“1001111”;
when 24=>output<=“00000001”;sm<=“0100110”;
when 25=>output<=“00000010”;sm<=“0100110”;
when 26=>output<=“00000100”;sm<=“0100110”;
when 27=>output<=“00001000”;sm<=“0100110”;
when 28=>output<=“00010000”;sm<=“0100110”;
when 29=>output<=“00100000”;sm<=“0100110”;
when 30=>output<=“01000000”;sm<=“0100110”;
when 31=>output<=“10000000”;sm<=“0100110”;
when others=>null;
end case;
end if;
end process;end a;
-------------32进制计数器模块----
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY counter_32 IS
PORT(clk,rst : IN std_logic;
count_out : OUT integer range 0 to 31);
END counter_32;
ARCHITECTURE a OF counter_32 IS BEGIN PROCESS(rst,clk)
variable temp:integer range 0 to 32;BEGIN
IF rst='1' THEN
temp:=0;
ELSIF(clk'event and clk='1')THEN
temp:=temp+1;
if(temp=32)then
temp:=0;
end if;
END IF;
count_out<=temp;END PROCESS;
END a;
------------4进制计数器模块---LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY counter_4 IS
PORT(clk,rst : IN std_logic;
count_out : OUT integer range 0 to 3);
END counter_4;
ARCHITECTURE a OF counter_4 IS BEGIN
PROCESS(rst,clk)
variable temp:integer range 0 to 32;BEGIN
IF rst='1' THEN
temp:=0;
ELSIF(clk'event and clk='1')THEN
temp:=temp+1;
if(temp=4)then
temp:=0;
end if;
END IF;
count_out<=temp;END PROCESS;END a;
7附录二 编译
7附录三 时序仿真
第五篇:EDA课程设计彩灯控制器
沈阳理工大学EDA技术课程设计报告
1设计目的
熟练掌握EDA技术利用计算机方面的课程解决专业课程方面点具体问题,达到解决问题,完成课程设计任务,培养实践的目的。
2设计要求和任务
利用所学的EDA设计方法设计彩灯控制器,熟练使用使用QUARTUSII应用软件,进一步学习使用VHDL语言、原理图等EDA设计方法进行综合题目的方法。
功能要求: 1.要有多种花型变化(至少4种).2.多种花型可以自动变换,循环往复.3.彩灯变换的快慢节拍可以选择.4.具有清零开关.总体设计思路及原理描述
3.1功能描述
在电路中以 1 代表灯亮,以 0 代表灯灭,由 0,1按不同的规律组合代表不同的灯光图案,同时使其选择不同的频率,从而实现多种图案多种频率的花样功能显示。在该电路中只需简单的修改程序就可以灵活地调整彩灯图案和变化方式。下面就以一个十六路彩灯控制系统的实现为例进行简单说明。此十六路彩灯控制系统设定有六种花样变化 ,这六种花样可以进行自动切换 ,并且每种花样可以选择不同的频率。
3.2设计原理
用VHDL进行设计 ,首先应该了解 ,VHDL语言一种全方位硬件描述语言 ,包括系统行为级 ,寄存传输级和逻辑门级多个设计层次。应充分利用DL “自顶向下” 的设计优点以及层次化的设计概层次概念对于设计复杂的数字系统是非常
沈阳理工大学EDA技术课程设计报告
有用它使得人们可以从简单的单元入手 ,逐渐构成庞大而复杂的系统。首先应进行系统模块的划分 ,规定每一模块的功能以及各个模块之间的接口。最终设计方案为:以一个十六路彩灯花样控制器、一个四频率输出分频器 ,一个四选一控制器和一个时间选择器总共四部分来完成设计。四选一控制器从分频器选择不同频率的时钟信号输送到彩灯花样控制器 ,从而达到控制彩灯闪烁速度的快慢 ,时间选择器控制每种速度维持的时间长短。整个十六路彩灯控制系统设计的模块图如图 1所示
图一
4分层次方案设计及代码描述
4.1子模块及其功能
本次设计分为四个子模块 ,即十六路彩灯花样控制器、四频率输出分频器 ,四选一控制器和时间选择器 ,其子模块及其功能如下: 2
沈阳理工大学EDA技术课程设计报告
4.1.1四频率输出分频器
在本次设计中 ,设计了六种花样 ,要求这六种花样以不同的频率显示 ,而只有一个输入的时钟信号 ,所以对所输入的时钟信号进行 2 分频 ,4 分频 ,8分频 ,16分频 ,得到四种频率信号 ,CLKDIV模块用来完成此功能。
4.1.2时间选择器
时间选择器实际上是两个分频器 ,其中一个频率是另一个频率的两倍。本来这两个分频器是可以在上述的四频率输出器中实现的 ,但为了方便地为四选一控制器提供不同的时间选择条件 ,就将这两个分频器独立开来。这两个输出的时钟信号组合起来就可以为四选一控制器提供 00,01,10,11 四个时间选择条件 ,如
下图三所示。
图二
4.1.3四选一控制器
四选一控制器功能是从分频器中选择不同频率的时钟信号送给彩灯控制器 ,实现彩灯闪烁的频率变化。
4.1.4彩灯控制器
彩灯控制电路是整个设计的核心 ,它负责整个设计的输出效果即各种彩灯图案的样式变化。该程序充分地说明了用 VHDL设计电路的 “弹” 性 ,即可通过改变程序中输出变量 Q 的位数来改变彩灯的数目。其中 ,P1进程对灯闪的速度控制有两种方式可改变灯闪的速度:一是改变外部时钟的赋值 ,二是改变信号U 的位数。P2进程能进行彩灯的图案控制 ,改变 s的位数即可改变要控制图案的数目 ,改变输出变量 Q 的组合即可变幻彩灯图案。
最后 ,当各个模块均完成上述操作之后 ,即可利用MAXPLUS2的原理图输
沈阳理工大学EDA技术课程设计报告
入 ,调用各个元器件(底层文件),以原理图的形式形成最后的十六路彩灯显示系统(顶层文件),并且进行仿真。仿真通过 ,即可下载到指定的 CPLD芯片里面 ,并进行实际连线 ,进行最后的硬件测试。当然 ,可以将各个模块所生成的元件符号存放在元件库中 ,用以被其它人或其它的设计所重复调用 ,以简化后面的设计。
4.2 代码描述
4.2.1 时序控制电路部分
程序如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity timecontrol is--定义实体 port(clk: in std_logic;--时钟信号 clr: in std_logic;--复位信号 opt: in std_logic;--快慢控制信号 clkout: out std_logic--输出时钟信号);end timecontrol;architecture one of timecontrol is signal clk_tmp: std_logic;signal counter: std_logic_vector(1 downto 0);--定义计数器 begin process(clk,clr,opt)begin 4
沈阳理工大学EDA技术课程设计报告
if clr='0' then--清零 clk_tmp<='0';counter<=“00”;elsif clk'event and clk='1' then if opt='0' then--四分频 if counter=“01” then counter<=“00”;clk_tmp<=not clk_tmp;else counter<=counter+'1';end if;else--八分频 if counter=“11” then counter<=“00”;clk_tmp<=not clk_tmp;else counter<=counter+'1';end if;end if;end if;end process;clkout<=clk_tmp;--输出分频后的信号 end architecture one;
4.2.2显示控制电路部分
程序如下: library ieee;use ieee.std_logic_1164.all;
沈阳理工大学EDA技术课程设计报告
entity showcontrol is port(clk: in std_logic;--输入时钟信号 clr: in std_logic;--复位信号
led: out std_logic_vector(15 downto 0));--彩灯输出
end showcontrol;architecture one1 of showcontrol is type states is--状态机状态列举(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);signal state: states;begin process(clk,clr)begin
if clr='0'then state<=s0;led<=“***0”;elsif clk'event and clk='1'then case state is when s0=>state<=s1;led<= “***1”;when s1=> state<=s2;led<=“***1”;when s2=> state<=s3;led<=“***0”;when s3=> state<=s4;led<=“***1”;when s4=> state<=s5;6
沈阳理工大学EDA技术课程设计报告
led<=“***0”;when s5=>state<=s6;led<=“***1”;when s6=>state<=s7;led<=“***0”;when s7=>state<=s8;led<=“***1”;when s8=>state<=s9;led<=“***0”;when s9=>state<=s10;led<=“***1”;when s10=>state<=s11;led<=“***0”;when s11=>state<=s12;led<=“***1”;when s12=>state<=s13;led<=“***0”;when s13=>state<=s14;led<=“***1”;when s14=>state<=s15;led<=“***0”;when s15=>state<=s0;led<=“***1”;when others=>null;end case;end if;end process;end architecture one1;
沈阳理工大学EDA技术课程设计报告
4.2.3顶层电路部分
程序如下:
library ieee;use ieee.std_logic_1164.all;entity root is port(clk: in std_logic;clr: in std_logic;opt:in std_logic;led: out std_logic_vector(15 downto 0));--八路彩灯输出 end colorled;architecture one3 of root is component timecontrol is--定义元件:时序控制电路 port(clk: in std_logic;clr: in std_logic;opt:in std_logic;clkout: out std_logic);end component timecontrol;component showcontrol is--定义元件:显示电路
port(clk: in std_logic;clr: in std_logic;led: out std_logic_vector(15 downto 0));end component showcontrol;signal clk_tmp: std_logic;begin u1: timecontrol port map(clk=>clk,clr=>clr,opt=>opt,clkout=>clk_tmp);--例化时序控制模块
沈阳理工大学EDA技术课程设计报告
u2: showcontrol port map(clk=>clk_tmp,clr=>clr,led=>led);--例化显示电路模块 end architecture one3;
5各模块的时序仿真图
5.1时序控制电路timecontrol的仿真图如下:
图三
功能:时序控制电路metronome的功能是,用OPT控制输入信号CKL_IN的快慢节拍。而CLR是控制开关。且从图中可以看出,当复位信号为高电平时,电路时钟输出清零,当快慢信号OPT为低电平时,时序控制电路四分频起作用,当快慢信号OPT为高电平时,时序控制电路八分频起作用,仿真结果符合电路要求。
沈阳理工大学EDA技术课程设计报告
5.2 显示控制电路showcontrol的仿真图如下:
图四
功能:显示控制电路showcontrol的功能是控制花形的。且从图中可以看出,当复位信号有效时彩灯输出为零,否则,显示电路在十六种不同状态间转换。
5.3 顶层电路root系统的仿真图如下:
沈阳理工大学EDA技术课程设计报告
图五
功能:整个电路root系统是把showcontrol与timecontrol综合成一个电路。且从图中可以看出,从图中可以看出当OPT为高电平时彩灯状态转换慢,为低电平时转换要快,当复位信号有效时,所用输出都清零。
6总结
通过这次课程设计使我懂得了理论与实际相结合是很重要的,通过这次的课程设计,发现自己的实践经验还是不足的,以后多应该以理论为基础,然后应用到实践中来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。
在这次的课程设计里深入的接触了运用电子集成元器件制作多路彩灯的过程,并和同学一起讨论用软件制作出了这一个多路彩灯控制系统。正所谓“纸上谈兵终觉浅,觉知此事要躬行。”学习任何知识,都要进行实践,只有那样才能达到事半功倍的效果。
沈阳理工大学EDA技术课程设计报告 参考文献
《EDA技术与数字系统设计》
邹彦主编
电子工业出版社
《EDA技术实用教程》,潘松、黄继业,科学出版社 《数字电子技术基础》(第五版),阎石,高等教育出版社
《电子设计自动化(EDA)手册》,王丹、童如松,电子工业出版社 《EDA技术程设计》,刘江海,华中科技大学出版社