EDA课程设计实验报告

合集下载

EDA课程实验设计报告

EDA课程实验设计报告

《EDA课程实验设计报告》洗衣机自动控制器设计一实验要求:1、由一个按键控制洗衣机的启动、暂停。

2、洗衣机洗涤一定时间后,能自动停止,由一个LED灯闪烁提示,并发出报警提示。

3、洗涤时间能用数码管显示,暂停时时间停止,暂停后时间在停止的时间基础上继续计时。

4、用至少四个LED指示灯的流动表示洗衣机的正转和反转。

即当正转20秒时,四个指示灯从右向左循环移动;反转20秒时,四个指示灯从右向左循环移动。

5、暂停10秒时,四个指示灯闪烁来表示电机停止转动。

二.设计总体思路,基本原理1.设计总体思路从课程设计要求来看,要求实现电机的正传、反转、暂停,用四个LED灯的状态来表示,当显示时间前20秒正传、暂停10秒、反转20秒、再暂停10秒,如此一来,周期恰好是60秒,理所当然的分钟计数器、秒计数器是一定要有的。

接下来脉冲是一定的了,但是有分钟计数器和秒钟计数器还要考虑是不是要60分频器,就我们所学过的来说实现循环有移位寄存器;还有个问题,当洗涤时间到了,报警还要一个报警电路,根据要求,报警的蜂鸣器不可以长时间的叫,要有个合理的时间,我们可以用一个单稳态电路来实现。

方案为:直接从数值上进行提取信号来控制一个可以实现循环的74LS194来实现。

2.基本原理首先,从秒脉冲出来的信号,经过一个控制电路后进入秒计数器进行秒计数,进行清零,这时用户置入洗涤时间,并按开始按钮,洗衣机开始工作。

当秒计数器变为零的时候,去分钟计数器上面借数;与此同时,从十秒位转化出来的信号进入移位寄存器后,LED灯表示出电机运转状态;当用户设定的洗涤时间结束后,电路报警并清零。

三.单元电路设计1.一百进制分计数器和六十秒计数器的设计(1)分、秒计数器的设计分、秒计数器我们都用74192片,74192上升沿触发,由UP,DOWN两管脚控制加减计数,有异步置数端LOAR和异步复位端CLR,BO’和CO’分别输出高电平表示加进位和减进位。

由于74192没有保持脚,故需要外围电路实现保持功能。

EDA-实验报告

EDA-实验报告

实验一五人表决器设计一、实验目的1 加深对电路理论概念的理解3 加深计算机辅助分析及设计的概念4 了解及初步掌握对电路进行计算机辅助分析的过程二、实验要求制作一个五人表决器,共五个输入信号,一个输出信号。

若输入信号高电平数目多于低电平数目,则输出为高,否则为低。

三、实验原理根据设计要求可知,输入信号共有2^5=32种可能,然而输出为高则有15种可能。

对于本设计,只需一个模块就能完成任务,并采用列写真值表是最简单易懂的方法。

四、计算机辅助设计设A,B,C,D,E引脚为输入引脚,F为输出引脚。

则原理图如1所示图1.1 五人表决器原理图实验程序清单如下:MODULE VOTEA,B,C,D,E PIN;F PIN ISTYPE 'COM';TRUTH_TABLE([A,B,C,D,E]->[F])[0,0,1,1,1]->[1];[0,1,1,1,0]->[1];[0,1,0,1,1]->[1];[0,1,1,0,1]->[1];[1,0,1,1,1]->[1];[1,1,0,1,1]->[1];[1,1,1,0,1]->[1];[1,1,1,1,0]->[1];[1,1,1,0,0]->[1];[1,1,0,1,0]->[1];[1,1,1,1,1]->[1];[1,1,0,0,1]->[1];[1,0,0,1,1]->[1];[1,0,1,0,1]->[1];[1,0,1,1,0]->[1];END五、实验测试与仿真根据题目要求,可设输入分别为:0,0,0,0,0;1,1,1,1,1;1,0,1,0,0;0,1,0,1,1。

其测试程序如下所示:MODULE fivevoteA,B,C,D,E,F PIN;X=.X.;TEST_VECTORS([A,B,C,D,E]->[F])[0,0,0,0,0]->[X];[1,1,1,1,1]->[X];[1,0,1,0,0]->[X];[0,1,0,1,1]->[X];END测试仿真结果如图1.2所示:图1.2 五人表决器设计仿真图可知,设计基本符合题目要求。

eda课程设计--EDA课程设计实验报告

eda课程设计--EDA课程设计实验报告

eda课程设计一EDA课程设计实验报告EDA课程设计实验报告学曉宿息工程学阮专业通信工程学号________________農名___________________任镌教师_________________2013 年10 月30 q一、FPGA 简介随着基于FPGA 的EDA 技术的发展和应用领域的扩大与深入,EDA 技术在电 子信息.通信.自动控制及计算机等领域的重要性日益突出。

作为一个学通信 工程专业的学生,我们必须不断地去了解更多的新产品信息,这就更加要求我 们对EDA 有个全面的认识。

信号发生器在我们的日常中有很重要的应用,用VHDL 语言去实现设计将会使我们对本学科知识可以更好地掌握。

本设计是一个基于VHDL 的釆用自顶向下设计方法实现的信号发生器,该设 计方法具有外围电路简单,程序修改灵活和调试容易等特点,并通过计算机仿 真证明了设计的正确性。

