基于FPGA的交通灯设计_第1页
基于FPGA的交通灯设计_第2页
基于FPGA的交通灯设计_第3页
基于FPGA的交通灯设计_第4页
基于FPGA的交通灯设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要 本系统采用EDA实验箱设计交通灯控制器,模拟实现了红、绿、黄灯指挥交通的功能。它直接采用FPGA/CPLD芯片开发,用Verilog HDL语言编程和QUARTUS 13.0设计。交通灯控制器设计,系统的阐述了用FPGA/CPLD芯片实现数字电路的设计过程,展示了FPGA/CPLD芯片的强大功能和非凡特性。本交通灯控制器适用东西和南北方向的车流量大致相同的路口,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。基于FPGA的交通灯设计系统具有可靠性强、实时快速擦写、运算速度高、故障率低、电路简单,且体积小的特点。本毕业设计采用的是Altera公司Cyclo

2、neII系列的EP1C3芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能;使用QuartusII软件作为开发平台;采用自顶向下的设计思路对系统进行模块化设计和综合,并通过波形仿真和硬件实现两种方式实现并验证数字信号交通灯的功能。  关键字:FPGA  Verilog HDL语言 交通灯  倒计时  第一章 绪 论近 20 年来,电子系统的设计方法都发生了深刻的变化。在以前,数字系统多才用搭积木的方式设计的,即由一些固定的功能的器件加上一定的外围

3、电路构成模块,由这些模块在进一步构成各种功能的电路。构成系统的“积木快”是固定的,用户只能根据需要从标准器件中选出最合适的,并按照推荐的电路搭成系统。在设计几乎没有灵合性可言,设计一个系统所需的芯片种类数量越来越多。而 FPGA(现场可编程阵列)等 PLD 器件和 EDA 技术的出现改变了传统的设计思路, 使人们可以通过设计芯片来实现各种不同的功能电路。新的设计方法能够有设计者自己定义器件的内部逻辑合管脚,将原来有电路板设计完成的工作大部分放在芯片的设计中进行。这样就可以通过芯片设计实现各种数字逻辑功能,而且由于管脚定义的灵合性,大大地减轻了原理图和印制电路板设计的工作量和难度,还增加了设计的

4、自由度,提搞了效率。同时减少了所用芯片的种类和数量, 缩小了体积, 降低了功耗, 提高了系统的可靠性。 基于 FPGA和 EDA 技术的优越性,科研人员致力于有关方面的研究,1985 年 Xilinx 推出自己的第一片 FPGA,到今天,FPGA 已经从最初的 1000 多个可用门发展到现在的百万门以上,工艺尺寸也达到了 0.15 微米的深亚微米级,金属布线层数也达到了 7 层以上。Atlera 先后推出了 MAX 7000、MAX 9000、FLEX 10K、ACEX 1K APEX 20k、APEX-E、Mercury Devices、StraixDevices、Cyclone 等器件系列

5、,其集成度不断提高,可用门数已达到百万门以上。在器件中,除集成各种逻辑门和寄存器外,还植入了嵌入式系统块,可构成 RAM 、ROM 、FIFO或者 CAM 等储存器,也可以用作乘积项以实现一般的逻辑功能。当前基于 EDA 技术的设计中,有两种基本的设计思路,一种是自上而下的设计思路,一种是自下而上的设计思路。Top-down 设计,即自上而下的设计,这种设计方法首先从系统设计入手,在顶层进行功能框图的划分和结构设计,在功能级别进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应的物理实现可以是 PLD 器件或专用集成电路(ASIC)。由于

6、设计的主要仿真和调试是在高层次上完成的,这不仅有利于早期发现结构设计错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功的效率。在 Top-down 设计中,将设计分成系统级、功能级、门级、开关级等几个不同的层次,按照自上而下的顺序,在不同的层次上,对系统进行设计和仿真。Bottom-up 设计,即自下而上的设计,这是一种传统的设计思路。当前 Top-down 设计更为人们所接受,也为更多的 EDA 工具所支持,以为该设计思想更符合人们的逻辑思维的习惯,也容易使设计者对复杂的系统进行合理的划分与不断的优化。在该设计中采用了可编程逻辑器件(FPGA)和硬件描述语言(V

7、erilog HDL),改变了传统的设计思路,设计者可以通过芯片设计来实现各种不同的功能。设计人员使用相应的仿真软件就可以在短的时间内完成电路的输入、编译、优化、仿真直到最后的芯片制作。对于 FPGA 用户可以反复的编程、擦除、使用,或者在外围电路不变的情况下,用不同的软件就可实现不同的功能。 譬如, 如已经用该方法设计完成的交通灯由于用在不同的路口,对时间设置有不同的要求(或某一路口交通灯的时间设置需要改变)时,并不需要改变外围硬件电路,只要修改软件的时间预置数即可。第二章 Verilog HDL 语言简介随着EDA技术的发展,使用硬件描述语言(HDL)进行FPGA设计已经成为主流。目前最主

