道路交通灯控制器的设计EDA课程设计报告书_第1页
道路交通灯控制器的设计EDA课程设计报告书_第2页
道路交通灯控制器的设计EDA课程设计报告书_第3页
免费预览已结束,剩余23页可下载查看

下载本文档

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

文档简介

1、探2008级学生EDA课程设计探 探 探 探 探 探EDA课程设计报告书课题名称交通灯控制器的设计姓名胡伟明学号0812201 -46院系物理与电信工程系专业电子信息工程指导教师周来秀讲师2011年6月10日一、设计任务及要求:(1 )十字路口东西、南北两个方向的红、黄、绿灯的指示状态。用 LED灯表示当 前的交通状态。(2) 能实现正常的倒计时功能。用两组七段数码管倒计时显示当前交通状态剩余秒数。(3) 该交通灯的亮灭顺序如下:东西绿灯40秒黄灯5秒东西红灯25秒南北红灯45秒南北绿灯20秒黄灯5秒(4 )能实现特殊状态的功能。例如消防车、救护车或其他需要优先放行的车辆通过时实现下列功能:

2、按下特殊状态键后,能实现特殊状态功能; 显示倒计时的两组数码管闪烁; 计数器停止计数并保持在原来的状态; 东西、南北路口均显示红灯状态; 特殊状态解除后能继续计数;(5)能实现总体清零功能。按下清零键后,系统实现总体清零,计数器由初始状态计数,对应状态的指示灯亮。(6 )用VHDL语言设计符合上述要求的交通灯控制器,并用层次化设计方法设计该电路。指导教师签名:年 月日T、指导教师评语:指导教师签名:年 月 日二、成绩验收盖章年 月 日交通灯控制器的设计1 设计目的通过设计交通灯控制器,了解 EDA 技术,了解并掌握 VHDL 硬件描述语 言的设计方法和思想,巩固和综合运用所学过的 EDA 原理

3、知识,提高分析、 解决实际问题的独立工作能力。2 设计的主要内容和要求交通灯控制器的设计, 设计了主干道的交叉路口交通信号灯无人自动管理的 控制系统。将路口红绿灯的各种亮灯情况定义不同的状态 ,路口状况定义为触发 条件,组成有限状态机。交通控制器能完成以下功能:1 能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态,用两组红、 黄、绿三色 LED 灯作为两个方向的红、黄、绿灯;2 南北向为主干道,每次通行时间为 45S ,东西向为支干道,每次通行时间为 25S ;3 能实现正常的倒计时功能,用两组数码管作为东西、南北向的倒计时显示。 其中,黄灯: 5S 。4 能实现特殊状态的功能。按下

4、SP 键后,能实现以下特殊功能:(1)显示倒计时的两组数码管闪烁;(2)计数器停止计数并保持在原来的状态;(3)东西、南北路口均显示红灯状态;(4)特殊状态解除后能继续计数;5. 能实现全清零功能。 按下 reset 键后,系统实现全清零, 计数器由初状态计数,对应状态的指示灯亮;6. 用VHDL语言设计上述功能的交通灯控制器,并用层次化方法设计该电路;7. 仿真、验证设计的正确性。3 整体设计方案3.1 方案分析通过分析课程设计的要求可以知道,所要设计的交通信号灯控制电路要能 够适用于由一条主干道和一条支干道的汇合点形成的十字交叉路口,其主要功 能是:主干道处于常允许通行的状态,支干道有车来

5、时才允许通行;当支干道 没有车通行时,主干道亮绿灯,而支干道亮红灯,主、支干道的倒计时数码管 不显示数字;当支干道有车通行时,进入了主干道和支干道交替通行的情况。当进入到交替通行时,主干道每次放行 45 秒,支干道每次放行 25 秒。首 先主干道通行 45 秒,并且主干道显示 45 秒的倒计时,此 45 秒内主干道亮绿 灯,当 45 秒计时结束,主干道亮黄灯 5 秒,而且显示 5 秒倒计时,用于绿灯 转为红灯作为过渡,使行驶中的车辆有时间停到禁行线外,在主干道亮绿灯和 黄灯的 50 秒内,支干道亮红灯 50 秒,而且支干道显示 50 秒的倒计时。 然后, 当支干道亮红灯 50 秒结束时,主干道