要求设计一个函数发生器,该函数发生器能够产生递增斜波.递减斜波、 方波、三角波.正弦波.及阶梯波,并且可以通过选择开关选择相应的波形输 出;系统具有复位的功能;通过按键确定输出的波形及确定是否输出波形。

FPGA 是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等 功能。

通过以上分析设计要求完成的功能,确定函数发生器可由递增斜波产生模 块.递减斜波产生模块.三角波产生模块.阶梯波产生模块.正弦波产生模块、 方波产生模块和输出波形选择模块组成,以及按键复位控制和时钟输入。

由此 可确定系统的总体原理框图为:三、方案选择1、波形函数发生方案对比选择时 --- ► 复--- ►波形发生模块目分析波形输出选波形函数发生是本设计的最重要的部分,实现函数发生的途径也有很多,因此必须选择一种易于实现且精度高的方案,以此来提高本设计的实用性。

本信号发生器利用在系统编程技术和FPGA芯片产生。

用VHDL语言编写程序,调试成功后下载至实验装置的芯片上,再利用外接D/A转换电路实现以上设计功能。

南京理工大学EDA1实验报告(模电部分)

南京理工大学EDA1实验报告(模电部分)

南京理工大学EDA课程设计(一)实验报告专业:自动化班级:姓名:学号:指导老师:2013年10月摘要在老师的悉心指导下,通过实验学习和训练,我已经掌握基了于Multisim的电路系统设计和仿真方法。

在一周的时间内,熟悉了Multisim软件的使用,包括电路图编辑、虚拟仪器仪表的使用和掌握常见电路分析方法。

能够运用Multisim软件对模拟电路进行设计和性能分析,掌握EDA设计的基本方法和步骤。

实验一:单级放大电路的仿真及设计,设计一个分压偏置的单管电压放大电路,并进行测试与分析,主要测试最大不失真时的静态工作点以及上下限频率。

实验二:负反馈放大电路的设计与仿真,设计一个阻容耦合两级电压放大电路,给电路引入电压串联深度负反馈,,观察负反馈对电路的影响。

实验三:阶梯波发生器的设计与仿真,设计一个能产生周期性阶梯波的电路,对电路进行分段测试和调节,直至输出合适的阶梯波。

改变电路元器件参数,观察输出波形的变化,确定影响阶梯波电压范围和周期的元器件。

关键词:EDA设计及仿真multisim 放大电路反馈电路阶梯波发生器实验一:单级放大电路的仿真及设计一、实验要求1、设计一个分压偏置的单管电压放大电路,要求信号源频率5kHz(峰值10mV) ,负载电阻5.1kΩ,电压增益大于50。

2、调节电路静态工作点(调节电位计),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。

3、调节电路静态工作点(调节电位计),使电路输出信号不失真,并且幅度最大。

在此状态下测试:(1)电路静态工作点值;(2)三极管的输入、输出特性曲线和 、r be 、r ce值;(3)电路的输入电阻、输出电阻和电压增益;(4)电路的频率响应曲线和f L、f H值。

二、实验步骤1、设计分压偏置的单级放大电路如图1-1所示:图1-1、单级放大电路原理图2、电路饱和失真输出电压波形图调节电位器的阻值,改变静态工作点,当电阻器的阻值为0%Rw,交流电压源为10mV时,显示饱和失真的波形图如图1-2所示:图1-2、电路饱和失真输出电压波形图饱和失真时的静态工作点:Ubeq=636。

EDA实验报告(12份).pdf

EDA实验报告(12份).pdf

实验一组合电路的设计1. 实验目的:熟悉MAX + plus II 的VHDL 文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

2. 实验内容:设计一个2选1多路选择器,并进行仿真测试,给出仿真波形。

3. 实验程序如下:library ieee;use ieee.std_logic_1164.all; entity mux21a isport(a,b,s:in std_logic;y:out std_logic); end entity mux21a; architecture one of mux21a is beginy<=a when s='0' else b ; end architecture one ;4. 仿真波形(如图1-1所示)图1-1 2选1多路选择器仿真波形5. 试验总结:从仿真波形可以看出此2选1多路选择器是当s为低电平时,y输出为b, 当s为高电平时,y输出为a(y<=a when s='0' else b ;),完成2路选择输出。

实验二时序电路的设计1. 实验目的:熟悉MAX + plus II VHDL文本设计过程,学习简单的时序电路设计、仿真和测试。

2. 实验验内容:设计一个锁存器,并进行仿真测试,给出仿真波形。

3. 实验程序如下:library ieee;use ieee.std_logic_1164.all;entity suocun7 isport(clk: in std_logic;en: in std_logic;D: in std_logic_vector(7 downto 0);B:out std_logic_vector(7 downto 0)); end suocun7;architecture one of suocun7 issignal K: std_logic_vector(7 downto 0); beginprocess(clk,en,D)beginif clk'event and clk='1' thenif en ='0'thenK<=D;end if;end if;end process;B<=K;end one;4.仿真波形(如图2-1所示)图2-1 8位锁存器仿真波形此程序完成的是一个8位锁存器,当时钟上升沿到来(clk'event and clk='1')、使能端为低电平(en ='0')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。

EDA实验报告完结版

EDA实验报告完结版

EDA实验报告完结版一、实验目的本次 EDA 实验的主要目的是通过实际操作和设计,深入理解和掌握电子设计自动化(EDA)技术的基本原理和应用。

具体而言,包括熟悉 EDA 工具的使用方法,学会运用硬件描述语言(HDL)进行逻辑电路的设计与描述,以及通过综合、仿真和实现等流程,将设计转化为实际的硬件电路,并对其性能进行评估和优化。

