电风扇控制逻辑电路课程设计.docx
《电风扇控制逻辑电路课程设计.docx》由会员分享,可在线阅读,更多相关《电风扇控制逻辑电路课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
电风扇控制逻辑电路课程设计
一、设计目的
通过对FPGA(现场可编程门阵列)芯片的设计实践,使学生掌握一般的PLD(可编程逻辑器件)的设计过程、设计要求、设计内容、设计方法,能根据用户的要求及工艺需要进行电子芯片设计并制定有关技术文件。
培养学生综合运用已学知识解决实际工程技术问题的能力、查阅图书资料和各种工具书的能力、工程绘图能力、撰写技术报告和编制技术资料的能力,受到一次电子设计自动化方面的基本训练。
培养学生利用EDA技术知识,解决电子设计自动化中常见实际问题的能力,使学生积累实际EDA编程。
通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力。
二、设计要求
1.以EDA技术的基本理论为指导,将设计实验分为基本功能电路和较复杂的电子系统两个层次,要求利用数字电路或者EDA方法去设计并完成特定功能的电子电路的仿真、软硬件调试;
2.熟悉掌握常用仿真开发软件,比如:
QuartusII或XilinxISE的使用方法。
3.能熟练运用上述开发软件设计并仿真电路并下载到FPGA中进行调试;
4.学会用EDA技术实现数字电子器件组成复杂系统的方法;学习电子系统电路的安装调试技术。
5.用EDA技术实现电风扇控制器的控制功能,具体要求如下:
(1)用三个按键来实现。
“风速”、“风种”、“停止”的不同选择。
(2)用六个发光二报管分别表示“风速”(强、中、弱)、“风种”(睡眠、自然、正常)的三种状态。
(3)电扇在停转状态时,只有按“风速”键才有效.按其余两键不响应。
电风扇启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任一种状态,“风速”的弱、中、强对应电扇的转动由慢到快;按动“风种”键可循环选择正常、自然或睡眠三种状态的某—种状态。
“风种”在正常位置是指电扇连续运转;“自然”位置,是表示电扇模拟产生自然风,即运转4秒,间断4秒的方式;在“睡眠”位置,是产生轻柔的微风,电扇运转8秒,间断8秒的方式。
(4)电风扇在任意状态下,按“停止”键电扇停止工作,所有指示灯熄灭。
三、总体设计原理与内容
1、设计的总体原理
首先用脉冲信号CLK1的上升沿表示按键1,其控制风速,同时它还做电扇的启动键。
当电扇处于关闭状态时,按一下按键1(即给一个上升脉冲CLK1),电扇即处于待机状态,同时电扇风速处于“弱”状态(即LED1亮),若再按一次按键1,则风速处于“中”状态(即LED2亮),再按一次按键1,风速处于“强”状态(即LED3亮),依次循环。
用脉冲信号CLK2的上升沿表示按键2,其控制风种,当电扇处于待机状态时,按一下按键2(即给一个上升脉冲CLK2),电扇即开始运转,同时风种处于“正常”状态(即LED4亮),电扇持续运转(即LED7常亮),连续按按键2,则风种依次处于“正常,自然,睡眠”状态,电扇依次持续运转,转四秒停四秒(即LED7亮四秒不亮四秒),转八秒停八秒(即LED7亮八秒不亮八秒)。
用脉冲信号RS的上升沿表示按键3,它做电扇的关闭键,当电扇处于运转状态时,按一下按键3(即给一个上升脉冲RS),电扇即停止运转(即所有发光二极管不亮)。
2、设计内容
图1设计总体框图
如图1,在关闭状态给一个触发脉冲CLK1(即按一下键1),即启动电风扇,风速为默认“弱”状态,则电扇处于待机状态,此时按下风种选择键键2,风扇即开始运转,且风种为“正常”。
逐次按键1,则可实现风速转换;逐次按键2,则可实现风种转换。
四、EDA设计及仿真
1、电风扇控制逻辑电路设计源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
entitydianfengshanis
port(clk1,clk2,rs:
inbit;------按键clk1风速clk2风种rs代表停止键
clk:
instd_logic;------亮灭时钟1hz
ledx:
bufferbit;------自然风
ledy:
bufferbit;------睡眠风
ledA,ledB,ledC,ledD,ledE,ledF,ledG:
outbit);------ledA-C风速ledD-F风种ledG状态
enddianfengshan;
architecturesimpleofdianfengshanis
signalm:
integerrange0to9;------自然风延时
signaln:
integerrange0to17;------睡眠风延时
begin
process(clk1,clk2,rs,clk)---clk1风速clk2风种
variablecounter,counter1,counter2:
integer;
variableled1,led2,led3,led4,led5,led6,led7:
bit;
begin
-------------------------------------------------
if(rs=‘1’)then------rs代表停止键状态
counter:
=0;
counter1:
=0;
counter2:
=0;--按下关闭键所有发光二极管不亮;
else
if(clk1'eventandclk1=‘1')then--按下风速键,ledA亮;
counter:
=counter+1;
counter1:
=counter1+1;---风速变量
if(counter1=4)thencounter1:
=1;
endif;
endif;
if(counter>0)then
if(clk2'eventandclk2=‘1')then
counter2:
=counter2+1;----风种变量
if(counter2=4)then
counter2:
=1;
endif;
endif;
endif;
endif;
-------------------------------------------------
if(counter1=0)then
led1:
=‘0';led2:
=‘0';led3:
=‘0';led7:
=‘0';-------风速选择
elsif(counter1=1)then
led1:
=‘1';led2:
=‘0';
led3:
=‘0';led7:
=‘1';
elsif(counter1=2)then
led1:
=‘0';led2:
=‘1';
led3:
=‘0';led7:
=‘1';
elsif(counter1=3)then
led1:
=‘0';led2:
=‘0';
led3:
=‘1';led7:
=‘1';
endif;
-------------------------------------------------
if(counter2=0)then-------风种选择
led4:
=‘0';led5:
=‘0';
led6:
=‘0';led7:
=‘0';
elsif(counter2=1)then
led4:
=‘1';led5:
=‘0';
led6:
=‘0';led7:
=‘1';
elsif(counter2=2)then
led4:
=‘0';led5:
=‘1';led6:
=‘0';
if(clk'eventandclk=‘1')then---当自然风亮4S灭4S由CLK控制
m<=m+1;
if(m=4)then
ledx<=notledx;
m<=0;
endif;
endif;
led7:
=ledx;
elsif(counter2=3)then
led4:
=‘0';led5:
=‘0';led6:
=‘1';
if(clk'eventandclk=‘1')then---当睡眠风亮8S灭8S由CLK控制
n<=n+1;
if(n=8)then
ledy<=notledy;
n<=0;
endif;
endif;
led7:
=ledy;
endif;
-------------------------------------------------
ledA<=led1;
ledB<=led2;
ledC<=led3;
ledD<=led4;
ledE<=led5;
ledF<=led6;
ledG<=led7;
endprocess;
endsimple;
2、电风扇控制逻辑电路设计仿真结果及数据分析
图2软件仿真图
如图2,首先用脉冲信号CLK1的上升沿表示按键1,其控制风速,同时它还做电扇的启动键。
当电扇处于关闭状态时,按一下按键1(即给一个上升脉冲CLK1),电扇即处于待机状态,同时电扇风速处于“弱”状态(即LED1亮),若再按一次按键1,则风速处于“中”状态(即LED2亮),再按一次按键1,风速处于“强”状态(即LED3亮),依次循环。
rs代表停止键状态,ledA,B,C,D,E,F,G代表所有二极管,其中六个为状态指示灯,一个代表电风扇运转状态,在刚开始1.4s处,按下停止键,ledA,B,C,D,E,F,G全为低电平,即所有二极管全部熄灭,clk1,clk2,代表“风速”、“风种”按键状态,当clk1为高电平时,ledA为高电平,代表电风扇风速为强等风;当clk1第二次变为高电平时,ledB为高电平,代表电风扇风速为中等风;当clk1第三次变为高电平时,ledC为高电平,代表电风扇风速为弱等风;,当clk2为高电平时,ledD为高电平,代表电风扇风速为正常风;当clk2第二次变为高电平时,ledE为高电平,代表电风扇风速为自然风;当clk2第三次变为高电平时,ledF为高电平,代表电风扇风速为睡眠风;当电风扇风速为自然风时,ledG循环4秒钟为高电平,4秒钟为低电平;当电风扇风速为睡眠风时,ledG循环8秒钟为高电平,8秒钟为低电平。
clk为输入时钟信号,选择不同的时钟频率,决定ledG循环点亮与熄灭的时间;当电风扇为停转状态时,只有按下“风速键”,电风扇才启动,波形图中,在52秒处,停止键为高电平,在此之后的55秒处和59秒处,clk2为高电平,clk1在此期间始终为低电平,ledA,B,C,D,E,F,G全为低电平,即所有二极管全部熄灭,这就符合了当电风扇为停转状态时,只有按下“风速键”,电风扇才启动的要求,在62秒处第一个clk1高电平到达,此时循环前面步骤。
3、仿真结果总结
在仿真过程中,起初clk2送入第一个高电平时,ledD,E,F不能正常触发,后来经过调试,发现是没有判断clk1的状态,最终经过调试,加上了判断语句在counter大于0则执行clk2的程序,解决了这个问题。
停止键起初不能完全实现应有的功能,在rs送高电平信号时,其余的led输出状态没有改变为0,将所有led输出状态控制函数移到rs判断语句之外后,复位信号就输出正常。
在给时钟信号clk赋值后,第12秒和23秒处对应的ledG输出没有按照亮4秒,灭4秒进行,后来发现是endtime设置的不对,修改后仍有错误,再将clk的单位修改后,ledG正常显示。
五、硬件实现
1、硬件引脚锁定及步骤
在硬件仿真前要进行引脚锁定,我选择的是模式6,其中时钟信号clk选择CLOCK0,锁定引脚PIN_L1;风速键对应clk1,锁定引脚为PIN_F14;风种键对应clk2,锁定引脚为PIN_F15;ledA连接D8,锁定引脚为PIN_J20;ledB连接D7,锁定引脚为PIN_J21;ledC连接D6,锁定引脚为PIN_J22;ledD连接D5,锁定引脚为PIN_k17;ledE连接D4,锁定引脚为PIN_k18;ledF连接D3,锁定引脚为PIN_k21;ledG连接D1,锁定引脚为PIN_L17;停止键连接rs,锁定引脚为PIN_G16。
其引脚配置图如下:
图3硬件仿真引脚配置图
2、硬件实现照片
图4风速弱、风种正常led显示图
图4是风速为“弱”、风种为“正常”的led显示图。
如图,led1亮,led2、led3不亮,led4亮,led5、led6不亮,led7常亮。
图5风速中、风种自然led显示图
(1)
图6风速中、风种自然led显示图
(2)
图5、6是风速为“中”、风种为“自然”的led显示图。
两图均为led2、led5亮,led1、led3、led4、led6不亮,而
(1)图为led7亮时的图片,
(2)图为led7不亮时的图片。
其中图
(1)持续时间为4秒,图
(2)持续时间为4秒。
图7风速强、风种睡眠led显示图
(1)
图8风速强、风种睡眠led显示图
(2)
图7、8是风速为“强”、风种为“睡眠”的led显示图。
两图均为led3、led6亮,led1、led2、led4、led5不亮,而
(1)图为led7亮时的图片,
(2)图为led7不亮时的图片。
其中图
(1)持续时间为8秒,图
(2)持续时间为8秒。
六、设计总结
设计过程中由于同一个变量counter1由两个边沿脉冲clk1和clk2触发,导致错误始终存在,通过修改边沿触发方式,错误得到解决。
然后就是程序编写不熟练,导致很多的逻辑错误。
延时可以通过很多种方法来实现,比如说定时延时,脉冲计数延时,甚至可以借助FOR循环或者LOOP循环来实现延时。
但是众多的延时中有的只能仿真,不能综合,比如FOR循环延。
为了实现仿真和综合并举,我考虑了前面两种延时方式。
为期两周的EDA课程设计很快就结束了,虽然在以前的学习中还有很多没有弄懂的问题,但通过这次设计进一步加深了对EDA的了解,让我对他有力更加浓厚的兴趣。
在这次课程设计过程中,我充分认识到实际操作的重要性。
通过课程设计可以把很多章节的模块融合到一起,对以后的学习很有帮助。
此次设计使我对VHDL的语法结构有了很大的认识提高,感觉VHDL语言不想我们一般的变成语言,如果我们以前的编程思想去做它,就会出现很多的错误。
另外,我在仿真时感悟到了一些技巧,例如在编写程序是应该将一段一段的代码进行仿真,各个部分都成功后,再进行综合仿真,这样可以提高效率。
我们在用VHDL语言进行电路设计时候应先进行逻辑机构的梳理,然后将系统分为若干个模块,然后对每一个模块进行单独的设计,仿真,成功之后,将各个模块通过元件绿化,组成一个系统,进行综合仿真。
这样可以提高设计效率。
在做任何设计前都要广泛查阅税基资料,并借助网络资源去了解并汲取他人好的创作思想。
通过这次课程设计我感觉自己在动手操作方面有了质的飞跃,结合以前的EDA实验课沉淀下来的经验和老师的指导以及周围同学的帮助,我的这次设计进行得很顺利,在巩固所学知识的基础上也显著增强了自己的实践能力。
另外,我们还应加大练习,熟能生巧。
参考文献
[1]林明权.VHDL数字控制系统设计范例[M].北京:
电子工业出版社.2003
[2]雷伏容.VHDL电路设计[M].北京:
清华大学出版社.2006
[3]陈荣,陈华.VHDL芯片设计[M].北京:
机械工业出版社.2006
[4]杨恒,李爱国等.FPGA/CPLD最新实用技术指南[M].北京:
清华大学出版社.2005
[5]孙研鹏,张芝贤等.VHDL与可编程逻辑器件应用[M].北京:
航空工业出版社.2006
[6]辛春艳.VHDL硬件描述语言[M].北京:
国防工业出版社.2002
[7]曾繁泰,陈美金.VHDL程序设计[M].北京:
清华大学出版社.2000
[8]阎石.数字电子技术[M].北京:
高等教育出版社.2006
[9]BobZeidman,基于FPGA&CPLD的数字IC设计方法[M].赵宏图译,北京:
北京航空航天大学出版社.2004