8、要的硬件描述语言是VHDL和Verilog HDL。VHDL发展的比较早并且语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。两者相比,VHDL的书写规则比Verilog HDL繁琐一些,但是Verilog HDL 相对自由的语法也容易让初学者出错。2.1 什么是 Verilog HDLVerilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。 数字系统能够按层次描述, 并可在相同描述中显式地进行时序建模。 Verilog HDL语言具有下

9、述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。 所有这些都使用同一种建模语言。 此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用

10、,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。2.2 为什么要用 Veeilog HDL2.2.1 Verilog HDL 的历史Verilog HDL 是硬件描述语言的一种,用于数字电子系统设计。该语言是 1983 年由GDA( GateWay Design Automation )公司的 Phil Moorby 首创的。 Phil Moorby 后来成为 Verilog XL的主要设计者和 Cadence 公司( Cadence Design System )的第一个合伙人。在 1984-1985 年间, Phil Moorby 设

11、计出第一个名为 Verilog-XL 的仿真器;1986 年,他对 Verilog HDL 的发展又一次作出了巨大贡献 提出了用于快速门级仿真的 XL 算法。随着 Verilog-XL 算法的成功, Verilog HD 语言得到迅速发展。 1989 年, Cadence公司收购 GDA 公司, Verilog HDL 语言成为了 Cadence 公司的私有财产。 1990 年,Cadence公司决定公开 Verilog HDL 语言, 并成立了 OVI ( Open Verilog International )组织, 并负责促进 Verilog HDL 语言的发展。 基于 Verilog

12、HDL 的优越性, IEEE 于 1995年制定了 Verilog HDL 的 IEEE 标准,即 Verilog HDL1364-1995 ; 2001 年发布了Verilog HDL1364-2001 标准。2.2.2 传统数字电路设计方法的回顾1)用布尔方程设计如果不知道门和触发器这些基本的组件,是很难设计数字系统的。很多基于门和触发器的逻辑电路传统上都是用布尔方程设计的。同时产生了很多技术来优化此种方法,包括减少方程来节约使用门和触发器。理论上,任何系统都能用布尔方程来表示。但是要处理描述这个系统的上千个逻辑方程是非常困难的,而且这种方法也不适用。2)基于原理图设计基于原理图的设计扩展

13、了布尔方程的能力。以为它不仅可以利用逻辑门、触发器,也可以利用电路模块,这样一个层次结构就建立了。层次设计使得包含上千个元件的电路设计简单化。3)传统设计的缺点尽管传统设计容易使用,但它也有一些缺点。比如要处理复杂的设计,处理上百个的逻辑方程虽然可行但很困难。2.3 Verilog HDL 的特点Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰地模拟、仿真语义。使用这种语言编写的模型可以方便地使用Verilog仿真器进行验证。Verilog HDL从C语言继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力和扩展模块。VerilogHDL语言的核心子集非常

14、容易学习和使用,这对大多数建模应用来说已经足够。Verilog HDL之所以成为和VHDL并驾齐驱的描述语言,以为它有如下特点: 基本逻辑门,例如and、or和nand等都内置在语言中。 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。 提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。 Verilo

15、g HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 能够描述层次设计,可使用模块实例结构描述任何层次。 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。 Verilog HDL不再是某些公司的专有语言而是IEEE标准。 人和机器都可阅读Verilog 语言,因此它可作为EDA的工具和设计者之间的交互语言。 Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。 设计能够在多个层次上加以描述

16、,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。 能够使用内置开关级原语在开关级对设计完整建模。 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。 Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。 在行为级描述中, Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。 能够使用门和模块实例化语句在结构级进行结构描述。 Verilog HDL 有混合方式建模能力,即在一个设计中每个模块均可以