二、实验环境本次实验所使用的 EDA 工具为_____,该工具提供了丰富的功能模块和强大的设计支持,包括原理图编辑、HDL 代码编写、综合、仿真和下载等。

实验所使用的硬件平台为_____开发板,其具备多种接口和资源,便于对设计的电路进行实际验证和测试。

三、实验内容1、基本逻辑门电路的设计与实现使用 HDL 语言(如 Verilog 或 VHDL)设计常见的基本逻辑门电路,如与门、或门、非门等。

通过编写代码,对逻辑门的输入输出关系进行描述,并进行综合和仿真,验证设计的正确性。

2、组合逻辑电路的设计与实现设计并实现较为复杂的组合逻辑电路,如加法器、减法器、编码器、译码器等。

运用 HDL 语言描述电路的功能,进行综合和仿真,确保电路在各种输入情况下的输出结果符合预期。

3、时序逻辑电路的设计与实现设计常见的时序逻辑电路,如计数器、寄存器、移位寄存器等。

在设计过程中,考虑时钟信号、同步复位和异步复位等因素,通过仿真验证时序逻辑的正确性,并对电路的性能进行分析。

4、有限状态机(FSM)的设计与实现设计一个有限状态机,实现特定的功能,如交通信号灯控制器、数字密码锁等。

明确状态转移条件和输出逻辑,通过编写 HDL 代码实现状态机,并进行综合和仿真,验证其功能的准确性。

5、综合与优化对设计的电路进行综合,生成门级网表,并通过优化工具对电路进行面积、速度等方面的优化,以满足特定的设计要求。

6、硬件实现与测试将综合后的设计下载到硬件开发板上,通过实际的输入输出信号,对电路的功能进行测试和验证。

观察电路在实际运行中的表现,对出现的问题进行分析和解决。

EDA课程设计报告

EDA课程设计报告•相关推荐EDA课程设计报告在我们平凡的日常里,报告的使用成为日常生活的常态,报告中涉及到专业性术语要解释清楚。

那么报告应该怎么写才合适呢?以下是小编为大家整理的EDA课程设计报告,希望对大家有所帮助。

EDA课程设计报告1实训任务:一、实训目的和要求:(1)熟练掌握keil c51集成开发环境的使用方法(2)熟悉keil c51集成开发环境调试功能的使用和dp?51pro。

net单片机仿真器、编程器、实验仪三合一综合开发平台的使用。

(3)利用单片机的p1口作io口,学会利用p1口作为输入和输出口。

(4)了解掌握单片机芯片的烧写方法与步骤。

(5)学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。

(6)掌握利用protel 99 se绘制电路原理图及pcb图。

(7)了解pcb板的制作腐蚀过程。

二、实训器材:pc机(一台)pcb板(一块)520ω电阻(八只)10k电阻(一只)led发光二极管(八只)25v 10μf电容(一只)单片机ic座(一块)at89c51单片机芯片(一块)热转印机(一台)dp?51pro。

net单片机仿真器、编程器、实验仪三合一综合开发平台(一台)三、实训步骤:(2)将流水灯程序编写完整并使用tkstudy ice调试运行。

(4)打开电源,将编写好的程序运用tkstudy ice进行全速运行,看能否实现任务要求。

(6)制板。

首先利用protel 99 se画好原理图,根据原理图绘制pcb图,然后将绘制好的pcb布线图打印出来,经热转印机转印,将整个布线图印至pcb板上,最后将印有布线图的pcb板投入装有三氯化铁溶液的容器内进行腐蚀,待pcb板上布线图外的铜全部后,将其取出,清洗干净。

(7)焊接。

将所给元器件根据原理图一一焊至pcb板相应位置。

(8)调试。

先把at89c51芯片插入ic座,再将+5v电源加到制作好的功能板电源接口上,观察功能演示的整个过程(看能否实现任务功能)。

eda课程设计报告

eda课程设计报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。

2. 学生能运用EDA软件进行电路设计与仿真,理解并掌握数字电路的设计原理。

3. 学生了解并掌握基础的硬件描述语言(如VHDL/Verilog),能完成简单的数字系统设计。

技能目标:1. 学生通过EDA软件的操作,培养电子电路设计、仿真与验证的实际操作能力。

2. 学生通过小组合作完成设计项目,提高团队协作与沟通技巧。

3. 学生能够运用所学知识解决实际问题,具备一定的创新意识和动手能力。

情感态度价值观目标:1. 学生在EDA课程学习中,培养对电子科学技术的兴趣和探究精神。

2. 学生通过课程实践,增强自信心和成就感,激发进一步学习的动力。

3. 学生在学习过程中,树立正确的工程伦理观念,认识到技术发展对社会的责任和影响。

课程性质:本课程为电子信息工程及相关专业高年级学生的专业核心课程,旨在通过理论与实践相结合的教学,提高学生的电子设计能力。

学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望,对新技术和新工具充满好奇心。

教学要求:结合学生特点,注重培养实际操作能力,鼓励学生创新思维,提高解决实际问题的能力。

通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面成长。

后续教学设计和评估将以此为基础,关注学生的学习成果。

二、教学内容根据课程目标,教学内容分为以下三个模块:1. EDA基本概念与工具使用- 教材章节:第一章 EDA技术概述,第二章 EDA工具简介- 内容列举:EDA发展历程,常用EDA软件介绍,软件安装与配置,基本操作流程。

