当前位置:文档之家› 基于FPGA的设计 正文

基于FPGA的设计 正文

基于FPGA的设计 正文
基于FPGA的设计 正文

引言

随着经济和科学技术的发展,电梯在高层建筑物的作用越来越凸出。目前电梯主要分为机械系统与控制系统两大部份,而电梯的控制系统主要有三种控制方式分别是:继电路控制系统(“早期安装的电梯多位继电器控制系统)、基于FPGA控制系统、微机控制系统。实现继电路控制系统方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难,且该系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,已渐渐被人民淘汰。微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷,没能广泛应用电梯中。而基于FPGA的电梯控制系统由于可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。

本文给出一个基于FPGA的6层自动升降电梯控制系统的设计方案。它的设计是采用通俗易懂的Verilog HDL硬件描述语言使用EDA技术在Quartus II软件平台上设计完成,程序设计、编译以及时序仿真通过后再下载到开发板配合外围电路(模拟电梯的电路)来验证该系统的可行性。这个系统分主要有6个模块,分别是键盘响应寄存处理模块、上升/下降请求寄存处理模块、电梯运行和停止处理模块、开门/关门与延时处理模块、电梯运行方向判断模块和电梯运行状态显示模块。通过模块化设计不仅提高了程序编程错误的排查能力还提高了系统的可靠性。

1 概论

1.1 电梯国内外现状

1.1.1国内现状

电梯作为中国对外最早的行业经过多年的发展,电梯产品无论在数量和质量都有了显著的提高,和国外产品差距越来越小。考虑到经济性,现有国内的电梯控制系统,通常采用微机或可编程逻辑控制器对变频器进行多段速控制。在电梯传动系统方面,对于新装客梯及旧梯改造项目,大多数采用了交流变压变频

1.1.2国外现状

由于国外电梯技术发展早,因此国外电梯技术一直走在世界的前头。目前在电梯控制系统方面国外发达国家的电梯正在推广32位微机控制系统。他们都采用闭环反馈单

微处理机控制系统或多微处理机协调控制系统。在电梯传动系统方面,采用交流变压变频(VVVF)调速技术,实现电梯从超低速到高速无级调速的高精度运行,具有节能、对电网污染小、乘坐舒适感佳等优点。在电梯反馈系统方面,除了采用旋转编码器获得电梯轿厢位置信号外,还有一些厂家采用绝对值编码器从电梯轿厢上反馈位置信号给系统,对曳引电机进行以距离为原则的控制,以实现直接平层技术,达到优越的电梯运行效果。

国外电梯不仅仅在技术上有领先优势,同时在安装调试、售后服务和维修保养方面都下足功夫。在国外己有"法规"实行电梯制造、安装和维修一体化,实行由各制造企业认可的、法规认证的专业安装队和维修单位,承担安装调试、定期维修和检查试验,从而为电梯运行的可靠性和安全性提供了保证。

1.2 EDA技术的概述

EDA即电子设计自动化(Electronic Design Automation)的缩写,是在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。一般把EDA技术的发展分为CDA、CEA、和EDA

这三个阶段。EDA技术就是依靠强大的,在EDA软件平台上,以硬件描述语言HDL 为系统逻辑描述手段完成的设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

经过多年的发展,EDA技术已经成为电子设计的重要工具,无论是设计芯片还是设计系统,如果没有EDA工具的支持,都将是难以完成的。EDA工具已经成为现代电路设计师的重要武器,正在发挥着越来越重要的作用。

1.3 FPGA的简介

FPGA是英文Field Programmable Gate Arry的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上发展起来的。它作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

1.3.1FPGA的工作原理

由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航局FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。它通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。

学过数字电路的人都知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去

配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。

查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA 中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的RAM。当用户通过原理图或Verilog HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。我们可以表1-1来说明LUT实现逻辑功能的原理:

表1-1 4输入与门的真值表

从表中我们可以看出,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。

1.3.2FPGA的配置模式

FPGA是由存放在片内的RAM来设置其工作状态的,因此工作时需要对片内RAM 进行编程。用户可根据不同的配置模式,采用不同的编程方式。FPGA有下面3种配置模式:

(1)主动配置方式(AS)由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列。如EPCS1,EPCS4配置器件专供AS模式,目前只支持Cyclone系列。使用Altera串行配置器件来完成。Cyclone期间处于主动地位,配置期间处于从属地位。配置数据通过DATA0引脚送入FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。

(2)被动配置方式(PS)则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,在PS配置期间,配置数据从外部储存部件,通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。

(3)JTAG配置方式,JTAG接口是一个业界标准,主要用于芯片测试等功能,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。

1.3.3FPGA的芯片结构

FPGA芯片主要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单

元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专业硬件模块。以下是FPGA芯片主要模块功能说明:

(1)可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。

(2)FPGA内的基本逻辑单元为CLB(可配置逻辑块),CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。

(3)目前市场上的FPGA都提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。

(4)大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM 和FIFO等结构。在实际应用中,芯片内部模块RAM的数量也是选择芯片的一个重要因素。

(5)FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

(6)内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片FPGA 成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。

(7)内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核

(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。

1.4 硬件描述语言

硬件描述语言HDL是EDA技术中的重要组成部分,常用的硬件描述语言有AHDL、VHDL和Verilog HDL,而VHDL和Verilog HDL是当前最流行并成为IEEE标准的硬件描述语

1.4.1Verilog HDL

Verilog HDL是目前应用最广泛的硬件描述语言,并被IEEE采纳为IEEE#1364-1995标准(Verilog-1995版本),并于2001年升级为Verilog-2001版本,Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合、仿真验证和时序分析。Verilog HDL适合算法级(Alogorithm)、寄存器传输级(RTL)、逻辑级(Logic) 、门级(Gate)和版图级(Layout)等各个层次的电路设计和描述。

采用Verilog HDL进行电路设计的最大优点是其与工艺无关性,这使得设计者在进行电路设计时可以不必过多考虑工艺实现的具体细节,只需要根据系统设计的要求施加不痛的约束条件,即可设计出实际电路。实际上,利用计算机的强大功能,在EDA工具的支持下,吧逻辑验证与具体工艺库相匹配,将布线及延时计算分成不同的阶段来实现,可以减少设计者的繁重劳动。

Verilog HDL和VHDL都是用于电路设计的硬件描述语言,并且都已经成为IEEE 标准。Verilog HDL也具有VHDL类似的特点,稍有不同的是,Verilog HDL早在1983年就已经推出,应用历史较长,拥有广泛的设计群体,设计资源比VHDL丰富。另外,Verilog HDL是在C语言的基础上演化而来的,因此只要具有C语言的程序基础,设计者就很容易学会并掌握这种语言。

1.4.2VHDL

VHDL是超高速集成电路硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language),是现代电子系统设计的首选硬件设计计算机语言,它主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD 的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。

VHDL有如下几个特点:

(1)VHDL具有强大的功能,覆盖面广,描述能力强。VHDL支持门级电路的描述,也支持以寄存器、储存器、总线及单元等构成的寄存器传输级电路的描述,还支持以行为算法和结构的混合描述为对象的系统级电路的描述。

(2)VHDL有良好的可读性。它可以被计算机接受,也容易被读者了解。用VHDL 书写的源文件,既是程序又是文档,既可作为工程技术人员之间交换信息的文件,又可

作为合同签约者之间的文件。

(3)VHDL具有良好的可移植性。作为一种已被IEEE承认的工业标准,VHDL 事实上已成为通用的硬件描述语言,可以在各种不痛的设计环境和系统平台中使用。

(4)使用VHDL可以延长设计生命周期。用VHDL描述的硬件电路与工艺无关,不会因工艺变化而使描述过时。与工艺有关的参数可以通过VHDL提供的属性加以描述,工艺改变时,只需要修改相应程序中的参数即可。

(5)VHDL支持对打规模设计的分解和已有设计的再利用。VHDL可以描述复杂的电路系统,支持对大规模设计的分解,由多人、多项目组来共同承担和完成。标准化的规则和风格,为设计的再利用提供了有力的支持。

(6)VHDL有利于保护知识产权。用VHDL设计的专用集成电路(ASIC),在设计文件下载到集成电路时可以采用一定的保密措施,使其不易被破译和盗取。

1.4.3AHDL

AHDL(Analog Hardware Description Language)是Altera公司根据自己公司生产的MAX系列器件和FLEX系列器件的特点专门设计的一套完整的硬件描述语言。

AHDL是一种模块化的硬件描述语言,他完全集成Altera公司的MAX+PLUSSⅡ和QuartusⅡ的软件开发系统中。AHDL特别适合于描述复杂的组合电路、组(group)运算及状态机、真值表和参数化的逻辑。用户可以通过MAX+PLUSSⅡ的软件开发系统对AHDL源程序进行编辑,并通过源程序文件的编译建立仿真、时域分析和器件程序的输出文件。

