基于SOPC交通灯的EDA课程设计.docx

上传人:b****4 文档编号:6016749 上传时间:2023-05-09 格式:DOCX 页数:27 大小:147.99KB
下载 相关 举报
基于SOPC交通灯的EDA课程设计.docx_第1页
第1页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第2页
第2页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第3页
第3页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第4页
第4页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第5页
第5页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第6页
第6页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第7页
第7页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第8页
第8页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第9页
第9页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第10页
第10页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第11页
第11页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第12页
第12页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第13页
第13页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第14页
第14页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第15页
第15页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第16页
第16页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第17页
第17页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第18页
第18页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第19页
第19页 / 共27页
基于SOPC交通灯的EDA课程设计.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于SOPC交通灯的EDA课程设计.docx

《基于SOPC交通灯的EDA课程设计.docx》由会员分享,可在线阅读,更多相关《基于SOPC交通灯的EDA课程设计.docx(27页珍藏版)》请在冰点文库上搜索。

基于SOPC交通灯的EDA课程设计.docx

基于SOPC交通灯的EDA课程设计

信息工程学院

EDA课程设计报告书

 

题目:

十字路口交通灯的设计

专业:

电子信息科学与技术

班级:

0309409

学号:

030940910

学生姓名:

杨波

指导教师:

袁海林

2012年5月12日

信息工程学院课程设计任务书

学生姓名

杨波

学号

030940910

成绩

设计题目

十字路口交通灯的设计

1.总体设计框图

2.系统功能说明

3.工作原理介绍

4.引脚说明

5.软件设计流程

1.东西方向红灯亮时,南北方向绿灯亮

2.东西方向红黄亮时,南北方向绿黄亮

3.东西方向红绿亮时,南北方向红灯亮

4.东西方向和南北方向的红灯亮的时间均为15s

5.东西方向和南北方向的黄灯亮5s,且在最后3s时,两个方向的黄灯每隔1s亮灭闪烁

6.当紧急情况到来时,东西和南北方向的红灯全亮,数码管停止计时,紧急情况过后,系统恢复正常

7.点阵上循环显示“交通灯”三个字,且每个字的显示时间为0.5s

 

2012年5月12日

学生姓名:

杨波学号:

030940910专业(班级):

电子信息科学与技术

课程设计题目:

十字路口交通灯的设计

 

 

成绩:

指导教师:

袁海林

2012年5月12日

信息工程系课程设计成绩评定表

摘要

随着社会经济的发展,城市交通问题越来越引起人们的关注。

人、车、路三者的协调,已成为交通管理部门需要解决的重要问题之一,城市的交通控制系统是用于城市交通数据监测、交通信号控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统的重要组成部分。

同时,生活水平的提高,汽车的普及化,给交通带来了更大的挑战,道路的负载加重,带来的是交通事故越来越多。

所以,如何采用合适的方法,最大限度的利用好交通灯的控制,缓解城市道路交通堵塞问题,降低交通事故发生率,成为人们共同关注的话题。

本设计采用FPGA技术,完成了一个简单实用的十字路口交通灯的控制系统。

关键字:

控制管理缓解

 

目录

1主要技术指标和方案阐述6

1.1主要技术指标6

1.2方案阐述6

1.3工作原理6

2详细电路设计7

2.1主控制器的设计7

2.2紧急情况电路设计7

2.3译码电路7

2.4蜂鸣器模块8

2.5东西方向模块8

2.5.1红黄绿灯控制模块9

2.5.2计时模块9

2.6南北方向模块9

2.6.1红黄绿灯控制模块10

2.6.2计时模块10

2.7点阵模块10

2.8蜂鸣器模块12

2.9时钟模块12

3引脚分配13

总结15

参考文献15

附录:

源程序清单16

 

1主要技术指标和方案阐述

1.1主要技术指标

1.东西方向红灯亮时,南北方向绿灯亮

2.东西方向红黄亮时,南北方向绿黄亮