2. 数字电路设计与仿真- 教材章节:第三章 数字电路设计基础,第四章 仿真技术- 内容列举:数字电路设计原理,EDA软件电路设计流程,仿真参数设置,波形分析与验证。

3. 硬件描述语言与数字系统设计- 教材章节:第五章 硬件描述语言,第六章 数字系统设计实例- 内容列举:硬件描述语言基础,VHDL/Verilog语法要点,简单数字系统设计方法,设计实例分析与实操。

EDA实验报告 (2)

实验一QUARTUS II软件安装、基本界面及设计入门一、实验目的:QUARTUSII是Altera公司提供的EDA工具,是当今业界最优秀的EDA设计工具之一。

提供了一种与结构无关的设计环境,使得电子设计人员能够方便地进行设计输入、快速处理和器件编程。

通过本次实验使学生熟悉QUARTUSII软件的安装,基本界面及基本操作,并练习使用QUARTUS的图形编辑器绘制电路图。

二、实验内容:1、安装QUARTUSII软件;2、熟悉QUARTUSII基本界面及操作;3通过一个4位加法器的设计实例来熟悉采用图形输入方式进行简单逻辑设计的步骤。

三、实验仪器:1、PC机一台;2、QUARTUSII软件;3、EDA实验箱。

四、实验原理:4位加法器是一种可实现两个4位二进制数的加法操作的器件。

输入两个4位二进制的被加数A和B,以及输入进位Ci,输出为一个4位二进制和数D和输出进位数Co。

半加操作就是求两个加数A、B的和,输出本位和数S及进位数C。

全加器有3位输入,分别是加数A、B和一个进位Ci。

将这3个数相加,得出本位和数(全加和数)D和进位数Co。

全加器由两个半加器和一个或门组成。

五、实验步骤:安装QUARTUSII软件;因为实验时我的机器了已经有QUARTUSII软件,所以我并没有进行安装软件的操作。

设计半加器:在进行半加器模块逻辑设计时,采用由上至下的设计方法,在进行设计输入时,需要由下至上分级输入,使用QuartusIIGraphic Editor进行设计输入的步骤如下。

(1)、打开QUARTUSII软件,选择File-new project wizard…新建一个设计实体名为has的项目文件;(2)、新建文件,在block.bdf窗口下添加元件符号,并连接。

如下图:半加器原理图(3)、将此文件另存为has.gdf的文件。

(4)、在主菜单中选择Processing→Start Compilation命令,系统对设计进行编译,同时打开Compilation Report Flow Summary窗体,Status视图显示编译进程。

EDA课程设计报告

EDA课程设计报告流水灯控制器的设计与仿真学院专业班级学号姓名一.实验目的及要求实验目的1.通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL的编程方法,熟悉以Herilong HDL文件为顶层模块的设计。

2.学习和体会分支条件语句casc的使用方法及FPGA I/O口的输出控制。

实验要求:1、设计能带8个LED发光管发光,并按照要求轮流发光,产生流水灯的流动效果。

2、应具有三种以上不同风格的流动闪亮效果。

3、具有三种以上功能4、对源程序进行修改二、实验内容1:新建一个名为流水灯的文件夹;2:新建一个名为流水灯的工程;3:设计程序,其中包含所需功能;4:编译、运行、调试;5:定义引脚、编译;6:下载到实验箱观看运行结果;三、实验代码module liushuideng(LED,CLK,reset,counter,clk4,count);output[7:0] LED;output [24:0] counter;output clk4;output count;input CLK,reset;reg [7:0] LED;reg [7:0] counter;reg[7:0] count;wire clk4;always@(posedge CLK)begin if(count==8) count<=0;else count<=count+1;endassign clk4=count[2];initialLED=8'b11111111;always@(posedge clk4)beginif(counter<25)counter<=counter+1;else counter<=0;LED<=LED<<1;if(LED==8'b00000000)LED<=8'b11111111;case(counter)1:LED<=8'b00000001;2:LED<=8'b10000000;3:LED<=8'b01000000;4:LED<=8'b00100000;5:LED<=8'b00010000;6:LED<=8'b00001000;7:LED<=8'b00000100;8:LED<=8'b00000010;9:LED<=8'b00000001;10:LED<=8'b00000000;11:LED<=8'b00000001;12:LED<=8'b00000011;13:LED<=8'b00000111;14:LED<=8'b00001111;15:LED<=8'b00011111;16:LED<=8'b00111111;17:LED<=8'b01111111;18:LED<=8'b11111111;19:LED<=8'b00000000;20:LED<=8'b11100111;21:LED<=8'b00000000;22:LED<=8'b11000011;23:LED<=8'b00000000;24:LED<=8'b10000001;25:LED<=8'b00000000;endcaseendendmodule四、调试心得1、通过这次课程设计,我学到了许多,不仅掌握了更多EDA知识,而且对它有了更深的认识。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字电路课程设计题目:基于FPGA的4层电梯控制设计者:##学号:######## 专业:电子指导老师:周冰航日期:2010年11月一、基本原理设计一个4层楼的电梯控制器。

该控制器可控制电梯完成4层楼的载客服而且遵循方向优先原则,并能响应提前关门延时关门;同时指示电梯运行情况、电梯开关门状态和电梯内外请求信息。

可选的电梯控制方式:1.内部请求优先控制方式2.单向层层停控制方式3.方向优先控制方式1.内部请求优先控制方式方案内部请求优先控制方式类似于出租车的工作方式,先将车上的人送至目的地,再去载客。

