西电EDA交通灯报告完整版_第1页
西电EDA交通灯报告完整版_第2页
西电EDA交通灯报告完整版_第3页
西电EDA交通灯报告完整版_第4页
西电EDA交通灯报告完整版_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、交通控制器实验报告目录交通控制器实验报告1序言3一、设计任务及设计要求4二、原理分析及方案设计4三、电路设计与调试61.分频器的设计62.控制器的设计73.倒计时计数器的设计144.数码管显示器的设计175.顶层原理图20四、实验仿真波形图20五心得体会21六参考文献21序言 VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Description Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。VH

2、DL主要用于描述数字系统的结构,行为,功能和接口VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。      随着基于VHDL的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。本程序设计的是交通灯的设计。采用EDA作为开发工具,VHDL

3、语言为硬件描述语言,quartusII作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标 在一个交通繁忙的十字路口,没有交通灯来控制来往车辆和行人的通行,假设也没有交警,那会发生什么事情呢?后果是难以想象的,可能会陷入一片混乱,甚至瘫痪。当然我们每个人都不希望这样。我们作为社会的一员,每人都有责任为它的更加先进和快捷做出力所能及的事情。本程序设计的是交通灯的设计。采用EDA作为开发工具,VHDL语言为硬件描述语言,quartusII作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,实现设计目标。我们设计的这个信号控制系统可以通过交通灯控制东西方向车道

4、和南北方向车道两条交叉道路上的车辆交替运行,每次通行时间都可以根据实际情况预设,用以减少交通事故的发生概率。并且经过些次实验使得我们对电子技术课程内容的理解和掌握有了更深一层的认识,掌握电子电路的基本分析方法和设计方法。一、设计任务及设计要求设计一个十字路口交通控制系统,要求如下:(1)东西、南北两个方向均有绿灯、黄灯、红灯指示、,其持续时间分别为40秒、5秒、45秒,交通灯运行的切换示意图如图所示。A绿亮B红亮A黄亮B红亮A红亮B绿亮A红亮B黄亮40s5s40s5s(2)系统设有时钟,以倒计时的方式显示每一路允许通行的时间。(3)当东西或南北两路中的任一路出现特殊情况,系统可由交警手动控制立

5、即进入特殊运行状态,即红灯全亮,时钟停止计时,东西、南北两路所有车辆停止通行;当特殊运行状态结束后,系统恢复工作,继续正常运行。二、原理分析及方案设计本系统主要由分频器、计数器、控制器、倒计时显示器等电路组成。总体设计框图如下:分频器Clk控制器Led灯指示控制信号倒计时计数器CRHold译码电路七段数码管分频器讲晶振送来的4MHz的信号变为1Hz的时钟信号;计数器实现90秒的技术,90秒也是交通控制系统的一个大循环;控制器控制系统的状态转移和红、黄、绿灯的信号输出;倒计时显示电路实现45秒倒计时功能和显示功能。整个系统的工作时序受控制器控制,它是系统的核心。控制器的整个工作过程用状态机进行描

6、述,其状态转移关系描述如下:S0:A方向绿灯亮,B方向红灯亮,此状态持续40秒;S1: A方向黄灯亮,B方向红灯亮,此状态持续5秒;S2: A方向红灯亮,B方向绿灯亮,此状态持续40秒;S3: A方向红灯亮,B方向红黄灯亮,此状态持续5秒;S4: 紧急制动状态,A方向红灯亮,B方向红灯亮,当紧急制动信号有效是进入此状态。交通控制系统的状态转移图如下:A红亮B红亮S4A绿亮B红亮S0 40sA黄亮B红亮S1 5sA红亮B黄亮S0 5sA红亮B绿亮S2 40sHold=0Hold=0Hold=0Hold=0Hold=1Hold=1Hold=1Hold=1当紧急制动信号无效时,状态机按照S0-S1-

7、S2-S3-S0循环;当紧急制动信号有效时,状态机立即转入S4,两个方向红灯全亮,计数器停止计数;当紧急制动信号再恢复无效时,状态机回到原来的状态继续执行。三、电路设计与调试1.分频器的设计分频器的逻辑符号如图所示。clk为时钟输入信号,clkout为分频后的时钟输出信号。分频器的VHDL描述文件devide.vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity devide isport(clk:in std_logic;clk_out:out std_logic);end

8、devide;architecture arc_devide of devide issignal count:std_logic_vector(25 downto 0);beginprocessbeginwait until clk'event and clk='1'if(count<24999999) thencount<=count+1;clk_out<='0'elsecount<=(others=>'0');clk_out<='1'end if;end process;end a

9、rchitecture arc_devide;分频器devide的vhd文件仿真波形如下:2.控制器的设计控制器的逻辑符号如图所示:其中,clk为时钟输入信号;hold为紧急制动信号;ared、agreen、ayellow、分别为东西方向驱动红灯、绿灯、黄灯指示的输出信号;bred、bgreen、byellow分别为南北方向驱动红灯、绿灯、黄灯指示的输出信号。控制器的VHDL描述文件control.vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control ispor

