欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    黄俊尧课程设计报告.doc

    • 资源ID:3265317       资源大小:2.73MB        全文页数:22页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    黄俊尧课程设计报告.doc

    .数字电子技术课程设计题目:基于FPGA的全自动洗衣机设计院 系:工学院专业班级:通信工程12秋2班姓 名:黄俊尧学 号:12032078小组成员:黄俊尧、王大政指导教师:赵兰、周丽婕、徐振完 成 日 期 2015年 1月目 录1 课题背景12 Quartus II软件、FPGA硬件介绍22.1 Quartus II软件介绍22.2 FPGA硬件介绍23 全自动洗衣机的总体方案43.1方案内容43.2设计原理44 全自动洗衣机各模块解析64.1 定时器模块64.1.1定时器模块流程图64.1.2定时器模块仿真结果和分析64.2 分频器模块74.2.1分频器模块流程图74.2.2分频器模块仿真结果和分析74.3 计数器模块84.3.1个位计数器模块流程图和仿真84.3.2十位计数器模块流程图和仿真95 全自动洗衣机整体电路仿真105.1 全自动洗衣机整体流程图105.2 全自动洗衣机整体仿真结果和分析106 程序下载调试图117 设计总结13参考文献14附 录151 课题背景模糊控制是以模糊数学为基础发展起来的一种新的非线性的控制方法,对那些无法取得数学模型或数学模型相当粗糙的系统可以取得较满意的控制效果,解决了一些用传统方法无法解决的问题。近年来,模糊控制在家用电器控制中得到较广泛的应用,采用模糊控制技术的洗衣机具有自动识别衣质、衣量,自动识别肮脏程度,自动决定水量,自动投入恰当的洗涤剂等功能,不仅实现了洗衣机的全面自动化,也大大提高了洗衣的质量,具有很强的实用性和较好的发展前景。基于模糊控制的全自动洗衣机自动控制系统,以FPGA为核心,可以实现洗衣机的智能控制,提高洗衣质量,节约能源。硬件结构框图及软件流程图是该系统的重要组成部分,在整个控制过程中,模糊控制软件起了决定性的作用基于FPGA的洗衣控制系统,控制面板由按键和LED指示灯显示器组成。按键选择洗衣机工作时间,指示灯配合按键工作,LED指示灯显示器则显示洗衣机正处于什么状态。洗衣机的整体电路模块包括按键、指示灯、数码管和FPGA1。2 Quartus II软件、FPGA硬件介绍2.1 Quartus II软件介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具2。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件3。2.2 FPGA硬件介绍FPGAFPGA是英文FieldProgrammable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点4。 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1. 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片,FPGA可做其它全定制或半定制ASIC电路的中试样片。2. FPGA内部有丰富的触发器和IO引脚。 3. FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 4. FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 目前FPGA的品种很多,有XILINX公司的Virtex系列5。 3 全自动洗衣机的总体方案3.1方案内容1. 设计一个电子定时器,控制洗衣机作如下运转:定时启动®正转20秒®暂停10秒®反转20秒®暂停10秒®定时未到回到“正转20秒®暂停10秒®”,定时到则停止;2. 若定时到,则停机发出音响信号;3. 用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;4. 三只LED灯表示“正转”、“反转”、“暂停”三个状态6。3.2设计原理洗衣机控制器的设计主要是定时器的设计,由一片FPGA和外围电路构成了电器控制部分。FPGA接收按键的控制命令,控制洗衣机的工作状态、并控制显示工作时间以及设定直流电机正反转控制、制动控制、起停控制和运动状态控制(洗衣机洗涤过程如图3.1所示)。对FPGA芯片的编程采用模块化的VHDL (硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。顶层和中间层多数是由VHDL的元件例化语句实现。中间层由无刷直流电机控制、运行模式选择、定时器、显示控制、键盘扫描以及对直流电机控制板进行速度设定、正反转控制、启停控制等模块组成,它们分别调用底层模块。用LED显示正转20秒,暂停10秒,反转20秒,暂停10秒,60秒为一周期。因此此次设计的关键是计数器和定时器的设计7。图3.1设计流程图4 全自动洗衣机各模块解析4.1定时器模块由in_gei、in_shi输入分别为定时器个位和十位的时间信号,gei和shi为输出信号。此模块是为了实现洗衣机能够定时输入的功能,保证洗衣机能够正常运行,如图4.1所示。 4.1.1 定时器模块流程图图4.1定时器模块 4.1.2 定时器模块仿真结果和分析图4.2 定时器模块仿真图从仿真图上图4.2可以看到的是当我们拨动个位和十位的的时候.都可以显示出来数字.个位上的数字是从0到9的循环.而十位上的数字是0到6的循环.因为设置的时间是以分钟来计算的.可以设置的时间为0到60分钟内4.2分频器模块流程图Clk是分频器的时间信号,cp是以一秒钟为单位的60分频输出,提供给时间计数器的时间信号;wash_cp是6分频输出,提供状态灯的状态信号如图4.3所示。 4.2.1分频器模块流程图图4.3 分频器模块流程图4.2.2分频器模块仿真结果和分析图4.4分频器模块仿真图可以从仿真图4.4中看到分频模块的仿真效果,正如设定所需要的。我们给输入一个周期为20的时钟信号,然后对它进行编译,可以看到wash_cp的输出有了分频的效果,而CP还是以一秒钟为单位的60分频的输出, wash_cp的输出的分频效果是为了提供状态灯的状态信号,这样才能让灯亮起来从而表示正转.暂停.和反转的功能。4.3计数器模块Clk是计数器的时间信号;set是置数开始信号,它将外部信号送给come_in端口;BCD是计数器的输出,c是进位信号,如图4.5所示。 4.3.1 个位计数器模块流程图和仿真图4.5 个位计数器模块流程图图4.6 个位计数器模块仿真结果图如图4.6可见,我们给Clk一个周期为20的时钟信号,一段时间后打开set,set变成了1,而这时,外部的信号come_in从9开始计数,start是一个个位和十位计数器模块联系纽带,当个位为0但是十位不为0的时候,个位重新变9开始减;而当个位为0同时十位也为0的时候,个位不在变化,计时结束。而此处,只看个位计数器的效果,所以给start为0。我们也可以看到,结果的输出和理想中的是一致的,BCD是计数器的输出,从9开始一直减到0,然后继续跳回到9,以此循环。c是进位信号,当9的时候就能有一个进位的信号,让个位计数器的模块可以和十位计数器的模块结合起来。 4.3.2 十位计数器模块流程图和仿真图4.7 十位计数器模块流程图图4.8十位计数器模块仿真结果图我们看到如图4.7,和个位计数器图4.5模块进行对比,我们可以发现少一个start的输入,这就是十位计数器和个位计数器的不同,这是两个不同的模块。想要让个位计数器和十位计数器产生联系,那么就要让十位计数器的C的输出端口与个位计数器的start输入相连接,这样就能有一个减的效果,比如从50减到49,C输出信号十位不为0,start接收信号,十位不为0,那么个位继续重0变成9,然后逐步减少。当从09减到00时候,C输出信号十位为0,start接收信号,当十位为0的时候,个位不再变成9,而是保持0,那么就说明计时结束的操作。因为此仿真图4.8是单独十位模块进行的仿真,所以无法显示十位计数器和个位计数器的联系,下面的总程序的仿真,我们能够看到十位计数器和个位计数器的联系。而此图中,我们给Clk一个周期为20的时钟信号,一段时间后打开set,set变成了1,而这时,外部的信号come_in从15开始计数,外面的输出也从15然后减到了0,符合我们的程序8。5 全自动洗衣机整体电路仿真5.1 全自动洗衣机整体流程图图5.1 全自动洗衣机整体流程图5.2 全自动洗衣机整体仿真结果和分析图5.2 全自动洗衣机整体仿真结果图如图5.1和图5.2所示,我们能够看到的是整体的流程图和波形的仿真,也的确能达到我们所需要的实验要求。6 程序下载调试图1. 如图6.1. 显示的就是程序成功的拷到了开发板上的时候的原始样子图6.1 程序初始图2. 如图6.2 显示的是随意设定一个时间.在0到60之间.如24图6.2 随意设定时间图3. 如图6.3 显示的是当时间减到18分钟时候,暂停的灯亮起的时候图6.3 到18分钟暂停图4. 如图6.4 显示的当时间减到18分钟时候,正转的灯亮起的时候图6.4 到18分钟的正转图5. 如图6.5 显示的是当时间减到18分钟时候,反转的灯亮起的时候图6.5 到18分钟的反转图6. 如图6.6 显示的是当时间减到0分钟时候,报警的灯亮起的时候图6.6 到0分钟的结束图7 设计总结通过这次的数字电子技术设计,我可以说是受益良多。看到洗衣机控制器的题目,我首先想到的是状态机的设计,因为课本上说状态机其实就是控制器,可是自习分析后发现设计题目比较复杂,如果用状态机的思路来设计,比较困难超出了我的能力。结合老师的教导和自己的努力,想到如果用模块化层次化的设计思路更清晰,设计起来也更容易,特别是更符合EDA设计的流程,故自己开始设计各功能模块。洗衣机控制器主要实几种状态的循环改变,还有计时和数码显示的功能,所以我觉得电路主要有五大部分组成,包括:减法计数器、时序控制电路、预置时间和编码电路、数码管显示、译码器组成。在分析过程中,我遇到了不少困难,因为第一次遇到一个比较复杂的设计,刚开始不知道从哪里入手,所以借鉴了一些书和网上的资料,虽然很复杂,但是有很多借鉴的地方。通过这次设计,让我初步掌握了VHDL的设计方法与一些技巧,让我对FPGA的编程、定时器和计数器的设计更加熟悉,让我更加明白时序组合门电路设计思路和方法。在设计中也参了和查阅了很多资料,从中学到不少课本上没有的东西,并且充分认识到家电控制电路设计在一片FPGA芯片内,具有体积小、可靠性高、降低成本、设计周期短,功能灵活的特点,本人受益匪浅。经过了自己的思考,发现可以用FPGA接收键盘的控制命令,控制洗衣机的进水、排水、水位和洗衣机的工作状态、并控制显示工作状态以及设定直流电机速度、正反转控制、制动控制、起停控制和运动状态控制。对FPGA芯片的编程采用模块化的VHDL (硬件描述语言)进行设计,设计分为三层实现,顶层实现整个芯片的功能。顶层和中间层多数是由VHDL的元件例化语句实现,最后得到了成功。但是其实主要还是学到的就是团队合作的效果远远大于一个人的埋头苦干,很多自己无法发现的问题被学长或者老师一看就知道了错误在哪里,应该怎么修改等,也让我学到了如果从一个木有做过的设计然后一步步开始分析,入手,到现在基本掌握了这款软件的运行的流程,我感觉十分满足,也有了深深的成就感。在此,我也深深的想感谢一下帮助我的学长和老师,正是你们的一步步的教导,才能让我对这个软件有了解,对这个程序有把握,对这个科目感兴趣。所以我也希望以后还能有这样的设计能让我们进行专研,探究,只有探究的越深,才能发现自己理解的东西其实很少,才能有更多的欲望去学习,去思考。参考文献1 谭会生,张昌凡。EDA技术及应用M。西安:西安电子科技大学出版社,2008:11-15。2 马学条。 Quartus II在数字电路实验中的应用J。北京大学学报,2009,第6期:2-3。3焦素敏。EDA课程设计指导书M。郑州:河南工业大学,2008:75-89。4 黄继业,潘松。EDA技术实用教程M。北京:科学出版社,2012:124-136。5王国栋,潘松等。VHDL实用教程M。成都:电子科技大学出版社,2011:24-32。6 张亦华,延明。数字电路EDA入门M。北京:电子工业出版社,2008:46-54。7 夏宇闻。Verliog数字系统设计教程M。北京:航空航天大学出版社,2009:20-25。8 杨海钢,孙嘉斌,王慰。 FPGA器件设计技术发展综述D。北京:中国科学院电子学研究所,2010。附 录定时器模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dingshi isport( in_gei : in std_logic; in_shi: in std_logic; gei:out std_logic_vector(3 downto 0); shi:out std_logic_vector(3 downto 0) ); end dingshi;architecture art of dingshi issignal count: std_logic_vector(3 downto 0);signal count1: std_logic_vector(3 downto 0);beginprocess(in_gei,in_shi) isbegingei<=count;shi<=count1; if rising_edge(in_gei) then if count="1001" then count<="0000" else count<=count+1; end if; end if; if rising_edge(in_shi) then if count1="0110" then count1<="0000" else count1<=count1+1; end if; end if;end process;end art;分频器模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity wash_time is port ( clk : in std_logic; cp :out std_logic; wash_cp:out std_logic);end wash_time;architecture miao20 of wash_time issignal count: std_logic_vector(2 downto 0); signal shi: integer range 0 to 60;beginprocess(clk)begin if rising_edge(clk) then if shi=60 then shi<=0;cp<='1' else shi<=shi+1;cp<='0' end if; if count="101" then count<="000" wash_cp<='1' else count<=count+1; wash_cp<='0' end if; end if;end process;end miao20;个位计数器模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jishi isport( clk : in std_logic; set : in std_logic; start:in std_logic; come_in : in std_logic_vector(3 downto 0); BCD : out std_logic_vector(3 downto 0); c:out std_logic );end jishi;architecture art of jishi is signal count : std_logic_vector(3 downto 0);beginBCD <= count;process(clk,set,come_in,start)begin if set='0'then count <= come_in ; c<='0' elsif rising_edge(clk) and set='1' then if start='0' then if count = "0000" then c<='1'count<="1001" else count <= count-1;c<='0' end if; else count<="0000" end if; end if;end process;end art;十位计数器模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jishi_H isport( clk : in std_logic; set : in std_logic; come_in : in std_logic_vector(3 downto 0); BCD : out std_logic_vector(3 downto 0); c:out std_logic );end jishi_H;architecture art of jishi_H is signal count : std_logic_vector(3 downto 0);beginBCD <= count;process(clk,set,come_in)begin if clk='0'then count <= come_in ; c<='0' elsif rising_edge(set) then if count = "0000" thencount<="0000"c<='1' -c<='1'count<="1001" else count <= count-1;c<='0' end if; end if;end process;end art;

    注意事项

    本文(黄俊尧课程设计报告.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开