AHDL的语句和元素种类齐全、功能强大,而且易于应用。用户可以使用AHDL 建立完整层次的工程设计项目,或者在一个层次的设计中混合其他类型的设计文件,如VHDL设计文件或Verilog HDL文件。

2 设计方案论证及核心芯片介绍

电梯控制系统的选择是否的当对电梯的效率、性能都有很大的影响。因此在设计电梯控制系统时要充分了解每个系统的优缺点,通过对比选择较为合理的方案进行设计。

2.1 系统设计任务

运用所学的数字逻辑电路、硬件描述语言、EDA技术和可编程逻辑器件(PLD)的基本知识,设计基于CPLD的电梯控制器电路。设计的电路每层楼都应该有请求开关,电梯内有请求开关和电梯上、下状态显示。

2.2 系统设计要求

(1)设计一个6层楼的电梯控制系统,每层楼都应该有请求开关,电梯内有请求开关和电梯上、下状态显示,用LED灯显示电梯门的开关状态,用数码管显示电梯所在楼层。

(2)在EP2C8T144C8-FPGA开发板上完成电路的设计与验证后,根据设计电路

的输入和输出设备的需要设计并制作PCB板,完成基于PLD的电梯控制器电路。

2.3 系统设计方案比较

方案一:

如图1所示在该设计中每层楼都没有外部上下请求,只有楼内外的键盘按键请求, 主控模块根据键盘的输入楼层请求来对电梯的状态做出判断,再将判断的结果反馈给相应的模块进行处理。虽然这种方案可以保证所有人的请求都能得到响应,减轻了程序的编程难度,但这样对于电梯的效率产生消极影响。

方案二:

在此方案中采用了方向优先控制方式方案即当电梯处于上升模式时,只响应电梯所在楼层以上的请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕,当电梯处于下降模式,电梯的运行模式与上升模式相反。这样设计使电梯的效率大大提高,节省了人民的出行时间,但是这样提高了程序设计的难度,需要有一定的编程能力才能完成,其设计的模块流程如图1-2所示。

2.4 方案论证与选择

方案一中,键盘输入、显示模块设置6个按键,对应1楼2楼……6楼,以及6个相应的LED。当有按键按下,相应的LED灯亮,表示该楼层有请求,同时将按键信息传递给主控模块。主控模块根据按键请求,驱动位移寄存、楼层计数模块。在位移寄存、楼层计数模块中,用一个6位数组,赋初始值为000001,对其进行位移操作,左移表示电梯上升,右移表示电梯下降,变量fl根据左右移进行加减计数(每上升一楼fl加1,每下降一楼fl减1)。数组中1的位置,表示当前处在的楼层,然后将这个信息反馈给主控模块,主控模块判断是否达到键盘请求的相应楼层,如果已经到达相应楼层,表示该楼层的LED灭,并输出一个信号开门,门开4s后自动关门。位移寄存、楼层计数模块将当前楼层的信息送到显示模块,显示模块显示当前楼层。如果键盘无请求,那么电梯停留在当前楼层。

该方案基本虽然完成了一个6层楼的电梯控制系统,但是还没有能够实现自动控制。方案中少了电梯运行方向判断的模块,所以电梯只能上升到6楼(最高层)后才能下降,下降到1楼(最底层)后才能上升。假如电梯处于上升状态,到达4楼之后,5楼6楼均无请求,但是2楼有请求,这时电梯只能上升到6楼之后,再下降到2楼,这样的电梯就明显不能满足人民出行的需要,而且耗电电大,没有实现自动控制。方案二中,加入了运行方向判断模块,若电梯处于上升状态,当前楼层以上无请求,但是当前楼层以下有请求,该模块可做出判断,改变电梯的运行状态,使电梯进入下降模式,从而达到智能化的自动控制。

方案二是在方案一得基础上加多了方向判断模块,这样不仅实现了电梯的智能化自动控制,大大提高了电梯的利用率,为方便人民的出行提供了很好的方案。在该系统中当电梯在4楼的时候,有人在三楼想下到二楼,这时如果四楼以上的楼层没有请求的话,电梯就下到三楼载客到二楼。这种方案设计大大满足了人民出行的需要。

综上所述本设计采用方案二,虽然在程序设计上增加了难度,使程序更复杂,但实现了电梯的自动控制。

2.5 核心开发板简介

EP2C8T144C8-FPGA开发板采用Altera公司推出的CYCLONGⅡ系列芯片EP2C8T144C8芯片作为核心处理进行设计, CYCLONGⅡ系列芯片可以说是目前市场上性价比最高的芯片。比第一代的EP1C6或EP1C12等芯片设计上,内部逻辑资源上都有很大的改进。同时价格也被广大顾客接受;虽然Altera公司推出了CYCLONG Ш基于Ⅳ代的芯片,但是目前市场上价格走势偏高,尤其是针对广大出学者的定位,目前还不是适合采用。

EP2C8T144C8开发板功能描述:

(1)板载EP2C8T144C8 FPGA核心芯片;

(2)50MHz有源贴片晶振,提供系统工作主时钟,通过22欧姆匹配电阻连接CLK0

和CLK4,均可作为系统时钟使用;

(3)IN5822极管防止电流反接,高速肖特基二极管;

(4)电源开关,正视开发板,向上接通电源;

(5)5V电源接入口,外径5mm,内径3.5mm,内负外正;

(6)R_C按键,FPGA的重新配置按键,按下后系统重新从EPCS4配置芯片中读取程序然后工作;

(7)电源工作指示灯D2;

(8)一个用户LED-D4,当与接口板连接时,改引脚SW[1]复用;

(9)24×2双排直插2.54间距用户接口;

(10)下载指示灯D1,平时熄灭,下载的时候会亮,按下R_C按键的时候也会亮;

(11)EST按键,这个用户IO口可以当做用户输入按键使用,也可以分配为系统的复位按键;

(12)JTAG下载口,对应于下载的文件是SOF文件,速度很大,JTAG将程序直接下载到FPGA中,但是掉电程序丢失,平时学习推荐使用JTAG方式,最后固化程序的时候在通过ASP方式将程序下载到配置芯片即可;

(13)ASP下载接口,对应下载的是POF文件,速度相对于JTAG比较慢,而且需要重新上电并且拔掉下载线才能工作,操作相对麻烦,不推荐学习时候使用,最后需要断电操作的情况下再使用ASP下载模式;

(14)螺丝铜柱支撑;

(15)4线RS232串口通信接口以及SRAM片选跳线选择;当与接口板连接时,改引脚与复用;

(16)1085-3.3V稳压芯片;

(17)1117-1.2V稳压芯片,提供FPGA核电压;

(18)SRAM芯片IS612V 256K×16b(注意是选配件)

(19)配置芯片EPCS4(4Mbit);

(20)AT24C02-12C存储器件。

2.6 CD4511 BCD 码—七段码译码器

CD4511是一个用于驱动共阴极LED (数码管)显示器的BCD 码—七段码译码器,具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流,可以直接驱动LED显示器。

2.6.1CD4511的引脚及其功能介绍

CD4511的引脚图1-3所示

图1-3 CD4511引脚图

其中7、1、2、6分别表示A、B、C、D都是BCD 码输入;5、4、3分别表示LE、BI、LT;LE为锁定控制端,当LE=0时,允许译码输出;LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值;BI为消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字;LT为测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入DCBA 状态如何,七段均发亮,显示“8”,它主要用来检测数码管是否损坏;13、12、11、10、9、15、14分别表示 a、b、c、d、e、f、g为译码器输出端,输出为高点平1有效;还有两个引脚8、16分别表示的是GND、Vcc芯片供电端。

2.6.2CD4511的工作真值表

如表1-2所示表格中罗列出了CD4511工作时输入以及相对应输出的各种值,我们可以在表格中很快找到我们需要的参数,大大方便我们编程的需要。

表1-2 CD4511的工作真值表

3 系统单元模块设计

方案中将设计分为六个模块,分别为键盘输入、显示模块、运行方向判断模块、位移寄存、楼层计数显示模块、开门延时、关门模块、主控模块、分频器模块。各个模块间有一定的联系,当各模块之间有一些变量发生变化时都会影响到其他模块,因此为了程序设计及仿真的方便,将所有模块都放在同一个always块中来实现。

3.1 键盘输入、显示模块