10、t(clk,hold:in std_logic;ared,agreen,ayellow,bred,bgreen,byellow:out std_logic);end control;architecture behaviour of control istype state_type is(s0,s1,s2,s3,s4);signal current_state,next_state:state_type;signal counter:std_logic_vector(6 downto 0);beginsynch:processbeginwait until clk'event and

11、 clk='1'if hold='0' then -当紧急制动信号有效时,计数器停止计数counter<=counter;else -当紧急制动信号无效时,计数器进行周期90s的计数 if counter<89 thencounter<=counter+1;elsecounter<=(others=>'0');end if;end if;end process;process -状态机的状态转移描述beginwait until clk'event and clk='1'current_sta

12、te<=next_state;end process;state_trans:process(current_state)begincase current_state iswhen s0=>if hold='0' thennext_state<=s4;elseif counter<39 thennext_state<=s0;elsenext_state<=s1;end if;end if;when s1=>if hold='0' thennext_state<=s4;elseif counter<44 th

13、ennext_state<=s1;elsenext_state<=s2;end if;end if;when s2=>if hold='0' thennext_state<=s4;elseif counter<84 thennext_state<=s2;elsenext_state<=s3;end if;end if;when s3=>if hold='0' thennext_state<=s4;elseif counter<89 thennext_state<=s3;elsenext_state

14、<=s0;end if;end if;when s4=>if hold='0' thennext_state<=s4;elseif counter<39 thennext_state<=s0;elsif counter<44 thennext_state<=s1;elsif counter<84 thennext_state<=s2;elsif counter<89 thennext_state<=s3;end if;end if;end case;end process;output:process(curre

15、nt_state) -每种状态下两个路口红绿灯的状态描述begincase current_state iswhen s0=>ared<='0'agreen<='1'ayellow<='0'bred<='1'bgreen<='0'byellow<='0'when s1=>ared<='0'agreen<='0'ayellow<='1'bred<='1'bgreen&

16、lt;='0'byellow<='0'when s2=>ared<='1'agreen<='0'ayellow<='0'bred<='0'bgreen<='1'byellow<='0'when s3=>ared<='1'agreen<='0'ayellow<='0'bred<='0'bgreen<='0'b

17、yellow<='1'when s4=>ared<='1'agreen<='0'ayellow<='0'bred<='1'bgreen<='0'byellow<='0'end case;end process;end behaviour;控制器control的vhdl文本仿真波形如图所示:3.倒计时计数器的设计倒计时计数器的逻辑符号如图所示:其中,clk、en、cr分别为时钟计数使能和清零端,ql3.0、qh3.0、oc分别为BCD码的

18、个位十位和进位的输出。Vhdl描述文件m45.vhd如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m45 isport(clk:in std_logic;en:in std_logic;cr:in std_logic;ql,qh:out std_logic_vector(3 downto 0);oc:out std_logic);end m45;architecture behav of m45 issignal coul,couh:std_logic_vector(3 do

19、wnto 0);beginprocess(cr,clk,en)beginif cr='0' then -异步清零coul<="0000"couh<="0000"elsif clk'event and clk='1' thenif en='1' thenif(coul=0 and couh=0)then -减法计到00后,重新置数44coul<="0100"couh<="0100"elsif coul=0 then -否则各位计到0时置数

20、为9,十位减1 coul<="1001"couh<=couh-1;elsecoul<=coul-1; -否则个位减1end if;end if;end if;end process;process(coul,couh)beginif(coul=0 and couh=0)thenoc<='1' -减到00时有借位输出elseoc<='0'end if;end process;ql<=coul;qh<=couh;end behav;倒计时计数器M45的vhd文件仿真波形如图所示:4.数码管显示器的设计数码

21、管显示器的逻辑符号如图所示:本实验需要两个七段显示管电路。dat3.0为计数器的输出控制信号,abcdefg分别为接七段显示管的7个引脚Vhdl描述文件seg7.vhd如下:(seg7_2.vhd与其功能相同)library ieee;use ieee.std_logic_1164.all;entity seg7 isport(dat:in std_logic_vector(3 downto 0);a,b,c,d,e,f,g:out std_logic);end seg7;architecture arc of seg7 issignal tmp:std_logic_vector(6 down

22、to 0);beginprocess(dat)begincase dat iswhen"0000"=>tmp<="0000001"when"0001"=>tmp<="1001111"when"0010"=>tmp<="0010010"when"0011"=>tmp<="0000110"when"0100"=>tmp<="1001100"w

23、hen"0101"=>tmp<="0100100"when"0110"=>tmp<="0100000"when"0111"=>tmp<="0001111"when"1000"=>tmp<="0000000"when"1001"=>tmp<="0000100"when"1010"=>tmp<="0001000"when"1011"=>tmp<="1100000"when"1100"=>tmp<="0110001"when"1101"=>tmp<="100001

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论