作为通用型电梯应该服务于大多数人,必须考虑电梯对内、外请求的响应率P:Pin = 100%;Pout = 0~100%;在内部请求优先控制方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的请求信号可能被长时间忽略,因而它不能作为通用型电梯的设计方案。

2.单向层层停控制方式方案单向层层停控制方式等同于火车的运行方式,遇站即停止、开门。

这种方案的优点在于“面面俱到”,可以保证所有人的请求都能得到响应。

然而这样对电梯的效率产生消极影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,就浪费了大量电能。

对用户而言,此种控制方式的请求响应时间也不是很快。

因而这不是理想的方案。

3.方向优先控制方式方案方向优先控制是指电梯运行到某一楼层时先考虑这一楼层是否有请求:有,则停止;无,则继续前进。

停下后再启动时,①考虑前方——上方、或下方是否有请求:有,则继续前进;无,则停止;②检测后方是否有请求,有请求则转向运行,无请求则维持停止状态。

这种运作方式下,电梯对用户的请求响应率为100%,且响应的时间较短。

假设:电梯每两层间的运行时间为ΔT ,楼层数为6, 在每层楼的停止时间为t, 如果每层楼都有请求,则这种控制方式的效率和上面的单向每层停等控制方式的效率一样, 然而, 当不是每层楼都有请求(假定为只有第6层有请求输入) 时,上面的方式2(设为A方式)的响应时间T=5*(ΔT + t )而方向优先控制方式(设为B方式)对同一请求的响应时间T1=5*ΔT即效率比ηb/ηa = 1 + t /ΔT方向优先控制方式的效率远大于单向层层停等控制方式的效率。

而且,方向优先控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量电能,本设计选择方向优先控制方式。

二、模块设计:1.外部数据高速采集模块设计2.信号存储模块3.基于FPGA的中央处理模块4.信号的输出、显示模块1.外部数据高速采集模块设计对外部信号采集、处理要求电梯控制器:(1)外部请求信号的实时、准确采集。

(2)准确、实时的捕捉楼层到达信号。

(3)有效的防止楼层到达信号、外部请求信号的误判。

控制器采用FPGA作为系统控制的核心,系统时钟频率是32.0000MHz,完全可以满足实时采集数据的要求。

由于电路中毛刺现象的存在,信号的纯净度降低,单个的毛刺往往被误作为系统状态转换的触发信号,严重影响电梯的正常工作。

可以采用多次检测的方法解决这个问题,对一个信号进行多次采样以保证信号的可信度。

外部请求信号的输入形式为按键输入,到达楼层信号来自光敏传感器,关门中断信号及超载信号则产生于压力传感器。

键盘、光敏外部输入接口电路未设计。

2.信号存储模块电梯控制器的请求输入信号有10个(电梯外有3个上升请求和3个下降请求的用户输入断口,电梯内有4个请求用户输入断口),由于系统对内、外请求没有设置优先级,各楼层的内、外请求信号被采集后可先进行运算,再存到存储器内。

电梯运行过程中,由于用户的请求信号的输入是离散的,而且系统对请求的响应也是离散的,因此请求信号的存储要求新的请求信号不能覆盖原来的请求信号,只有响应动作完成后才能清除存储器内对应的请求信号位。

3.基于FPGA的中央处理模块中央数据处理模块是系统的核心,通过对存储的数据(含请求、到达楼层等信号)进行比较、判断以驱动系统状态的流转。

电梯工作过程中共有6种状态:等待、上升、下降、开门、关门、停止状态。

一般情况下,电梯工作起始点是第一层,起始状态是等待状态,启动条件是收到上升请求。

本系统由请求信号启动,运行中每检测到一个到达楼层信号,就将信号存储器的请求信号和楼层状态信号进行比较,再参考原方向信号来决定是否停止,转向等动作。

4.信号的输出、显示模块本系统的输出信号有两种:一种是电机的升降控制信号(两位)和开门/关门控制信号;另一种是面向用户的提示信号(含楼层显示、方向显示、已接受请求显示等)。

电机的控制信号一般需要两位,本系统中电机有3种工作状态:正转、反转和停转状态。

两位控制信号作为一个三路开关的选通信号,此三路开关选用模拟电子开关。

系统的显示输出包括数码管楼层显示、数码管请求信号显示和表征运动方向的箭头形指示灯的开关信号。

完全可以满足人们的需要,而且效率比较高。

由于本次实验的实验条件所限,很多输入与输出的功能无法在实验板上实现,所以本文仅以电梯控制器的主要模块为对象。

三、实验过程1、掌握AltiumDesigner软件基本使用方法和VHDL编程的初步知识本次课程设计可以说是从零开始,第一天老师给我们介绍了设计软件的基本使用方法和一个VHDL程序(60进制计数器)。

主要任务是掌握软件的基本使用方法,包括项目的新建、编辑、编译、仿真等,同时以60进制计数器为例介绍VHDL编程的基本模式。

由于软件是全英文版,我第一天的时间都花在熟悉软件功能上。

通过多遍观看老师的讲解课件与重复操作,终于熟悉了软件的使用方法,并将软件的使用心得总结在一张纸上,从而完成了第一步——掌握软件使用方法。

意识到本次设计基于VHDL编程,我又在晚上花了点时间学习有关VHDL编程的初步知识。

第二天,老师布置了一个任务:将60进制计数器改编为24进制计数器。

通过一上午的努力我成功实现了24进制计数器,看到仿真波形的时候,感觉很好。