17、在不同设计层次上建模。 Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。 可以显式地对并发和定时进行建模。 提供强有力的文件读写能力。 语言在特定情况下是非确定性的, 即在不同的模拟器上模型可以产生不同的结果; 例如,事件队列上的事件顺序在标准中没有定义。2.4 Verilog HDL 程序基本结构模块是Verilog HDL的基本描述单位,描述某个设计的功能或结构及与其他模块通信的外部端口。一个模块的基本语法如下:module module_name/模块名称(port_list);

18、/输入输出信号列表/说明reg/寄存器wire/线网parameter/参数input/输入信号output/输出信号inout/输入输出信号function/函数task/任务/语句Initial statementAlways statementModule instantiation/Gate instantiation/UDP instantiation/Continuous assignment/Endmodule说明部分用于定义不同的项,例如模块描述中使用寄存器和参数、语句定义设计的功能和结构。说明部分和语句可以放置在模块的任何地方,但是变量、寄存器、线网和参数等的说明部分必须在使

19、用前出现。为了使模块描述清晰和具有良好的可读性,最好将所有的说明部分放在语句前。2.5 Verilog HDL 的设计流程1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的 HDL 编辑环境。通常Verilog HDL 文件保存为 .v 文件。2)功能仿真:将文件调入 HDL 仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只有在布线完成之后,才进行时序仿真) 。3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成 .edf ( EDIF )的 EDA 工业标准文件。(最好不用 MAX+PLUS II 进行

20、综合,因为只支持 VHDL/Verilog HDL 的子集)4)布局布线:将 .edf 文件调入 PLD 厂家提供的软件中进行布线,即把设计好的逻辑安放到 CPLD/FPGA 内。5)时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序也叫后仿真。第三章 FPGA 简介FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPG

21、A 一类高集成度的可编程逻辑器件,起源于美国的 Xilinx 公司,该公司于 1985年推出了世界上第一块 FPGA 芯片。在这二十年的发展过程中,FPGA 的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。从最初的 1200 个可用门,90 年代时几十万个可用门,发展到目前数百万门至上千万门的单片 FPGA 芯片,Xilinx、Altera 等世界顶级厂商已经将 FPGA 器件的集成度提高到一个新的水平。 FPGA 结合了微电子技术、 电路技术、EDA 技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。3.1 FPGA 基本结构目前生产 FPGA 的公司主要有

22、 Xilinx、Altera、Actel、Lattice、QuickLogic 等,生产的 FPGA 品种和型号繁多。 尽管这些 FPGA 的具体结构和性能指标各有特色, 但它们都有一个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块,从而实现不同的设计。典型的 FPGA 通常包含三类基本资源:可编程逻辑功能块、可编程输入/输出块和可编程互连资源。可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;可编程内部互连资源包括各种长度的连线线段和一些

23、可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。不同厂家或不同型号的 FPGA,在可编程逻辑块的内部结构、规模、内部互连的结构等方面通常存在较大的差异。除了上述构成 FPGA 基本结构的三种资源以外, 随着工艺的进步和应用系统需求的发展,一般在 FPGA 中还可能包含以下可选资源:存储器资源(块 RAM、分布式 RAM);数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);算数运算单元(高速硬件乘法器、乘加器);多电平标准兼容的 I/O 接口;高速串行 I/O 接口;特殊功能模块(以

24、太网 MAC 等硬 IP 核);微处理器(PowerPC405 等硬处理器 IP 核)。下面以 Xilinx 公司的 Spartan-II 系列以及 Altera 公司的 Cyclone-II 系列 FPGA 为例,介绍 FPGA 的一般结构。Xilinx 公司的 Spartan-II 系列 FPGA 器件主要包括 5 个可配置部分:(1)可配置逻辑块(Configurable Logic Blocks,CLBs),用于实现大部分逻辑功能;(2)在 CLBs 的四周分布着可编程的输入输出块(Input/Output Blocks,IOBs),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多

25、层互连结构的可编程连线;(4)片上的随机存取块状 RAM(BLOCK RAM);(5)全数字式延迟锁相环(DLL)时钟控制块,与每个全局时钟输入缓冲器相连,该闭环系统确保时钟边沿到达内部触发器与其到达输入引脚同步,有效地消除时钟分配的延迟。Altera 公司 FPGA 器件 Cyclone-II 系列的基本结构主要包括:(1)逻辑阵列,由多个逻辑阵列块(Logic Array Blocks,LABs)排列而成,用于实现大部分逻辑功能;(2)在芯片四周分布着可编程的输入输出单元(Input/Output Elements,IOEs),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构

