基于SOPC交通灯的EDA课程设计.docx
- 文档编号:11347676
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:27
- 大小:147.99KB
基于SOPC交通灯的EDA课程设计.docx
《基于SOPC交通灯的EDA课程设计.docx》由会员分享,可在线阅读,更多相关《基于SOPC交通灯的EDA课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
基于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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SOPC 交通灯 EDA 课程设计