在该模块中又可分为内部请求、外部请求两个小模块。内部请求模块中可设置一个6位输入key[6..0]以及6位输出lamp[6..0],key连接6个按键,分别表示1到6楼楼层的信号请求,当核心开发板上电后就能提供6个按键的初始状态为高电平,按键低电平有效,如果有按键按下,将相应的lamp置1同时相应的LED 亮,表示有到达该楼层的请求,当电梯运行到该请求楼层时相对应的LED熄灭以及对应的lamp置0,因此lamp也可以作为键盘请求寄存,在运行方向判断模块和主控模块中判断、控制,所以在该模块中我们可以用判断语句来实现。

外部请求的设计思路和内部请求的一样,只不过在设计时要主意外部的向上请求只有五个分别是1到5楼,6楼已经是顶层了已经不能再上升了,外部的向下请求也是只有五个分别是2到6楼,因为1楼已经是最底层了不能在向下运行了。

在整个模块中我们可以使用判断语句来实现,如当有按键按下时的程序为if(~req_up[0]) lamp_up[0] = 1,然后将lamp_up[0] = 1送到主控模块进行处理,当处理完这请求是系统将会把lamp_up[0]清零以便下次该层请求信号可以发出,使电梯有序的运行。

3.2 运行方向判断模块

根据当前楼层,当前电梯运行状态(上升或下降)和键盘的请求,判断电梯的运行状态。若电梯处于上升状态(up=1),再根据键盘的请求(lamp、lamp_up、lamp_down)判断当前楼层以上的楼层有没有请求,如果有请求,up=1,down=0,保持上升状态,否则up=0,down=1,进而判断当前楼层以下有没有请求,若当前楼层以下有请求则down=1,up=0,否则up=1,down=1电梯停止在该楼层。这样设计保证了电梯按着这规则有序的运行,大大提高了电梯的工作效率。如果没有这个模块电梯将上升到最高楼才进入下降模式,下降到最底楼电梯才进入上升模

式,这样的电梯控制系统显得很死板。

3.3 位移寄存、楼层计数显示模块

在这个模块中,定义一个6位的数组变量d,赋初始值为000001,根据运行方向判断模块传递过来的运行方向,对d进行移位操作,左移(上升)、右移(下降),数组的6位分别代表6个楼层,1所在的位置就表示当前所在的楼层,并将这一信息反馈给主控模块、运行方向判断模块进行比较、判断。同时设置4位变量fl来记录当前楼层,当进行一次左移操作,fl=fl+1;当进行一次右移操作,fl=fl-1。然后把fl的值通过CD4511译码后在LED数码管上就可以显示对应的楼层。

3.4 开门延时、关门模块

在该模块中设置两个按键分别为开门延时按键(open)和关门按键(close),两个按键都是低电平有效,初始状态电平为高电平。在电梯门打开的情况下,如果这两个健都没有按下是电梯4s秒后会自动关门,开门延时按键按下时,系统将时间计数变量置count = 1,当时间计数变量count=4时系统将关门,同时将count置0,这就延长了开门时间;同理,在电梯门是打开的情况下,如果关门按键按下时,系统直接把计数变量count置0,将门关闭。由其可知在该模块中是对这两个按键进行判断,因此我们可以使用判断语句(if..else)来实现该功能。这两个按键的功能在电梯运行中起到延长开门时间和提前关门的作用,不仅提高了电梯的效率,还为人们节省出行时间。

3.5 主控模块

电梯的主控制模块,在这个模块中,先对d和fl进行初始化,即d=000001,fl=1,表示电梯一开始处在1楼。定义3位变量count作为开门计数变量,再定义一位输出door作为开门信号。首先判断是否要开门,当count!=0时,count开始计数count=count+1,并且door=1开门,count计数4秒后(count=101),将count 置0,且door=0关门。门关闭后就根据键盘输入、显示模块传递过来的lamp、lamp_up、lamp_down和位移寄存、楼层计数显示模块传递过来的d进行比较,lamp、lamp_up、lamp_down和d都是6位数组变量,每一位代表的楼层一一对应,例如,当3楼外部有上升请求,既lamp_up[2]=1,当d[3]=1时,表示电梯到达了3楼,这时候主控模块就判断lamp_up[2]和d[3],up是否都为1(lamp[2]==1 &&d[3]==1&&up==1),如果条件满足,count=1,这时候电梯就停下,自动开门4s后关闭,同时lamp_up[2]=0,表示到3楼的请求已经处理,相应的LED灭。在程序的编写中,主控模块和位移寄存、楼层计数模块用if…else来连接,这样在判断、处理的时候就有有限顺序。总体思想是这样,首先对楼层初始化,判断是否要开门,如果不需要开门,就判断是否有请求的楼层,如果有楼层请求,电梯将运行,运行时进行方向判断和楼层计数,同时也判断是否有请求的楼层,如果到达,电梯停并且开门4s后自动关闭,再运行,如果没有到达,电梯继续运行,即进入位

移寄存、楼层计数模块。在进入位移寄存、楼层计数模块之前,还加一个判断,判断其他楼层是否有请求,如果全部的楼层都没有请求,电梯就停在当前楼层,否则电梯继续运行。

3.6 分频器模块

整个系统用1s的脉冲信号作为控制信号,EP2C5T144C8-FPGA开发板提供的是50MHz的脉冲,所以需要一个分频器,将50MHz脉冲分频成1Hz脉冲,即1s 脉冲。在程序的always块中,用1s的脉冲上升沿作为敏感信号参数,即每个楼层之间运行的时间为1s。由于用1s脉冲控制整个系统,按键只有在脉冲上升沿的时候按下才有效,所以按键需要按下一段时间,直到相应的LED亮。

4 系统调试

调试分为软件调试和硬件调试,软件调试即在Quartus II软件开发环境中对程序进行仿真、调试。硬件调试即将程序下载EP2C5T144C8-FPGA开发板,在硬件上进行调试。

4.1 软件调试

4.1.1初始化调试

在仿真界面中,设置时钟(40ns),键盘无按下(key=3F、req_up=3F、req_down=3F),然后进行功能仿真,这个状态即电梯的初始状态,电梯应停在1楼,且门为关闭状态,各楼层都无请求,仿真结果如图5所以即lamp=0,lamp_up=0,lamp_dowm=0,door=0,fl一直显示为1。若调试没有得到预期结果,检查初始化模块部分的程序,将其改过来,程序仿真结果如图1-4所示。

图1-4初始化仿真结果图

4.1.2按键调试

在初始化调试的基础上,按下其中一个按键,如按下req_up[2],即req_up[2]在一段clk上升沿处为0,键盘按下,则相应的lamp_up[2]就会置1。

4.1.3电梯运行调试

当有键盘按下之后,相应的LED亮,即有请求,主控模块就会作出判断响应请求,并处理请求,电梯运行到请求的楼层后停止,并开门5s后关门,同时表示该请求的LED灭。如果没有请求,电梯停在当前楼层。如按下key[2],表示有请求到3楼,lamp[2]=1,电梯开始运行(fl计数),当fl计数到3,表示达到3楼,lamp[2]=0,door=1,4s后door=0。若调试没有得到预期结果,检查键盘输入显示模块,主控模块,位移寄存、楼层计数模块的程序,其程序仿真结果如图1-5所示。

图1-5电梯运行结果仿真图

4.1.4运行方向、自动控制调试

根据设计,电梯分为上升和下降两种运行状态,当处于上升状态,电梯只响应当前楼层以上的请求,并由下向上逐个响应,直到响应最后一个向上请求,响应完最后一个向上请求时电梯将进入下降模式,若当前楼层以上无请求,电梯就停在当前楼层,若当前楼层以下有请求时,电梯就响应当前楼层以下的请求并又上往下逐个响应,直到最后个向下请求处理完毕,这时电梯将进入上升状态,若最后发出向下请求楼层以上没有请求的话,电梯将停在该楼层。有请求的话就进入上升模式响应楼层以上的请求。在调试中,电梯初始化状态停留在1楼而处于上升模式,当3楼有乘客要上到5楼即按下req_up[3],电梯开始运行,这时二楼有乘客要下到一楼事,电梯将上升到3楼载客到5楼才下降到2楼接乘客到一楼。这点体现出电梯的自动化控制,而不像方案一那样电梯要运行到6楼才进入下降模式。程序仿真结果如图1-6所示。

图1-6运行方向、自动控制仿真结果

4.1.5开门延时、关门模块调试

在调试该模块是要注意按键必须在clk上升沿处为0才有效,如果这两个健都没有按下是电梯4s秒后会自动关门,开门延时按键按下时,系统将时间计数变量置count = 1,当时间计数变量count=4时系统将关门,同时将count置0,这就延长了开门时间;同理,在电梯门是打开的情况下,如果关门按键按下时,系统直接把计数变量count置0,将门关闭。程序仿真结果如图1-7所示。