26、的可编程连线;(4)片上的随机存取块状 RAM;(5)锁相环(PLL),用于时钟的锁定与同步、能够实现时钟的倍频和分频;(6)高速的硬件乘法器,有助于实现高性能的 DSP 功能。3.2 FPGA的优点FPGA 是在 PAL、 GAL 等逻辑器件的基础上发展起来的, 同以往的逻辑器件相比较,FPGA的规模较大,它可以替代几十甚至几千块通用 IC 芯片。可以说,FPGA 芯片是小批量系统提高集成度、可靠性的最佳选择之一。FPGA 芯片可以被称为可订制的特殊 ASIC 芯片,它除了具有 ASIC 的特点之外,还具有以下几个优点:1)随着 VISI(Very large Scale IC,大规模集成电

27、路)工艺的不断提高,单一芯片内部已可以容纳上百万个晶体管,这使得 FPGA 芯片所能实现的功能也越来越强,同时也可以实现系统集成。2)FPGA 芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里通过相关的软硬件环境来完成芯片的最终功能设计,所以,FPGA 的资金投入小,节省了许多潜在的费用。3)用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件即可实现不同的功能。4)FPGA 软件包含各种输入工具、仿真工具、版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直到最后芯片的制作。5)电路

28、设计人员使用 FPGA 进行电路设计时,不需要具备专门的 IC(集成电路)深层次的知识,FPGA 软件易学易用。3.5 FPGA 技术的发展趋势随着微电子技术、EDA 技术、以及应用系统需求的发展,FPGA 正在逐渐成为数字系统开发的平台,并将在以下方面继续完善和提高:(1) 高集成度、大容量、低成本、低电压、低功耗;(2) 资源多样化;(3) 适用于片上系统:处理器、高速串行 I/O、DSP 等等;(4) 深亚微米工艺的使用。 目前基于 90nm 工艺的 FPGA 已经商用, 正在向 65nm挺进;(5) 各种软硬 IP 库的发展和完善;(6) 动态可重构技术实用化。第四章 Quartus

29、II 简介Quartus II 是 Altera 公司的新一代功能跟强大的综合性 PLD 开发软件,支持原理图、VHDL、Verilog HDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整 PLD 设计流程。Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II 支持 Altera 的 IP 核,包含了

30、 LPM/MegaFunction 宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放 EDA 工具,比如支持 Synplify pro、Lenoardo Specturn 以及 Modelsem 等第三方 EDA 工具来完成设计任务和仿真。此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体

31、,是一种综合性的开发平台。Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得到了广泛的应用。目前 Altera 已经停止了对 Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera 在 Quartus II 中包含了许多诸如 SignalTap II、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了 SOPC和 HardCopy 设计流程,并且继承了 Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计

32、环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件。Quartus II的一般设计流程:第

33、五章 设计任务与基本原理1设计内容和要求 (1)东西方向通行时,南北方向禁止通行。一个方向上直道通行30秒,左转灯通行25秒,然后黄灯5秒,之后切换方向。 (2)交通灯用红、绿、黄三种发光二极管(LED)代替。(3)红、绿、黄灯显示的次序应符合实际交通道路控制的要求。2系统的主要功能 交通灯控制电路是用于城市交通疏导的管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信

34、号灯。交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。设计一个十字路口交通控制器,方向分为东南西北四个方向。东西方向的红绿灯状态一样,南北方向的红绿灯状态一样。每个方向上,有四盏灯,分别是左转灯、红灯、绿灯和黄灯。左拐灯亮表示左转车辆可以通行;红灯亮表示左转和直行车辆禁行;绿灯亮表示直行车辆和右转的车辆可以通行;黄灯亮表示左转和直行的车辆即将禁行。 本论文简要介绍了FPGA器件的特点和设计意义,以QuartusII软件为开发平台,通过VHDL硬件描述语言以及原理图的输入方式来设计交通灯。交通灯控制器用于自动控制