3.东西方向红绿亮时,南北方向红灯亮

4.东西方向和南北方向的红灯亮的时间均为15s

5.东西方向和南北方向的黄灯亮5s,且在最后3s时,两个方向的黄灯每隔1s亮灭闪烁

6.当紧急情况到来时,东西和南北方向的红灯全亮,数码管停止计时,紧急情况过后,系统恢复正常

7.点阵上循环显示“交通灯”三个字,且每个字的显示时间为0.5s

1.2方案阐述

系统采用现场可编程逻辑器件作为主控制器,外加按键模块、数码管显示模块、译码器模块、点阵显示模块和蜂鸣模块构成。

计时数据在数码管上显示出来,点阵上循环显示“交通灯”三个字。

蜂鸣器作为紧急情况使用。

系统的基本框图如下:

图1-1系统原理框图

1.3工作原理

系统开始时,南北方向和东西方向正常工作,两个方向的红、黄、绿三灯交替亮灭,当紧急情况到来,即按键S1按下时,两个方向的数码管停止计时,而且两个方向的红灯全部点亮,蜂鸣器响起,表明此时南北和东西方向行人和普通车辆严禁通行。

当紧急情况过后,系统恢复正常,按照紧急情况到来之前继续工作。

两个方向的时间显示用两位数码管显示。

2详细电路设计

2.1主控制器的设计

系统采用altera公司的cyconeIII系列芯片,封装为FBGA贴片式封装,速度等级3,引脚个数780个。

由于引脚个数较其他芯片多,因此,外部硬件资源比较多,而且性能很好,稳定,易于控制。

2.2紧急情况电路设计

本设计的紧急情况用按键来模拟,当按键按下时,紧急情况到来,按键释放后,紧急情况消失。

按键与主控制器连接图如下图所示:

图2-1按键与主控器连接图

按键只有逻辑电平“0”和“1”两种状态,当按下时,为逻辑电平0,当未按下时,为逻辑电平1。

本设计中只用到了其中的一个按键S1,当S1按下时,紧急情况到来,当S1未按下时,没有紧急情况发生。

2.3译码电路

译码电路为3-8译码器,它经常用在数码管的动态扫描中,输出端接数码管的8个位选,每次可以选中一个数码管,而输入端为000-111的8种组合,每一种组合对应一个输出,Y0-Y7对应输入的8种输出,即当输入为000时,Y0选通,依次类推。

由于8位一体的数码管不能够在同一时间全部显示,因此,要通过译码电路对8位数码管进行译码,一次只让一个数码管亮,通过人眼的视觉暂态效应,当扫描时间在人眼视觉效应之内时,看起来就像是几个数码管同时被点亮。

这样既能够节约端口资源,又能达到很好的效果。

译码器与主控制器的连接图如下图所示:

 

图2-23-8译码器与控制器的接口图

74LS138为一个3-8线译码器,低电平输出,其工作原理见下表格:

表2-174LS138译码表

输入

输出

A

B

C

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

L

L

L

L

H

H

H

H

H

H

H

L

L

H

H

L

H

H

H

H

H

H

L

H

L

H

H

L

H

H

H

H

H

L

H

H

H

H

H

L

H

H

H

H

H

L

L

H

H

H

H

L

H

H

H

H

L

H

H

H

H

H

H

L

H

H

H

H

L

H

H

H

H

H

H

L

H

H

H

H

H

H

H

H

H

H

H

L

从表中可以看出:

每输入一种组合,输出端只有一端响应,这样可以通过输入端的组合,选中想要选中的数码管,让其工作。

而74LS138的使能端已经接了有效电平,设计中不用再管使能端的电平。

2.4蜂鸣器模块

当输入信号的电平为高电平1时,蜂鸣器响起,当输入电平为低电平0时,蜂鸣器不响。

因此,当紧急情况到来时,让蜂鸣器的输入端的电平为高电平,那么蜂鸣器就会响起;紧急情况过后,让蜂鸣器的输入端电平为低电平时,蜂鸣器就不响。