6、由黄灯转为红灯,并且主干道的红灯亮 30 秒,显示 30 秒的倒计时,在此过程中,支干道先亮绿灯 25 秒,显示 25 秒的倒计时, 25 秒过后绿灯转为黄灯,而且黄灯亮 5 秒,显示 5 秒倒计时, 用于绿灯转为红灯作为过渡,使行驶中的车辆有时间停到禁行线外。支干道通 行结束后,主干道通行,以此交替。3.2 方案状态机控制设计将十字路口分成东西走向和南北走向的主干道和支干道。交通灯的工作明显可以分成 5 个状态,如下表 3.1 所示:表3.1工作状态表支干道是否有车状态实现功能支干道没车St0支干道亮红灯,主干道亮绿灯,数码管不显示。支干道有车St1主干道亮绿灯 45秒,数码管显示 45秒倒

7、计时;支干道亮红灯,数码管显示从49秒倒计时到05秒。St2主干道亮黄灯5秒,数码管显示5秒倒计时;支干道 亮红灯,数码管显示从 04秒倒计时到00秒。St3支干道亮绿灯 25秒,数码管显示 25秒倒计时;主干道亮红灯,数码管显示从29秒倒计时到05秒。St4支干道亮黄灯5秒,数码管显示5秒倒计时;主干道亮红灯,数码管显示从 04秒倒计时到00秒。3.3整体设计方案根据交通灯控制器的功能与要求,可以把整体设计分为三个模块:分频模块,把2kHz的频率分成1Hz,1Hz用于倒计时计数的时钟信号,而 2kHz则可以用于数码管扫描显示的片选时钟信号;交通灯控制及倒计时(五个状态的控制)模块;数码管译码

8、扫描显示模块。整体的系统框图如图3.1所示:图3.1系统框架图分频模块就是把输入的2kHz时钟频率2000分频得到1Hz的频率用于数码管倒计时的时钟信号,其原理就是设计一个0到999循环计数的的计数器,当计数溢出,即计数到999时使输出量取反,则输出为0.5秒的高电平和0.5 秒的低电平交替出现,就得到了 1Hz的方波,作为秒倒计时的时钟信号。交通灯控制及倒计时模块就是五个状态的转换模块,是整个系统的核心模块,其五个状态分别 st0、st1、st2、st3、st4。其中st0是当支干道没有车 通行的状态,st1是主干道绿灯亮45秒的状态,st2是主干道亮黄灯5秒的状 态,st3是支干道亮绿灯2

9、5秒的状态,st4是支干道亮黄灯5秒的状态。当主 干道亮绿灯和黄灯时,支干道都是亮红灯,当支干道亮绿灯和黄灯时,主干道 都是亮红灯,并且主、支干道都会显示亮灯的倒计时时间,主、支干道的红黄 绿灯用六个LED发光二极管代替。五个状态图如下图3.2所示:图3.2状态图数码管倒计时显示,是用四个一体的数码管,分别表示主干道和支干道的秒倒计时,所以是动态扫描显示,扫描的频率直接用2KHz的输入时钟频率。4软硬件电路的设计4.1各模块的原理及其程序时钟模块设计时钟分频模块就是把输入的2kHz时钟频率2000分频得到1Hz的频率用 于数码管倒计时的时钟信号,其原理就是设计一个0到999循环计数的的计数 器

10、,当计数溢出,即计数到999时使输出量取反,则输出为0.5秒的高电平和 0.5秒的低电平交替出现,就得到了 1Hz的方波,作为秒倒计时的时钟信号。时钟分频模块生成的元件符号如下图4.1所示:' div!Clk2kli2 elklhzTnhj inaOJ= r is i 1. i n ninr-iirurwn!tbmrad图4.1时钟分频模块clk2khz 是频率为为2khz的输入时钟信号,clk1hz是经过2000分频后得到的频率为1hz方波的输出信号。交通灯控制及计时模块此模块是整个系统的核心部分,主要功能是完成五个状态的转换,并且在 每个状态里完成相应的控制作用,即控制主干道和支干