35、十字路口交通灯和计时器。 第六章 系统模块的设计6.1状态机的设计在整个程序中,状态机起的是中央控制器的作用,由它控制的信号来影响整个程序中的其他相关部分。本设计的交通灯共有6个不同的状态。假设东西方向为A路,南北方向为B路,那么将是如下几种情况:A直行绿灯亮,左转红灯亮,B红灯亮;A左转绿灯亮,直行红灯亮,B红灯亮;A黄灯亮,B红灯亮;B直行绿灯亮,左转红灯亮,A红灯亮;B左转绿灯亮,左转红灯亮,A红灯亮;B黄灯亮,A红灯亮。按照上面的六种情况,设计状态机,其源程序如下:module traffic_control(clk,clr,en1,en2,en3,t1,t2,t3,ags,

36、agl,ay,ar,bgs,bgl,by,br);/ags:A路绿灯(green)直行(Straight)。其余类推input clk,clr,t1,t2,t3;output en1,en2,en3,ags,agl,ay,ar,bgs,bgl,by,br;reg en1,en2,en3,ags,agl,ay,ar,bgs,bgl,by,br;wire t1,t2,t3;parameter2:0 s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101;reg2:0 current_st

37、ate,next_current;always(posedge clk or negedge clr)begin if(!clr) current_state<=s0; /复位else current_state<=next_current;endalways(current_state or next_current)begin case(current_state)s0: begin en1<=1;en2<=0;en3<=0; /定时器1使能ags<=1;agl<=0;ay<=0;ar<=0; /A路直行绿灯亮bgs<=0;bgl

38、<=0;by<=0;br<=1; /B路红灯亮 if(t1=1) next_current<=s1; else next_current<=s0; ends1: begin en1<=0;en2<=0;en3<=1; /定时器3使能ags<=0;agl<=1;ay<=0;ar<=0; /A路左转绿灯亮bgs<=0;bgl<=0;by<=0;br<=1; /B路红灯亮 if(t3=1) next_current<=s2; else next_current<=s1;ends2: begin

39、 en1<=0;en2<=1;en3<=0; /定时器2使能ags<=0;agl<=0;ay<=1;ar<=0; /A路黄灯亮bgs<=0;bgl<=0;by<=0;br<=1; /B路红灯亮 if(t2=1) next_current<=s3; else next_current<=s2;ends3: begin en1<=1;en2<=0;en3<=0; /定时器1使能ags<=0;agl<=0;ay<=0;ar<=1; /A路红灯亮bgs<=1;bgl<=0

40、;by<=0;br<=0; /B路直行绿灯亮 if(t1=1) next_current<=s4; else next_current<=s3;ends4: begin en1<=0;en2<=0;en3<=1; /定时器3使能ags<=0;agl<=0;ay<=0;ar<=1; /A路红灯亮bgs<=0;bgl<=1;by<=0;br<=0; /B路左转绿灯亮 if(t3=1) next_current<=s5; else next_current<=s4;ends5: begin en1&