2、选则设计课题并初步构思到了第三天,同学们都基本熟悉了软件和VHDL编程,许多同学跃跃欲试。

老师给我们介绍了本次课程设计的几个选题,其中要数“电梯控制设计”最难,并且目前的记录是7层电梯。

考虑到时间很充裕,我决定挑战一下自我,选定电梯作为自己的设计项目。

第三天和第四天我和同样选择了电梯的吴文正同学讨论电梯的实现方法。

首先要明确电梯的功能,为此,我们专门到综合楼亲自乘坐电梯来明确电梯的功能;然后我们开始投入到怎样编写程序中,但是感觉没有头绪,电梯的状态实在太多。

这几天,我们在实验室到寝室的路上一直在讨论着电梯。

第五天上午,我们请教了周老师。

周老师给我们的建议是先不要急着编程,而是将精力放在分析电梯的状态。

3、电梯主控模块的VHDL实现第六天晚上,通过前一阶段的思考和查阅资料,我开始着手编写电梯主控程序。

经过一个晚上的努力,我完成了VHDL编程,这时候我的感觉是电梯没有想象中的难。

4、电梯主控模块程序的仿真与排错同所有编程过程一样,难的不是写代码而是Debug。

将程序仿真以后,我才发现错误不断,接下来几天我基本在不停的仿真与排错。

到了星期四,除电梯外其他项目的同学都已经验收,而我的电梯还停留在主控模块。

期间想过换项目,但已经走到这一步了,想放弃都难,于是硬着头皮往下走。

5、原理图和下板检测又是对着电脑屏幕的一天,我完成了输入、输出和主控模块的连接,即完成了原理图,并下板测试。

结果还是有问题,且问题出在主控模块里面。

在验收截止日期前几个小时,我终于获得了重大突破,解决了一系列的问题,4层电梯已经可以“动”起来。