11、道的红黄绿灯的点亮和 各自数码管倒计时显示。编程时主要是用一个进程语句,其敏感信号是时钟分频模块产生的1Hz时 钟信号,进程里主要用 case语句完成五个状态的控制,在每个状态里要控制 主干道和支干道的红黄绿灯的点亮,而且要控制各自数码管倒计时的显示,并 为扫描显示译码模块提供倒计时时间,同时要使每个状态结束时能顺利进入下 一个状态。五个状态及相应的功能是:StO,支干道亮红灯,主干道亮绿灯,数码管 不显示;St1,主干道亮绿灯45秒,数码管显示45秒倒计时;支干道亮红灯, 数码管显示从49秒倒计时到05秒;St2,主干道亮黄灯5秒,数码管显示5 秒倒计时;支干道亮红灯,数码管显示从 04秒倒

12、计时到00秒;St3,支干道 亮绿灯25秒,数码管显示25秒倒计时;主干道亮红灯,数码管显示从 29秒 倒计时到05秒;St4,支干道亮黄灯5秒,数码管显示5秒倒计时;主干道 亮红灯,数码管显示从04秒倒计时到00秒。状态转换条件参照图3.2。此模块生成的元件符号如下图4.2所示:t 曰 1“* elk 1 h-7cartanl 3|T-:口 rue二门.Ci|Cl-:r_by_lat :L :l_«r-r "sr图4.2交通灯控制及计时模块clklhz是分频模块输出的1Hz的时钟信号,car是支干道是否有车的判 断信号, one1 、ten1 、one2 、ten2 分别

13、是主干道倒计时的个位和十位,支干 道倒计时的个位和十位。 r_a 、g_a、y_a、r_b 、g_b、y_b 分别是主干道和支 干道的红、绿、黄灯控制信号。扫描显示译码模块此模块中含有七段数码管译码和扫描显示两个部分。七段译码可以使用case语句,将数码管要显示的数译成对应的七位二进制数,用来控制数码管的 a、b、c、d、e、f、g的导通。主干道和支干道倒计时要用到 4个数码管,且 是四位一体的,则要使用扫描显示的方法:设计一个00到11循环计数的计数 器,而且计数的时钟要比较大,选用输入的2KHz的时钟信号;当计数器计数为00时,选通第一个数码管,给它主干道倒计时个位的七段译码,当计数器 计

14、数为01时,选通第二个数码管,给它主干道倒计时十位的七段译码,当计 数器计数为10时,选通第三个数码管,给它支干道倒计时个位的七段译码, 当计数器计数为11时,选通第四个数码管,给它支干道倒计时十位的七段译 码,并以此循环扫描显示,达到人眼看上去四个数码管全显示的效果。此模块生成的元件符号如下图4.3所示:. "T *b t r e k -rimr dii splaysr»-r? : ?« ! e-re»«T" , rwE ra t -s t e s1Iscan1.O|1jseg_76 0i-tenip O|iIor>e23.0

15、3iterflp 一期r = r5-j insif?图4.3扫描显示译码模块元件符号其中clk2khz是输入的扫描时钟信号。one1、ten1分别是主干道倒计时 的个位和十位,one2、ten2分别是支干道倒计时的个位和十位,这四个信号 都是有交通灯控制及倒计时模块输出的。Scan是四个数码管的片选信号,seg_7是七段译码输出信号。顶层文件的编写顶层文件就是将上述的三个模块进行例化,把它们连接起来组成一个整体元件例化语句由两部分组成,第一部分是将一个现成的设计实体定义为一个元件,它的最简单表达式如下:component 元件名 isport (端口名表);end component 文件名;