41、lt;=0;en2<=1;en3<=0; /定时器2使能ags<=0;agl<=0;ay<=0;ar<=1; /A路红灯亮bgs<=0;bgl<=0;by<=1;br<=0; /B路黄灯亮 if(t2=1) next_current<=s5; else next_current<=s0;endendcaseendendmodule6.2计时模块在交通灯系统中,我们根据规定的时间来切换状态,以达到控制交通,保持道路通畅的目的。计时模块的源程序设计如下:30秒计时:module counter30(clk,en1,t1,cnt

42、);input clk,en1;output t1;output4:0 cnt;reg t1;reg4:0 cnt;always(posedge clk) if(en1=1) if(cnt=5'b11101) begin cnt<=5'b00000; t1<=1;endelse begin cnt<=cnt+1; t1<=0;endendmodule6.3顶层文件模块的设计顶层综合各个模块设计,这样就完成了交通灯系统的Verilog HDL源程序编写。其源程序如下:module top(clk,clr,ags,agl,ay,ar,bgs,bgl,by,b

43、r);input clk,clr;output ags,agl,ay,ar,bgs,bgl,by,br;wire ags,agl,ay,ar,bgs,bgl,by,br,w1,w2,w3,w4,w5,w6;counter30 u1(.clk(clk),.en1(w4),.t1(w1);counter5 u2(.clk(clk),.en2(w5),.t2(w2);counter25 u3(.clk(clk),.en3(w6),.t3(w3);traffic_control u4(.clk(clk),.clr(clr), .t1(w1),.t2(w2),.t3(w3), .en1(w4),.en2

44、(w5),.en3(w6), .ags(ags),.agl(agl),.ay(ay),.ar(ar), .bgs(bgs),.bgl(bgl),.by(by),.br(br);endmodule第七章 仿真与分析利用QUARTUS软件对本程序进行编译,生成了可以进行仿真定时分析以及下载到可编程器件的相关文件。仿真结果如图所示由仿真波形图还可以清楚的看出各时间段每个交通灯的状态,当东西方向的绿灯亮时南北方向的红灯亮,其中有黄灯闪5秒的过程,这符合我们的设计要求,也达到了我们所要的结果,从波形上看实验程序是可行的。第八章 结论本次毕业设计的交通灯采用的是Altera公司CycloneII系列的EP

45、1C3T144C8N芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能;使用QuartusII软件作为开发平台;采用自顶向下的设计思路对系统进行模块化设计和综合,并通过波形仿真和硬件实现两种方式实现并验证交通灯的功能,完成了本次交通灯的设计。参考文献1.刘天浩. 基于CPLD交通灯控制系统的设研究J. 实验室科学, 2010 2.孟先军. 基于泛布尔代数的交通信号控制系统研究与设计D. 武汉: 武汉理工大学, 2007 3.杨捷,蒋炜华

46、,马临超.基于VHDL语言的交通灯控制器设计河南机电高等专科学校学报, 2008  4.庄建清, 徐玮. 51单片机综合学习系统DS1302时钟应用篇J.电子制作, 2008  5.文畅. 基于FPGA/CPLD和VHDL语言的交通灯控制系统设计J. 电脑知识与术, 2007 6.张淑骅. 基于FPGA的交通灯的VHDL设计J. 电力与能源, 2007 7.潘松, 黄继业. EDA技术实用教程M. 北京:&

47、#160;科学大学出版社,2008.  8.张红润. FPGA/CPLD应用设计M. 北京: 北京航空航天大学出版社, 2009. 9.吴慎将, 李党娟. 智能交通灯控制器的设计J. 中国科技核心期刊,  2010 10.邱磊, 肖兵. 基于VHDL语言的立通灯控制器设计J. 福建电脑: 2004.11.康桂霞,FPGA应用技术教程.人民邮电出版社.2013.附录:Verilog HDL语言源程序:module top(clk

48、,clr,ags,agl,ay,ar,bgs,bgl,by,br);input clk,clr;output ags,agl,ay,ar,bgs,bgl,by,br;wire ags,agl,ay,ar,bgs,bgl,by,br,w1,w2,w3,w4,w5,w6;counter30 u1(.clk(clk),.en1(w4),.t1(w1);counter5 u2(.clk(clk),.en2(w5),.t2(w2);counter25 u3(.clk(clk),.en3(w6),.t3(w3);traffic_control u4(.clk(clk),.clr(clr), .t1(w1)

49、,.t2(w2),.t3(w3), .en1(w4),.en2(w5),.en3(w6), .ags(ags),.agl(agl),.ay(ay),.ar(ar), .bgs(bgs),.bgl(bgl),.by(by),.br(br);endmodulemodule counter30(clk,en1,t1,cnt);input clk,en1;output t1;output4:0 cnt;reg t1;reg4:0 cnt;always(posedge clk) if(en1=1) if(cnt=5'b11101) begin cnt<=5'b00000; t1&l

50、t;=1;endelse begin cnt<=cnt+1; t1<=0;endendmodulemodule counter5(clk,en2,t2,cnt);input clk,en2;output t2;output1:0 cnt;reg t2;reg1:0 cnt;always(posedge clk) if(en2=1) if(cnt=2'b11) begin cnt<=2'b00; t2<=1;endelse begin cnt<=cnt+1; t2<=0;endendmodulemodule counter25(clk,en3,t3,cnt);input clk,en3;output t3;output4:0 cnt;reg t3;reg4:0 cnt;always(posedge clk) if(en3=1) if(cnt=5'b11001) begin cnt<=5'b00000; t3<=1;endelse begin cnt<=cnt+1; t3<=0;endendmodulemodule traffic_control(clk,clr,en1,en2,en3,t1,t2,t3,ags,agl,ay

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论