2.5东西方向模块

东西方向包含红黄绿灯控制模块和计时模块。

2.5.1红黄绿灯控制模块

由于东西方向计时与灯的控制相同,设计中在此方向只用了三个灯,即红、黄、绿灯。

用到的是实验系统中第一、二、三个灯,即LED1、LED2、LED3,分别表示红、黄、绿三种颜色的灯。

LED灯与控制器的连接图如下图所示:

 

图2-3LED与控制器的连接图

2.5.2计时模块

设计中采用8段数码管显示,七段数码管是电子开发过程中常用的输出显示设备。

可以显示数字0-9,东西方向用的是第一、二个数码管,计时时间为红灯15s,黄灯5s,绿灯15s。

在实验系统中使用的是两个四位一体、共阴极型七段数码管。

其单个静态数码管如下图4-1所示。

图4-1静态七段数码管

由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。

反之则不亮。

四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

工作原理都相同,八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,共8根段选引脚,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭,共8根位选引脚,总共16根引脚。

共阴极数码管显示0-9字符数据如下表:

表2-2数码管字符显示表

输入段选

显示字符

a

b

c

d

e

f

g

dp

1

1

1

1

1

1

0

0

0

0

1

1

0

0

0

0

0

1

1

1

0

1

1

0

1

0

2

1

1

1

1

0

0

1

0

3

0

1

1

0

0

1

1

0

4

1

0

1

1

0

1

1

0

5

1

0

1

1

1

1

1

0

6

1

1

1

0

0

0

0

0

7

1

1

1

1

1

1

1

0

8

1

1

1

1

0

1

1

0

9

从表可以看出,当选中第1、2个数码管时,只要按照表中的输入组合送入段选,那么数码管就会显示相应的数字,从而达到结果。

2.6南北方向模块

南北方向包含红黄绿灯控制模块和计时模块。

2.6.1红黄绿灯控制模块

由于南、北方向计时以及灯的控制都相同,设计中在此方向只用了三个灯,即红、黄、绿灯和两个数码管。

用到的是实验系统中第一、二、三个灯,即LED10、LED11、LED12,分别表示红、黄、绿三种颜色的灯。

LED灯与控制器的连接图如图2-3所示。

2.6.2计时模块

计时模块与东西方向相同,只是南北方向的计时用到的是实验系统中的第7、8个数码管,工作原理与东西方向的完全相同。

当选中第7、8个数码管时,送入表2-2中的段选,可以显示相应的数字。

2.7点阵模块

本设计主要是完成汉字在LED上的显示,16*16扫描LED点阵的工作原理与8位扫描数码管类似,也是用到了人眼的视觉暂态效应,只是显示的方式与结果不一样。

16*16点阵由256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。

单个的LED的电路如下图13-1所示:

图13-1单个LED电路图

由上图可知,对于单个LED的电路图当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。

也就是LED点阵对应的这个点被点亮。

16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。

通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。

具体的电路如下图13-2所示:

图13-216*16点阵电路原理图

因此,在点阵上显示一个字,就是要让这个字在点阵上所覆盖区域的LED灯点亮,而其他区域的LED灯被熄灭,例如,在点阵上显示中文“汉”字的显示图如下图13-3所示:

图13-3字符在点阵上的显示

在上图中,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。

根据前面我们所介绍的点阵显示的原理。

当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。

依此类推,显示第二列、第三列……第N列中需要被点亮的点。

然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。

同时也可以按照这个原理来显示其它的汉字下图11-4是一个汉字显示所需要的时序图:

 

图13-4显示时序图

在上图中,在系统时钟的作用下,首先选取其中的一列,将数据输入让这列的LED显示其数据(当为高电平时LED发光,否则不发光)。

然后选取下一列来显示下一列的数据。

当完成一个16*16点阵的数据输入时,即列选择计数到最后一列后,再从第一列开始输入相同的数据。