图1-7开门延时、关门模块仿真结果图

4.2 硬件调试

硬件调试主要分为输入模块和输出模块检测。在输出模块调试中,我犯了个很大的错误,那就是认为EP2C8T144C8芯片也像51芯片那样上电后可用管脚都为高电平,这就导致了输入模块很不稳定。有时碰下板子时,所有按键都有效或者是按键按下时响应完后不能回到初始状态。发现这个问题后我用万用表一一测试EP2C8T144C8

芯片的可用管脚,结果发现其可用管脚在芯片上电后的电压是 1.2V,达不到我的预想值即每个按键的初始值为高电平,了解这一特性后我在每个按键上都加了个电阻用于提高其电压,使其达到初始值为高电平,通过仿真及事物验证这样的解决方法是正确的。

输出模块中有楼层请求显示、门状态显示和楼层楼数显示两部份,在楼层楼数显示模块中由于我采用的CD4511译码器译码然后送至8段共阴数码管显示,而我设计的电梯最高层为6层,因此我只要测试该芯片的5个管脚的电压是否和预想的一样就可以了,这五个管脚分别是7、1、2芯片的BCD码输入,和芯片启动工作电压端16脚和8脚。在译码芯片正常工作下,用万用表测试BCD码输入的电平是否和程序设计输出的电压一样,如果一样那就说明这个模块没问题,能正常工作,否则要修改程序,使其达到我们所需要的值。

因为我在PCB上是用发光二管来显示楼层请求和门的状态,而EP2C8T144C8芯片输出的电压为3.3V,因此我们要做好发光二管的保护工作,使其不被过高的电流击穿,可以加个电阻和发光二级管串连减小流过的电流,做好这些后,当程序输出个高电平时发光二级管被点亮,表示相应的楼层有请求或电梯的门是开着的,当程序输出个低电平时发光二级管被熄灭,表示楼层请求已经出来完毕或电梯门关闭。我们可以用万用表来检查发光二级管两端的是否和上述出现的想象一样,如果不一样那就要检查程序,并修改过来,使其和我们设想的一样。

5 系统功能、指标参数

5.1 系统功能

该系统能够完成6层楼电梯的自动化控制。系统设置16个按键,其中6个按键表示电梯内部的6个楼层请求,另外的10个按键表示电梯外部的6个楼层请求(1到5楼的上升请求和2到6的下降请求),用16个LED,显示6个楼层,有没有楼层请求及请求有没有被处理,当有层有请求时,与其对应的LED就被点亮,楼层请求信号被处理完毕或无请求时LED是熄灭的,用LED数码管,显示当前楼层,根据数码管的显示,也可以判断出电梯当前处于上升状态,还是下降状态。系统根据电梯运行规则对请求信号进行分批响应,每个请求信号一直保留到执行后才撤除。

电梯运行规则:

(1)电梯处于上升状态时,只响应电梯当前楼层以上的请求信号,依楼层次数序逐个执行,直到最后一个请求执行完毕。然后电梯直接下降到当前楼层以下有请求的最高一层楼,开始执行下降请求。

(2)电梯处于下降状态时,只响应电梯当前楼层以下的请求信号,依楼层次数序逐个执行,直到最后一个请求执行完毕。然后电梯直接上升到当前楼层以上有请求的最低一层楼,开始执行上升请求。

(3)当电梯执行完所有请求信号时,应停留在当前楼层等待,直到有新的请

求信号时,再进入运行状态。

(4)电梯以每一秒钟上升或下降一层楼的速度运行。到达某楼层位置,数码管显示该楼层数,一直保持到电梯到达新的一层时,数码管显示的楼层数才改变成相应的楼层数。

(5)电梯到达有请求的楼层后停下,表示该楼层请求的信号灯灭,电梯门打开,4s后电梯门自动关闭,电梯继续运行。

(6)接通电源时电路应该处于起始状态,此时电梯留在一层。

5.2 指标参数

初始状态,数码管显示1,16个请求信号灯灭,door灯灭。按下电梯内部5号键,与之对应的请求信号灯亮,电梯开始运行,数码管显示的数开始按1、2、3、4、5改变,在数码管显示3的同时,按下外部向下2号键,与之对应的请求信号灯亮。当数码管显示5时,对应的请求信号灯灭,door灯亮(门开)4s后灭(门关)。电梯关门后进入下降模式运行,数码管显示的数码按照5、4、3、2改变,显示为2时,对应的请求信号灯灭,door灯亮4s后灭,若无其他按键按下,数码管一直显示2。

6 结论

通过几个月的不懈努力,在充分了解电梯结构和电梯运行规则的基础上,制作出了高效、稳定的电梯控制系统及其外围模拟电路,基本上完成了设计任务的要求。经测试系统的各个功能都正常实现,该系统有较好的人机互动效果,系统根据外围电路发出的请求信号有序地做出回应,完成乘客要达到指定的楼层。

目前该系统还不够成熟,有许多可扩展的功能和改进的地方。该系统可以加载的功能有超重警报、和运行调速功能,这样可以使电梯更安全舒适的运行,提高系统的可靠性。整个系统是在晶振产生的脉冲信号下工作的,且上升沿有效,所以按键必须在上升沿到来时按下才有效,因此我们在按键时要按久点系统才能响应,这一缺点我们可以用类似按键防抖动的方法来解决,但由于本人编程水平有限这缺点和功能可以通过以后的学校提高自己的编程能力后再来完善该系统。

经过了这次毕业设计,自己很多方面有了很大的提高和收获:

第一,在获取有用信息方面有了很大提高。毕设题目刚确定时,我对FPGA、电梯控制系统毫无了解,而网上和图书馆找的资料五花八门,这就需要我们有较强的筛选能力,通过大量的资料查阅和筛选,我对这方面有了很深的了解,从而对系统和外围电路的设计有了一定的方向,为我完成这次毕设提供了很大的帮助,使我没有盲目的去摸索。不像以前做课设那样直接拿学长现成的资料,然后再在学长设计的基础上稍微修改下就可以把课设做完,没有吧自己的设想设计完成出来,这样长期下去对我们的设计和编程能力都有很大的影响。

第二,锻炼了我学习知识的能力,在此次的毕设中,要运用所学的数字逻辑电路、

硬件描述语言、EDA技术和可编程逻辑器件(PLD)的基本知识来完成6层楼的电梯控制系统,而这部分知识有部分是大二学的,有部分是没学过的。因此刚接到这个毕设时,我花了一部分时间去温习以前学的知识,把它们捡回来;同时还花部分时间去学习此次毕设所涉及到的知识。如了解FPGA的工作原理、配置模式;核心EP2C5T144C8-FPGA开发板的工作平台等等,这都大大提高了我对新旧知识的学习能力,使自己对于新事物能很快去了解、掌握它。

第三,在设计的过程中,我明白了一个道理,从简单的基础做起。一开始就从难的着手,不仅事倍功半,而且往往还很难成功。先从基础着手,把基础打好,然后再扩展到难的部分,这是我在这次设计中最大的收获。在这次设计中,遇到了很多困难,这些困难逼着我想办法解决。以前在学习的过程,都没有注意过,同一个变量,不能够在两个always模块中赋值,否则就会出错。这样类似的问题,在这次设计中我遇到很多,也就是这些错误,让我学到了很多,提高了我用Verilog HDL编程的能力。

谢辞

经过一段时间的努力,我终于完成了本科毕业论文,这也意味着我的大学生活将要结束了。回顾大学四年的点点滴滴,自己为有机会摆脱考学失败的烦恼与浮躁,静心钻研,潜心研究,并取得初步研究成果而感到欣慰。欣慰之余,我也希望能用这样一篇文章来表达我对老师、同学、朋友和家人的深深谢意。

首先,我要感谢我的毕设指导老师覃琴对我的悉心指导和关怀。在整个毕设她为我的毕业设计和论文的顺利完成倾注了心血和汗水,她治学严谨,学识渊博,品德高尚,平易近人,在毕设期间悉心指导、耐心讲解,积极帮助我解决毕设过程中的困难。无论是在理论学习阶段,还是在毕设定题及前期的资料,硬件电路的审查,程序的仿真,直到最后的论文撰写,无不得到导师的悉心指导和帮助。我愿借此机会向导师您表示衷心的感谢!

同时,还要感谢在我本科四年的学习生涯中教过我的老师们,感谢他们在科研任务如此繁重时还能够耐心细致的给我们讲解基础课程。我从他们身上学到的不仅是知识,还有一个科研工作者必备的素质和品格。感谢电子工程系办公室主任李飞老师、系学工办主任梁自珍、辅导员李晓健老师,他(她)们引导我树立了正确的人生观、价值观,找到了自己适合的定位和确定了正确的奋斗目标。你们给予我的指导和教诲我将永远记在心里!再此我向他(她)们表示诚挚的感谢。

