题目 洗衣机控制器的设计 系(部) 电子与通信工程系 专业(班级) 电气工程及其自动化6班
EDA 技术课程设计任务书
系(部):电子与通信工程系 专业:电气工程及其自动化 指导教师:
目录
一 设计方案 . .................................................................................................................................... 3 二 设计原理及其实现过程 . ............................................................................................................ 4
2.1设计总原理 . ........................................................................................................................ 4 2.2设计框图 . ............................................................................................................................ 4 2.3 模块设计和相应模块 . ....................................................................................................... 4
2.3.1 预制时间和减法计数器模块 . ............................................................................ 4 2.3.2数码管动态扫描及状态显示模块 . ......................................................................... 5 2.3.3分频模块 . ................................................................................................................. 8
三 总电路仿真波形及引脚分配 . .................................................................................................... 9
3.1 仿真波形及分析 . ............................................................................................................... 9 3.2 引脚分配 . ........................................................................................................................ 9 四 测试结果 . .................................................................................................................................. 10 五 课程设计心得 . .......................................................................................................................... 10 六 参考文献 . .................................................................................................................................. 11
一 设计方案
本定时器实际上包含两级定时的概念,一是总洗涤过程的定时,而是在总洗涤过程中又包含电机的正转、反转和暂停三种定时,并且这三种定时是反复循环直至所设定的总定时时间到位置。当总定时时间在0~20min以内设定一个书之后T 为高电平1,然后用倒计时的方法每分钟减1直至T 变为0。在此期间,若Z1=Z2=1,实现正转;若Z1=Z2=0,实现暂停;若Z1=1,Z2=0,实现反转。实现定时的方法很多,比如采用单稳电路实现定时,又如将定时初值预置到计数器中,使计数器运行在减计数状态,当减到全零时,则定时时间到。如图所示的电路原理框图就是采用这种方法实现的。由秒脉冲发生器产生的时钟信号经60分频后,得到分脉冲信号。洗涤定时的时间的初值先通过拨盘或数码开关设置到洗涤时间计数器中,每当分脉冲到来计数器减1,直至减到定时时间到为止。运行中间,剩余时间经译码后在数码
管上进行显示。
二 设计原理及其实现过程
2.1设计总原理
洗衣机控制器的设计主要是定时器的设计。由一片FPGA (Field Programmable Gate Array)和外围电路构成了电器控制部分。FPGA 接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。对FPGA 芯片的编程采用模块化的VHDL (硬件描述语言) 进行设计,设计分为三层实现,顶层实现整个芯片的功能。顶层和中间层多数是由VHDL 的元件例化语句实现。中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。
2.2设计框图
2.3 模块设计和相应模块
2.3.1 预制时间和减法计数器模块
由于洗衣机有工作时间,必须要一模块来控制它的工作时间范围,所以我们设计了一个减法计数器模块,当洗衣机开始工作后,减法计数器即会实现减数功能,直到时间减到零,洗衣机便停止工作。
预制时间和减法计数器模块程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count is
Port( clk,en,ld:in std_logic); End entity;
Architecture one of count is
signal c1,c2,c3,a,a1,a2,a3,a4,a5,a6: integer range 15 downto 0;
signal b: integer range 5 downto 0; signal clk1,clk2,k:std_logic; process(clk1,ld,en) begin
if en='1' then
if (clk1'event and clk1='1') then if k='1' then
if c1=0 and c2=0 and c3=0 then a1
c1
if c1=0 then c2
a1
if a3=1 and (a2>5) then a4
elsif a3=1 and (a2>4)then a42)then a41)then a4
elsif a3=1 and(a2=0 or a2=1) then a48)then a46)then a45)then a43)then a42)then a40) then a4
else k
2.3.2数码管动态扫描及状态显示模块
此模块用于不同工作状态时,数码管显示相应的H 、F 和P 来表示洗衣机正转、反转和暂停动作,并实现数码管的动态扫描。
数码管动态扫描及状态显示模块程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity zhuangtai is
Port( led_selout:out std_logic_vector(7 downto 0) ; led7s:out std_logic_vector(6 downto 0)); End entity;
Architecture one of zhuangtai is signal clk2:std_logic; process(clk2)
variable s:integer range 6 downto 0; begin
if (clk2'event and clk2='1') then s:=s+1;
if s=6 then s:=0; end if; b
when 0=>aaaaaa
case a is
when 0=>led7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7snull; end case; end process ; process(b) begin case b is
when 0=>led_seloutled_seloutled_seloutled_seloutled_seloutled_seloutnull; end case; end process ;
End ;
2.3.3分频模块
此模块是为了获得控制洗衣机运转时所需要的不同的频率,以使得洗衣机能够在不同状态时正常运转。
分频模块程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin is
Port( clk:in std_logic); End entity;
Architecture one of fenpin is signal clk1,clk2:std_logic; process(clk)
variable s:integer range 10000 downto 0; begin
if (clk'event and clk='1') then S:=s+1;
if s>5000 then s:=0; elsif s
clk2
end process ; process(clk)
variable s:integer range 25000000 downto 0; begin
if (clk'event and clk='1') then S:=s+1;
if s>25000000 then s:=0; elsif s
clk1
end process ; end;
三 总电路仿真波形及引脚分配 3.1 仿真波形及分析
总电路仿真波形
洗衣机接通电源,按ld 、en 置为高电平洗衣机开始工作,当时钟第一个上升沿到达时(正转功能)为高电平维持20s 以后变为低电平而(暂停功能)随着时钟上升沿的到来变为高电平维持10s 变为低电平,然后(反转功能)开始随着时钟上升沿的到来变为高电平工作维持20s 后变为低电平,再停止置高电平,接下来电路一直重复上述工作,直到定时器计数结束。
3.2 引脚分配
四 测试结果
电路设计完成以后,按照预定设计,执行相应操作,三只数码管按照设定时间规律间断性亮起,并分别一次间断性地显示H 、F 和P ,表示洗衣机正在进行正传、反转和暂停工作。同时,另外三只数码管也显示输入时间,并按减数计时产生相应的数字显示,直到到达预定时间停止工作显示零,,洗衣机停止工作,实验设计达到预期效果。
五 课程设计心得
本次洗衣机控制器的课程设计过程中,采用的是是模块化层次化的设计方法,通过这样分模块化的思考方式,设计显得相对容易很多,思路也比较简单。洗衣机控制器主要只有三个状态,要实现几种状态的多次循环的改变,还要有计时和数码管动态显示的功能。因此电路可主要分为以下几个模块:预制时间与减法计数器模块、数码管动态显示模块、分频模块。通过每个模块的设计,最后运用VHDL 语言的进程语句进行模块间的组合,从而完成总程序的设计。
通过此次课程设计,对于VHDL 语言有了基本的掌握,对其设计方法也有了一些技巧性的了解,为将来的硬件设计打下了一定的基础。对于FPGA 的编程、定时器和计数器的设计都熟悉了起来,加深了对时序组合电路的印象。
在此次课程设计中,感谢指导老师的耐心解答和同学的热情帮助!课程设计的整个过程中,发现自己很多方面的知识掌握得不太好,不牢固,很多知识不知道如何运用到实际中去解决问题。归根结底,还是自己学的东西不够扎实,没有真正理解学到的知识。在今后的学习过程中,一定要认认真真,扎扎实实,好好地学习理论知识,争取将来能够为国家的电力行业做出自己应有的贡献。
六 参考文献
[1] 潘松著. EDA 技术实用教程(第二版). 北京:科学出版社,2005.
[2] 康华光主编. 电子技术基础 模拟部分. 北京:高教出版社,2006.
[3] 阎石主编. 数字电子技术基础. 北京:高教出版社,2003.
11
题目 洗衣机控制器的设计 系(部) 电子与通信工程系 专业(班级) 电气工程及其自动化6班
EDA 技术课程设计任务书
系(部):电子与通信工程系 专业:电气工程及其自动化 指导教师:
目录
一 设计方案 . .................................................................................................................................... 3 二 设计原理及其实现过程 . ............................................................................................................ 4
2.1设计总原理 . ........................................................................................................................ 4 2.2设计框图 . ............................................................................................................................ 4 2.3 模块设计和相应模块 . ....................................................................................................... 4
2.3.1 预制时间和减法计数器模块 . ............................................................................ 4 2.3.2数码管动态扫描及状态显示模块 . ......................................................................... 5 2.3.3分频模块 . ................................................................................................................. 8
三 总电路仿真波形及引脚分配 . .................................................................................................... 9
3.1 仿真波形及分析 . ............................................................................................................... 9 3.2 引脚分配 . ........................................................................................................................ 9 四 测试结果 . .................................................................................................................................. 10 五 课程设计心得 . .......................................................................................................................... 10 六 参考文献 . .................................................................................................................................. 11
一 设计方案
本定时器实际上包含两级定时的概念,一是总洗涤过程的定时,而是在总洗涤过程中又包含电机的正转、反转和暂停三种定时,并且这三种定时是反复循环直至所设定的总定时时间到位置。当总定时时间在0~20min以内设定一个书之后T 为高电平1,然后用倒计时的方法每分钟减1直至T 变为0。在此期间,若Z1=Z2=1,实现正转;若Z1=Z2=0,实现暂停;若Z1=1,Z2=0,实现反转。实现定时的方法很多,比如采用单稳电路实现定时,又如将定时初值预置到计数器中,使计数器运行在减计数状态,当减到全零时,则定时时间到。如图所示的电路原理框图就是采用这种方法实现的。由秒脉冲发生器产生的时钟信号经60分频后,得到分脉冲信号。洗涤定时的时间的初值先通过拨盘或数码开关设置到洗涤时间计数器中,每当分脉冲到来计数器减1,直至减到定时时间到为止。运行中间,剩余时间经译码后在数码
管上进行显示。
二 设计原理及其实现过程
2.1设计总原理
洗衣机控制器的设计主要是定时器的设计。由一片FPGA (Field Programmable Gate Array)和外围电路构成了电器控制部分。FPGA 接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。对FPGA 芯片的编程采用模块化的VHDL (硬件描述语言) 进行设计,设计分为三层实现,顶层实现整个芯片的功能。顶层和中间层多数是由VHDL 的元件例化语句实现。中间层由无刷直流电机控制、运行模式选择、洗涤模式选择、定时器、显示控制、键盘扫描以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。
2.2设计框图
2.3 模块设计和相应模块
2.3.1 预制时间和减法计数器模块
由于洗衣机有工作时间,必须要一模块来控制它的工作时间范围,所以我们设计了一个减法计数器模块,当洗衣机开始工作后,减法计数器即会实现减数功能,直到时间减到零,洗衣机便停止工作。
预制时间和减法计数器模块程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count is
Port( clk,en,ld:in std_logic); End entity;
Architecture one of count is
signal c1,c2,c3,a,a1,a2,a3,a4,a5,a6: integer range 15 downto 0;
signal b: integer range 5 downto 0; signal clk1,clk2,k:std_logic; process(clk1,ld,en) begin
if en='1' then
if (clk1'event and clk1='1') then if k='1' then
if c1=0 and c2=0 and c3=0 then a1
c1
if c1=0 then c2
a1
if a3=1 and (a2>5) then a4
elsif a3=1 and (a2>4)then a42)then a41)then a4
elsif a3=1 and(a2=0 or a2=1) then a48)then a46)then a45)then a43)then a42)then a40) then a4
else k
2.3.2数码管动态扫描及状态显示模块
此模块用于不同工作状态时,数码管显示相应的H 、F 和P 来表示洗衣机正转、反转和暂停动作,并实现数码管的动态扫描。
数码管动态扫描及状态显示模块程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity zhuangtai is
Port( led_selout:out std_logic_vector(7 downto 0) ; led7s:out std_logic_vector(6 downto 0)); End entity;
Architecture one of zhuangtai is signal clk2:std_logic; process(clk2)
variable s:integer range 6 downto 0; begin
if (clk2'event and clk2='1') then s:=s+1;
if s=6 then s:=0; end if; b
when 0=>aaaaaa
case a is
when 0=>led7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7sled7snull; end case; end process ; process(b) begin case b is
when 0=>led_seloutled_seloutled_seloutled_seloutled_seloutled_seloutnull; end case; end process ;
End ;
2.3.3分频模块
此模块是为了获得控制洗衣机运转时所需要的不同的频率,以使得洗衣机能够在不同状态时正常运转。
分频模块程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin is
Port( clk:in std_logic); End entity;
Architecture one of fenpin is signal clk1,clk2:std_logic; process(clk)
variable s:integer range 10000 downto 0; begin
if (clk'event and clk='1') then S:=s+1;
if s>5000 then s:=0; elsif s
clk2
end process ; process(clk)
variable s:integer range 25000000 downto 0; begin
if (clk'event and clk='1') then S:=s+1;
if s>25000000 then s:=0; elsif s
clk1
end process ; end;
三 总电路仿真波形及引脚分配 3.1 仿真波形及分析
总电路仿真波形
洗衣机接通电源,按ld 、en 置为高电平洗衣机开始工作,当时钟第一个上升沿到达时(正转功能)为高电平维持20s 以后变为低电平而(暂停功能)随着时钟上升沿的到来变为高电平维持10s 变为低电平,然后(反转功能)开始随着时钟上升沿的到来变为高电平工作维持20s 后变为低电平,再停止置高电平,接下来电路一直重复上述工作,直到定时器计数结束。
3.2 引脚分配
四 测试结果
电路设计完成以后,按照预定设计,执行相应操作,三只数码管按照设定时间规律间断性亮起,并分别一次间断性地显示H 、F 和P ,表示洗衣机正在进行正传、反转和暂停工作。同时,另外三只数码管也显示输入时间,并按减数计时产生相应的数字显示,直到到达预定时间停止工作显示零,,洗衣机停止工作,实验设计达到预期效果。
五 课程设计心得
本次洗衣机控制器的课程设计过程中,采用的是是模块化层次化的设计方法,通过这样分模块化的思考方式,设计显得相对容易很多,思路也比较简单。洗衣机控制器主要只有三个状态,要实现几种状态的多次循环的改变,还要有计时和数码管动态显示的功能。因此电路可主要分为以下几个模块:预制时间与减法计数器模块、数码管动态显示模块、分频模块。通过每个模块的设计,最后运用VHDL 语言的进程语句进行模块间的组合,从而完成总程序的设计。
通过此次课程设计,对于VHDL 语言有了基本的掌握,对其设计方法也有了一些技巧性的了解,为将来的硬件设计打下了一定的基础。对于FPGA 的编程、定时器和计数器的设计都熟悉了起来,加深了对时序组合电路的印象。
在此次课程设计中,感谢指导老师的耐心解答和同学的热情帮助!课程设计的整个过程中,发现自己很多方面的知识掌握得不太好,不牢固,很多知识不知道如何运用到实际中去解决问题。归根结底,还是自己学的东西不够扎实,没有真正理解学到的知识。在今后的学习过程中,一定要认认真真,扎扎实实,好好地学习理论知识,争取将来能够为国家的电力行业做出自己应有的贡献。
六 参考文献
[1] 潘松著. EDA 技术实用教程(第二版). 北京:科学出版社,2005.
[2] 康华光主编. 电子技术基础 模拟部分. 北京:高教出版社,2006.
[3] 阎石主编. 数字电子技术基础. 北京:高教出版社,2003.
11