电梯控制器的vhdl程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY DT ISPORT(CLK,R:IN STD_LOGIC;ILCDN,ILCUP,ILCNB: IN STD_LOGIC_VECTOR(7 DOWNTO 0);--各楼层按钮OLCDN,OLCUP,OLCNB: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--各楼上、下请求按钮和电梯内楼层按钮显示ODNUP:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);--上下运行状态显示OLC:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--电梯当前楼层ODOOR:OUT STD_LOGIC);--门状态显示END DT;ARCHITECTURE JGT OF DT ISTYPE STATE_TYPE IS(STOPON1,DOOROPEN,DOORCLOSE,WAIT1,WAIT2,WAIT3,WAIT4,UP,DOWN,STOP);SIGNAL STATE:STATE_TYPE;SIGNAL DOOR:STD_LOGIC;SIGNAL POSITION :INTEGER RANGE 1 TO 4;SIGNAL DNUP : STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL LC: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL LCDN,LCUP,LCNB: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(LC,DNUP,DOOR,LCNB,LCDN,LCUP)--输出BEGINOLC<=LC;ODNUP<=DNUP;OLCDN<=LCDN;OLCNB<=LCNB;OLCUP<=LCUP;ODOOR<=DOOR;END PROCESS;PROCESS(R,CLK)--主BEGINIF R='1' THENSTATE<=STOPON1;DOOR<='0';DNUP<="01";LC<="0001";POSITION<=1;LCDN<="00000000"; LCUP<="00000000"; LCNB<="00000000";ELSIF CLK='1' AND CLK 'EVENT THENCASE STATE ISWHEN STOPON1=>DOOR<='0'; --1 楼停,门开(灯亮)POSITION<=1;STATE<=WAIT1;WHEN WAIT1=>STATE<=WAIT2; --停WHEN WAIT2=>IF ILCNB(1)='1' THEN LCNB(1)<='1';END IF;--输入读入IF ILCNB(2)='1' THEN LCNB(2)<='1';END IF;IF ILCNB(3)='1' THEN LCNB(3)<='1';END IF;IF ILCNB(4)='1' THEN LCNB(4)<='1';END IF;IF ILCUP(0)='1' THEN LCUP(0)<='1';END IF;IF ILCUP(1)='1' THEN LCUP(1)<='1';END IF;IF ILCUP(2)='1' THEN LCUP(2)<='1';END IF;IF ILCDN(1)='1' THEN LCDN(1)<='1';END IF;IF ILCDN(2)='1' THEN LCDN(2)<='1';END IF;IF ILCDN(3)='1' THEN LCDN(3)<='1';END IF;STATE<=WAIT3;WHEN WAIT3=>STATE<=WAIT4;WHEN WAIT4=>STATE<=DOORCLOSE;--门关状态WHEN DOORCLOSE=>DOOR<='0';--门灯灭--门关时上升状态IF DNUP="01"THENIF POSITION=4 THEN--电梯在四楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000" THENDNUP<="10";STATE<=DOWN;--无请求ELSIF LCNB(4)='1'OR LCDN(3)='1' THENDNUP<="10";STATE<=STOP;ELSEDNUP<="10";STATE<=DOWN; --有请求,转下降状态END IF;ELSIF POSITION=3 THEN--电梯在三楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000" THENELSIF LCNB(3)='1' OR LCUP(2)='1' THEN--3楼请求上升DNUP<="01";STATE<=STOP;ELSIF LCNB(4)='1' OR LCDN(3)='1' THEN--4楼请求下降DNUP<="01";STATE<=UP;ELSIF LCNB(3)='1' OR LCDN(2)='1' THEN--3楼请求下降DNUP<="10";STATE<=STOP;ELSEDNUP<="10";STATE<=DOWN; --3\4楼无请求,1\2楼下降请求,转下降状态END IF;ELSIF POSITION=2 THEN--电梯在二楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000" THENDNUP<="01";STATE<=UP;--无请求,上升状态ELSIF LCUP(1)='1' OR LCNB(2)='1' THEN--2楼请求上DNUP<="01";STATE<=STOP;ELSIF LCUP(2)='1' OR LCUP(3)='1' OR LCNB(3)='1' OR LCNB(4)='1' THENDNUP<="01";STATE<=UP; --3\4楼有请求,上升状态ELSIF LCDN(1)='1' THENDNUP<="10";STATE<=STOP;--2楼请求下降,停ELSIF LCUP(0)='1' OR LCNB(1)='1' THENDNUP<="10";STATE<=DOWN;--1楼请求,转DOWNEND IF;ELSIF POSITION=1 THEN--电梯在一楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000" THENDNUP<="01";STATE<=UP;--无请求ELSIF LCUP(0)='1' OR LCNB(1)='1' THENDNUP<="01";STATE<=STOP;--1楼请求ELSEDNUP<="01";STATE<=UP;END IF;END IF;END IF;--门关时下降状态IF DNUP="10"THENIF POSITION=1 THEN--电梯在一楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000"THENDNUP<="01";STATE<=UP;--无请求ELSIF LCUP(0)='1' OR LCNB(1)='1' THEN--1楼请求DNUP<="01";STATE<=STOP;ELSEEND IF;ELSIF POSITION=2 THEN--电梯在二楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000"THENDNUP<="10";STATE<=DOWN; --无请求,门关,DOWNELSIF LCDN(1)='1' OR LCNB(2)='1' THEN--2楼请求DNUP<="10";STATE<=STOP; --STOPELSIF LCUP(0)='1' OR LCNB(1)='1' THEN--1楼请求上DNUP<="10";STATE<=DOWN;ELSEDNUP<="01";STATE<=UP; --1楼无请求,转上升状态END IF;ELSIF POSITION=3 THEN--电梯在三楼IF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000"THENDNUP<="10";STATE<=DOWN; --无请求,门关,DOWNELSIF LCDN(2)='1' OR LCNB(2)='1' THEN--3楼请求下DNUP<="10";STATE<=STOP;ELSIF LCDN(1)='1' OR LCUP(0)='1' OR LCNB(2)='1' OR LCNB(1)='1' THEN--1\2楼请求DNUP<="10";STATE<=DOWN;ELSIF LCUP(2)='1' THEN--3楼请求上DNUP<="01";STATE<=STOP;ELSEDNUP<="01";STATE<=UP;END IF;ELSIF POSITION=4 THENIF LCDN="00000000"AND LCUP="00000000"AND LCNB="00000000"THENDNUP<="10";STATE<=DOWN; --无请求,门关,DOWNELSIF LCDN(3)='1' OR LCNB(3)='1' THENDNUP<="10";STATE<=STOP;--4楼请求ELSEDNUP<="10";STATE<=DOWN;END IF;END IF;END IF;--上升运行状态WHEN UP=>IF ILCNB(1)='1' THEN LCNB(1)<='1';END IF;--输入读入IF ILCNB(2)='1' THEN LCNB(2)<='1';END IF;IF ILCNB(3)='1' THEN LCNB(3)<='1';END IF;IF ILCNB(4)='1' THEN LCNB(4)<='1';END IF;IF ILCUP(0)='1' THEN LCUP(0)<='1';END IF;IF ILCUP(1)='1' THEN LCUP(1)<='1';END IF;IF ILCUP(2)='1' THEN LCUP(2)<='1';END IF;IF ILCDN(1)='1' THEN LCDN(1)<='1';END IF;IF ILCDN(2)='1' THEN LCDN(2)<='1';END IF;IF ILCDN(3)='1' THEN LCDN(3)<='1';END IF;IF POSITION=4 AND (LCNB(4)='1'OR LCDN(3)='1') THENDNUP<="10";STATE<=STOP;--4楼(顶楼)有下降请求,保持状态ELSIF POSITION=4 AND (LCNB(4)='0'OR LCDN(3)='0') THEN DNUP<="10";POSITION<=POSITION-1;LC<=LC-'1';STATE<=DOWN;ELSIF POSITION=3 AND (LCNB(3)='1'OR LCUP(2)='1') THEN DNUP<="01";STATE<=STOP;ELSIF POSITION=3 AND (LCNB(3)='0'OR LCUP(2)='0') THEN DNUP<="01";POSITION<=POSITION+1;LC<=LC+'1';STATE<=UP;ELSIF POSITION=2 AND (LCNB(2)='1'OR LCUP(1)='1') THEN DNUP<="01";STATE<=STOP;ELSIF POSITION=2 AND (LCNB(2)='0'OR LCUP(1)='0') THEN DNUP<="01";POSITION<=POSITION+1;LC<=LC+'1';STATE<=UP;ELSIF POSITION=1 AND (LCNB(1)='1'OR LCUP(0)='1') THEN DNUP<="01";STATE<=STOP;ELSIF POSITION=1 AND (LCNB(1)='0'OR LCUP(0)='0') THEN DNUP<="01";POSITION<=POSITION+1;LC<=LC+'1';STATE<=UP;END IF;--下降运行状态WHEN DOWN=>IF ILCNB(1)='1' THEN LCNB(1)<='1';END IF;--输入读入IF ILCNB(2)='1' THEN LCNB(2)<='1';END IF;IF ILCNB(3)='1' THEN LCNB(3)<='1';END IF;IF ILCNB(4)='1' THEN LCNB(4)<='1';END IF;IF ILCUP(0)='1' THEN LCUP(0)<='1';END IF;IF ILCUP(1)='1' THEN LCUP(1)<='1';END IF;IF ILCUP(2)='1' THEN LCUP(2)<='1';END IF;IF ILCDN(1)='1' THEN LCDN(1)<='1';END IF;IF ILCDN(2)='1' THEN LCDN(2)<='1';END IF;IF ILCDN(3)='1' THEN LCDN(3)<='1';END IF;IF POSITION=1 AND (LCNB(1)='1'OR LCUP(0)='1') THENDNUP<="01";STATE<=STOP;--底楼有请求,STOPELSIF POSITION=1 AND (LCNB(1)='0'OR LCUP(0)='0') THEN DNUP<="01";POSITION<=POSITION+1;LC<=LC+'1';STATE<=UP;ELSIF POSITION=2 AND (LCNB(2)='1'OR LCDN(1)='1') THEN DNUP<="10";STATE<=STOP;ELSIF POSITION=2 AND (LCNB(2)='0'OR LCDN(1)='0') THEN DNUP<="10";POSITION<=POSITION-1;LC<=LC-'1';STATE<=DOWN;ELSIF POSITION=3 AND (LCNB(3)='1'OR LCDN(2)='1') THEN DNUP<="10";STATE<=STOP;ELSIF POSITION=3 AND (LCNB(3)='0'OR LCDN(2)='0') THENDNUP<="10";POSITION<=POSITION-1;LC<=LC-'1';STATE<=DOWN;ELSIF POSITION=4 AND (LCNB(4)='1'OR LCDN(3)='1') THENDNUP<="10";STATE<=STOP;ELSIF POSITION=4 AND (LCNB(4)='0'OR LCDN(3)='0') THENDNUP<="10";POSITION<=POSITION-1;LC<=LC-'1';STATE<=DOWN;END IF;WHEN STOP=>STATE<=DOOROPEN;--停止状态门开WHEN DOOROPEN=>DOOR<='1';LCNB(POSITION)<='0';LCDN(POSITION-1)<='0';LCUP(POSITION-1)<='0';STATE<=WAIT1; --转门等待状态WHEN OTHERS=>STATE<=STOPON1;END CASE;END IF;END PROCESS;END JGT;仿真波形图管脚芯片图键盘转按键模块的vhdl程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;entity PADTOKEY isport (CPIN,R,VALIDKEY :IN STD_LOGIC;KEY :IN STD_LOGIC_VECTOR(3 DOWNTO 0);KEYOUT: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);CLK_1MHZ,RST: OUT STD_LOGIC);end entity ;architecture JGT of PADTOKEY isSIGNAL CTCP: INTEGER RANGE 0 TO 5;SIGNAL CPO :STD_LOGIC;SIGNAL CTCPO :INTEGER RANGE 0 TO 4999;TYPE STATES IS (S0,S1,S2);SIGNAL S: STATES;beginPROCESS(CPIN)BEGINIF CPIN='1' AND CPIN 'EVENT THENIF CTCP=5 THENCPO <= NOT CPO; CTCP<=0;ELSECTCP<=CTCP+1;END IF;END IF;END PROCESS;PROCESS(CPO,R)BEGINCLK_1MHZ<=CPO;IF R='1' THENRST<='0';S<=S0;CTCPO<=0; KEYOUT<="0000000000000000";ELSIF CPO='1' AND CPO 'EVENT THENIF CTCPO /= 4999 THENCTCPO<=CTCPO+1;ELSECTCPO<=0;CASE S ISWHEN S0 =>RST<='0';IF VALIDKEY='1' THENS<=S1;CASE KEY ISWHEN"0000"=>KEYOUT<="0000000000000001";WHEN"0001"=>KEYOUT<="0000000000000010";WHEN"0010"=>KEYOUT<="0000000000000100";WHEN"0011"=>KEYOUT<="0000000000001000";WHEN"0100"=>KEYOUT<="0000000000010000";WHEN"0101"=>KEYOUT<="0000000000100000";WHEN"0110"=>KEYOUT<="0000000001000000";WHEN"0111"=>KEYOUT<="0000000010000000";WHEN"1000"=>KEYOUT<="0000000100000000";WHEN"1001"=>KEYOUT<="0000001000000000";WHEN"1010"=>KEYOUT<="0000010000000000";WHEN"1011"=>KEYOUT<="0000100000000000";WHEN"1100"=>KEYOUT<="0001000000000000";WHEN"1101"=>KEYOUT<="0010000000000000";WHEN"1110"=>KEYOUT<="0100000000000000";WHEN"1111"=>KEYOUT<="1000000000000000";WHEN OTHERS=>NULL;END CASE;ELSES<=S0;KEYOUT<="0000000000000000";END IF;WHEN S1=>RST<='1';S<=S2;WHEN S2=>RST<='0';S<=S0;WHEN OTHERS=> NULL;END CASE;END IF;END IF;END PROCESS;end architecture JGT;管脚芯片图LCD显示模块--File name DIANTILCD-- 目的:在LCD上按格式显示电梯各楼层按键(8层)、当前楼层、运行方向、开关门状态--输入:LCDN、LCUP、LCNB:分别为楼层外部下、上以及梯内按键,每项8位,对应8层,每位为1表示-- 对应按键被按下。

相关文档
最新文档