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