基于FPGA的交通灯控制器设计
- 格式:doc
- 大小:390.00 KB
- 文档页数:34
基于FPGA的交通红绿灯控制器姓名:学号:专业:班级:目录1.设计思路 11.1设计思想 11.2 系统功能与要求 11.3总体设计 22.主要模块设计程序 42.1主控制模块 42.2主程序 52.3定时计数器模块 153. 所实现功能说明 143.1实现功能 143.2仿真波形 144. 所设计原理图及故障分析 155.心得体会 17参考文献 18附录1 元件清单 19附录2 管脚 201.设计思路1.1设计思想交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。
目前很多城市交叉路口的交通灯实行的是定时控制,灯亮的时间是预先设定好的,在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。
本文利用FPGA的相关知识设计了交通灯控制系统,可以根据实际情况,交通拥堵时由交通警察人工控制某方向上的放行时间,以便按照交通负荷疏导阻塞车辆。
整个设计系统通过Max+PlusⅡ软件进行了模拟仿真,并下载到FPGA器件中进行硬件的调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能,具有一定的实用性。
1.2 系统功能与要求交通红绿灯控制器,假定十字交叉路口的两个方向各有一组红,黄,绿三个灯组成的交通灯设计一个可以由交通警察人工控制的红绿灯控制器,要求:(1)正常时,交通放行十字交叉路口的横纵两个方向,放行时间相等;(2)交通堵塞时,由交通警察人工控制某个方向的放行时间,以便按照交通负荷疏导阻塞车辆;(3)在正常运行状态下,两组交通灯按以下规律自动进行转换,在不同时刻分别放行不同方向的车辆:(绿,红)2s→(绿,黄红)0.5s→(黄,红)2s→(黄红,红)2s→(红,黄)1s→(红,绿)5s→(红,黄绿)0.5s→(红,黄)2s→(红,黄绿)2s→(黄,红)1s→(绿,红)3s(括号内以逗号分割的分别为横,纵两方向点亮的交通灯,横向红绿黄灯分别用LEDR0,LEDG0,LEDG1,表示,纵向红绿黄分别用LEDR4,LEDG4,LEDG5表示)(4)人工控制放行的方法是,在欲放行某个方向时按下该方向的“放行”按钮(控制)横向使用KEY0控制纵方向使用KEY1),则红绿灯自动将相应方向的道路方向,此后不会放行另一方向的道路,这时候若只按一次“恢复到正常状态”(KEY3),则整个系统恢复到正常运行状态。
课程设计一、设计任务要求基于FPGA的交通灯控制器设计1、总体要求:实现十字路口的交通灯有序显示2、具体要求:按照开发板上的两组红、黄、绿做为南北双向指示灯红灯亮60秒,绿灯亮55秒,黄灯亮5秒要求采用状态机实现状态切换3、附加要求:采用两组两位数码管实现时间倒计时显示二、设计思路1、总体设计方案由设计任务要求可知输入部分有:CLK时钟频率输入,可由实验板上直接提供,本设计选用1kHZ时钟频率。
输出部分有:1)东西方向和南北方向各使用3个LED显示,红黄绿各代表红黄绿灯。
2)东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。
由于为共阴极控制,输出三个SEL0,SEL1,SEL2信号控制选择数码管显示,A,B,C,D,E,F,G信号为输出显示的内容。
3)R1,G1,Y1;R2,G2,Y2信号分别为东西南北红绿灯的输出控制信号。
总体设计软件原理图如下所示设计方案原理图:图1A对应13脚; B对应30脚;C对应15脚; D对应31脚;E对应33脚; F对应32脚;G对应35脚; R1对应4脚;R2对应5脚;Y1对应3脚;Y2对应10脚;G2对应8脚;SEL0对应14脚; SEL1对应11脚;SEL2对应12脚.CLK对应24脚;交通灯系统结构图如下所示:红黄绿红黄绿图2状态切换的状态图如下图:图2、模块设计及结果在VHDL设计中,采用自顶向下的设计思路。
顶层模块中,根据硬件设计,设置如下端口:外部时钟信号:Clk东西方向状态灯控制信号:R1,G1,Y1;南北方向状态灯控制信号:R2,G2,Y2;(1)分频模块:由于外部时钟信号clk的频率为1KHz,而实际需要的内部计时时钟频率为1Hz,需要一个分频电路。
输入端口:clk外部时钟信号输出端口:clk_out分频后信号源程序代码如下:数码管显示信号:A,B,C,D,E,F,G;数码管共阴极控制:SEL0,SEL1,SEL2;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Frequency1 isport(clk:in std_logic; --外部时钟信号clk_out:out std_logic --分频后信号);end Frequency1;architecture Frequency1_arc of Frequency1 isbeginprocess(clk)variable temp:integer range 0 to 999;beginif(clk'event and clk='1')thenif(temp=999)then --分频计数temp:=0;clk_out<='0';elsetemp:=temp+1;clk_out<='1';end if;end if;end process;end;图4(2)状态选择模块:由于共需要显示4个数字,需要循环点亮7位数码管,该模块通过输入的时钟信号,循环输出4个选择信号。
《EDA技术使用教程》课程设计报告题目名称:基于FPGA的十字路口交通灯控制器设计学生姓名:学号:专业年级:指导教师:时间:2015年1月3日目录目录 (1)1 设计任务与要求 (2)2 方案设计与论证 (2)2.1系统设计思路 (2)2.2系统设计方案分析 (4)3 交通控制灯各模块电路设计 (5)3.1分位电路模块fenwei (5)3.2 控制模块 controller (6)3.3 时钟分频模块frequency10Hz和frequency (11)3.4 带闪烁功能的七段数码驱动显示模块display (14)4 交通控制灯顶层电路设计 (16)4.1 原理说明 (16)4.2 端口设计说明 (17)4.3 仿真与结果分析 (17)5 心得体会 (19)6 参考文献 (20)1设计任务与要求基于FPGA的十字路口交通灯控制器1)红、黄、绿灯分别用1bit控制;2)每一个状态分配一个时间显示(两位十进制数,倒计时);3)符合实际交通规律。
2方案设计与论证2.1系统设计思路(1)本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。
采用VHDL硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其中底层电路(即模块电路)采用VHDL硬件描述语言方式实现,顶层电路采用原理图描述方式实现。
(2)在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。
设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。
其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。
当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯,倒计时停止,且显示数字在闪烁。
当特殊运行状态结束时,控制器恢复原来状态,继续正常运行。
(3)系统设计流程提出系统设计要求需求分析模块化方案设计底层电路设计----VHDL模块电路设计顶层电路设计----原理图描述+各模块连接FPGA整体方案设计实现FPGA整体方案编译仿真功能仿真时序仿真硬件搭接和运行FPGA整体方案设计完成图1 系统设计流程2.2系统设计方案分析根据任务要求,计数器的值和交通灯亮灭关系如图2所示。
基于FPGA的交通灯控制电路设计本文介绍了一种基于FPGA的交通灯控制电路设计。
交通灯控制是城市交通管理的一个重要部分,它有助于维护交通秩序,减少交通事故,提高交通效率。
在本电路设计中,我们使用FPGA作为主控制器,并通过数码管、按钮和LED模块与外部交互。
同时,我们还采用了状态机设计方法,以实现灵活的控制逻辑和连续的动态过渡。
首先介绍了本电路设计的硬件设计。
在本设计中,我们使用了FPGA作为主控制器,数码管用于显示当前状态,按钮用于进行手动控制,LED模块用于显示当前灯颜色。
在硬件设计中,我们通过适当的寄存器和时钟模块,实现了稳定的时序控制和同步操作。
接着,我们介绍了本电路设计的软件设计。
在软件设计中,我们采用了状态机设计方法,将交通控制逻辑分为多个状态,通过状态间的转移完成交通灯的切换控制。
具体地,我们将交通灯控制状态划分为三种:绿灯、黄灯和红灯。
在每种状态下,我们通过计数器和状态转移条件来实现精确的时间控制和灯颜色的自动切换。
同时,为了提高控制的灵活性,我们设计了手动控制模式,让用户可以通过按钮手动切换交通灯状态。
最后,我们介绍了本电路设计的实现结果。
在实现过程中,我们使用了Quartus II软件进行综合、布局和验证,并将设计的电路下载到FPGA开发板上进行实验。
实验结果表明,本交通灯控制电路设计实现了稳定、灵活和精确的交通控制,能够满足不同的交通道路需求。
综上所述,本文介绍了一种基于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位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。
摘要随着现代城市及交通工具的发展,交通事故也急剧增加,为了改善交通秩序及减少交通事故,交通灯起着越来越重要的作用。
在越来越多的城市的各个路口上安装了交通灯,来改善交通秩序。
现代城市在日常运行控制中,越来越多的使用红绿灯对交通进行指挥和管理。
而一套完整的交通灯控制系统通常要实现自动控制和手动控制去实现其红绿灯的转换。
基于FPGA 设计的交通灯控制系统电路简单、可靠性好。
本设计利用Verilog HDL 语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。
在Quartus Ⅱ下对系统进行了综合与仿真。
仿真结果表明系统可实现十字路口红绿灯及左转弯控制和倒计时显示,并能够自动控制交通灯转变。
关键词:FPGA,交通灯控制器,QuartusⅡ,Verilog HDLAbstractWith the development of modern cities and transport, traffic accidents also increased dramatically, plays an increasingly important role in order to improve traffic order and reduce traffic accidents and traffic lights. More and more all the roads of the city to install traffic lights to improve traffic order.Modern city, more and more control of the day-to-day running of the traffic light traffic command and management. And a complete set of traffic light control system is usually to achieve automatic control and manual control to achieve the conversion of its traffic lights. FPGA design-based traffic light control system circuit is simple and good reliability. The design using Verilog HDL language using hierarchical mixed input, and can control the four junctions of red, yellow, green, and turn left at the four signal lights, so that a particular law of change. QUARTUS Ⅱ system synthesis and simulation. The simulation results show that the system can achieve the crossroads of traffic lights and turn left control and countdown display and can automatically control the traffic lights into.Key Words:FPGA ,traffic light controller, Quartus II, The Verilog HDL目录摘要...........................................................................................................错误!未定义书签。
FPGA综合设计实验报告题目基于FPGA的交通灯控制器的设计作者专业日期 2013年3月29日1.设计任务:基于FPGA的交通灯控制器的设计2.设计要求:(1)十字路口由一条东西方向的主干道和一条南北方向的支干道构成,主干道和支干道均有红、黄、绿3种信号灯;(2)保持主、支干道红、绿交替变换;(3)绿灯转红灯过程中,先由绿灯转为黄灯,5秒后再由黄灯转为红灯;同时对方由红灯转为绿灯;(4)系统需具有复位及特殊情况紧急处理功能。
(5)了解交通灯控制器的工作原理,完成控制器的硬件电路设计及软件设计。
3.总体设计方案:从题目中计数值与交通灯的亮灭的关系如图(1)所示。
当主干道绿灯55秒和5秒黄灯过渡时,支干道必须禁止通行,即支干道红灯亮55+5=60秒;当支干道由红灯转为绿灯时,支干道亮55秒绿灯和5秒黄灯过渡,此时主干道红灯应亮55+5=60秒。
图1 交通灯控制要求4.硬件电路基本原理分析:动态LED显示的设计方法是将不同LED模块的所有的LED的驱动端一对一地连接到一起,而将其公共极(阴极或阳极)分别由不同的IO口来驱动(主要针对7段码和LED点阵模块)。
动态显示方式主要是出于简化电路和产品成本考虑在大多数场合都可以达到用户要求。
动态显示虽然占用的CPU时间多,但使用的硬件少,能节省线路板空间。
另外,本设计显示需要使用的是4个七段显示数码管。
在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。
为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍。
通常点亮一个LED所需的电流是5~50 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。
一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考如图1所示。
图1 单个LED的串接电阻计算方式七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中如图2就是共阴极型七段显示器的等效电路和每节LED的定义位置图。
基于FPGA的交通灯控制器设计06876交通灯控制器是城市交通系统中非常重要的一部分,其正确的设计和运行对于交通的安全与效率至关重要。
在本文中,我们将介绍一种基于FPGA(现场可编程门阵列)的交通灯控制器设计。
首先,我们需要了解交通灯控制器的基本原理。
传统的交通灯控制器通常由定时器和状态机组成。
定时器用于控制信号灯的时间段,状态机用于根据规定的时间段和信号灯的状态切换来确定交通灯的工作状态。
FPGA是一种可编程的芯片,可以用来实现各种数字电路的功能。
它具有高度的可编程性和灵活性,可以通过改变编程来实现不同的功能。
基于FPGA的交通灯控制器设计可以提供更大的灵活性和可扩展性,因为它可以根据实际需求进行定制和修改。
在基于FPGA的交通灯控制器设计中,我们需要考虑以下几个方面:1.信号灯的时间控制:根据不同的道路交通流量和需要的通行效率,我们可以灵活地设置每个信号灯的时长。
这可以通过FPGA中的计数器和定时器来实现。
通过编程可以设置不同的时长,并确保相应的信号灯按照预定的规则进行切换。
2.交通流量检测:为了合理地分配交通灯的时间,我们需要在交通道路上安装传感器来检测交通流量。
这些传感器可以根据车辆的数量和速度来确定不同的交通流量。
在基于FPGA的设计中,我们可以使用IO接口将传感器与FPGA相连,并通过编程来读取和处理传感器数据。
3. 状态机设计:状态机是交通灯控制的核心。
它可以根据预先确定的规则和输入,确定交通灯的状态。
基于FPGA的设计中,我们可以使用状态机设计的编程语言(如VHDL或Verilog)来实现状态机。
状态机可以根据交通流量和交通灯状态的不同情况来切换不同的状态,并通过FPGA中的逻辑门来控制交通灯。
4.故障检测和容错设计:在交通灯控制器中,故障检测和容错设计非常重要。
当一些部件发生故障时,控制器应能够自动切换到备用部件或安全模式,以确保交通的安全和通行效率。
通过FPGA的灵活性,我们可以轻松地实现故障检测和容错设计,例如通过监测一些部件的输出电压或信号来检测故障。
基于FPGA下的交通灯控制器毕业设计引言第一章软件介绍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 显示的界面。
图1-1-2 创建工程框图1-1-3 芯片选择框根据自己选择的实验设备选择好相应的芯片型号点击Next,进入下一个步骤当出现图1-1-5时,点击“Finish”后这个工程就建立好了。
图 1-1-4 仿真器选择框图1-1-5 对话框建好工程后开始进行设计,首先在图1-1-6中单击file后选择new,接着会出现图1-1-7,在交通灯控制器的设计中我们选择的是VHDL File,当出现图1-1-8时就可以把编辑的程序敲入编辑器中。
图1-1-6 工程建好后的界面图1-1-7 新建文件类型选择框图1-1-8 程序编辑框在第一章中对QuartusⅡ软件的使用做一个简单介绍,设计中的编译和仿真步骤在后面的几章中会做出介绍。
第二章交通灯控制器设计的概述2.1 控制器设计描述2.1.1 设计任务要求设计交通灯控制器,分别在四个方向都安装红、黄、绿三种颜色的交通指示灯,红灯表示停止,绿灯表示通行,黄灯表示左转和直行将要禁止通行,四个方向分别还安装有倒计时的计时器。
交通灯控制器设计专业:计算机应用技术班级:计应2 班学号:*********姓名:***基于FPGA的交通灯控制器设计摘要超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性,可大大降低设计成本,缩短设计周期。
本文介绍的数字秒表设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。
交通灯控制系统可以实现路口红绿灯的自动控制。
基于FPGA设计的交通灯控制系统具有电路简单、可靠性强、实时快速擦写、运算速度高、故障率低、可靠性高,而且体积小的特点。
本设计采用Altera公司Cyclone系列的EPlC3T1444C8芯片,在Quartus II软件平台上使用VHDL语言,采用自顶向下的设计方法对系统进行了模块化设计和综合,并进行了仿真。
该系统可实现十字路口红绿灯及左转弯控制和倒计时显示,仿真结果结果表明系统能够自动控制交通灯转变。
关键词:VHDL,交通灯,EDA目录前言 (1)第1章 FPGA概述 (2)1.1 FPGA的简介 (2)1.2 FPGA的应用 (2)第2章 VHDL硬件描述语言 (3)2.1 VHDL程序基本结构 (3)2.1.1 实体 (4)2.1.2 结构体 (4)2.1.3 库 (5)2.2 VHDL语言 (5)2.2.1 VHDL文字规则 (5)2.2.2 VHDL数据对象 (5)2.2.3 VHDL数据类型 (6)2.2.4 VHDL 顺序语句 (6)2.2.5 VHDL并行语句 (6)第3章系统设计与仿真 (7)3.1 系统介绍 (7)3.1.1 设计任务 (7)3.1.2 设计要求 (7)3.2 系统设计仿真 (8)3.2.1 顶层框图的设计 (8)3.2.2 时序状态图的设计 (9)3.2.3 工程设计流程框图: (10)3.2.4 芯片的选择 (10)3.2.5 各个模块的设计与仿真 (11)结论 (27)附录...................................... 错误!未定义书签。
前言当今社会是数字化的社会,是数字集成电路广泛应用的社会。
数字集成电路本身在不断进行更新换代,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。
系统设计师更愿意自己设计专业集成电路(ASIC)芯片,而且希望设计周期尽可能短,最好在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程器件(FPLD)。
现场可编程门阵列(FPGA)即属其中应用最广泛的一种。
随着电子技术的发展,特别是大规模集成电路和计算机技术的研制和发展,让电子产品设计有了更好的应用市场,实现方法也有了更多的选择,而电子电路的设计却变得越来越复杂,使用“语言”进行电子设计已成为一种趋势。
现代电子系统设计方法是设计师自己设计芯片来实现电子系统的功能,将传统的固件选用及电路板设计工作放在芯片设计中进行。
在这些专业化软件中,EDA(Electronic Design Automation)具有一定的代表性,EDA技术是一种基于芯片的现代电子系统设计方法。
基于EDA技术的现场可编程门阵列(FPGA)电 (ASIC) ,在数字系统设计和控制电路中越来越受到重视。
VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。
基于EDA 技术的现场可编程门阵列(FPGA)电路,提出现场可编程门阵列(FPGA)是近年来迅速发展的大规模可编程专用集成电路(ASIC),在数字系统设计和控制电路中越来越受到重视。
VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。
第1章FPGA概述1.1 FPGA的简介FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在可编程器件的基础上进一步发展的产物。
它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。
1.2 FPGA的应用FPGA的应用可分为三个层面:电路设计,产品设计,系统设计。
1.电路设计连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA 应用的基石。
事实上在电路设计中应用FPGA要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)。
2.产品设计把相对成熟的技术应用到某些特定领域开发出满足行业需要并能被行业客户接受的产品。
这方面主要是FPGA技术和专业技术的结合问题,重点在性能, FPGA技术在这个领域是一个实现手段,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计。
3.系统级应用系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA 版的计算机系统如用Xilinx V-4, V-5系列的FPGA,实现内嵌POWER PC CPU, 然后再配合各种外围功能,这个平台上跑LINIX等系统这个系统也就支持各种标准外设和功能接口了,这对于快速构成FPGA大型系统来讲是很有帮助的。
第2章VHDL硬件描述语言2.1 VHDL程序基本结构一个相对完整的VHDL程序通常包含实体、结构体、配置、程序包和库5个部分。
程序模板如下:LIBRARY library name;USE library name.package name.all;ENTITY entity name ISGENERIC( parameter name :string:=default value;parameter name :integer:=default value);PORT( input name,input name: IN STD-LOGIC;Input vector name:IN STD_LOGIC_VECTOR( high DOWNTO low);output name ,output name:OUT STD_LOGIC);END entity name;ARCHITECTURE a OF entity name ISSIGNAL signal name:STD_LOGIC;BEGIN--process statement (optional):--generate statement (optional)END a;2.1.1 实体实体一般用来描述所设计的系统的外部接口信号,是可视部分;其中最重要的部分是端口说明。
端口说明语句是对于一个设计实体界面的说明。
端口名是赋予每个系统引脚的名称。
一个实体通常有一个或多个端口,端口类似于原理图部件符合上的管脚。
实体与外界交流的信息必须通过端口通道流入或流出。
IEEE 1064标准包中定义了四种端口模式,其功能及符号分别是IN、OUT、INOUT、BUFFER、LINKAGE。
2.1.2 结构体结构体用于描述系统内部的结构和行为,建立输入输出之间的关系。
在一个实体中,可以含有一个或一个以上的结构体,而在每一个结构体中又可以含有一个或多个进程以及其他的语句。
其中,实体名必须是被设计的实体的名字。
结构体中的说明语句是对结构体的功能描述语句中将要用到的信号、数据类型、常数、元件、函数和过程等加以说明的语句。
结构体包含两类语句:并行语句和顺序语句。
在PROCESS中的语句是顺序执行的,当PROCESS所带的敏感信号发生变化时,PROCESS中的语句就会执行一遍。
2.1.3 库库使用说明用于打开(调用)本设计实体将要用到的库,库是专门存放预编译程序包的地方。
IEEE库:在IEEE库中有一个STD_LOGIC 的包,它是IEEE正式认可的包。
STD库:STD库是VHDL的标准库,在库中有名为STANDARD的包。
在使用库之前,一定要进行库说明,库的说明总是放在设计单元的前面。
2.2 VHDL语言2.2.1 VHDL文字规则VHDL文字主要包括数值和标识符。
数值型文字主要有数字型、字符串型和位串型。
数字型文字有:整数文字(十进制数)、实数文字(十进制数,必须带有小数点)、以数字基数表示的文字。
字符串型文字有:文字字符串、数位字符串、标识符。
2.2.2 VHDL数据对象在VHDL中,数据对象类似于一种容器,接受不同数据类型的赋值。
数据对象有3种:即常量、信号、变量。
常量是固定值,不能在程序中被改变。
变量时一个局部量,是一个临时数据,没有物理意义。
它只能在Process和Function中定义,必须在进程和子程序的说明性区域说明,并只在其内部有效。
信号是描述硬件系统的基本数据对象,代表连接线,Port也是一种信号。
2.2.3 VHDL数据类型VHDL是一种强类型语言,要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有相同的数据类型的量才能互相传递和作用。
VHDL 的基本类型有:bit(位)、bit-Vector(位矢量)、Boolean、time、character、string、integer 、real。
2.2.4 VHDL 顺序语句VHDL有如下六类基本顺序语句:赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句。
赋值语句有信号赋值语句和变量赋值语句两种。
流程控制语句共有五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句。
IF语句根据条件句产生的判断结果:TRUE 或 FALSE,有条件地选择执行其后的顺序语句。
CASE语句根据满足的条件直接选择多项顺序语句中的一项执行。
空操作语句不完成任何操作,它常用于CASE语句中,利用它来表示所余的不用条件下的操作行为——满足所有可能的条件。
2.2.5 VHDL并行语句结构体中的并行语句主要有七种:并行信号赋值语句、进程语句、块语句、条件信号赋值语句、元件例化语句(其中包括类属配置语句)生成语句、并行过程调用语句。
第3章系统设计与仿真3.1 系统介绍交通灯控制器用于自动控制十字路口交通灯和计时器,指挥各种车辆和行人安全通行。
3.1.1 设计任务设计一个十字路口交通控制器,方向分为东南西北四个方向。
东西方向的红绿灯状态一样,南北方向的红绿灯状态一样。
每个方向上,有四盏灯,分别是左转灯、红灯、绿灯和黄灯。