我还要感谢我的同学和朋友们,是你们陪伴我一起走过大学这段美好的时光。来自五湖四海的你们让我在为人处事方面更上一层楼。你们不仅在学习给予我帮助和鼓励,在生活上你们也时常照顾我,使我的大学生活丰富多彩,认识你们是我今生最荣幸的事,愿即将离校的你们以后的人生可以充实、多彩与快乐!

最后,我要感谢我的父母,你们的支持是我最大的动力。你们不仅在经济上承受了巨大的负担,更在心里上有思子之情的煎熬与望子成龙的期待。回忆往昔,每次回到家时父母的欣喜之情,离家时父母的依依不舍之眼神,电话和qq聊天视频中的殷殷期待和思念之语,皆使我刻苦铭心,目前除了学习成绩尚可外无以为报,希望以后的学习、工作和生活能使父母宽慰。

谢谢大家!

参考文献

[1] 江国强编著.EDA技术与应用.电子工业出版社,2007.4

[2] 江国强编著.数字系统的Verilog HDL设计.机械工业出版社,2007.08

[3] 江国强编著.数字系统的VHDL设计.机械工业出版社,2008.10

[4] 江国强编著.新编数字逻辑电路习题、实验与实训.北京邮电学院出版社,2008.9

[5] 王金明编著.Verilog HDL程序设计教程.人民邮电出版社,2004.1

[6] 杨恒编著.FPGA/CPLD最新实用技术指南.清华大学出版社,2005.1

[7] 罗苑棠编著.CPLD/FPGA常用模块与综合系统设计实例精讲.电子工业出版社,2007.11

[8] 杨晓慧编著. 电子技术EDA实践教程.国防工业出版社,2005.1

[9] 李国丽编著. EDA与数字系统设计.机械工业出版社,2009.1

[10] Weng Fook Lee.VHDL Coding and Logic Synthesis with Synopsys.Academic Press,2000

(完整版)基于FPGA的智能交通灯的设计毕业设计

目录 摘要 ............................................................. I 1 前言 (1) 2 交通红绿灯控制电路的发展与技术现状 (2) 2.1 交通控制系统以及交通红绿灯控制电路的发展现状 (2) 2.2 智能交通红绿灯控制电路技术的现状 (3) 3 VHDL、FPGA、Quartus ii简介 (5) 3.1 VHDL简介 (5) 3.1.1 VHDL简介 (5) 3.1.2 VHDL语言的特点 (6) 3.2 FPGA简介 (8) 3.2.1 PLD器件的设计特点 (8) 3.2.2 FPGA的基本结构 (10) 3.2.3 采用FPGA设计逻辑电路的优点 (11) 3.3 Quartus II 的简介 (12) 4 具体方案论证与设计 (13) 4.1 具体方案论证 (13) 4.2系统算法设计 (15) 4.3 具体电路原理图 (16) 4.4 电路仿真图 (16) 5 实验结果 (17) 总结 (18) 参考文献 ......................................... 错误!未定义书签。附录: .. (19)

基于FPGA的十字路口交通信号灯 摘要 本文主要介绍十字路口交通灯控制器的设计。首先,介绍交通控制系统以及交通红绿灯控制电路的发展现状;然后采用硬件描述语言进行的交通灯控制器设计。重点介绍了控制系统各部分的设计,以及各个模块之间的同步处理。为了克服交通信号灯控制系统传统设计方法的弊端,更加适应城镇交通现状,利用VHDL语言、采用层次化混合输入方式,设计了具有3种信号灯和倒计时显示器的交通信号灯控制系统,在 QuartusⅡ下进行仿真,并下载到FPGA中制作成实际的硬件电路进行了模拟运行.使用该方法设计的交通灯控制系统电路简单、运行可靠、易于实现,可实现对交通信号的控制和显示功能。 关键词 FPGA;QUARTUS ii;HDPLD;十字路口交通灯控制器; Based on FPGA intersection traffic lights Abstract This paper describes the design of intersection traffic signal controller.First, the introduction of traffic control systems and traffic light control circuit of the development status; then using language designed for the traffic light controller.Focus on various parts of the control system

fpga数字钟课程设计报告

f p g a数字钟课程设计报告 Prepared on 24 November 2020

课程设计报告 设计题目:基于FPGA的数字钟设计 班级:电子信息工程1301 姓名:王一丁 指导教师:李世平 设计时间:2016年1月 摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟 目录 摘要 1 课程设计目的 2 课程设计内容及要求

设计任务 设计要求 3 VHDL程序设计 方案论证 系统结构框图 设计思路与方法 状态控制模块 时分秒模块 年月日模块 显示模块 扬声器与闹钟模块 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献 1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

基于FPGA下的交通灯控制器设计

引言 随着城乡的经济发展,车辆的数量在迅速的增加,交通阻塞的问题已经严重影响了人们的出行。 现在的社会是一个数字化程度相当高的社会,很多的系统设计师都愿意把自己的设计设计成集成电路芯片,芯片可以在实际中方便使用。随着EDA技术的发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD 以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。FPGA就是在这样的背景下诞生的,它在数字电路中的地位也越来越高,这样迅速的发展源于它的众多特点。交通等是保障交通道路畅通和安全的重要工具,而控制器是交通灯控制的主要部分,它可以通过很多种方式来实现。在这许许多多的方法之中,使用FPGA和VHDL语言设计的交通灯控制器,比起其他的方法显得更加灵活、易于改动,并且它的设计周期性更加短。 城市中的交通事故频繁发生,威胁着人们的生命健康和工作生活,交通阻塞问题在延迟出行时间的同时,还会造成更多的空气污染和噪声污染。在这种情况下,根据每个道路的实际情况来设置交通灯,使道路更加通畅,这对构建和谐畅通的城市交通有着十分重要的意义。

第一章软件介绍 1.1 QuartusⅡ介绍 本次毕业设计是基于FPGA下的设计,FPGA是现场可编程门阵列,FPGA开发工具种类很多、智能化高、功能非常的强大。可编程QuartusⅡ是一个为逻辑器件编程提供编程环境的软件,它能够支持VHDL、Verilog HDL语言的设计。在该软件环境下,设计者可以实现程序的编写、编译、仿真、图形设计、图形的仿真等许许多多的功能。在做交通灯控制器设计时选择的编程语言是VHDL语言。 在这里简单的介绍一下QuartusⅡ的基本部分。图1-1-1是一幅启动界面的图片。在设计前需要对软件进行初步的了解,在图中已经明显的标出了每一部分的名称。 图 1-1-1 启动界面 开始设计前我们需要新建一个工程,首先要在启动界面上的菜单栏中找到File,单击它选择它下拉菜单中的“New Project Wizard”时会出现图1-1-2所显示的对话框,把项目名称按照需要填好后单击Next,便会进入图 1-1-3 显示的界面。

FPGA设计的报告课程设计

FPGA课程设计 实 验 报 告

实验一:设计一个可控的100进制可逆计数器 一、实验要求 用DE2-115开发板下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、关键词 可控制、可逆、100进制、复位、暂停、递增、递减 三、内容摘要 module updown_count(qout,reset,clk,plus,minus); output[7:0] qout;/*定义一个8位的输出,其目的是 低四位和高四位分别表示计数器的个位和十位。*/ input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零 reg[7:0] qout;//qout的数据类型为寄存器型 always @(posedge clk)//当clk上升沿到来时执行一遍下列程序 begin if(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过else begin case({minus,plus})//case语句模块,包含加,减和暂停四个模块 2'b10: if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一begin qout[3:0]<=9;//给个位赋值 if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值 else qout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一end else qout[3:0]<=qout[3:0]-1;//个位减一 /*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01: if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一begin

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

FPGA课程设计题目

1、彩灯控制器设计 内容及要求: 设计一个彩灯控制器,具体设计要求如下: (1)要有多种花型变化(至少设计5种),led至少16路 (2)多种花型可以自动变化 (3)彩灯变换的快慢节拍可以选择 (4)具有清零开关 (5)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 2、数字秒表设计 内容及要求: 设计一用于体育比赛的数字秒表,具体设计要求如下: (1)6位数码管显示,其中两位显示min,四位显示see,显示分辨率为0.01 s。 (2)秒表的最大计时值为59min59.99see。 (3)设置秒表的复位/启动键,按一下该键启动计时,再按即清0。依此循环。 (4)设置秒表的暂行/继续键。启动后按一下暂行,再按继续。依此循环。 (5)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 3、交通信号控制系统设计 内容及要求: 设计一个十字路口交通控制系统,具体设计要求如下: (1)东西(用A表示)、南北(用B表示)方向均有绿灯、黄灯、红灯指示,其持续时间分别是40秒、5秒和45秒, 交通灯运行的切换示意图和时序图分别如图1、图2所示。 (2)系统设有时钟,以倒计时方式显示每一路允许通行的时间。 (3)当东西或南北两路中任一路出现特殊情况时,系统可由交警手动控制立即进入特殊运行状态,即红灯全亮,时钟停止计时,东西、南北两路所有车辆停止通行;当特殊运行状态结束后,系统恢复工作,继续正常运行。 图1 交通灯运行切换示意图