16、元件例化语句的第二部分是此元件与当前设计实体中元件间及端口的连接 说明,语句的表达式如下:例化名:元件名 port map(端口名=连接端口名,);由顶层文件生成的元件符号如下图 4.4所示:oik 2ik.O1o-a. r吕曰呂产石ra.日口沖4ybI11ii-卡1" 口Fr图4.4顶层文件生成元件符号clk_2k是外部输入的频率为2khz的时钟信号,car是判断支干道是否有 车的输入信号。scan 1.0是四位一体数码管的片选输出信号,seg_76.O是 数码管的七段译码输出信号,ra、ga、ya、rb、gb、yb分别是主干道和支干 道红、绿、黄灯的输出控制信号。4.2顶层原理图

17、系统原理图如下图4.5所示:ctin:one13.1ter13 Ojtnlpi.pCSfT,<可醪0:ten2r mnstTscarl C;s«_7K<CLITJ|一)scn1J_->.f 琵g平 JJ I v v -sr -11 -=ni sgr -ije vrtfr*OTFT|r_lIIIWkA >*imiHT fN FWR I MkljCL TP亍|、; gytG JTPIiT ;丁5弋.;亍图4.5顶层原理图系统工作原理:把car置为低电平,系统处于 stO状态,即表示支干道没 有车来时,主干道亮绿灯,支干道亮红灯,四个倒计时数码管都是灭的。当把 ca

18、r置为高电平并不变后,主干道和支干道分别进入状态 st1,st2,st3,st4, 并分别正常显示四个状态的内容,实现主干道每次放行45秒,支干道每次放行 25秒,从而正确实现交叉路口交通灯的控制。5系统仿真5.1时钟分频模块仿真仿真波形图如下图5.1所示:波形分析:开始时clklhz为低电平,当计数器第一次计满时,clklhz由 低电平转为高电平,当计数器第二次计满时,clklhz转为低电平。在这一过程 中,clklhz先后经历了 500ms的低电平和高电平,恰好为一个周期 1s,之后 依次高低交替,得到频率为1Hz的方波。5.2交通灯控制及计时模块仿真仿真波形如下图5.2所示:设置的end

