FPGA智能洗衣机设计
基于Verilog HDL的FPGA程序(智能洗衣机)
华中科技大学电子线路课程设计题目:智能洗衣机院系:控制科学与工程系班级:自动化100X班姓名:联系方式:fanjunchao1991@指导老师:目录一题目分析。
1二系统流程图.。
2三主要模块介绍.。
5四各按键功能.。
6 五仿真波形.。
7 六实验总结。
8 七附录。
9一:题目分析本次课程设计要求以Verilog HDL硬件描述语言为基础,以DE2开发板为工具,编写智能洗衣机的模拟程序。
首先,我在熟悉题目要求的前提下,将题目要求划分为以下几个小的项目,每个项目尽量用单独的模块实现其功能:①洗衣过程的转换:控制洗衣过程在每个过程对应的状态机之间转换,用control.v模块实现。
②洗衣时间的显示:通过直接调用上学期编写的24小时智能时钟程序的计时模块,并用总时间减去已用时间得到剩余时间,用led_show.v实现。
本程序的特色:①led灯表示水位:通过一定的算法,实现用led灯的亮灭表示水位。
Led依次点亮表示注水过程,相反,表示排水和甩干过程。
②1602 LCD液晶屏:用LCD显示所有操作步骤和过程,包括选择模式,当前洗衣模式和状态,洗衣完毕等。
这些过程都是用LCD液晶屏具体显示。
③按键使用和去抖:因为要使用按键进行模式的选择,所以我用软件去抖的方式实现按键按动时的去抖。
④暂停键模拟断电保护:设计了一个暂停键,模拟真实情况中的断电保护。
当暂停时模拟现实中的断电;暂停结束模拟现实中的重新上电,程序从断点继续运行。
二:系统流程图MODE 1 OR MODE 2 OR MODE 3:MODE 4MODE 5流程图说明:第一个为总的控制系统的流程图,后面三个为总流程图中,每种模式的详细流程图。
三:主要模块介绍module my_start:顶层模块,调用下层模块。
module HZ_1:分频模块,通过10分频和5分频将50Mhz分频成为1hz。
module control:控制模块,控制洗衣模式状态机的转换。
对一种洗衣机控制器的FPGA设计改进
反转 状态 持续 时 间 时 间不 是 2 0秒 , 是 2 而 1秒 , 造
理 .1 T0表示 l 0秒定 时到 , 1 示 l 定 时 信 !T 0表 0秒 号 没有 到 .l 示 预 置 总 的定 时 时 间 的 倒 计 时分 T 表 钟数 为零 , l表示 预 置 总 的定 时 时 间 的倒 计 时 !T
发现在伟福 E A 00仿真系统实验仪上运行此控 D 60
制器时 , 出现 过 数码 管 翻转不 正 常的现 象 . 此 , 为 我 们 做 了如下 的改进 性 的设 计 .
1 改 进 性 的 设 计
1 1 根据 设计 要求 作状 态转 换 图 .
r e: e t 复位 信号 ; s d ,ld ,3 d ,5d , 7d ,g 数 据 开 关 信 号 , od ,2d ,4 d ,6 ( ,8 d : r
分 钟数 不为零 .
成设计 的定 时不 够精 确 ;2 每 当总 的预 置 时 间分 () 钟数倒 计 时为 0时 , 总要 使控 制正 转 的信号 fwr oa r d 产生一 个宽 度 为 1 的正 脉 冲 , 这个正 脉 冲是 不 秒 而 需要 的 , 并且 会 对 电机 的 线 圈 有较 大 的 冲击作 用 , 不利 于 电机 寿命 , 当设 法 去掉 它 .3 也可 能是 源 应 () 代码 的状 态 机 的 cS 语 句 遗 漏 了 df l的原 因 , ae e ut a
Vo . 4 1 2 No. 3
J l uy
20 06
文章编号 :08—10 (o 6 o 1 0 42 20 )3—05 o 36一 4
对 一 种 洗衣 机控 制器 的 F G P A设 计 改 进
基于FPGA的洗衣机控制系统设计
现 ,双 缸 洗 衣 机 的控 制 电 路 因 为 采 用 了传 统 机 械 式 的 转 钮 . 所 以发 生 故 障 的 概 率 很 高 。 一 直 以 来 都 未 找 到合 适 的 问 题 且 解 决 办 法 。 随着 芯 片 制 造 工 艺 的 发 展 和成 本 的 进 一 步 降 低 。 可 编 程 门 阵 列 以 其 具 有 体 系 结 构 和逻 辑 单 元 灵 活 、 成 度 高 集 以及 适 用 范 围 宽 等 特 点 , 大 规 模 数 据 计 算 、 入 式 处 理 、 在 嵌 通
随 着 时 代 的 发 展 , 衣 机 已 成 为 人 们 日常 生 活 中 的 必需 洗
品 。 目前 全 自动 单 筒 、 筒 洗 衣 机 已 日渐 盛 行 。 其 结 构 复 滚 但 杂, 日常 维 修 和 购 买 时 成 本 偏 高 , 以结 构 简 单 、 格 实 惠 的 所 价
双 缸 洗 衣 机 依 然 受 到 普 通 大 众 的欢 迎 。从 市 场 反 馈 的 情 况 发
电机 分 别 以 100r n和 8 0ran的 转 速 连 续 工 作 。 洗 涤 0 mi / 0 r /i
时 间通 过 控 制 面 板 的时 间 增 减 按 键 设 置 。控制 系 统 的 默 认 值
为标 准模 式洗 涤 , 涤 时 间 为 1 i 。 可通 过 模 式 选 择 按 键 洗 0r n a 和洗 涤 时 间设 置 按 键 选 择 自己想 要 的洗 涤模 式 和 时 间 . 当一
e e t o t ls se frwa h n c i e a e n F GA i d sg e n i n i lt n i c r e u n t i p p r f c ,a c nr y t m o s i gma h n sb s d o P s e i n d a d t o mi g s mu ai ar d o t s a e. o s i i h S ,t e d sg sf r e d a.Dii lc nr la d d s l y o s i g ma h n o t l s s m a e n a al b e n e o h e in i u t ri e 1 gt o t n ip a fwa h n c ie c nr y t h s b e v i l ,a d t h a o o e a h wa h n e f r a c a e n e e t eyi rv d s i gp ro m n e h sb e f ci l v mp o e .
基于FPGA的洗衣机设计
基于FPGA的洗衣机设计贵州大学理学院王帅 集成电路工程一 实验要求:1 设计一个简易的洗衣机流程模拟系统;2 系统中模拟操作由拨键开关控制,状态要求由LED显示;3 编写相应程序代码,并对编写的VHDL程序代码进行编译和仿真 4利用实验箱完成硬件验证5 画出电路原理图,作出PCB制图;二 系统原理总体设计:本设计是基于FPGA的洗衣机模拟设计,以EP1C6Q240C8为核心控制芯片,用拨键开关表示洗衣过程中的各种操作控制,用LED 的亮灭表示各种洗衣状态的进行过程。
它原理简单,思路清晰,界面友好,易于控制,现象简洁明了。
三 硬件电路顶层设计:顶层模块有5个输入端口:时钟信号sclk、复位信号reset、启动信号start、注水信号waterin和放水结束信号over,还有6个输出信号:启动状态指示信号showstart、注水状态指示信号showzhushui、正转状态指示信号showzheng、反转状态指示信号showfan、放水状态指示信号showfangshui和脱水状态指示信号showtuoshui。
各个输入信号由拨键开关控制,以示洗衣过程中的各种操作;各种输出信号由LED显示,以示洗衣过程中的各个洗衣状态。
四 设计流程描述:1 能够随时启动洗衣机,手动注水,其余操作是全自动进行。
2 启动开关打开后,启动状态指示灯亮,表示洗衣过程开始;将注水开关打开,注水状态指示灯亮,表示开始注水,注水开关关闭,注水状态指示灯灭,表示注水结束。
3 注水完毕后,进入洗涤状态,正转、反转各5s,反复3次。
正转时正转状态指示灯亮,反转指示灯灭,表示电极在正转;反转时反转指示灯亮,正转指示灯灭,表示电机反转。
4 洗涤完毕后进入放水状态,放水指示灯亮。
放水一定时间,由相应的检测器检测到是否放水完毕,若放水完毕,放水指示灯灭,同时进入脱水状态;否则,停留在此状态。
5 进入脱水状态后,脱水状态指示灯亮10s,模拟电机正转10s,然后,脱水状态指示灯灭,同时若注水次数达到3次,则进入结束状态;否则,重新注水、洗涤、脱水。
开题:基于单片机FPGA芯片的智能洗衣机控制系统
毕业设计(论文)开题报告毕业设计(论文)题目:基于单片机/FPGA芯片的智能洗衣机控制系统学院:系:专业:学生姓名:班级:学号:指导教师:1、课题研究的意义、国内外有关本课题的研究动态和自己的见解在现代人快节奏生活中,洗衣机已经成为生活中不可或缺的一部分。
随着控制技术和智能技术的发展,洗衣机也向着智能化、信息化发展。
而现有市售的洗衣机其主要弊端为:不仅在节能节时方面未做过多考虑,使用者还需要经常翻看使用说明书才能完成操作过程。
针对这些问题,本人认为有必要研制一种操作简单且洗涤效果好的洗衣机,根据一些衣物的特点进行洗涤,节时又节能,方便高效。
单片机以体积小、功能全、价格低廉、开发方便等优势得到了许多电子设计者及厂商的青睐。
因此基于单片机的自动洗衣机控制系统具有精度高、功能强﹑经济性好的特点。
无论在提高产品质量还是产品数量,节约能源还是改善劳动条件等方面都显示出无比的优越性。
2、课题研究的主要内容、拟解决的关键性问题和预期的成果本课题主要是研究基于单片机的全自动洗衣机控制系统软硬件设计。
首先要熟悉设计内容,学习掌握单片机的使用方法;精确分析并设计出该控制系统的全部工作流程图,确定输入、输出的名称功能;设计系统软件并在PC机上仿真模拟调试;设计并制作硬件模拟电路盘,接电模拟调试;软硬件联合调试,实现全部功能,完成设计并撰写毕业论文。
针对课题采取以下研究方法及步骤:(1)各种元器件以及芯片的选择(2)硬件电路的设计(3)用汇编语言完成软件方面的设计(4)结合电路对程序进行调试(5)找出程序中的错误,改正这些错误3、课题研究方法、设计方案或论文撰写提纲洗衣机的工作流程包括:洗涤→脱水→漂洗→脱水→漂洗→脱水。
本设计采用单片机智能控制洗衣。
具体研究内容如下:(1)智能洗衣机的市场需求:智能洗衣机的市场情况及市场分析。
(2)智能洗衣机原理:洗衣机的工作过程、洗衣机除污的影响因素、衣物质地的测定原理、称重传感器、浊度传感器和红外线传感器的相关知识。
基于FPGA的洗衣机电机正反转控制器
电机控制综合课程设计报告课题名称:基于FPGA勺洗衣机电机正反转控制器学院:信息与控制工程学院专业班级:姓名:学号:2014年7月4日目录一、设计内容--------------------- 3二、设计方案--------------------- 31洗衣机控制器的整体框图与原理------------- 3 2控制电路各模块程序及仿真图---------------- 4三、电路调试--------------------- 10四、总结与体会-------------------- 10一、设计内容1.任务要求及内容设计一个基于FPG的洗衣机正反转定时控制器,其具体要求如下:控制洗衣机的电机作如下周期性运转,正转4S——暂停2S反转4S暂停2S,用8位七段数码管显示自己学号的后四位(显示在从左边数第一个到第四个数码管上)、定时时间(两位,单位:分钟,显示在第五个和第六个数码管上),剩余时间(两位,单位:分钟,显示在第七个和第八个数码管上)。
2.洗衣机控制器的工作过程(1)上电后显示自己学号的后四位,在运行中不变;初始洗涤时间为10分钟,在开始前可用S1和S2按键设置总的工作时间,确定洗衣机控制器定时工作时间。
(按下并松开S1定时时间增加一分钟,按下并松开S2定时时间减少一分钟,时间范围为:00~30分钟)(2)设定好定时时间后,按下并松开S3 (按下时S3=0,松开时S3=1),启动控制器,整个系统开始运行;再次按下并松开S3,停止运行;再次按下并松开S3 继续运行;按下并松开S绷U回到上电初始状态。
其他两个按键不起作用。
到达定时时间后,停止运行,按下并松开S绷U回到初始状态,在运行中要显示定时时间和剩余工作时间,当剩余时间为0时,要显示“ End'。
在工作过程中用三个LED旨示灯指示电机工作状态,正转D1灯亮,反转D2灯亮,暂停D3灯亮,如此反复直至工作时间为0停止(三个LED丁都不亮)。
基于FPGA的洗衣机电机正反转控制器
目录1.设计任务与要求 (1)2.设计思路 (1)3.设计原理及方案 (2)4.总结与讨论 (14)一、设计任务及要求:1.控制洗衣机的电机作如下周期性运转,正转4S――暂停2S――反转4S――暂停2S,用8位七段数码管显示自己学号的后四位(显示在从左边数第一个到第四个数码管上)、定时时间(两位,单位:分钟,显示在第五个和第六个数码管上),剩余时间(两位,单位:分钟,显示在第七个和第八个数码管上2.洗衣机控制器的工作过程为:(1)上电后显示自己学号的后四位,在运行中不变;初始洗涤时间为10分钟,在开始前可用S1和S2按键设置总的工作时间,确定洗衣机控制器定时工作时间。
(按下并松开S1定时时间增加一分钟,按下并松开S2定时时间减少一分钟,时间范围为:00~30分钟)(2)设定好定时时间后,按下并松开S3(按下时S3=0,松开时S3=1),启动控制器,整个系统开始运行;再次按下并松开S3,停止运行;再次按下并松开S3继续运行;按下并松开S4则回到上电初始状态。
其他两个按键不起作用。
到达定时时间后,停止运行,按下并松开S4则回到初始状态,在运行中要显示定时时间和剩余工作时间,当剩余时间为0时,要显示“End”。
在工作过程中用三个LED 指示灯指示电机工作状态,正转D1灯亮,反转D2灯亮,暂停D3灯亮,如此反复直至工作时间为0停止(三个LED灯都不亮)。
系统总体框图如下:二、设计思路为了便于计时,首先把1000Hz的外部时钟分频为1Hz。
正转时间设为4s,反转设为4s,暂停设为2s,令洗衣机按照正转4s、暂停2s、反转4s、暂停2s的顺序进行旋转,周期恰好为10秒,而定时时间单位为分钟,因此需要设计分钟计数器和秒计数器。
开发板提供的时钟信号CP频率为1000Hz,应该设计一分频器得到1Hz的时钟信号作为时间计数脉冲。
设计中七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用1000HZ。
全自动洗衣机的设计-Verilog程序文件
实验报告2016 年 5 月 24 学 院:大数据与信息工程学院 专 业:电子与通信工程 学 号:2015021718 学生:鹏 举 指导教师: 良 荣目录一、实验题目 (3)二、实验目的 (3)三、实验要求 (3)四、洗衣机工作原理与功能说明 (3)状态图如下 (4)程序RTL视图如下 (4)五、详细代码如下 (5)模块一实现洗衣机状态转换和各状态输出控制 (5)模块二实现复位信号的异步复位同步释放 (11)模块三实现当前状态的数码管显示 (12)模块四实现按键检测 (13)模块五实现顶层的调用 (15)一、实验题目自动洗衣机设计二、实验目的1、熟练掌握Quartus II 工程文件的建立过程。
2、掌握Verilog的基本语法、语句、模块的使用。
3、了解模块的建立与使用。
4、了解FPGA的开发基本流程。
三、实验要求1、初始状态,准备启动。
2、开始进水;为防止进水过程出现故障,故不用定时器控制,而是手动给一个信号模拟水位检测传感器,表示进水完成。
3、开始洗涤:正反洗涤4次开始排水。
4、排水后立即脱水。
5、洗涤之后漂洗2次,每次漂洗过后都排水甩干。
6、整个过程全部用数码管来显示状态机状态,并用两个led灯表示电机的正转与反转状态。
四、洗衣机工作原理与功能说明自动洗衣机的工作原理:洗衣机有7个工作状态分别为空闲(idle)、加水(water)、洗衣(wash)、排水(drain)、甩干(dry)、漂洗(rinse)、结束音乐提示(music)。
一次完整的洗涤,进水3次、洗涤1次、漂洗两次、排水3次、甩干3次。
一次完整的状态转换为:空闲(idle)、加水(water)、洗衣(wash)、排水(drain)、甩干(dry)、加水(water)、漂洗(rinse)、排水(drain)、甩干(dry)、加水(water)、漂洗(rinse)、排水(drain)、甩干(dry)、结束音乐提示(music)。
程序功能说明:程序有4个输入start启动信号、water_test 水满检测信号,水满了就置一、drain_test排水检测,水排完了就置一、emergency紧急停止信号,任何情况下输入都进入idle状态,即停止工作。
基于FPGA的全自动洗衣机设计
编号:EDA技术试验设计报告题目:基于FPGA 的全自动洗衣机设计院(系):电子工程与自动化学院专业:控制理论与控制工程学生姓名:学号:同作者:指导教师:职称:题目类型: 理论研究实验研究工程设计工程技术研究软件开发2011 年 5 月22 日摘要洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,而全自动式洗衣机因使用方便更加得到大家的青睐。
设计中的全自动洗衣机符合目前的发展趋势,具有自动化和数字化程度高、体积小及操作简单等特点,详细地介绍了将工程应用问题引入实验教学的过程; 采用EDA 技术进行全自动洗衣机的设计与仿真;采用Quartus开发,运用原理图及V语言输入设计工功能,使得设计更直观便捷和操作灵活。
关键词:全自动EDA QuartusAbstractWashing machine is indispensable in the home appliances, the development of very fast, and easy to use fully automatic washing machines for everyone of all ages get more. The design of automatic washing machines in line with current trends, with a high degree of automation and digital, small size and simple operation, detailed description of the engineering issues into the process of experimental teaching; by EDA design technology for automatic washing machine and simulation; using Quartus development, the use of schematics and design work function of V language input, making the design more intuitive and convenient and flexible operation.Keywords: Automatic EDA Quartus目录第1章绪论 (1)1.1 课题背景 (1)1.2 设计前景 (1)1.3 开发软件介绍 (2)第2章总体设计与思想 (3)2.1总体设计思想 (3)2.2总体设计 (3)第3章设计的实现及仿真 (5)3.1锁相环部分的设计与仿真 (5)3.2计数器设计与仿真 (6)3.3控制器的设计与仿真 (7)3.4 总体原理图及小结 (10)第4章总结 (12)致谢 (13)参考文献 (14)附录(一) (15)第1章绪论洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,而全自动式洗衣机因使用方便更加得到大家的青睐,全自动即进水、洗涤、漂洗、甩干等一系列过程自动完成,控制器通常设有几种洗涤程序,对不同的衣物可选择不同的洗涤方式。
基于fpga的洗衣机控制系统设计开题报告
一、概述洗衣机是现代家庭必备的家电产品,其使用方便、高效的特点受到了广泛的欢迎。
随着科技的不断进步,洗衣机的控制系统也在不断得到升级和改进。
基于FPGA的洗衣机控制系统设计是目前一个颇受关注的课题,其采用FPGA芯片作为控制核心,具有灵活性强、可编程性高等优点,能够更好地满足洗衣机控制系统对实时性、稳定性和可靠性的要求。
二、研究背景传统的洗衣机控制系统主要采用单片机或DSP芯片作为控制核心,这些芯片的计算能力和可编程性相对较低,导致控制系统的功能和性能受到一定的限制。
而基于FPGA的控制系统则能够充分发挥FPGA芯片的并行计算和灵活可编程的特点,提高控制系统的实时性和稳定性。
三、研究意义基于FPGA的洗衣机控制系统设计具有广阔的市场前景和应用价值。
基于FPGA的控制系统能够更加灵活地适应洗衣机控制系统的各种功能需求,提高了控制系统的可扩展性和适应性。
基于FPGA的控制系统还能够降低系统的成本,并且易于维护和升级,有利于洗衣机产品的普及和推广。
四、研究目标本研究旨在针对传统洗衣机控制系统的局限性,设计一种基于FPGA的洗衣机控制系统,实现洗衣程序的智能化控制和优化洗涤效果,为用户提供更好的用户体验。
五、研究内容1. 分析传统洗衣机控制系统的特点和局限性2. 研究FPGA芯片的结构和特性3. 设计基于FPGA的洗衣机控制系统的硬件结构和接口设计4. 针对洗衣程序的特点,设计基于FPGA的洗衣机控制算法5. 实现基于FPGA的洗衣机控制系统的软件编程与调试6. 进行系统集成与测试六、预期研究成果1. 设计出一种基于FPGA的洗衣机控制系统,提高洗衣程序的精确性和智能化程度。
2. 实现洗衣机控制系统对各种洗衣程序的快速响应和稳定控制。
3. 验证基于FPGA的洗衣机控制系统的稳定性和实用性。
七、研究方案1. 文献综述:调研传统洗衣机控制系统的研究现状和FPGA技术在家电领域的应用。
2. 系统设计:设计基于FPGA的洗衣机控制系统的硬件结构和接口设计,以及控制算法的研究。
基于FPGA的洗衣机控制器设计
课题:基于FPGA的洗衣机控制器前言一、洗衣机控制器主要内容l.任务要求和内容设计制作一个洗衣机的正反转定时控制线路。
1)控制洗衣机的电机作如下运转定时开始――正转10S――暂停5S――反转10S――暂停5S――定时到停止定时未到2)用2位七段数码管显示定时时间(S)。
2.洗衣机控制器的使用步骤:(1)电路上电后,在Start拨码开关未闭合前可以由UpKey和DownKey按键开关“+”“-”设置总的工作时间,确定洗衣机控制器工作允许时间。
(2)设定好允许工作时间后,闭合Start开关,洗衣机控制器开始工作。
(3)可以看见指示正转LED灯亮10s,停转LED灯亮5S,反转LED灯亮10s,停转LED亮5s,如此反复直至工作允许时间为0,蜂鸣器发出警报。
二、设计原理简介洗衣机控制器的设计主要是时序控制和定时器的设计,由一片FPGA和外围电路构成电器控制部分。
FPGA接收键盘的控制命令,控制洗衣机的正转、反转、停机和定时时间为0报警的工作状态、控制并显示工作状态以及显示定时时间。
对FPGA芯片的编程采用模块化的Verilog HDL (硬件描述语言)进行设计,设计由分频模块,按键消抖模块,定时时间自减模块,时序中心控制模块,数码管显示模块组成,顶层实现整个芯片的功能。
顶层使用原理图实现,底层由Verilog HDL语句实现。
FPGA的输入时钟为20M hz,因此使用了分频模块输出1hz的方波给定时器设定自减模块提供每1s自减1的信号,定时器模块输出的自减值输入给数码管显示译码模块和时序控制模块,通过译码模块定时器的值可以在数码管上显示,同时定时器的值输入到时序控制模块由此可以控制洗衣机的正转、反转、停机和报警工作方式。
通过按键消抖模块可以准确无抖动的设定定时器的工作时间。
目录一、前言 (2)二、目录 (3)三、正文 (4)3.1洗衣机控制器的整体框图及原理 (4)3.2洗衣机控制电路单元模块设计和仿真 (5)3.2.1按键消抖模块的设计 (5)3.2.2时钟分频模块的设计 (6)3.2.3定时器设定和自减模块的设计 (7)3.2.4时序中心控制模块的设计 (8)3.2.5数码管显示译码模块的设计 (9)四、电路调试 (11)五、结束语和心得体会 (12)六、参考文献 (13)七、附录 (13)7.1 FPGA系统板部分原理图 (13)7.2 FPGA系统板PCB图 (15)三、正文3.1 洗衣机控制器的整体框图及原理:基于fpga的洗衣机控制器电路主要由五大模块组成,分别为按键消抖模块,时钟分频模块,定时器设定和自减模块,时序中心控制模块,数码管显示译码模块。
基于FPGA的全自动洗衣机控制器设计与实现
基于FPGA的全自动洗衣机控制器设计与实现摘要:在介绍FPGA的基本原理和开发流程基础上,使用V erilog HDL 硬件描述语言实现了一个全自动洗衣机控制器。
该控制器可以预置洗衣时间,循环输出正转、反转、暂停三个电机控制信号。
程序在编译仿真成功后下载到DE0开发板,准确实现了各项基本控制功能,操作简单,性能稳定可靠。
关键词:FPGA;DEO;Quartus II;Verilog HDL;洗衣机0引言自现场可编程门阵列(FieldProgrammable Gate Array,FPGA)器件诞生以来,FPGA产业迅速发展,一方面技术性能不断加强,加工工艺从2μm发展到65nm,晶体管数量从8.5万个增长到10亿个以上,不断加入各种实现常用功能的软硬核;另一方面应用领域不断扩张,从传统的通信业不断向消费电子、汽车、工业控制等非传统领域渗透。
FPGA性能的提高和成本的降低使其不断抢占DSP、ASIC、ASSP和嵌入式处理器市场,FPGA的开发和应用已经形成一个庞大的产业。
FPGA所具备的众多优点使其在未来的信息家电和智能家电中拥有极其广阔的应用前景,因此积极研究FPGA在家电控制方面的应用具有巨大的商业价值和重要的社会意义。
1FPGA的基本结构简化的FPGA基本结构由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。
1.1可编程输入/输出单元输入/输出单元简称I/O单元,它们是芯片与外界电路的接口部分。
为了使FPGA有更灵活的应用,目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可以试配不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小。
1.2基本可编程逻辑单元基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活改变其内部连接与配置,完成不同的逻辑功能。
基本可编程逻辑单元几乎都是由查找表(Lookup Table,LUT)和寄存器(Register)组成的。
基于FPGA的洗衣机电机正反转控制器
电机控制综合课程设计报告课题名称:基于FPGA的洗衣机电机正反转控制器学院:信息与控制工程学院专业班级:姓名:学号:2014 年 7 月 4 日目录一、设计内容----------------------------------3二、设计方案----------------------------------31 洗衣机控制器的整体框图与原理-------------------32 控制电路各模块程序及仿真图--------------------4三、电路调试----------------------------------10四、总结与体会--------------------------------10一、设计内容1.任务要求及内容设计一个基于FPGA的洗衣机正反转定时控制器,其具体要求如下:控制洗衣机的电机作如下周期性运转,正转4S――暂停2S――反转4S――暂停2S,用8位七段数码管显示自己学号的后四位(显示在从左边数第一个到第四个数码管上)、定时时间(两位,单位:分钟,显示在第五个和第六个数码管上),剩余时间(两位,单位:分钟,显示在第七个和第八个数码管上)。
2.洗衣机控制器的工作过程(1)上电后显示自己学号的后四位,在运行中不变;初始洗涤时间为10分钟,在开始前可用S1和S2按键设置总的工作时间,确定洗衣机控制器定时工作时间。
(按下并松开S1 定时时间增加一分钟,按下并松开S2定时时间减少一分钟,时间范围为:00~30分钟)(2)设定好定时时间后,按下并松开S3(按下时S3=0,松开时S3=1),启动控制器,整个系统开始运行;再次按下并松开S3,停止运行;再次按下并松开S3继续运行;按下并松开S4则回到上电初始状态。
其他两个按键不起作用。
到达定时时间后,停止运行,按下并松开S4则回到初始状态,在运行中要显示定时时间和剩余工作时间,当剩余时间为0时,要显示“End”。
在工作过程中用三个LED指示灯指示电机工作状态,正转D1灯亮,反转D2灯亮,暂停D3灯亮,如此反复直至工作时间为0停止(三个LED灯都不亮)。
基于FPGA的洗衣机的设计
基于FPGA的洗衣机控制电路实现姓名:学号:专业:2010--11--15洗衣机洗涤控制电路设计一、洗衣机洗涤控制电路的性能要求1.强洗、标准、轻柔三种洗涤模式强洗周期水流控制:正向电机接通5秒后,停2秒;再反向电机接通5秒,停2秒;然后又正向电机接通5秒。
如此循环控制电机,直到洗涤定时结束。
标准洗周期水流控制:其过程与强洗周期水流控制相同,不同的是正向接通时间为3.5秒,停止时间为1.5秒,反向接通时间为3.5秒。
轻柔洗周期水流控制:正向接通时间为2.5秒,停止时间为1.5秒,反向接通时间为2.5秒。
2.三种洗涤定时洗衣机洗涤定时可有三种选择:5分钟、10分钟、15分钟。
3.上电复位后的初始设定初始设定为标准模式,定时时间为15分钟。
如需修改可按模式选择按键和定时选择按键。
每按一次按键转换一次,可多次进行循环选择。
当某一次洗涤过程结束后,自动返回初始状态,等待下一次洗涤过程开始。
4.启/停控制洗涤过程由启/停键控制。
每按一次启/停键,状态转换一次。
5.洗涤定时精度洗涤定时误差要求不大于0.1秒。
为简化设计洗衣机洗涤控制电路,只要求输出正向和反向的电机控制信号。
二、洗衣机洗涤控制电路的结构根据上述对洗衣机洗涤控制电路的性能要求,可以画出如下图所示的结构框图。
该控制器由四大部分组成:主分频器、主控制器、洗涤定时器和水流控制器。
洗衣机洗涤控制电路的结构框图主分频器主分频器用来产生0.1秒的时钟供主控制器使用。
本方案DE2板自带时钟,其振荡频率为50MHz。
这样,主分频器的分频系数为5M。
现采用3个分频器构成主分频器的分频电路。
3个分频器是1k分频器、1k分频器和5分频器。
主分频器的结构如下图所示。
主分频器的结构三、洗衣机洗涤控制电路的算法状态机图描述1.主控制器算法状态机图描述根据主控制器的工作要求,洗衣机洗涤时的工作状态共有以下9种:标准——15分钟标准——10分钟标准——5分钟轻柔——15分钟轻柔——10分钟轻柔——5分钟强洗——15分钟强洗——10分钟强洗——5分钟1)模式选择控制状态机图2) 定时选择控制状态机图3) 启/停控制算法状态机图描述2.洗涤定时器算法状态机图描述洗涤定时器有3种状态:停止状态(IDLE)、计时状态(INCCOUNT)和暂停状态(TMP_STOP)。
基于FPGA的洗衣机控制器设计与实验教学
第21卷 第2期 天 中 学 刊 V ol .21 No .2 2006年4月 Journal of Tianzhong Apr .2006收稿日期:2006-03-25作者简介:司孝平(1965~ ),男,河南封丘人,华北水利水电学院信息工程系讲师,硕士.基于FPGA 的洗衣机控制器设计与实验教学司孝平1,赵严峰2(1.华北水利水电学院,河南 郑州450011;2.黄淮学院,河南 驻马店 463000)摘 要:以一种洗衣机控制器为例,阐述了FPGA 的设计流程.用ModelSim6.0对控制器的verilogHDL 代码进行了前后仿真,并在伟福EDA6000仿真系统实验仪上实现了此控制器. 关键词:FPGA 设计;verilog HDL ;仿真;洗衣机控制器 在EDA 与数字系统设计的实验教学中,存在的主要问题是学时数少、开发工具多,但部分学生的实验动手能力较弱,因此有一定的教学难度.本文以一种洗衣机控制器为例,阐述FPGA 的设计流程[1],以供EDA 实验教师参考. 1 控制器的设计流程 1.1 设计要求教师在指导学生进行EDA 设计时,必须要求学生首先弄清设计要求.本文所设计的控制器,应能够控制洗衣机的电动机按下述规律运转:预置总运转时间,按下启动按钮后,电动机便开始循环运转,每个循环周期为60 s ,即正转20 s →暂停10 s →反转20 s →暂停10 s .当总运转时间倒计时为0时,停止运转,并发出蜂鸣声[2].1.2 流程图和态转换图[3]当明确了设计要求后,教师应引导学生作出流程图与状态转换图.本文所设计控制器的流程图和态转换图如图1所示.从图1可以看出,系统有3个工作状态:正转状态S0,若forward = 1,则控制电动机正转;暂停状态S1,若stop = 1,则控制电动机停转;反转状态S2,若back = 1,则控制电动机反转.在较长1中,T20表示20 s 定时时间到,!T20则表示20 s 定时时间没有到.同样,T10表示10 s 定时时间到,!T10则表示10 s 定时时间未到.flag 是一个标志位,每当S1状态持续了10 s ,即T10有效时,对flag 取反一次,此时若flag = 1则状态转到S0,若flag = 0则状态转到S1.用两位数码管预置洗涤时间(分钟数),洗涤中按倒计时方式对洗涤过程作计时显示,用LED 数码管显示电动机的正转、反转或暂停状态,如果定时时间到,则停机并发出声音信号.洗涤开始信号start 有效,则洗涤时间计数器进行倒计数(用数码管显示),同时启图1 洗衣机控制器的流程图与状态转换图该电路系统状态转换的时序控制部分,可用一个同步有限状态机来实现.可把状态码的指定与状态机控制的输出联系起来,把状态的变化直接用作输出,即直接用输出信号的组合{forward ,stop ,back}作为状态变量,并采用独热码编码方式.这样可以提高输出信号的转换速度并节省电路器件[4],提高电路系统运行的可靠性.中图分类号:TP273文献标识码:B文章编号:1006-5261(2006)02-0103-03backstop1.3verilog代码以下为根据流程图和状态转换图所编写的verilog 代码:/**洗衣机控制器的verilogHDL源代码wash. v----*****//*信号定义:d0,d1,d2,d3,d4,d5,d6,d7,d8,d9:数据开关信号,分别代表0,1,2,3,4,5,6,7,8,9;start:开始信号;reset:复位信号;t1l,t1h:可预置数的分钟倒计时器;t2l,t2h:秒加法计时器.forward,back,stop:依次为正转、反转、停止状态输出显示;clk:1 Hz时钟信号;sound:停机音响输出;*/ module wash(d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,clk, start,reset,t1l,t1h,t2l,t2h,forward,back,stop,sound);input d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,clk,start,reset;output forward,back,stop,sound;output[3:0] t1l,t1h,t2l,t2h;reg [3:0] t1l,t1h,t2l,t2h;reg forward,back,stop,flag,sound;always@(posedge clk)if({d0,d1,d2,d3,d4,d5,d6,d7,d8,d9}!=10'd0)// 预置时间begint1h<=t1l;if(d0)t1l<=0;if(d1)t1l<=1;if(d2)t1l<=2; if(d3)t1l<=3; if(d4)t1l<=4;if(d5)t1l<=5;if(d6)t1l<=6;if(d7)t1l<=7; if(d8) t1l <=8; if(d9)t1l<=9; end//else beginif(start&&{forward,stop,back}==3'b000){forward,stop,back}<=3'b100;else if (reset){forward,back,stop,flag,sound,t1l,t1h,t2l,t2h}<=21'd0;else if ({forward,stop ,back}!=3'b000)begin//*****同步有限状态机******/case({forward,stop,back})3'b100:beginif(t2h==2)begin{t2h,t2l}<=8'h00;{forward,stop,back}<=3'b010;endelse begin //秒加法计数器if(t2l==9) begin t2l<=0;t2h<=t2h+1; endelse t2l<=t2l+1; endend3'b010:beginif(t2l==9)begint2l<=4'b0000; flag<=!flag;if(flag)begin{forward,stop,back}<=3'b100;///分钟倒计时;if(t1l==0)begin if(t1h!=0) begint1h<=t1h-1;t1l<=9; end endelset1l<=t1l-1;///endelse {forward,stop,back}<=3'b001;endelse t2l<=t2l+1;end////3'b001: beginif(t2h==2)begin{t2h,t2l}<=8'h00;{forward,stop,back}<=3'b010;endelse beginif(t2l==9) begin t2l<=0;t2h<=t2h+1; endelse t2l<=t2l+1; endendendcase//**********************/if({t1h,t1l}==8'd0){forward,stop,back,sound, flag,t2h,t2l}<=13'h0200 ;end endendmodule2仿真与分析2.1仿真与综合前仿真能发现早期设计中的问题.首先应编写测试模块,然后用ModelSim 6.0对代码进行前仿真.通过前仿真,发现所设计的控制器符合要求.若前仿真的结果正确,可用Leonardo_Spectrum 等综合工具,将源代码wash.v综合到Altera公司的ACEX系列EP1K30TC144-3芯片中,并生成wash.edf 文件.报告表明,所编写wash.v源代码是可综合的,即源代码不仅功能仿真正确,而且能够由具体的FPGA芯片EP1K30TC144-3来实现.前仿真的波形结果不带延迟信息.用Max+plusII 10.0 baseline打开上述wash.edf文件,并指定管脚分配后,comepile可生成格式为.vo的网表文件,即wash.vo和alt_max2.vo文件.为了确定FPGA芯片内布局布线所引起的延时,可利用前仿真时的测试模块以及ModelSim 6.0对这两个.vo格式的文件进行后仿真.本设计中后仿真的波形如图2所示,该波形说明FPGA芯片内布局布线所引起的延时符合设计要求.图2 后仿真波形通过以上的仿真与综合,几乎可以认为前面的整个设计是正确的,但还需将源代码下载到目标芯片FPGA内,进一步进行硬件实际验证.2.2分析验证用Max+plusII 10.0 baseline对源文件或综合出来的wash.edf文件compile后,还需再对南京伟福公司的EDA6000仿真系统上的EP1K30TC144-3型ACEX 芯片进行配置[5].硬件验证开始时,在EDA6000仿真系统上,首先按一下reset按键使系统复位,再依次按数字按键0和数字按键3,将定时时间预置为3 min.然后,按一下启动按键start启动系统后,发现在仿真系统上的洗衣机控制器芯片控制下,与分钟倒计数器时间读数{t1h,t1l}对应的LED数码管,以及与各状态秒加法计数器时间读数{t2h,t2l}对应的LED数码管,都能够实时、正确地改变着显示的数字;另外,电动机可以按设计要求正确地正转、反转、暂停,对应的LED数码管也能实时、正确地显示电动机的运转状态.在系统按照流程图所示的规律运转了3个循环后,系统停止运转,同时报警信号sound迅速变为高电平,各数码管全部归零.另外,还可用EDA600仿真系统上的逻辑分析仪捕获该洗衣机控制器芯片的信号波形[5],如图3所示.图4给出了某一时刻用伟福EDA6000仿真系统所得到的输出信号及时间显示结果.通过比较得知,逻辑分析仪捕获的硬件验证结果与后仿真结果一致,且符合设计要求,说明了该洗衣机控制器的FPGA设计是成功的.图3 伟福EDA6000仿真系统逻辑分析仪捕获的信号波形图4 伟福EDA6000仿真系统得到的输出信号及时间显示FPGA芯片的开发,关键在于正确地分析设计出流程图和状态转换图,并由此正确地编写出可综合的同步有限状态机风格的verilogHDL代码,同时掌握芯片的设计流程也十分重要.理论和实验的有机结合是学好EDA技术的有效途径,通过FPGA芯片的仿真、测试实验,能够大幅度提高学生对EDA技术的学习兴趣和动手能力,对学生掌握可综合风格的同步有限状态机verilogHDL代码的编写方法也具有一定的促进作用.参考文献:[1] 褚振勇.FPGA设计及应用[M].西安:西安电子科技大学出版社,2002.165~195.[2] 李国丽.EDA与数字系统设计[M].北京:机械工业出版社,2004.164~167.[3] 何小艇.电子系统设计[M].杭州:浙江大学出版社,2000.3~7.[4] 夏宇闻.verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.125~126.[5] 南京伟福公司.EDA6000仿真系统说明书[Z].〔责任编辑 张继金〕。
基于FPGA的洗衣机控制系统的设计与实现
基于FPGA的洗衣机控制系统的设计与实现
随着时代的发展,洗衣机已成为人们日常生活中的必需品。
目前全自动单筒、滚筒洗衣机已日渐盛行,但其结构复杂,日常维修和购买时成本偏高,所以结构简单、价格实惠的双缸洗衣机依然受到普通大众的欢迎。
从市场反馈的情况发现,双缸洗衣机的控制电路因为采用了传统机械式的转钮,所以发生故障的概率很高,且一直以来都未找到合适的问题解决办法。
随着芯片制造工艺的发展和成本的进一步降低,可编程门阵列以其具有体系结构和逻辑单元灵活、集成度高以及适用范嗣宽等特点,在大规模数据计算、嵌入式处理、通信、家用电器智能控制等方面都被广泛使用。
为了改善家用双缸洗衣机机械控制系统,本文充分利用FPGA的特点,用其作为洗衣机控制系统的核心,配置电路和控制逻辑的设计是该系统的重要组成部分,该控制系统很好的解决了洗衣机机械式控制的问题,实现了洗衣机的正常工作。
1 系统控制逻辑设计
传统双缸洗衣机洗涤模式分为强洗、轻柔、标准3种。
根据传统洗衣机的洗涤模式,文中分别设计了3种洗涤模式的控制逻辑。
强洗时:洗涤电机以1 200 r/min的转速正向连续工作5 s,之后暂停工作2 s;然后电机以相同的转速反向连续工作5 s,后暂停2 s,如此循环控制电机,直到洗涤定时结束。
标准和轻柔洗时:其逻辑控制过程和强洗相同,不同的是电机分别。
全自动直筒洗衣机FPGA控制器的开发设计
全自动直筒洗衣机FPGA控制器的开发设计文章提出了一种基现场可编程门阵列(简称FPGA)实现的洗衣机控制器,本洗衣机控制器不仅工作性能稳定抗干扰能力强和结构简单,而且占用硬件资源少,能够通过配置系统参数以满足不同类型洗衣机的控制要求,对洗衣机水位和洗涤力度的控制效果良好,具有一定的实用价值。
标签:FPGA;洗衣机;控制器1 概述洗衣机的发明使人类告别了手工洗衣的繁重劳动,但是最初由于技术不发达洗衣机的自动化程度显然不高,洗衣的几个过程仍需要人工切换操作来进行。
随着科技的发展,洗衣机也由最初的洗涤和脱水的手动切换过程发展到了半自动半手工,发展成为目前普遍使用的全自动洗衣机,现实要求洗衣机的体积更小、集成度更高、应用更简单、洗衣机的控制引入了微型处理器进行编程,实现对洗衣机内外部水流的控制,洗衣机控制精度不同对控制器的精度要求也不同,对于控制精度要求高的洗衣机需要精度高的控制。
本系统采用有FPGA芯片的在线可编程控制器,该系统控制器硬件使用VHDL语言设计而成,不仅性能稳定抗干扰能力强而且方便调试维护和系统升级,保障洗衣机系统的正常运行。
2 系统的功能部件介绍该洗衣机控制器根据功能可以划分为五个模块,分别为时间预置编码器模块、减法计数器模块、数码管显示模块、时序电路模块和译码器模块。
(1)时间预置编码器模块:接收用户所输入的预置时间信息,并将时间信息进行编码,编码成机器语言后转交给减法计数器。
(2)减法计数器模块:将接收的编码时间预置信息转换成开始信号发送给电机使电机开始运行,并将预设的时间信息和剩余的时间信息发送给数码管模块进行显示。
(3)数码管显示电路模块:接收减法计数器模块传递的时间信息,并进行译码显示。
(4)电机时序控制电路:接收减法计数器模块传递的运行开始和结束信号,安排电机的运行状态并输出。
(5)译码器:接收电机运行状态的信号并译码,实现实时控制电机的正反转状态以及暂停状态。
3 控制逻辑各模块功能的VHPL语言实现3.1 时间预置编码器模块的VHDL语言LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FENG ISPORT(CP,CLR:IN STD_ 31A ISPORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0)D1,D2,D3:IN 1,Q2,Q3,Q4,ALM:OUT_ARCOFCH41ASBPIDEGINPROCESS(D1,D2,D3,D4)V ARIPIDABLE:S;USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORTARCHITECTURBEGIN PROCESS(CLK)V ARIABLEE.STD;WHENENDCASE;ENDPROCESSNSIGNED.ALLNTITYCOUNTISPORT(CLK,EN:INH,L:OUTBEGINCLK’EVEN’THENIFEN=‘1’THENIFELSIFLL=0THEN LL1PROCESS ;ENDCOUNT_AREND DISP_ARC;2,减法计数器模块的VHDL语言LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITY LOCKB IS PORT(D1,D2,D3,D4:IN STD_LOGIC;CLK,CLR:IN LOGIC;Q:OUT STD_LOGIC);END FENG;ARCHITECTURE FENG_ARC OF FENG IS BEGINPROCESS(CP,CLR)BEGINIF CLR=‘0’THEN QQEND PROCESS;END DISP_ARC;3,数码管显示电路模块的VHDL语言LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITYPIDCH41AISPORT(D1,D2,D3,D4:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR (3DOWNTO 0))END CH41A ARCHITECTURE CHCKB;ARCHITECTURELOCK_ARCOFLOCKBGIN PROCESS(CLK)BEGIN FEN Q1<=‘0’;Q2<=‘0’;Q3<=‘0Q4<=‘0ALM<=‘0’;LOCKB ELSIFCLK’EVENTANDCLK=‘1’THEN Q1<=D1;Q4,电机时序控制电路的VHDL语言LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALENTITYCH1AISPORT (SEL:IN STD_LOGIC_VECTOR(2DOWNTO0);ENDIF;ENDPROCESS;ENDFENG_ARC;USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORT(CLK:INSENDSELOR( 3 DOWNTO 0)Q:OUT USEIEEE.STD_LOGIC_1164.ALLENTITYSELISPORTARCHITECTURBEGIN PROCESS(CL STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR( 3 DOWNTO 0)ENDCH31A;RCHITECTURECH31_ARC4 结束语本系统采用FPGA作洗衣机控制单元控制情度较高,成本低且控制效率高,能够满足各种类型洗衣机的控制要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天水师范学院EDA综合课程设计报告书课题:基于EDA的洗衣机控制器院(系):物信学院专业:11级电信二班学生姓名:张宏伟王蕾学号:20111060237 201110602262013 年12月30 日目录一、前言 (3)二、正文 (4)2.1洗衣机控制器的整体框图及原理 (4)2.2洗衣机控制电路单元模块设计和仿真 (5)2.2.1按键消抖模块的设计 (5)2.2.2时钟分频模块的设计 (6)2.2.3定时器设定和自减模块的设计 (7)2.2.4时序中心控制模块的设计 (8)2.2.5数码管显示译码模块的设计 (9)三、引脚分配、仿真及运行结果 (12)四、电路调试 (14)五、结束语和心得体会 (14)前言一、洗衣机控制器主要内容l.任务要求和内容设计制作一个洗衣机的正反转定时控制线路。
1)控制洗衣机的电机作如下运转定时开始――正转20S――暂停10S――反转20S――暂停10S――定时到停止定时未到2)用2位七段数码管显示定时时间(S)。
2.洗衣机控制器的使用步骤:(1)电路上电后,在Start拨码开关未闭合前可以由UpKey和DownKey按键开关“+”“-”设置总的工作时间,确定洗衣机控制器工作允许时间。
(2)设定好允许工作时间后,闭合Start开关,洗衣机控制器开始工作。
(3)可以看见指示正转LED灯亮20s,停转LED灯亮10S,反转LED灯亮20s,停转LED亮10s,如此反复直至工作允许时间为0,蜂鸣器发出警报。
二、设计原理简介洗衣机控制器的设计主要是时序控制和定时器的设计,由一片FPGA和外围电路构成电器控制部分。
FPGA接收键盘的控制命令,控制洗衣机的正转、反转、停机和定时时间为0报警的工作状态、控制并显示工作状态以及显示定时时间。
对FPGA芯片的编程采用模块化的Verilog HDL (硬件描述语言)进行设计,设计由分频模块,按键消抖模块,定时时间自减模块,时序中心控制模块,数码管显示模块组成,顶层实现整个芯片的功能。
顶层使用原理图实现,底层由Verilog HDL语句实现。
FPGA的输入时钟为50M hz,因此使用了分频模块输出1hz的方波给定时器设定自减模块提供每1s自减1的信号,定时器模块输出的自减值输入给数码管显示译码模块和时序控制模块,通过译码模块定时器的值可以在数码管上显示,同时定时器的值输入到时序控制模块由此可以控制洗衣机的正转、反转、停机和报警工作方式,通过按键消抖模块可以准确无抖动的设定定时器的工作时间。
二、正文2.1 洗衣机控制器的整体框图及原理:基于fpga的洗衣机控制器电路主要由五大模块组成,分别为按键消抖模块,时钟分频模块,定时器设定和自减模块,时序中心控制模块,数码管显示译码模块。
具体电路如图1所示:图1由于输入时钟为50M hz,因此使用了分频模块输出1hz的方波(中间上方模块)给定时器设定和自减模块(中间下方模块)提供每1s自减1的信号,定时器模块输出的自减值输入给数码管显示译码模块(右下方模块)和时序控制模块(右上模块),通过译码模块定时器的值可以在数码管上显示,同时定时器的值输入到时序控制模块由此可以控制洗衣机的正转、反转、停机和报警工作方式。
按键消抖模块(左下方模块)的作用是为了消除按键抖动而设立的。
2.2、洗衣机控制电路单元模块设计和仿真2.2.1按键消抖模块的设计在进行独立按键或者矩阵式按键的设计的时候,我们在按下键盘的时候其实并不只是按下去而是有一个抖动的过程,就连松手的过程也有抖动,然而这个抖动通常被人们所忽略,从而导致输入数据的错误和乱码,因此我们必须对按键进行按键的消抖处理。
我们通常在单片机的消抖使用的是延时消抖,这种消抖也称为软件消抖,但是fpga的Verilog HDL语言是硬件描述语言,所以也称作硬件消抖,主要运用了状态机和延时的消抖方式。
按键消抖模块图如图2:图2其Verilog HDL 语言描述如下:module Key_module (Key_in,Key_out,Clk,Rst);input Clk,Rst,Key_in;output Key_out;reg Reset; reg H_L_f1;reg H_L_f2; reg H_L_f3;reg H_L_f4; reg [17:0] Count; wire H_L_sig;parameter Delay10ms = 'd200_000;always @(posedge Clk ) begin Reset<=Rst; endalways @(posedge Clk or negedge Reset )beginif(!Reset) begin H_L_f1<=1; H_L_f2<=1; endelse begin H_L_f1<=Key_in; H_L_f2<=H_L_f1; endendassign H_L_sig = H_L_f2 & (~H_L_f1);always @(posedge Clk or negedge Reset )beginif(!Reset)begin Count<=0;endelse if(Count == Delay10ms)begin Count<=0; endelse if(H_L_sig) begin Count<=0; endelse begin Count<=Count+1; endendalways @(posedge Clk or negedge Reset)beginif(!Reset) begin H_L_f3<=1; endelse if(Count == Delay10ms) begin H_L_f3<=Key_in; endendalways @(posedge Clk or negedge Reset )beginif(!Reset) begin H_L_f4<=1; endelse begin H_L_f4<=H_L_f3; endendassign Key_out = H_L_f4 & (~H_L_f3);endmodule2.2.2时钟分频模块的设计由于使用的FPGA的输入时钟是50M hz,定时模块的自减频率是1hz,因此需要进行分频得到1hz的时钟频率输入给定时模块。
时钟分频模块图如图3:时钟分频模块功能仿真图如图4:图3 图4其Verilog HDL 语言描述如下:module fenpin(clk,clk1hz);input clk;output clk1hz;reg clk1hz;reg[24:0] counter;parameter N=50_000_000;always@(posedge clk)begincounter<=counter+1'b1;if(counter==N/2-1)beginclk1hz<=~clk1hz;counter<=0;endendendmodule2.2.3定时器设定和自减模块的设计定时器设定和自减模块可以设定定时器的工作时间,通过输入的1hz的信号使定时器的值每秒自减1,直至为0。
其定时器的值输出给数码管译码模块和时序控制模块。
定时器设定和自减模块图如图 5;定时器设定和自减模块功能仿真图如图6:图5图6其Verilog HDL 语言描述如下:module KeySet(Clk,Clk_1hz,Rst,Start,UpKey,DownKey,SetTimer);input Clk,Clk_1hz,Rst,Start,UpKey,DownKey;output [9:0] SetTimer;reg [9:0] Timer; reg [9:0] rTimer;reg Reset; always @(posedge Clk )begin Reset<=Rst; endalways @(posedge Clk or negedge Reset)begin if(!Reset)begin Timer<=7'd50; endelse if(Start)begin if(UpKey)begin Timer<=Timer+1'b1; endelse if(DownKey)begin Timer<=Timer-1'b1; endend endalways@(posedge Clk_1hz) beginrTimer<=Timer; if(!Start)begin if(rTimer==7'd0)begin rTimer<=0;end elsebegin rTimer<=rTimer-1'b1;end endendassign SetTimer=rTimer; endmodule2.2.4时序中心控制及蜂鸣器模块的设计时序控制及蜂鸣器模块由定时器送来的值来控制洗衣机控制器的工作方式,正转、反转、停转和报警。
时序中心控制模块图如图7;时序中心控制模块图功能仿真如图8:图7图8其Verilog HDL 语言描述如下:module Center(Clk,Start,Rst,Forward,Back,Stop,Sound,SetTimer,led0,led1); input Clk,Start,Rst;input [6:0]SetTimer;output Back,Stop,Sound,Forward,led0,led1;reg rBack,rStop,rSound,rForward,red0,red1;reg [3:0] i; reg [1:0] j;reg [6:0] rSetTimer; reg [24:0] num;reg Reset;always @(posedge Clk )begin Reset<=Rst; endalways @(posedge Clk or negedge Reset)beginif(!Reset)begin rBack<=0; rStop<=0;red0<=1;red1<=1; rSound<=1;rForward<=0; rSetTimer<=0; i<=0; j<=0; num<=0; endelseif(!Start&SetTimer) begincase(i) 4'd0:begin rSetTimer<=SetTimer; rForward<=1'b1;rBack<=1'b0; rStop<=1'b1; red0<=1'b0;red1<=1'b1;rSound<=1'b1; i<=i+1'b1; end4'd1: begin if(SetTimer==rSetTimer-4'd20) begin i<=i+1'b1; endend4'd2: begin rSetTimer<=SetTimer; i<=i+1'b1;rForward<=1'b0;rBack<=1'b0; rStop<=1'b0; red0<=1'b1;red1<=1'b1;rSound<=1'b1; end4'd3: begin if(SetTimer==rSetTimer-3'd10) begin i<=i+1'b1; end end4'd4: begin rSetTimer<=SetTimer; i<=i+1'b1; rForward<=1'b0;rBack<=1'b1; rStop<=1'b1; red0<=1'b1;red1<=1'b0; rSound<=1'b1; end4'd5: begin if(SetTimer==rSetTimer-4'd20) begin i<=i+1'b1; end end4'd6: begin rSetTimer<=SetTimer; i<=i+1'b1; rForward<=1'b0;rBack<=1'b0; rStop<=1'b0;red0<=1'b1;red1<=1'b1; rSound<=1'b1; end 4'd7: begin if(SetTimer==rSetTimer-3'd10) begin i<=i+1'b1; end end4'd8: begin i<=4'd0; endendcase endelse if(!SetTimer&!Start)begin num<=num+1'b1; rForward<=1'b0;rBack<=1'b0; rStop<=1'b0;red0<=1'b1;red1<=1'b1; rSound<=1'b0;end endassign Forward=rForward; assign Back=rBack;assign Stop=rStop; assign Sound=rSound;assign led0=red0; assign led1=red1;endmodule蜂鸣器模块Verilog HDL 语言描述如下:module beep(clk,beep,sound); //模块名称beep input clk,sound; //系统时钟output beep; //蜂鸣器输出端reg beep_r; //寄存器reg[27:0]count;assign beep = beep_r; //脉冲输出always@(posedge clk)begincount <= count + 1'b1;endalways @(count[9])if (!sound)beginbeep_r = !(count[13]&count[24]&count[27]);endelse beep_r<=0;endmodule2.2.5数码管显示译码模块的设计数码管显示译码模块主要功能是把定时器送来的值译码并通过数码管显示出来。