B红 CP A绿 A黄 A红 B黄 B绿 5S 5S 图2 交通灯时序图 (4)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 4、简易密码锁设计 内容及要求 设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮一个指示灯。否则进入“错误”状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又自动等待下一个开锁状态。 (4)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 5、出租车计价器设计 内容及要求 (1)设一个出租车自动计费器,计费包括起步价、行驶计费和等待计费三个部分,用4个数码管显示出金额数目,最大值为999.9元,最小计价单位为0.1元。行驶里程在3公里范围内且等待时间未超过三分钟时按起步价8元计费;行驶里程超过三公里后按每公里2元收费;等待时间超过三分钟后按每分钟1元收费。等待时间用两个数码管显示,最大值为59分钟。 总费用=起步价+(里程-3km )*里程单价+(等待时间-3)*等候单价 (2)能够实现的功能: 显示汽车行驶里程:用四位数字显示,单位为km 。 计程范围为0~99km ,计程分辨率为1km 。 显示等候时间:用两位数字显示分钟,单位为min 。计时范围为0~59min ,计时分辨率为1min 。

基于FPGA的交通灯课程设计报告

总体设计要求和技术要点 1.任务及要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。 (3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 (5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。 (6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。 工作内容及时间进度安排 第17周:周1---周2 :立题、论证方案设计 周3---周5 :程序设计与调试 第18周:周1---周3 :硬件调试与测试、撰写课程设计报告 周4---周5 :验收答辩 课程设计成果 1.与设计内容对应的软件程序 2.课程设计总结报告

摘要 本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。 Abstract This experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.

基于FPGA的交通灯设计说明

交通信号灯控制器

目录 第一章系统设计 1.1设计要求 (3) 1.2 方案比较 (3) 1.3方案论证 (3) 1.3.1总体思路 (4) 1.3.2设计方案 (5) 第二章单元电路设计 2.1 4位二进制计数器 (6) 2.2 两位二进制计数器 (6) 2.3定时时间到检测电路 (6) 2.4红黄绿灯输出控制电路 (6) 2.5计时器 (6) 第三章软件设计 3.1用VHDL编写程序 (6) 3.2 程序流程 (7) 3.3程序清单及仿真 (7) 第四章系统测试 (7) 第五章结论 (8) 参考文献 (9) 附录 (10)

0 引言 随着经济的飞速发展,现代化交通管理成了当今的热点问题。一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。本系统通过设计一交通信号灯控制器,达到交通控制的目的。除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。 第1章 系统设计 1.1设计要求 (1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。 (2) 交通灯红变绿是直接进行的,没有间隔时间。 (3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。 (4) 在任意时间,显示每个状态到该状态结束所需要的时间。 1.2方案比较 要实现对交通灯的控制,有很多的方案可供选择。 方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。 方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用围小,应用不广泛. 方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。 分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,所以采用第三种方案进行设计。 1.3 方案论证 1.3.1 总体思路 系统交通管理示意图如图1.3.1. 主干道 支干道 图1.3.1 路口交通管理示意图 由此可得出交通信号灯A 、B 、C 、D 的4种状态:

基于FPGA的十字路口交通灯控制器设计

石河子大学信息科学与技术学院 成绩存档 学期:2014 至2015学年第一学期 考试科目:电子EDA技术课程设计 专业:电子信息工程 班级:2012 (1)班 姓名: 学号: 任课教师:钟福如

目录 一、实验目的 (1) 二、测试方法 (1) 三、总的设计流程 (1) 四、交通灯控制器的具体设计方案 (1) 五、主要功能设计与仿真 (2) 1、时钟分频模块 (2) 2、交通灯控制模块 (3) 六、顶层文件 (8) 七、心得体会 (9) 八、参考文献 (10)

基于FPGA的十字路口交通灯控制器设计 一、实验目的: 弄懂交通灯的控制逻辑,注意是十字路口,分人行道与车道。车道分别有直行、左转、右转指示,且每个指示三种颜色:红绿黄,红绿转换时间设定2分钟,红与绿之间转换之前有30秒黄灯的闪烁;人行道有红、绿灯指示,红绿转换时间间隔2分钟,且在红绿转换之间有30秒的黄灯闪烁 二、测试方法: 输入技术脉冲信号,仿真波形的输出端的交通指示灯能按题目要求变化. 三、总的设计流程 首先根据交通灯控制器的功能要求,将功能要求转化成系统流程图,然后对系统进行模块的划分、定义各个模块的具体功能。再开始对各个模块用VHDL语言编程,并在Quartus II环境下进行编译及功能仿真。 四、交通灯控制器的具体设计方案

主干道 支 干 道 图1 十字路口交通灯控制器的平面图 实现红黄绿灯的自动指挥。通过交通灯控制器要能够使用于一条由主干道和支干道交汇处的十字路口(假设东西方向为主干道,南北方向为支干道)。且遵循“主干道优先考虑”原则,主、支干道红、绿灯亮的时间不完全一致,在正常情况下主干道允许车辆通行的时间更长。在绿灯转换为红灯的过程中有黄灯进行,使车辆有足够的时间停下来。另外由VHDL语言合理设计交通灯控制器的功能,以使绿、黄、红灯的转换有一个准确的转换顺序和时间间隔。依据设计要求,最终画出如图所示的系统框图。(图1)

(完整版)基于FPGA的温度传感器课程设计

FPGA课程设计论文 学生姓名周悦 学号20091321018 院系电子与信息工程学院 专业电子科学与技术 指导教师李敏 二O一二年5月28 日

基于FPGA的温度传感器系统设计 1引言 温度是一种最基本的环境参数,人们的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器;模拟集成温度传感器;智能集成温度传感器。目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。本文将介绍采用智能集成温度传感器DS18B20,并以FPGA为控制器的温度测量装置的硬件组成和软件设计,用液晶来实现温度显示。 2电路分析 系统框图如下: 第一部分:DS18B20温度传感器 美国 Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的 DS18B20 体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。 DS18B20 的主要特性:(1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电(2)独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯(3)DS18B20 支持多点组网功能,多个DS18B20 可以并联在唯一的三线上,实现组网多点测(4)DS18B20 在使用中不需要任何外

FPGA课程设计报告--简易电子琴的设计[1].doc

西安邮电大学 FPGA课程设计报告 题目:简易电子琴设计及FPGA功能验证 院系: 专业班级: 学生姓名: XX 导师姓名: XX 起止时间: 2012、6、18至2012、6、29

一、课程设计任务: 本设计一个简易电子琴,具体功能如下: 1、具有手动弹奏和自动播放功能; 2、以按键或开关作为电子琴的琴键,输出7个音节的音阶; 3、可以自动播放曲目至少两首。 二、课程设计目的: 1、培养综合运用知识和独立开展实践创新的能力; 2、深入学习Verilog HDL,了解其编程环境; 3、学会运用Modelsim和Quartus II等编程仿真软件; 4、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习; 三、使用环境: 1、软件:Modelsim和Quartus II等编程仿真软件; 2、硬件:FPGA开发板。 四、课程设计详细方案及功能验证: 1、总体实现方案: 1、简易电子琴的设计通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus II。电子琴有按键代替琴键的弹奏功能和自动播放功能。 2、整个程序总共分5个模块:主模块,按键模块,曲目1模块,曲目2模块,曲目3模块。 整个方案总共用了9个按键(key1~key9),按键key1~key7作为琴键,通过这七个按键键入不同的音阶。主模块中key8、key9两个按键用于选择是自动播放还是弹奏曲目,令mm=(key8、key9),用mm值的不同选择调用不同模块。如果mm=00,则程序调用按键模块;如果mm=01,则调用曲目1模块,播放曲目1;如果mm=10,则调用曲目2模块,播放曲目2;如果mm11,则调用曲目3模块,播放曲目3。 本次设计的框图:

基于FPGA的交通灯(verilog)

基于同步FSM交通信号控制器 试验目的 1、进一步熟悉FSM原理; 2、交通信号控制逻辑的抽象建模方法; 3、掌握同步有限状态机的置位与复位方法; 3、掌握编写可综合的FSM一般指导原则; 试验原理 Verilog HDL和VHDL亍为描述用于综合还只有十年的历史,可综合风格的VerilogHDL和VHD啲语法只是它们各自语言的一个子集;HDL的可综合性研究近年来非常活跃,可综合子集的国际标准目前尚未最后形成,因此,各厂商的综合器所支持的HDL子集也略有不同;对于有关可综合的VerilogHDL的内容我们只着重于介绍RTL算法级和门级结构的描述;把一个时序逻辑抽象成一个同步有限状态机是设计可综合VerilogHDL 模块的关键。有限状态机是设计各种时序逻辑电路的关键。具体的有限状态机的原理可以参看试验七有关原理的介绍。下面介绍一般的可综合有限状态机的编写原则 每个always 块只能有一个事件控制@(event_expression) ,而且要紧跟在 always 关键字后面; always 可以表示时序逻辑或者组合逻辑;也可以用always 块既表示电平敏感的锁存器又同时表示组合逻辑; 带有posedge或negedge关键字的事件表达式表示边沿触发的时序逻辑,没有posedge或negedge关键字的表示组合逻辑或者电平敏感的锁存器,或者两者都表示; 每个表示时序的always 块只能由一个时钟跳变沿触发,置位和复位最好也由该始终跳变沿触发; 每个在always 块中赋值的信号必须定义为reg 类型或者整型; Always 块中应该避免组合反馈回路; 实验步骤和实验内容 1、本试验交通信号控制灯的逻辑关系该交通信号灯控制器用于控制一条主干道与一 条乡村公路的交叉口的交通 ( 如图8-1 所示) ,它必须具有下面的功能;由于主干道上来往的车辆较多,因此控制主干道的交通信号灯具有最高优先级,在默认情况下,主干道的绿灯点亮;乡村公路间断性地有车经过,有车来时乡村公路的交通灯必须变为绿灯,只需维持一段足够的时间,以便让车通过。只要乡村公路上不再有车辆,那么乡村公路上的绿灯马上变为黄灯,然后变为红灯;同时,主干道上的绿灯重新点亮;一传感器用于监视乡村公路上是否有车等待,它向控制器输入信号X;如果X=1,则

(完整版)FPGA课程设计(最终版)

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目: 电子琴的设计 课程设计目的: 《FPGA原理与应用》课程设计的目的是为了让学生熟悉基于VHDL语言进行FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会EDA技术的强大功能,为今后使用FPGA进行电子设计奠定基础。 课程设计内容和要求 设计内容: (1)设计一个八音电子琴。 (2)由键盘输入控制音响,同时可自动演奏乐曲。 (3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。 要求每个学生单独完成课程设计内容,并写出课程设计说明书、说明书应该包括所涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩。 时间安排: 指导教师签名:年月日

系主任(或责任教师)签名:年月日

目录 摘要 (1) Abstract (2) 1设计意义和要求 (3) 1.1设计意义 (3) 1.2功能要求 (3) 2方案论证及原理分析 (4) 2.1实现方案比较 (4) 2.2乐曲实现原理 (4) 2.3系统组成及工作原理 (6) 3系统模块设计 (8) 3.1顶层模块的设计 (8) 3.2乐曲自动演奏模块的设计 (8) 3.3音阶发生器模块的设计 (9) 3.4数控分频器模块的设计 (9) 4程序设计 (11) 4.1VHDL设计语言和ISE环境简介 (11) 4.2顶层模块的程序设计 (12) 4.3乐曲自动演奏模块的程序设计 (13) 4.4音阶发生器模块的程序设计 (13) 4.5数控分频模块的程序设计 (14) 5设计的仿真与实现 (15) 5.1乐曲自动演奏模块仿真 (15) 5.2音调发生模块仿真 (18) 5.3数控分频模块仿真 (19) 5.4电子琴系统的仿真 (20) 5.5设计的实现 (22) 5.6查看RTL视图 (23) 5.7查看综合报告 (25) 6心得体会 (31) 7参考文献 (32) 8附录 (33)

基于FPGA的交通灯设计报告

合肥学院综合课程设计报告 题目:基于FPGA的交通灯设计 专业:电子信息工程 班级:09电子(2)班 姓名:周峰 导师: 成绩: 2012年12月11日

基于FPGA的交通灯设计 一:题目要求 1:主干道绿灯时,支干道红灯亮,反之亦然,两者交替允许通行。主干道每次放行40秒,支干道每次放行30秒。每次路灯亮,前10秒为左转灯亮,后5秒为黄灯亮。余下为直行灯亮、 2:能实现正常的倒计时显示功能。 3:能实现总体清零功能;计数器由初始状态开始计数,对应状态的指示灯亮。二:题目分析 1:在十字路口东西方向和南北方向各设一组左转灯、;显示的顺序为:左转灯绿灯黄灯红灯。 2:设计一个倒计时显示器。倒计时只显示总体时间。主干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、30秒、25秒、5秒。支干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、40秒、15秒、5秒状态表如表3-1所示:3 三:选择方案 1:方案一 在VHDL设计描述中,采用自顶向下的设计思路,该思路在自顶向下的VHDL 设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。通过上面的分析,不难得知可以把交通灯控制系统划分为3个模块:时钟模块、控制模块、分频模块。 2:方案二 不采用方案一的分模块设计,直接用进程写程序。该程序由7个进程组成,进程P1将CLK信号分频后产生1秒信号,P2形成0-49的计数器,进程P3、P4用来控制的信号灯亮灭的,其中P5、P6产生数码管显示的倒数的十进制形式。进程P7实现状态转换和产生状态转换的控制信号,进而控制数码管显示。 由于方案一中使用进程会使程序变得很复杂,不易理解,所以我采用了方案二。

FPGA课程设计

FPGA课程设计 学院: 年级专业: 学生姓名: 日期:

题目:用Verilog语言设计一个程序来控制数码管动态显示0~F 小组成员: 指导老师: 开发板:A-C8V4 芯片型号:CycloneII EP2C8Q208C8N 设计目的: 本课程设计的目的是熟练掌握相关软件的使用和操作。能对Verilog语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。在成功掌握软件操作基础上,将所数字电路的基础课知识与Verilog语言的应用型知识结合起来并与实际设计,操作联系起来,即“理论联系实际”。深入了解Verilog语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。对EDA技术有初步的认识,并开始对EDA技术的开发创新有初步的理解。 设计内容:利用verilog语言设计一个程序,其功能是使LED数码管循环动态显示0~F 程序设计: module led0 (clk_50M,led_bit,dataout); input clk_50M; output [7:0] dataout; output led_bit; reg [7:0] dataout; reg led_bit; reg [27:0] count; always led_bit <= 'b0; always @ ( posedge clk_50M ) begin count<=count+1; end always @ ( posedge clk_50M ) begin case ( count[27:24] ) 0: dataout<=8'b11000000; 1: dataout<=8'b11111001; 2: dataout<=8'b10100100; 3: dataout<=8'b10110000; 4: dataout<=8'b10011001; 5: dataout<=8'b10010010; 6: dataout<=8'b10000010; 7: dataout<=8'b11111000; 8: dataout<=8'b10000000; 9: dataout<=8'b10010000; 10:dataout<=8'b10001000; 11:dataout<=8'b10000011; 12:dataout<=8'b11000110; 13:dataout<=8'b10100001; 1

FPGA课程设计

河南机电高等专科学校 《可编辑逻程器件原理与应用课程设计》 题目:数字跑表 班级: 学号: 姓名: 2012年6月8日

数字跑表设计 一、设计题目 设计一个以0.01s为基准计时信号的实用数字式跑表 二、设计要求 1)跑表计时显示范围0.01s—59min59.99s,计时精度为10ms。 2)具有清零、启动计时、暂停计时功能,操作按键(开关)不超过2个。 3)时钟源误差不超过0.01s。 三、总体设计思路 数字秒表设计采用模块化思想,自顶向下设计。总体上含有分频模块、计时控制器模块、计数模块、LED显示模块四个基本模块。各模块功能如下:(1)分频模块 分频器通过对256Hz时钟分频产生100Hz时钟,它同COUNT10中的十进制计数器要求的时钟频率一致。 (2)计时控制器模块 计时控制器模块的作用是将按键信号转变为计时器的控制信号。本设计中设置了2个按键,即启动/暂停键和清零键,由它们产生的计数允许保持和清零信号。 (3)计时模块 计时器通过对10ms脉冲的计数,达到计时的目的。由于数字跑表的计时范围为0到59分59.99秒,所以计时模块COUNT共需四个十进制计数器和两个六进制计时器。 (4)LED显示模块 用于数字跑表的最后显示 四、设计步骤如下: (1)分频模块 由于试验箱没有100Hz的时钟源,所以应设计分频模块分频。将输出256Hz 的时钟频率经过分频得到100Hz的时钟源,作为百分之一秒位的时钟输入, 每产生一个时钟上升沿,计数器加1即为10ms。新建Text Editor,以VHDL语言设计分频模块,程序源码如下: library ieee; use ieee.std_logic_1164.all; entity DIV is Port (clr:in std_logic; clk:in std_logic; clkout:out std_logic); end DIV; architecture a of DIV is begin process (clk,clr)

基于FPGA的交通灯设计(状态机)

基于FPGA的交通灯设计规范 一、功能描述: 本设计实现一个交通信号灯,具体功能如下: 1.异步信号复位,复位后1组为红灯亮2组为绿灯亮,数码管显示从24开始 依次递减计数 2.实现红黄绿灯的延时交替亮灭,分两组灯,1组红灯亮时,2组为黄灯,5 秒后,1组红灯亮,2组绿灯亮;25秒后,1组黄灯亮,2组红灯亮;5秒后,1组绿灯亮,2组红灯亮。如此交替重复 3.计时时间25秒、5秒显示在数码管上。分别为:从24依次递减到0,从4 依次递减到0 二、输入输出信号描述:

系统结构框图 顶层模块说明: 1、fenpin:将50MHz晶振转为1Hz作为时钟频率; 2、delay:计数延时; 3、state:指出状态转移顺序; 4、shuma:将计数延时用数码管输出显示。 设计说明: 设计分为分频、延时、状态机、数码管显示四个模块。分频,将50MHz的系统时钟转为1Hz。计数延时,让状态机能在合适的时间点进行状态切换。状态机,完成状态间的切换,输出。数码管显示,将延时模块的计时输出值转换为数码管输出显示。 状态机的输出状态信号标志flag=out[1]|out[4],即为:判断此时的两组输出是否有黄灯亮。flag_data=flag,作为计数延时模块的输入,用状态信号标志flag_data和计数值cnt来共同控制计数模块是5秒还是25秒。 四、子模块描述: 4.1、fenpin:分频模块 1、功能描述 将实验板上的50MHz的石英晶振频率转为1Hz。 2、管脚描述

每当clock时钟上升沿来临时,内部寄存器sum从0递加,加至25000000时,对clk进行取反操作,则可得到频率为1Hz的clk时钟 4.2、delay:延时模块 1、功能描述 计数延时,让状态机能在合适的时间点进行状态切换。 用计数值和状态信号标志的与结果(cnt==0 && flag_data)来判断计数延时的初始值应为24还是4 4.3、state:状态机模块 1、功能描述 完成状态间的切换,输出。 状态信号标志flag=out[1]|out[4]。即为检测当前是否有黄灯亮。 注:out[5:3]对应1组灯的:红黄绿 out[2:0]对应2组灯的:红黄绿 4.4、shuma:数码管显示模块 1、功能描述 将延时模块的计时输出值转换为数码管输出显示。

FPGA课程设计报告

F P G A课程设计报告 (实现多功能数字钟) 专业班级: 07通信2班 姓名:朱绍兴 学号:0701******** 时间:2009.12.30

一、标题:设计多功能数字钟控制电路 二、任务书:用MAX+PLU SⅡ软件及Verilog HDL语言设计 一个多功能的数字钟,包括有时、分、秒的计 时,以及校时(对小时、分钟和秒能手动调整 以校准时间)、正点报时(每逢整点,产生“嘀 嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。 三、关键词:24进制、60进制、正点报时、校时、数字钟 四、总体方案:多功能数字钟控制电路框图是由三部分组成 的,即秒分时控制电路、整点报时控制电路、 时段控制电路。用Verilog HDL硬件描述语 言完成编译和仿真。 五、原理框图如下: ↓ ↓ ↓

六、Verilog HDL硬件描述语言编写的功能模块: /*秒计数器m60*/ module m60(M,CP60M,CPM,RD); output [7:0]M; output CP60M; input CPM; input RD; reg [7:0]M; wire CP60M; always@(negedge RD or posedge CPM) begin if(!RD) begin M[7:0]<=0; end else begin if((M[7:4]==5)&&(M[3:0]==9)) begin M[7:0]<=0; end else begin if(M[3:0]==9) begin M[3:0]<=0; if(M[7:4]==5) begin M[7:4]<=0;end else M[7:4]<=M[7:4]+1; end

FPGA课程设计报告

FPGA课程设计报告 题目:基于CPLD的 1602字符液晶显示系统设计院系:信息与电气工程学院 班级:电子信息工程 学号: 学生姓名: 指导教师: 成绩: 2011 年7 月

基于CPLD的1602字符液晶显示系统设 计 一. 设计题目: 基于CPLD的1602 字符液晶显示系统设计 二.设计要求技术指标: 要求用1602 液晶显示字符; 显示内容:学号+英文姓名; 显示方式:流动显示,开关控制字符 流动速度及方向;具有暂停和清 屏的功能; 三.设计平台: QUARTUSII软件MARS-1270 CPLD 1602 液晶 四.设计思路与设计步骤: 液晶指令介绍: 要想控制1602 液晶显示字符,首先需要弄清 楚1602 有那些可控管脚, 有哪些控制命令,如何控制其显示,如何控制其移动及如何控制其移动速度及方 (1)接口说明:

(2)基本操作时序: A. 读状态:输入:RS=L,RW=H,E=H,输出:D B0--DB7=状态字 B.写指令:输入:RS=L,RW=L,E=下降沿脉冲, DBO--DB7=指令码, 输出:无 C.读数据:输入:RS=H,RW=H,E=H输出:, D B0--DB7=数据 D.写数据:输入:RS=H,RW=L,E=下降沿脉冲, DBO--DB7=数据, 输出:无 (3)指令集及其设置说明: A. 清屏指令: 功能:<1> 清除液晶显示器即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 B.进入设置模式指令: 功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个 字符是否移动。参数设定的情况如下所示: 位名设置 I/D 0= 写入新数据后光标左移1= 写入新数据后光标右移

基于FPGA的交通灯设计开题报告

西京学院 本科毕业设计(论文)开题报告题目:基于FPGA的交通灯设计 教学单位:xxx 专业:xxx 学号: xxx 姓名: xxx 指导教师:xxx xxxx年xx月 开题报告填写要求

1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及所在院(系)审查后生效。 2.开题报告内容必须按教务处统一设计的电子文档标准格式(可从教务处网页上下载)填写并打印(禁止打印在其它纸上后剪贴),完成后应及时交给指导教师签署意见。 3.开题报告字数应在1500字以上,参考文献应不少于15篇(不包括辞典、手册,其中外文文献2篇),文中引用参考文献处应标出文献序号,“参考文献”应按照国标GB 771至少4—87《文后参考文献著录规则》的要求书写。 4.指导教师意见和所在院(系)意见用黑墨水笔书写,并亲笔签名。 5. 年、月、日的日期一律用阿拉伯数字书写,例:“2005年11月26日”或“2005-11-26”。

1.毕业设计(论文)题目背景、研究意义及国内外相关研究情况。 1、课题背景和意义: 今年来,随着汽车数量的猛增,我国中大型城市的城市交通,正面临着严峻的考验,从而导致交通问题的日益严重,其主要表现如下:交通事故的频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益增加等。日常的交通堵塞成为人们司空见惯而有不得不忍受的问题。在这种背景字儿,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。 和谐的城市交通具有很重要的现实意义,城市交通是城市经济生活的命脉,是衡量一个城市文明进步的标志,对于城市经济的发展和人民生活水平的提高起着十分重要的作用。作为城市交通网的重要组成部分。交叉口是道路通行能力的瓶颈和交通阻塞及事故的多发地。城市的交通拥堵,大部分是由于交叉口的通行能力不足或没有充分利用造成的,这导致车流中断、事故增多、延误严重。对交叉实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市交通问题的有效途径。所以,改变和完善我国现有的交通系统已成为当务之急。 2、国内外研究情况: 目前设计交通灯的方案有很多,有应用CPLD设计实现交通灯控制方法;有应用PLC实现对交通灯控制系统的设计;有应用单片机实现对交通灯设计的方法;还有用FPGA实现交通灯的设计;目前国内的交通灯一半设计在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯,加上一个倒计时的显示计时器来控制行车,对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1、两车道的车辆轮流放行时间相同,在十字路口,经常一个车道为主干道,车辆较多,放行时间应长些;另一车道为副干道,车辆较少,放行时间应短些。2、两条干道的红绿时间不能随时间改变而修改。

相关主题
相关文档 最新文档