这样只要第一次显示第一列的数据和第二次显示第一列的数据的时间足够短,那么人的眼睛就会看到第一列的数据总是显示的,而没有停顿现象。

同样的道理其它列也是这样,直到显示下一个汉字。

在实际的运用当中,一个汉字是由多个八位的数据来构成的,那么要显示多个汉字的时候,这些数据可以根据一定的规则存放到存储器中,当要显示这个汉字的时候只要将存储器中对应的数据取出显示即可。

字库数据的格式如下图:

 

图13-5字库格式

该模块与控制器的连接图如下图所示:

图13-616*16点阵电路图

2.8蜂鸣器模块

本设计中采用蜂鸣器是为了在紧急情况下报警。

紧急情况过后蜂鸣器停止报警,系统恢复正常。

2.9时钟模块

时钟是一个系统正常工作的重要保证,没有时钟,再优越的条件,系统都不能正常工作由于FPGA控制器外设中不含有晶振,即时钟模块,只有一个时钟输入,但是该时钟频率对于完成本设计是不够的,数码管以及点阵的动态显示都要用到时钟,而且两个的扫描的时钟频率不一样,这样,就要求对原有的时钟频率进行分频,得到所需要的时钟频率。

时钟与控制器的连接图如下图所示:

 

图3-2数字时钟信号模块电

3引脚分配

本模块用到的模块与实验箱的引脚连接如下表所示:

模块名称

信号名称

FPGAI/O管脚号

功能说明

时钟模块

CLK

Pin_A14

时钟信号

紧急情况模块

S1

Pin_AF5

按键0

东西方向控制模块

LED1

Pin_AE8

东西方向红灯

LED2

Pin_J22

东西方向黄灯

LED3

Pin_M24

东西方向绿灯

南北方向控制模块

LED10

Pin_F22

南北方向红灯

LED11

Pin_E22

南北方向黄灯

LED12

Pin_F21

南北方向绿灯

 

数码管显示模块

LEDAG0

Pin_G16

数码管A段

LEDAG1

Pin_G17

数码管B段

LEDAG2

Pin_F18

数码管C段

LEDAG3

Pin_G18

数码管D段

LEDAG4

Pin_G15

数码管E段

LEDAG5

Pin_G14

数码管F段

LEDAG6

Pin_G12

数码管G段

LEDAG7

Pin_M21

数码管DP段

DEL0

Pin_C22

3-8译码器第一个输入端

DEL1

Pin_D22

3-8译码器第二个输入端

DEL2

Pin_G9

3-8译码器第三个输入端

 

点阵显示模块

DOT_R[0]

Pin_C17

点阵第一行

DOT_R[1]

Pin_D15

点阵第二行

DOT_R[2]

Pin_D14

点阵第三行

DOT_R[3]

Pin_D13

点阵第四行

DOT_R[4]

Pin_D12

点阵第五行

DOT_R[5]

Pin_D10

点阵第六行

DOT_R[6]

Pin_C10

点阵第七行

DOT_R[7]

Pin_C9

点阵第八行

DOT_R[8]

Pin_D21

点阵第九行

DOT_R[9]

Pin_C21

点阵第十行

DOT_R[10]

Pin_D20

点阵第十一行

DOT_R[11]

Pin_D19

点阵第十二行

DOT_R[12]

Pin_C19

点阵第十三行

DOT_R[13]

Pin_D18

点阵第十四行

DOT_R[14]

Pin_C18

点阵第十五行

DOT_R[15]

Pin_D17

点阵第十六行

DOT_C0

Pin_L5

4-16转换第一个输入端

DOT_C1

Pin_H6

4-16转换第二个输入端

DOT_C2

Pin_H7

4-16转换第三个输入端

DOT_C3

Pin_H5

4-16转换第四个输入端

 

总结

通过本次设计,初步了解了quartusII软件的基本操作。

熟悉了数码管、点阵的动态扫描方法和原理,了解了VHDL语言的结构特点及编程思想,能够编写简单的程序。

