课程设计--具有四种信号灯的交通灯控制
******大学
《EDA 技术》课程设计报告
设计题目:具有四种信号灯的交通灯控制器 专业班级: 学生姓名: ******* 学 号: ********* 指导教师:
课程设计成绩:
完成日期:20**年**月**日
目 录
1 引言...........................................................................2
1.1 设计背景......................................................................2
1.2 VHDL简介......................................................................2
1.3 QUARTUSⅡ简介.................................................................5
2 交通信号灯控制器的设计.........................................................5
2.1 设计目的......................................................................6
2.2 系统计要求....................................................................6
2.3 设计思路......................................................................7
2.4 交通信号灯控制器系统工作流程..................................................7
3 交通灯控制器的实现.............................................................8
3.1 交通灯控制器的设计原型图......................................................8
3.2 系统各功能模块的实现..........................................................9
3.2.1 模块shuomaguan..............................................................9
3.2.2 模块traffic.................................................................9
3.3 原理图........................................................................9
4 交通信号灯控制器系统仿真及分析................................................10
4.1 SHUMAGUAN模块仿真波形图......................................................10
4.2 顶层实体的仿真波形...........................................................10
4.3 TAFFIC模块的仿真波形图.......................................................11
4.4 管脚锁定.....................................................................11
5 完成调试后所显示结果的八种情况................................................12
6 结论..........................................................................15
7 总结与体会....................................................................15
附 录...........................................................................17
1 SHUMAGUAN 的VHDL 程序............................................................17
2 TRAFFIC 的VHDL 程序..............................................................18
参考文献........................................................................22
1
1 引言
1.1 设计背景
随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。因此,开发一套能够社会服务的交通灯控制器将是非常必要的,也是十分及时的。
1.2 VHDL简介
语言硬件描述已经有几十年的发展历史,并且在系统的仿真、验和设计、综合等方面得到成功的应用。目前常用的硬件描述语言有VHDL 、 Verilog HDL 、ABEL 等。VHDL 则起源于20世纪70年代末和80年代初,美国国防部提出的VHSIC 计划,目标是为下一代集成电路的生产、实践阶段性的工艺极限和完成10万门级以上的电路设计而建立一种新的描述方法。VHDL 的英文全称为Very-High-Speed Integrated Circuit Hardware Description Language,是IEEE 标准化的硬件描述语言,并且经成为系统描述的国际公认标准,得到众多EDA 公司的支持。
2
成为系统描述的国际公认标准,得到众多EDA 公司的支持。
IEEE-1076(简称87版) 之后,各EDA 公司相继推出自的VHDL 设计环境,或宣布自己的设计工具可以和VHDL 接口。1993年,IEEE 对VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL 的内容,公布了新版本的VHDL ,即IEEE 标准的1076-1993版本,简称93版。VHDL 和Verilog 作为IEEE 的工业标准硬件描述语言,得到众多EDA 公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。
VHDL 具有很多的优点使它能够被大多数人认可,被广泛应用在逻辑电路的设计方面,并且成为了标准化的硬件描述语言,其优点如下:
(1)功能强大和设计灵活。一个简洁的使用VHDL 语言编写的程序就可以描述一个复杂的逻辑电路,因为VHDL 拥有强大的语言结构。VHDL 多层次的设计描述功能可以有效地控制设计的实现,支持设计库和可重复使用的元件生成,还支持多种设计方式,如层次化设计、模块化设计和同步、异步和随机电路设计。
(2)与具体器件无关。用VHDL 设计硬件电路时不用先确定设计要用到哪种器件,也不用特别熟悉器件的内部结构,这样可以使设计人员专注于进行系统设计。设计完成后,可以根据消耗的资源选择合适的器件,而不造成资源的浪费。
(3)很强的移植能力。VHDL 由很多不同的工具支持,同一个设计的程序可以在包括综合工具、仿真工具、系统平台等工具中使用。
3
(4)强大的硬件描述能力。VHDL 可以描述系统级电路和门级电路,而且描述方式多样,可以采用行为描述、寄存器传输描述或者结构描述, 也可以用其混合描述方式。同时,VHDL 可以准确地建立硬件电路模型,因为它支持惯性延迟和传输延迟。VHDL 的数据类型很丰富,支持标准定义的数据类型,当标准定义的数据类型不能满足用户的需求时,用户可以自己定义的所需要的数据类型,增加了设计的自由度。
(5)语法规范,易于共享。当把用VHDL 编写的代码文件看作是程序时,它可以作为设计人员之间的交流内容;当把它看作是文档时,可以作为签约双方的合同文本。VHDL 易于共享的特点,使得大规模的协作开发容易实现。同时,这些特点也促进了VHDL 的发展和完善。 综上所述,VHDL 有很多其他的硬件描述语言所不具备的优点。但是,VHDL 仍然存在一些缺点,主要是3个方面。
(1)要求设计者对硬件电路知识甚至是芯片结构方面的知识了解较多。应该摆脱一般的高级语言程序设计思路,因为在电路世界里的事件很多是并行发生的,并且硬件电路系统内部的模块可以是互相独立的,也可以是互为因果的,所以,在用VHDL 设计硬件电路时应摆脱一般的高级语言程序设计思路。在设计电路时,应先构思电路,然后才能描述。
(2)不能进行太抽象的系统描述。因为EDA 工具无法综合抽象性太强的系统, 故用VHDL 描述系统电路时不能太抽象。目前的VHDL 很难综合实际的硬件电路,只能适用于系统建模。
4
(3)不能描述模拟电路。对于模拟电路而言,VHDL 并不是一种理想的硬件描述语言。但可以预见,未来硬件描述语言的发展方向是模拟电路和数模混合电路的描述方式。
1.3 QuartusⅡ简介
Quartus II 是Altera 公司的综合性PLD/FPGA开发软件,支持原理图、VHDL 、VerilogHDL 以及AHDL (Altera Hardware Description Language )等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程。
Quartus II可以在XP 、Linux 以及Unix 上使用,除了可以使用Tcl 脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。
Quartus II支持Altera 的IP 核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA 工具。
此外,Quartus II 通过和DSP Builder工具与Matlab 相结合,可以方便地实现各种DSP 应用系统;支持Altera 的片上可编程系统(SOPC )开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
2 交通信号灯控制器的设计
5
2.1 设计目的
采用VHDL 语言对交通灯控制器的设计, 使交通灯控制电路用数字信号自动控制十字路口两组红、黄、绿交通灯的通过状态转换的方法, 指挥各种车辆和行人安全通行, 实现十字路口交通管理的自动化。绿灯亮 时,准许车辆通行,但转弯的车辆不得妨碍被放行的直行车辆、行人通行,黄灯亮时,已越过停止线的车辆可以继续通行,红灯亮时,禁止车辆通行。
2.2 系统计要求
系统设要求为:由一条主干道和一条支干道汇合十字路口,在每个入口处设置红,绿,黄,拐允许四盏信号灯,红灯亮禁止通行,黄灯亮则给行驶中的车辆有时间停在禁行线外,左拐灯亮允许车辆向左拐外。信号灯变换次序为:主干道每次放行40秒,亮5秒红灯让行驶中的车辆有时间停到禁行线外,左拐放行15秒,亮5秒红灯;支干道放行30秒,亮5秒黄灯,左拐放行15秒,亮5秒红灯...... ,各计时电路位倒计时显示。
系统框图如下:
6
图2-1 设计思路示意图
2.3 设计思路
根据系统的功能要求,可分为四个部分来实现,分别是定时模块,主控电路,译码驱动电路和扫描显示几部分。分频部分是把外部提供的1Hz 进行分频得到系统工作需要的工作脉冲,显示部分包括两个内容,一个是主干道红绿灯显示,另一个是支干道红绿灯显示。然后将红绿灯显示时间以BCD 码形式显示出来,显示模块将其译码轮流扫描显示
2.4 交通信号灯控制器系统工作流程
(1)主干道放行亮绿灯40秒,支干道红灯显示65秒;
(2)主干道绿灯转黄灯5秒,支干道红灯显示25秒;
(3)主干道黄灯转左拐15秒,支干道红灯显示20秒;
(4)主干道左拐转红灯55秒,支干道绿灯显示30秒;
7
(5)主干道红灯显示25秒,支干道绿灯转黄灯5秒;
(6)主干道红灯显示20秒,支干道黄灯转左拐15秒;
(7)主干道亮红灯5秒,支干道左拐转黄灯5秒;
(8)依次循环跳到主干道,红绿灯重新计时。
3 交通灯控制器的实现
3.1 交通灯控制器的设计原型图
图3-1 具有四种信号灯的交通信号灯硬件系统示意图
原理图中输入部分分别是clk :系统时钟信号;LA:主干道红绿灯显示;LB :支干道红绿灯显示;输出部分为七段译码显示和位选码MS ,数码管显示的是交通信号灯转换时间。
8
3.2 系统各功能模块的实现
3.2.1 模块shuomaguan
图3-2 1shuomaguan模块
shumaguan 的设计难点在于分析输入条件的不同,会有什么样的输出结果。这就要理解shumaguan 模块的作用就是控制交通灯时间显示的 转换的工作。其模块所用程序见附录shuomaguan 模块的VHDL 编程
3.2.2 模块 traffic
图3-3 模块traffic
traffic 模块的作用是控制交通信号灯的四种灯之间的转换工作,其所用的程序见附录 traffic 模块的VHDL 编程。
3.3 原理图
9
图3-4 交通信号灯原理图
4 交通信号灯控制器系统仿真及分析
4.1 shumaguan模块仿真波形图
图4-1 shumaguan模块仿真波形图
分析:由图中看出,当使能位EN 为低电平的时候,两路数码管维持初始值不变,当使能位为高电平的时候,两个数码管在每个时钟内,减一,与题目要求相符。
4.2 顶层实体的仿真波形
图4-2 顶层实体的仿真波形
10
分析:从图中很容易看出,交通灯只在状态发生变换的时候发生变换,而且在一整个状态内不发生变化。
并且可以看出,在状态0的时候,主干道绿灯亮,支干道红灯亮。在状态1的时候,主干道黄灯亮,支干道红灯亮,在状态2的时候,主干道的左拐灯亮,支干道的红灯亮。
4.3 taffic模块的仿真波形图
图4-3 traffic模块的仿真波形
分析:从波形图内很容易看出,状态机的变换,并且看出数码管的倒计时为零的时候与状态变换同步,并且主干道的倒计时与支干道的倒 计时相互独立,不影响。
4.4 管脚锁定
在验证交通信号灯系统功能之前,需要清楚试验箱与与各个信号之间的对应关系,所以我们必须锁定管脚。管脚锁定后,将顶层文件下载到EDA 试验箱芯片中,并验证功能。
11
图4-4 管脚锁定图
5 完成调试后所显示结果的八种情况
12
图5-1 验证结果1 主干道显示绿灯,支干道显示红灯;
图5-2 验证结果2 主干道显示绿灯,支干道显示红灯;
图5-3 验证结果3 主干道显示左拐绿灯,支干道显示红灯;
13
图5-4 验证结果4 主干道显示黄灯,支干道显示红灯;
图5-5 验证结果5 主干道显示红灯,支干道显示绿灯;
13
图5-6 验证结果6 主干道显示红灯,支干道显示黄灯;
图5-7 验证结果7 主干道显示红灯,支干道显示左拐绿灯;
14
图5-8 验证结果8 主干道显示红灯,支干道显示黄灯;
之后可知,交通信号灯将再次回归验证结果1,再次重复所验证8个结果。
观察的符合我们的设计结果,设计是正确的。
6 结论
本设计采用了VHDL 硬件描述语言文本输入方式,在确立总体预期实现功能的前提下,分层次进行设计。实现了三种颜色交通信号灯的交 替点亮,以及时间的倒计时显示,指挥行人和车辆安全通行。程序中所用到的数据均可以根据实际情况进行设置,修改灵活方便。通过此次设计,我对于VHDL 硬件描述语言有了更深入地了解,也在原来所学的理论基础上得到了进一步地应用。但由于经验上的不足,有些地方还需要做进一步地改善,如可通过FPGA/CPLD开发套件验证。数字化时代的到来给人们的生活水平带来了极大的改变,我们有理由相信,随着数字化的深入,交通灯控制器的功能将日趋完善。而且,VHDL 语言对EDA 技术产生的影响也是深远的,它缩短了电子产品的设计周期,为设计者提供了方便。在今后的电子产品研究开发过程中,EDA 技术将会具有更好的开发手段和更高的性价比,并且将拥有更为广阔的市场应用前景。
7 总结与体会
通过这次课程设计,加强了我动手、思考和解决问题的能力. 现在设
15
计已经做好了, 自己感觉还是比较好的, 虽然花了很多的时间, 但学到了很 多东西. 做课程设计的时候, 自己把整个书本都看了几遍, 增强了自己对知识的理解, 很多以前不是很懂的问题现在都已经一一解决了。在课程设计的过程中, 我想了很多种方案, 对同一个问题都想了很多种不同的接法, 运用不同的芯片进行了比较, 最后还是采取了上面的方法进行连接. 从开始做课程设计那天起, 脑中天天都想着同样的问题, 怎么去把电路和程序弄得更加简单, 怎么别人更容易看懂. 但似乎时间过得真的很快, 我用了好几天才把它完全弄完, 完成后, 心里有一种说不出的高兴。在设计过程中遇到很多麻烦,但我都上网查资料,去图书馆找参考书,努力地去解决所 遇到的问题。这次课程设计之后, 使我明白了, 做任何事情都要认真仔细, 不然的话, 你会花更多的时间才会做好. 课程设计有利于提高我们的动手能力, 能把我们所学的书本知识运用到实际生活中去. 同时也丰富了我们的业余生活, 提高我们对知识的理解能力
通过这三周的努力,我的课程设计终于完成了。在此阶段,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。
在本课程设计的完成过程中,我的指导老师****老师倾注了大量的心血,从选题到开题报告,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的我的同学和朋友。
16
由于时间的仓促及自身专业水平的不足,整个课程设计肯定存在尚未发现的缺点和错误。恳请阅读此篇说明书的老师、同学,多予指正,不胜感激。
附 录
Shumaguan 的VHDL 程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity shumaguan is port(
clk_shumaguan : in std_logic;
lcd_zhu,lcd_zhi : in std_logic_vector(7 downto 0);
lcd_cho : out std_logic_vector(2 downto 0); lcd_dev : out std_logic_vector(7 downto 0)
);
end shumaguan;
architecture behav of shumaguan is
signal data : std_logic_vector(3 downto 0); signal sec : std_logic_vector(2 downto 0);
signal dout : std_logic_vector(7 downto 0); begin
process(clk_shumaguan) begin
if(clk_shumaguan'event and clk_shumaguan='1') then
if(sec="011") then
sec
else
sec
end process;
process(sec,lcd_zhu(7 downto 0),lcd_zhi(7 downto 0)) begin
case sec is
when "000"=>data
17
when "001"=>datadatadatanull;
end case;
end process; process(data) begin
case data is
when "0000"=>doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout
Traffic 的VHDL 程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity traffic is port(
clk,EN : in std_logic;
led_con : out std_logic_vector(7 downto 0); zhu,zhi : out std_logic_vector(7 downto 0) ); end traffic;
architecture behav of traffic is
type st_type is(st0,st1,st2,st3,st4,st5,st6,st7); signal led : std_logic_vector(7 downto 0);
signal c_st : st_type;
18
signal lcd_zhu : std_logic_vector(7 downto 0); signal lcd_zhi : std_logic_vector(7 downto 0); begin
process (clk,EN) begin
if EN='0'then
c_st
lcd_zhu
elsif clk'event and clk='1'then
case c_st is
when st0=>
if lcd_zhu=1 then c_st
lcd_zhu
led
else
c_st
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
else
lcd_zhu
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
lcd_zhi
end if; when st1=>
if lcd_zhu=1 then
c_st
lcd_zhu
led
c_st
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
else
lcd_zhu
end if;
19
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
lcd_zhi
when st2=>
If lcd_zhu=1 when
c_st
lcd_zhu
c_st
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
lcd_zhu
end if;
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
lcd_zhi
when st3=>
if lcd_zhu=1 then
c_st
lcd_zhu
c_st
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
lcd_zhu
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
lcd_zhi
when st4=>
20
if lcd_zhi=1 then
c_st
lcd_zhi
c_st
lcd_zhi
lcd_zhi
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
lcd_zhu
when st5=>
if lcd_zhi=1 then
c_st
lcd_zhi
led
c_st
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
else
lcd_zhi
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
lcd_zhu
when st6=>
if lcd_zhi=1 then
c_st
lcd_zhi
led
else
c_st
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
21
else
lcd_zhi
end if; end if;
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
lcd_zhu
when st7=>
if lcd_zhi=1 then
c_st
lcd_zhu
c_st
if lcd_zhi(3 downto 0)=0 then
lcd_zhi
else
lcd_zhi
if lcd_zhu(3 downto 0)=0 then
lcd_zhu
lcd_zhu
end if;
end if; end case; end if;
end process; zhu
参考文献
1杨晓慧. 电子技术EDA 实践教程(第一版)[M],北京:国防工业出版22
社;
2林明权.VHDL 数字控制系统设计范例(第一版)[M]北京:电子工业出版社;
3黄继业.EDA 技术实用教程(第二版)[M],北京:科学出版社,2009年; 4杨恒新. 自顶向下法设计交通灯控制系统[J],电气电子教学学报。
23