19、 time为100ms ,clk1hz为周期是1ms的方波(把周期缩小 为的是可以缩小仿真的时间,方便波形的仿真)。放大之后(4 t3X2*1 ''i !j ; i ! 4 i ; i i ! ! ! i ! J ; iX ;01l lj J图5.2交通灯控制及倒计时模块仿真波形图波形分析:当car为0时,状态为stO,此状态中主干道亮绿灯,支干道亮红灯,当car为1不变时,变为状态st1,之后进入st1-st2-st3-st4-st1 的循环状态,在相应的状态里面也能正确地控制红黄绿灯点亮。将上图中下面太 密的地方放大一段后,可以清楚地看到,在状态 st1中,主干道进行着45

20、秒 的倒计时,而支干道进行着 50秒的倒计时,两个倒计时在 st0的状态中始终 相差5秒。5.3扫描显示译码模块仿真仿真波形如下图5.3所示:方便仿真设设置的end time 为6ms, clk2khz 周期为500us 。D-oX.L.-Ild-I3 3 s a H >3丘"一回rI *jJ0:y azc0/ T YD十. 一。: ?. x.cc北;.0.p X i r 2 Xis t )L i :ur i: jJim j in'mit ii;1 - HIM Jn:ini X O'on ii "Iin;1脚11:当one和ten为10时对应的七段译码

21、是 0000000 ,使数码管不显示,用于支干道没有车的情况!-P-粥 3& 03l.X BS11.9T iiIt2.52 ls自滋耐1 115 .24 HIHiicL3. L is1_1 1 1|J1J1_-_11 1图5.3扫描显示译码模块的波形仿真图波形仿真说明:为方便观祭 on el、tenl、one2、ten2及scan用的是无 符号十进制数,当sean=0 时显示onel ,当sean=1时显示tenl ,当scan=2 时显示one2,当scan=3时显示ten2。Seg_7的从高到低七位分别对应数码 管gfedeba七段。5.4顶层文件的仿真顶层文件的波形仿真图如下图

22、5.4 所示:为了方便波形仿真,设置 end time 为 1.2s , clk_2k 是周期为 5us 的方 波。图5.4顶层文件波形仿真图虹甲屛卩口因导口运令中细申“呵* 賦2巾甲”愀卩“暨爭Rl.CSiI L17 11、st=stO时放大的波形如下图5.5所示:WffI 1riHt VIML . HO段iir«1 0艸10窃 10lb 11w 10Q ICDL T 3S Mfr i waam仿真波形分析:当car为0时,为状态stO , ga、rb为高电平,即主干道 亮绿灯,支干道亮红灯;当car由0变为1且不变时,状态转为st1,ga、rb 为高电平,即主干道亮绿灯,支干道亮

23、红灯;当 st1倒计时结束,则转为st2, ya、rb为高电平,即主干道亮黄灯,支干道亮红灯;当 st2倒计时结束,则转 为st3,ra、gb为高电平,即主干道亮红灯,支干道亮绿灯;当st3倒计时结束, 则转为st4,ra、yb为高电平,即主干道亮红灯,支干道亮黄灯;当 st4倒计 时结束,贝U转为st1 o当在状态st1,大约在1s处car由高电平变为低电平时, 状态则会转为stO o鉴于图5.4中的scan和seg7太密而看不出其中的变化,所以要把其中几 段放大才能便于观察。图5.5 st=stO时放大的一段波形图5.5波形分析:通过图5.5可以清晰地观察到当st=st0时,主干道和支干道

24、的数码管都是灭的,即 seg7= ” 0000000fflal-tflCTCTm一冲M&&TdutC29.S.2L.5& is甲 HElL.sa !£ Jfli! >nr1g 3 SL £SLillBO JQ BOS3BOV3JxX13T:*i koiL10DL10KDinl伽】Ll、aiociio2、st=st1时放大的一段波形如下图5.6所示:SLlLeS9 bduS «cT图5.6 st=st1 时放大的一段波形图5.6波形分析:由于要经过clk_2k两千分频后才能得到1hz的倒计时 时钟信号,则要经过 clk_2k两千个周期后

25、主干道和支干道的数码管秒倒计时才减一秒,所以在顶层文件波形仿真时不好看到倒计时的变化。在图5-6中可以看到在st为st1时主干道的数码管显示为44,支干道的数码管显示为49,即 scan 为 0 时,seg7 是 “1100110 ”,scan 为 1 时,seg7 是“ 1100110 ”,scan 为 2 时,seg7 是“ 1101111 ”,scan 为 3 时,seg7 是“ 1100110 ”。而st2、st3、st4放大后的波形和图5.6相似。实验结果开始时把car置为低电平,即表示支干道没有车来时,主干道亮绿灯,支 干道亮红灯,四个倒计时数码管都是灭的。当把car置为高电平并不

26、变后,主干道和支干道分别继续亮绿灯和红灯,同时主干道的数码管从44开始一秒一秒地倒计时显示直至倒计时到 00 ,而支 干道的数码管从49开始一秒一秒地倒计时显示,并且主、支干道的数码管显 示值始终相差 5。当主干道的倒计时到 00(支干道倒计时到 05 )后的下一秒, 主干道的绿灯灭,亮起了黄灯,而且主干道的数码管从 04 开始秒倒计时直至 00 ,支干道的红灯在这一过程中始终是亮的,而且数码管正常倒计时,和主干 道的数码管显示。当主、支干道数码管倒计时到 00 后的下一秒,主干道的黄 灯灭,红灯亮,数码管从 29 开始一秒一秒地倒计时,而支干道的红灯灭,绿 灯亮,数码管开始从 24 一秒一秒

27、地倒计时,始终和主干道的数码管少 5, 直至 倒计时到 00 。当支干道数码管倒计时到 00 (主干道为 05 )的下一秒后,支干 道的绿灯灭,黄灯亮,数码管开始从 04 一秒一秒地倒计时直至 00 ,而主干道 在这一过程中继续亮红灯,数码管继续正常地倒计时,而和支干道数码管显示 相同。当主、支干道倒计时到 00 的下一秒,则进入到主干道亮绿灯,支干道 亮红灯的状态,只要 car 依然维持在高电平,就会不断循环支干道有车通信的 四个状态。当 car 从高电平变为低电平后, 不管之前处于 st1 、 st2 、 st3 、st4 中的任 何一个状态都会进入到 st0 状态,即主干道亮绿灯,支干道

28、亮红灯,四个数码 管都不会显示。6 使用说明把 car 置为低电平, 系统处于 st0 状态 ,即表示支干道没有车来时, 主干 道亮绿灯,支干道亮红灯,四个倒计时数码管都是灭的。当把 car 置为高电平 并不变后,主干道和支干道分别进入状态 st1 ,st2 , st3 ,st4 ,并分别正常显 示四个状态的内容。 实现主干道每次放行 45 秒,支干道每次放行 25 秒。从而 正确实现交叉路口交通灯的控制。7 设计总结通过的紧张工作,完成了我的设计任务交通灯控制器设计。通过本次 课程设计的学习,我深深的体会到设计课的重要性和目的性。本次设计课不仅 仅培养了我们实际操作能力, 也培养了我们灵活运

29、用课本知识, 理论联系实际, 独立自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同 时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在, 从而查漏补缺。 希望学校以后多安排一些类似的实践环节, 让同学们学以致用。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误 就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设 计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作 会有一定的帮助。 在应用 VHDL 的过程中让我真正领会到了其并行运行与其他 软件顺序执行的差别及其在电路设计上的优越性。 用 VHDL 硬件描述语言

30、的形 式来进行数字系统的设计方便灵活,利用 EDA 软件进行编译优化仿真极大地 减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将 在未来的数字系统设计中发挥越来越重要的作用。参考文献1 潘松,黄继业 .EDA 技术使用教程 M. 北京:科学出版社 ,2006:320-332.2 黄任 .VHDL 入门 . 解惑 . 经典实例 . 经验总结 M. 北京:北京航空航天大学出版 社,2005:64-88.3 徐 志 军 , 徐 光 辉 .CPLD/FPGA 的 开 发 与 应 用 M. 北 京 : 电 子 工 业 出 版 社,2002:208-218.4 褚振勇 .FPGA 设计

31、与应用 M. 西安:西安电子科技大学出版社 ,2003:218-230. 夏宇闻.Verilog 数字系统设计教程M.北京:北京航空航天大学出版社,2008:302-325.6 夏宇闻 . 复杂数字电路与系统的Verilog HDL 设计技术 D. 北京清华大学出版社,1998:28-56.附录1 、时钟分频模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div isport(clk2khz:in std_logic;-2khz的输入时钟clk1hz:out std_logic)

32、;-经 2000 分频后的 1hz 时钟输出信号end;architecture one of div isbeginprocess(clk2khz)2KHz to 1Hzvariable count:integer range 0 to 999;-0到 999 计数器variable clk1:std_logic;beginif clk2khz'event and clk2khz='1' thenif count=999 then clk1:=not clk1;count:=0;else count:=count+1;end if;end if;clk1hz<=

33、clk1;end process;end;2 、扫描显示译码模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(clk2khz:in std_logic;-扫描时钟信号one1,ten1,one2,ten2:in integer range 0 to 10; scan:out std_logic_vector(1 downto 0);- seg_7:out std_logic_vector(6 downto 0);- end entity display

34、;architecture three of display issignal data:integer range 0 to 10;signal seg77:std_logic_vector(6 downto 0); signal cnt:std_logic_vector(1 downto 0);beginprocess(data) 七段译码begincase data iswhen 0=>seg77<="0111111"when 1=>seg77<="0000110"when 2=>seg77<="101

35、1011"when 3=>seg77<="1001111"when 4=>seg77<="1100110"when 5=>seg77<="1101101"when 6=>seg77<="1111101"when 7=>seg77<="0000111"when 8=>seg77<="1111111"when 9=>seg77<="1101111"when 10=&g

36、t;seg77<="0000000"end case;end process;片选输出信号七段译码输出数码管动态扫描计数seg_7<=seg77; process(clk2khz,one1,ten1,one2,ten2) beginif clk2khz'event and clk2khz='1' then -00到 11 循环计数器if cnt="11" then cnt<="00"else cnt<=cnt+1;end if;end if;end process;process(cnt

37、,one1,ten1,one2,ten2) 数码管动态扫描显示begincase cnt iswhen "00"=>data<=one1;scan<="00"when "01"=>data<=ten1;scan<="01"when "10"=>data<=one2;scan<="10"when "11"=>data<=ten2;scan<="11"when othe

38、rs=>null;end case;end process;end three;3 、交通灯控制及计时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity state5 isport(clk1hz,car:in std_logic;-1hz倒计时时钟信号one1,ten1,one2,ten2:out integer range 0 to 10;-倒计时数r_a,g_a,y_a,r_b,g_b,y_b:out std_logic);-主支干道红黄绿灯end;architecture

39、 two of state5 issignal st:std_logic_vector(2 downto 0);signal r1,g1,y1,r2,g2,y2:std_logic;beginprocess(clk1hz)5 statesvariable eoc:std_logic;-倒计时结束标志位variable h1,l1,h2,l2:integer range 0 to 10;beginif clk1hz'event and clk1hz='1' thencase st iswhen "000"=>if car='0'

40、then 支干道没车经过g1<='1'r1<='0'y1<='0'g2<='0'r2<='1'y2<='0' h1:=10;l1:=10;h2:=10;l2:=10;st<="000"else st<="001"h1:=4;l1:=4;h2:=4;l2:=9;end if;when "001"=>if car='0' then st<="000"

41、 主干道绿灯亮 45 秒elseif eoc='0' thenh1:=4;l1:=4;h2:=4;l2:=9;eoc:='1' g1<='1'r1<='0'y1<='0'g2<='0'r2<='1'y2<='0'elseif h1=0 and l1=1 then st<="010"eoc:='0'h1:=0;l1:=0;h2:=0;l2:=5;elsif l1=0 then l1:=9;h1

42、:=h1-1;l2:=l2-1;elsif l2=0 thenl2:=9;h2:=h2-1;l1:=l1-1;else l1:=l1-1;l2:=l2-1;end if;end if;end if;when "010"=>if car='0' then st<="000" 主干道黄灯亮 5 秒elseif eoc='0' then h1:=0;l1:=4; h2:=0;l2:=4;eoc:='1' g1<='0'r1<='0'y1<='1

43、'g2<='0'r2<='1'y2<='0'elseif l1=1 then st<="011"eoc:='0'h1:=0;l1:=0;h2:=0;l2:=0;else l1:=l1-1;l2:=l2-1;end if;end if;end if;when "011"=>if car='0' then st<="000" 支干道绿灯亮 25 秒elseif eoc='0' then h1:=2;l

44、1:=9; h2:=2;l2:=4;eoc:='1' g1<='0'r1<='1'y1<='0'g2<='1'r2<='0'y2<='0'else if h2=0 and l2=1 then st<="100"eoc:='0'h2:=0;l2:=0;h1:=0;l1:=5;elsif l2=0 thenl2:=9;h2:=h2-1;l1:=l1-1;elsif l1=0 thenl1:=9;h1:=h1-1;l2:=l2-1;else l2:=l2-1;l1:=l1-1;end if;end if;end if;when "100"=>if car='0' then st<="000" 支干道黄灯亮 5 秒elseif eoc='0' then h1:=0;l1:=4; h2:=0;l2:=4;eoc:='1' g1<='0'r1<='1'y1<='0'g2<='0'r2<='

温馨提示

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

评论

0/150

提交评论