EDA课程设计 交通灯设计报告.docx
- 文档编号:3729489
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:23
- 大小:214.80KB
EDA课程设计 交通灯设计报告.docx
《EDA课程设计 交通灯设计报告.docx》由会员分享,可在线阅读,更多相关《EDA课程设计 交通灯设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
EDA课程设计交通灯设计报告
课程设计报告
课程EDA课程设计
题目十字路口交通灯设计
系别物理与电子工程学院
年级08级专业电子科学与技术
班级三学号04061011
学生姓名张崇光张浩赵峰章维
指导教师张惠国职称讲师
设计时间2011.6.18-7.8
前言
现代电子产品正在以前所未有的革新速度,向着功能多样化、体积最小化、功耗最低化的方向迅速发展。
它与传统电子产品在设计上的显著区别之一就是大量使用大规模可编程逻辑器件,以提高产品性能、缩写产品体积、降低产品消耗;区别之二就是广泛运用现代计算机技术,以提高电子设计自动化程度,缩短开发周期,提高产品竞争力。
EDA(ElectronicDesignAutomation,电子设计自动化)技术正是为了适应现代电子产品设计的要求,吸收多学科最新成果而形成的一门新技术。
EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(ComputerAssistDesign,简称CAD)、计算机辅助工程设计(ComputerAssistEngineeringDesign,简称CAE)和电子设计自动化(ElectronicDesignAutomation,简称EDA)三个发展阶段。
利用EDA技术进行电子系统的设计,具有以下几个特点:
用软件的方式设计硬件;
用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;
设计过程中可用有关软件进行各种仿真;
系统可现场编程,在线升级;
整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
EDA技术是一门涉及多学科的综合性技术,内容广泛,所谓EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
可编程逻辑器件(简称PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。
FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
现在,FPGA和CPLD器件的应用已十分广泛,它们将随着EDA技术的发展而成为电子设计领域的重要角色。
国际上生产FPGA/CPLD的主流公司,并且在国内占有市场份额较大的主要是Xilinx,Altera,Lattice三家公司。
FPGA在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分。
CPLD在结构上主要包括三个部分,即可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。
高集成度、高速度和高可靠性是FPGA/CPLD最明显的特点,其时钟延时可小至ns级。
结合其并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景。
在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC机可能跑飞等问题。
FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。
由于FPGA/CPLD的集成规模非常大,因此可利用先进的EDA工具进行电子系统设计和产品开发。
由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用器件的硬件结构无关,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。
它几乎可用于任何型号和规模的FPGA/CPLD中,从而使得产品设计效率大幅度提高,可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场最宝贵的特征。
第一章题目
1.1题目名称
十字路口交通灯设计
1.2题目内容及要求
针对现实生活中的十字路口交通灯,实现基于FPGA的控制设计,并实现以下基本功能:
1.显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。
2.用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。
3.用两组数码管作为东西和南北方向的倒计时显示。
1.3题目设计意义
通过“十字路口交通灯设计”,可训练我们综合运用学过的数字电路的基本知识,独立设计比较复杂的数字电路的能力。
使我们在设计中熟练掌握VHDL语言的编程,并熟练掌握相关编程、仿真软件的操作等。
第二章分析与设计
2.1交通灯硬件电路控制原理
一般我们生活中的十字路口在硬件电路设计上,采用“对面镜像”的方法设计。
即一个通行道两边的指示灯及倒计时时间相同的。
这是因为道路两边路口需要通行的人、车是相向而行的,这样的设计既降低了软件设计架构要求,在硬件上又容易实现且正确可靠。
2.2交通灯程序设计构想
初步构思设想,整个程序架构可以分为以下几个部分来进行设计:
1.时钟分频模块,对输入的时钟进行需要的分频,使系统正确工作;
2.数码管倒计时时间显示,分别显示主干道和支道通行的倒计时时间;
3.红、绿、黄色交通灯的两灭控制设计;
4.外部输入控制部分,即调模式、检修模式的控制等。
2.3程序设计论证
整个硬件电路以总线输入时钟做为同步信号进行工作,那么针对题目所要求的经过30秒红灯(绿灯)和5秒黄灯的定时时间间隔。
我们必须通过对系统时钟进行分频得到一个较低频率的信号作为计时时间的基准信号。
那么主干道和支道的计时时间主要以数码管的形式进行显示。
每个通道设有两位数码管,共有四位数码管显示当前交通状态的倒计时时间。
使用扫描驱动设计,即分时对位码使能操作,利用人眼睛的成像延时来达到“静态”显示的效果。
在交通灯的每个状态的控制显示可以使用简单的“米里”型状态机实现。
以系统当前状态和系统外部输入的控制信号决定系统的下一个状态。
在程序代码设计上也可简单实现。
2.4系统设计框图
第三章VHDL程序设计
3.1系统输入输出端口设计
对设计课题的总体考虑,在该交通灯控制系统中所涉及的输入有:
系统时钟信号CLK,系统复位RST、调试模式KEY_D、检修模式等按键输入。
输出端口有:
数码管显示段码信号DATAOUT,数码管位选信号LED_BIT以及各路口的红灯、绿灯、黄灯显示。
具体定义如下:
ENTITYtrafficIS
PORT(
clk:
INstd_logic;--系统输入时钟
rst:
INstd_logic;--复位按键输入
key_d:
INstd_logic;--调试按键输入
key_m:
INstd_logic;--主干道(东西)方向通行紧急按键
key_b:
INstd_logic;--支道(南北)方向通行紧急按键
--数码管显示
dataout:
OUTstd_logic_vector(7DOWNTO0);--数码管段数据
led_bit:
OUTstd_logic_vector(3DOWNTO0);--数码管使能
--红绿黄灯显示
lightY_m:
OUTstd_logic_vector(1DOWNTO0);--黄灯_主干道(东西)方向
lightY_b:
OUTstd_logic_vector(1DOWNTO0);--支道
lightG_m:
OUTstd_logic_vector(1DOWNTO0);--绿灯_主干道方向
lightG_b:
OUTstd_logic_vector(1DOWNTO0);--支道
lightR_m:
OUTstd_logic_vector(1DOWNTO0);--红灯_主干道方向
lightR_b:
OUTstd_logic_vector(1DOWNTO0));--支道
ENDtraffic;
3.2系统整体设计
3.2.1系统控制状态机
在整体控制上,考虑到该系统具有有限个状态,且在各状态机进行转换。
那么可以是用“有限状态机”(FSM)进行设计。
1.系统状态可描述为:
.当主干道绿灯通行时,显示倒计时(30S)并支道红灯亮;
.当计时时间到后主干道黄灯亮(5S),支道依然红灯亮;
.主干道红灯亮,支道绿灯亮(30S);
.支道黄灯等待,主干道仍然保持红灯亮(5S)
.转状态
2.系统状态图:
3.2.2VHDL状态机代码设计
PROCESS(div_cnt(20),rst,key_m,key_b,key_d)
BEGIN
--判断是否为调试模式
IF(NOTkey_d='1')THEN--调试按键按下,调试模式计时
time_s<="0001";--红灯10秒
time_y<="0010";--黄灯2秒
ELSE--正常模式运行
time_s<="0011";--红灯30秒
time_y<="0101";--黄灯5秒
ENDIF;
--正常进程开始
IF(NOTrst='1')THEN--复位亮红灯
state<=red_m;
second_m<="0011";--三十秒倒计时初值
second_b<="0011";
first_m<="0000";
first_b<="0000";
ELSIF(NOTkey_m='1')THEN--主干道紧急通行
state<=green_m;
ELSIF(NOTkey_b='1')THEN--支道紧急通行
state<=red_m;
ELSIF(div_cnt(24)'EVENTANDdiv_cnt(24)='1')THEN
CASEstateIS
WHENred_m=>--主干道红灯状态,支道绿灯
IF(first_m/="0000"orfirst_b/="0000")THEN
first_m<=first_m-"0001";--计时秒位减1
first_b<=first_b-"0001";
ELSE
IF(second_m/="0000"orsecond_b/="0000")THEN
second_m<=second_m-"0001";--计时十位减1
second_b<=second_b-"0001";
first_m<="1001";--计时个位复位9
first_b<="1001";
ELSE
state<=yellow_b;--红灯计时结束,准备绿灯
--first_b<="0101";--支道黄灯5秒
first_b<=time_y;--支道黄灯5秒
second_b<="0000";
first_m<="0000";--主干道为0等待
second_m<="0000";
ENDIF;
ENDIF;
WHENgreen_m=>--主干道绿灯状态,支道红灯
IF(first_m/="0000"orfirst_b/="0000")THEN
first_m<=first_m-"0001";
first_b<=first_b-"0001";
ELSE
IF(second_m/="0000"orsecond_b/="0000")THEN
first_m<="1001";
first_b<="1001";
second_m<=second_m-"0001";
second_b<=second_b-"0001";
ELSE
state<=yellow_m;--主干道绿灯计时结束,转为黄灯过渡
--first_m<="0101";--黄灯计时初值5秒
first_m<=time_y;--黄灯计时初值5秒
second_m<="0000";
first_b<="0000";
second_b<="0000";
ENDIF;
ENDIF;
WHENyellow_b=>--支道黄灯状态
IF(first_b/="0000"ORsecond_b/="0000")THEN
IF(second_b/="0000")THEN--此步正常不执行
first_b<="1001";
second_b<=second_b-"0001";
ELSE
first_b<=first_b-"0001";--支道黄灯计时减1
ENDIF;
ELSE
state<=green_m;--转为主干道绿灯,支道红灯
--second_m<="0011";--复位红灯计时初值
second_m<=time_s;--复位红灯计时初值
first_m<="0000";
--second_b<="0011";
second_b<=time_s;
first_b<="0000";
ENDIF;
WHENyellow_m=>--主干道黄灯状态
IF(first_m/="0000"ORsecond_m/="0000")THEN
IF(second_m/="0000")THEN--此步正常不执行
first_m<="1001";
second_m<=second_m-"0001";
ELSE
first_m<=first_m-"0001";--支道黄灯计时减1
ENDIF;
ELSE
state<=red_m;--转为主干道红灯,支道绿灯
--second_m<="0011";--复位红灯计时初值
second_m<=time_s;--复位红灯计时初值
first_m<="0000";
--second_b<="0011";
second_b<=time_s;
first_b<="0000";
ENDIF;
WHENOTHERS=>
first_m<="0000";
second_m<="0000";
first_b<="0000";
second_b<="0000";
ENDCASE;
ENDIF;
ENDPROCESS;
3.3红、黄、绿灯控制设计
由于交通灯设计的“对面镜像”原则,所以只需实现对两组红、黄、绿灯的控制即可。
但是,实验板上的LED小灯都是独立连接,所以在程序中分开控制,但控制信号相同。
程序代码设计如下:
--交通灯亮灭控制
PROCESS(state)
BEGIN
CASEstateIS
WHENred_m=>
lightR_m<="00";--主干道红灯亮
lightG_b<="00";--支道绿灯亮
--支道等待黄灯
lightR_b<="11";--关闭其它交通灯
lightG_m<="11";
lightY_m<="11";
lightY_b<="11";
WHENgreen_m=>
lightG_m<="00";--主干道绿灯亮
lightR_b<="00";--支道红灯亮
--主干道等待黄灯
lightG_b<="11";--关闭其它交通灯
lightR_m<="11";
lightY_m<="11";
lightY_b<="11";
WHENyellow_m=>
lightY_m<="00";--主干道黄灯亮
lightR_b<="00";--支道红灯继续点亮
lightY_b<="11";--关闭其它交通灯
lightR_m<="11";
lightG_m<="11";
lightG_b<="11";
WHENyellow_b=>
lightY_b<="00";--支道黄灯亮
lightR_m<="00";--主干道红灯继续点亮
lightY_m<="11";--关闭其它交通灯
lightR_b<="11";
lightG_m<="11";
lightG_b<="11";
WHENOTHERS=>
lightR_m<="00";
lightR_b<="00";
lightG_m<="11";
lightG_b<="11";
lightY_m<="11";
lightY_b<="11";
ENDCASE;
ENDPROCESS;
3.4数码管显示模块设计
设计要求使用两组数码管作为南北、东西方向的倒计时显示。
为了节省I/O端口,采用动态扫描方式实现数码管的显示。
即等间隔的对每一个数码管进行扫描显示,获得“同时”显示的效果。
在日常生活中可知,南北、东西方向的计时时间并不是相同的,例如当南北方向红灯亮,东西方向绿灯亮时,南北倒计时时间为35S,而东西方向绿灯倒计时为30S,之后东西方向进入黄灯过渡阶段,即5S的倒计时。
综合以上设计要求,代码如下:
PROCESS(div_cnt(15),rst)—等时扫描
Begin
if(rst='0')then
en_bit<="1110";
elsif(div_cnt(15)'eventanddiv_cnt(15)='1')then
en_count<=en_count+"01";
CASEen_countIS
WHEN"00"=>en_bit<="1110";
WHEN"01"=>en_bit<="1101";
WHEN"10"=>en_bit<="1011";
WHEN"11"=>en_bit<="0111";
ENDCASE;
endif;
ENDPROCESS;
--数码管位码扫描驱动
PROCESS(en_bit,first_m,first_b,second_m,second_b)
Begin
CASEen_bitIS
WHEN"1110"=>data4<=first_b;
WHEN"1101"=>data4<=second_b;
WHEN"1011"=>data4<=first_m;
WHEN"0111"=>data4<=second_m;
WHENOTHERS=>data4<=first_b;
ENDCASE;
ENDPROCESS;
--数码管段码驱动显示
PROCESS(data4)
Begin
CASEdata4is--数码管段码驱动
WHEN"0000"=>dataout<="11000000";--0
WHEN"0001"=>dataout<="11111001";--1
WHEN"0010"=>dataout<="10100100";--2
WHEN"0011"=>dataout<="10110000";--3
WHEN"0100"=>dataout<="10011001";--4
WHEN"0101"=>dataout<="10010010";--5
WHEN"0110"=>dataout<="10000010";--6
WHEN"0111"=>dataout<="11111000";--7
WHEN"1000"=>dataout<="10000000";--8
WHEN"1001"=>dataout<="10010000";--9
WHENOTHERS=>dataout<="11000000";--0
ENDCASE;
ENDPROCESS;
第四章系统仿真及功能描述
4.1QuartusⅡ时序仿真
对所编写的代码进行时序仿真,Quartus时序仿真图如下:
图4.1QuartusⅡ时序仿真
4.2系统功能描述
4.2.1工作模式选择
系统工作模式可通过按键输入控制为正常工作模式,测试工作模式等,可在系统运行的任意时刻实现人文干预的模式转换。
若出现意外情况,比如道路交通由交警现场指挥则可以通过手动控制交通灯模式,分别为主干道通行模式和支道通行模式。
4.2.2正常工作模式下的运行状况
在系统正常工作模式下,实现以标准的30S红绿灯倒计时和5S的黄灯过渡。
即当任一通道为红灯时,该通道倒计时时间总计为35S,另一通道则为绿灯,倒计时时间为30S,当30S的倒计时时间到后,绿灯熄灭,黄灯打开,数码管显示5S等待时间后,实现主干道和支道的红绿灯交替。
4.2.3其它工作模式介绍
当系统工作于测试模式时,与正常工作模式相比,仅交通控制计时时间有所变化,用于维修人员测试。
即由正常模式的30S减为10S,原来的5S减为2S,其它控制信息和正常工作模式相同。
强制通行模式分为主干道通行和支道通行模式,即为南北方向通行和东西方向通行。
次模式仅在某些特殊情况特殊场合中可能会使用,比如紧急状况下交警的现场指挥等。
第五章总结与体会
EDA技术是目前较为热门的技术,这一次的EDA课程设计,无疑是对我们整个学期所学到的知识的掌握和运用能力的一个很好的锻炼和提高。
在设计过程中,我们不仅熟悉了生活中常见的交通灯的控制原理,更重要的是通过该设计题目的综合设计过程,进一步对VHDL这种和我们以往学过的一些软件程序语言所不同的硬件描述语言有了更深刻的认识。
在代码设计之初,对以前学过的C等程序语言较为熟悉的我怎么也弄不明白为什么VHDL语言在代码设计中不能存在较多的函数或过程调用,因为每一次的子程序调用在综合后都将生成一个硬件电路模块。
老师的一句话对我犹如醍醐灌顶,他告诉我,“首先观念要转变一下,VHDL语言不是在写代码而是在搭电路”。
于是,我才深刻地认识到,所谓VHDL语言,名如其意,即为国际标准硬件描述语言。
首先是编译器对我们编写的代码进行综合,然后我们下载到目标芯片上后是生成一个硬件逻辑电路。
我想这也是为什么VHDL中除了进程和子程序中的代码都被称为“并发代码”的原因吧,因为所有的原代码设计在系统综合后都将被描述成相应的硬件电路,系统所有的模块在统一的系统时钟下进行工作。
这一次的EDA技术课程设计让我们有了一个在设计中学习的机会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA课程设计 交通灯设计报告 EDA 课程设计 交通灯 设计 报告