在设计过程中,遇到了许多的问题,通过与同学和老师的交流,以及自己在图书馆查找资料,最终完成了本设计。

设计能够按照预期的要求正常工作,但是,设计还存在一些不足,东西方向和南北方向的红绿灯计时时间相同,不能够达到两个方向的时间不同步显示;点阵只能够现实普通的数字和汉字,还不能够现实人形,在红灯亮时,人形不动,当绿灯亮时,人形行走,此功能还不能实现。

在接下来的时间里,会在这方面有所突破,完善本设计。

 

参考文献

1.赵明富,李立军.EDA技术基础[M].北京:

北京大学出版社,2007.6

2.孟庆海,张洲.VHDL基础及经典实例开发[M].西安:

西安交通大学出版社,2008.4

3.杨承恩,谭克俊,颜得文.VHDL编程实例(第四版)[M].北京:

电子工业出版社,2009.6

4.詹仙宁.VHDL开发精解与实例剖析[M].北京:

电子工业出版社,2009.9

 

附录:

源程序清单

----------------------------------------------------------------------------------------------------------------------

--十字路口交通灯的设计--

--学号030940910--

--姓名----杨波--

----------------------------------------------------------------------------------------------------------------------

libraryieee;--库文件

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entitytrafficis

port(clk:

instd_logic;--时钟信号

del:

bufferstd_logic_vector(2downto0);--3-8译码器输入

seg:

outstd_logic_vector(7downto0);--数码管段选

key:

instd_logic;--按键S1,紧急情况

east_west_led_red:

outstd_logic;--东西方向红灯

east_west_led_yellow:

outstd_logic;--东西方向黄灯

east_west_led_green:

outstd_logic;--东西方向绿灯

south_north_led_red:

outstd_logic;--南北方向红灯

south_north_led_yellow:

outstd_logic;--南北方向黄灯

south_north_led_green:

outstd_logic;--南北方向绿灯

hang:

outstd_logic_vector(15downto0);--点阵的行

lie:

outstd_logic_vector(3downto0)--4-16转换输入

);

endtraffic;

architecturebehaveoftrafficis

signalcount_nanbei:

integerrange0to45;

signalcount_dongxi:

integerrange0to45;

signalnum_nanbei:

integerrange0to25;

signalnum_dongxi:

integerrange0to25;

signale_w_shiwei:

integerrange0to9;

signale_w_gewei:

integerrange0to9;

signals_n_shiwei:

integerrange0to9;

signals_n_gewei:

integerrange0to9;

signaldis:

std_logic_vector(7downto0);

signaldisplay:

integerrange0to10;

signalclk_count:

std_logic_vector(13downto0);

signalclk1HZ:

std_logic;

signalcdount:

std_logic_vector(3downto0);

signaldount:

std_logic_vector(8downto0);

signals:

std_logic_vector(2downto0);

begin

process(clk)--分频

begin

if(clk'eventandclk='1')then

if(clk_count<10000)then

clk_count<=clk_count+1;

else

clk_count<="00000000000001";

endif;

endif;

clk1HZ<=clk_count(13);

endprocess;

process(clk)

begin

if(clk'eventandclk='1')then

del<=del+1;

seg<=dis;

endif;

endprocess;

process(clk1Hz)--

begin

if(clk1Hz'eventandclk1Hz='1')then

if(key='0')then--紧急情况到来

count_nanbei<=count_nanbei;--南北方向停止计数

elseif(count_nanbei=46)then

count_nanbei<=0;

else

count_nanbei<=count_nanbei+1;

endif;

endif;

endif;

endprocess;

process(clk1Hz)

begin

if(clk1Hz'eventandclk1Hz='1')then

if(key='0')then--紧急情况到来

count_dongxi<=count_dongxi;--东西方向停止计数

elseif(count_dongxi=46)then

count_dongxi<=0;

else

count_dongxi<=count_dongxi+1;

endif;

endif;

endif;

endprocess;

process(clk1Hz,co

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2