十字路口红绿灯设计报告_第1页
十字路口红绿灯设计报告_第2页
十字路口红绿灯设计报告_第3页
十字路口红绿灯设计报告_第4页
十字路口红绿灯设计报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、十字路口红绿灯设计报告摘要:本设计为一路拥有倒计时功能的简单可调控十字路口红绿灯,两路口各显示一台红绿灯的倒计时以及红绿灯亮灭情况。具备正常红绿灯及倒计时、夜间两路口全亮黄灯、高峰时期为便于疏导一路红灯一路绿灯等三个模式。设计在Quartus II的操作环境中完成,采用VHDL语言以及原理图方法完成自底向上的设计。拟采用三个模块完成此次设计CLK分频模块、主控制模块以及输出控制模块。其中,控制模块根据输入的控制信号(电平开关)决定工作模式,并完成接近于1HZ的计数,输出给输出模块,输出模块接收到具体模式以及计数信号后,将计数结果以及红绿灯亮灭输至数码管及LED灯显示。目录摘要正文1、 总体设计

2、2、 分频器选择3、 主控制模块设计4、 输出模块仿真与测试结果设计总结附录1、 分频器模块程序2、 主控制模块程序3、 输出模块程序正文1、 总体设计因需要动态数码管显示倒计时的内容,时钟频率需要达到一定的高度(约至少40HZ),而计数模块频率约为1HZ,故采用单独的数码管输出模块。为了减少模块连接,在计数模块中完成各个模式的分配能够实现,故采用两个主体模块以及两路时钟分频信号。如下图。分频器(输出低频)分频器(输出高频)主控制模块数码管及LED等输出控制模块数码管及LED灯时钟2、 分频器选择理论课中我们学习到了多种分频方式,包括二进制分频器、偶数分频器、奇数分频器、占空比可调分频器及小数

3、分频器。结合实际需要,我们此处在偶数分频器以及二进制分频器中进行选择。偶数分频器分频精度高,对于要求精确计时的系统可以采用,但在之前的实验中我们发现,偶数分频器不便于调节,后期调试工作较为复杂。考虑红绿灯的倒计时主要是便于驾车司机及行人明确等待及通行时间,故此出选择采用二进制分频器,结合试验箱约50MHZ的输出频率,在计数模块中选择24分频能接近于1HZ,在数码管显示中选择3分频即可。3、 主控制模块设计主控制模块需要完成计数,工作模式判定,输送控制信号给输出模块的任务。需设有总开关,当开关关闭,红绿灯以及LED全灭,处于关闭状态,当开关开启,开始工作。设有两个路口的控制开关LA及LB。当两开

4、关都关闭时,红绿灯工作于正常计数状态,即一路口33秒红灯,另一路口30秒绿灯后3秒黄灯。当任一开关处于开启状态时,此开关控制路口变成路灯,另一路口变为红灯。当两开关全部开启,红绿灯工作在夜间模式,两路口全闪黄灯,计时器不工作。4、 输出模块根据控制模块输入信号以及计时信号,显示到数码管以及LED灯上。具体程序见附件。仿真与测试结果分频器输出N=2时的仿真当工作在正常模式下控制模块输出仿真当工作在A路口畅通的状态时控制模块输出当工作在夜间模式时控制模块输出输出模块工作仿真总体原理图文件设计总结本次设计对本学期的课程画上了一个句号,这个设计基本上展示了我们的学校情况大致对QuartusII有一定了

5、解,能基本完成模块的整体设计。但是对于一个完整的电路中许多的细节仍然缺乏思考与锻炼。附录1、 分频器模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY fdiv is generic(N: integer:=3); -rate=2N port( clkin: IN std_logic; clkout: OUT std_logic );End fdiv;Architecture a of fdiv is signal cnt

6、: std_logic_vector(N-1 downto 0);Begin process(clkin) begin if(clkin'event and clkin='1') then cnt <= cnt+1; end if; end process; clkout <= cnt(N-1);End a;2、 控制模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY test IS P

7、ORT( clk,key,la,lb:IN STD_LOGIC; cmd: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); scmd: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); s: OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END test;ARCHITECTURE haha OF test IS SIGNAL snum: STD_LOGIC_VECTOR(2 DOWNTO 0); -PAN DUAN HONGHUANG DENG SIGNAL num: STD_LOGIC_VECTOR(5 DOWNTO 0);- L

8、VHONG DENG JI SHU BEGIN PROCESS(clk,key,la,lb) BEGIN IF key='0' THEN -KAIGUAN cmd<="000" ELSIF(clk'EVENT AND clk='1') THEN IF num="111000" THEN num<="000000" ELSE num<=num+1; END IF; IF(la='1' AND lb='1') THEN cmd<="0

9、11" ELSIF(la='0' AND lb='1')THEN cmd<="001" ELSIF(la='1' AND lb='0')THEN cmd<="010" ELSIF(la='0' AND lb='0') THEN cmd<="111" IF snum="000" THEN IF num="011100" THEN num<="000000&qu

10、ot; snum<=snum+1; END IF; ELSIF snum="001" THEN IF num="000100" THEN num<="000000" snum<=snum+1; END IF; ELSIF snum="010" THEN IF num="011100" THEN num<="000000" snum<=snum+1; END IF; ELSIF snum="011" THEN IF num=&q

11、uot;000100" THEN num<="000000" snum<=snum+1; END IF; END IF; IF snum="100" THEN snum<="000" END IF; END IF; END IF; END PROCESS; scmd<=snum; s<=num;END haha;3、 输出模块程序LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.ST

12、D_LOGIC_ARITH.ALL;ENTITY shuchu ISPORT( clk:IN STD_LOGIC; s:IN STD_LOGIC_VECTOR(5 DOWNTO 0); snum,icmd:IN STD_LOGIC_VECTOR(2 DOWNTO 0); cmd:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); seg:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); deng:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END shuchu;ARCHITECTURE a OF shuchu ISSIGNAL cnt:

13、STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL ttt: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL kkk: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(snum,s,clk,cnt,ttt,icmd) BEGIN IF cnt="100" THEN cnt<="000" ELSIF(clk'EVENT AND clk='1') THEN cnt<=cnt+1; END IF; IF icmd="000"

14、 THEN -GUANBI cmd<="11111111" deng<="00000000" ELSIF icmd="001" THEN cmd<="11111111" deng<="01000001" ELSIF icmd<="010" THEN cmd<="11111111" deng<="00010100" ELSIF icmd<="011" THEN cmd&l

15、t;="11111111" kkk<="00000001" AND s; IF kkk ="00000001" THEN deng<="00100010" ELSIF kkk ="00000000" THEN deng<="00000000" END IF; ELSIF icmd<="111" THEN IF snum="000" THEN -A亮绿灯,B亮红灯 deng<="00010100&q

16、uot; IF s="000000" THEN CASE cnt IS WHEN "000"=>ttt<="0011"cmd<="11011111" WHEN "001"=>ttt<="0000"cmd<="11101111" WHEN "010"=>ttt<="0011"cmd<="11111101" WHEN "011"

17、=>ttt<="0011"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯30秒,B红灯33秒 END CASE; ELSIF s="000001" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="1001"c

18、md<="11101111" WHEN "010"=>ttt<="0011"cmd<="11111101" WHEN "011"=>ttt<="0010"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯29秒,B红灯32秒 END CASE; ELSIF s="000010" THEN CASE cnt IS WH

19、EN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="1000"cmd<="11101111" WHEN "010"=>ttt<="0011"cmd<="11111101" WHEN "011"=>ttt<="0001"cmd<="11111

20、110" WHEN OTHERS=>cmd<="11111111" -A绿灯28秒,B红灯31秒 END CASE; ELSIF s="000011" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="0111"cmd<="11101111" WHEN "010"

21、=>ttt<="0011"cmd<="11111101" WHEN "011"=>ttt<="0000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯27秒,B红灯30秒 END CASE; ELSIF s="000100" THEN CASE cnt IS WHEN "000"=>ttt<="0010"c

22、md<="11011111" WHEN "001"=>ttt<="0110"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="1001"cmd<="11111110" WHEN OTHERS=>cmd<="11111111

23、" -A绿灯26秒,B红灯29秒 END CASE; ELSIF s="000101" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="0101"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111

24、101" WHEN "011"=>ttt<="1000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯25秒,B红灯28秒 END CASE; ELSIF s="000110" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"

25、=>ttt<="0100"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="0111"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯24秒,B红灯27秒 END CASE; ELSIF s="00

26、0111" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="0011"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="

27、;0110"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯23秒,B红灯26秒 END CASE; ELSIF s="001000" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="0010"cmd<="11101

28、111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="0101"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯22秒,B红灯25秒 END CASE; ELSIF s="001001" THEN CASE cnt IS WHEN "000"

29、=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="0001"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="0100"cmd<="11111110" WHEN OTH

30、ERS=>cmd<="11111111" -A绿灯21秒,B红灯24秒 END CASE; ELSIF s="001010" THEN CASE cnt IS WHEN "000"=>ttt<="0010"cmd<="11011111" WHEN "001"=>ttt<="0000"cmd<="11101111" WHEN "010"=>ttt<="

31、;0010"cmd<="11111101" WHEN "011"=>ttt<="0011"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯20秒,B红灯23秒 END CASE; ELSIF s="001011" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011

32、111" WHEN "001"=>ttt<="1001"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="0010"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯19秒,B红灯

33、22秒 END CASE; ELSIF s="001100" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="1000"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN &qu

34、ot;011"=>ttt<="0001"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯18秒,B红灯21秒 END CASE; ELSIF s="001101" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="

35、;0111"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="0000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯17秒,B红灯20秒 END CASE; ELSIF s="001110" THEN CA

36、SE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="0110"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="1001"cmd<

37、="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯16秒,B红灯19秒 END CASE; ELSIF s="001111" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="0101"cmd<="11101111" WHEN &qu

38、ot;010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="1000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯15秒,B红灯18秒 END CASE; ELSIF s="010000" THEN CASE cnt IS WHEN "000"=>ttt<="

39、;0001"cmd<="11011111" WHEN "001"=>ttt<="0100"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="0111"cmd<="11111110" WHEN OTHERS=>cmd<=&q

40、uot;11111111" -A绿灯14秒,B红灯17秒 END CASE; ELSIF s="010001" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="0011"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<

41、="11111101" WHEN "011"=>ttt<="0110"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯13秒,B红灯16秒 END CASE; ELSIF s="010010" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN &qu

42、ot;001"=>ttt<="0010"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="0101"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯12秒,B红灯15秒 END CASE; ELSI

43、F s="010011" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="0001"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>t

44、tt<="0100"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯11秒,B红灯14秒 END CASE; ELSIF s="010100" THEN CASE cnt IS WHEN "000"=>ttt<="0001"cmd<="11011111" WHEN "001"=>ttt<="0000"cmd<

45、="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="0011"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯10秒,B红灯13秒 END CASE; ELSIF s="010101" THEN CASE cnt IS WHEN &qu

46、ot;000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="1001"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="0010"cmd<="11111110&qu

47、ot; WHEN OTHERS=>cmd<="11111111" -A绿灯9秒,B红灯12秒 END CASE; ELSIF s="010110" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="1000"cmd<="11101111" WHEN "010"=>tt

48、t<="0001"cmd<="11111101" WHEN "011"=>ttt<="0001"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯8秒,B红灯11秒 END CASE; ELSIF s="010111" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<=&

49、quot;11011111" WHEN "001"=>ttt<="0111"cmd<="11101111" WHEN "010"=>ttt<="0001"cmd<="11111101" WHEN "011"=>ttt<="0000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -

50、A绿灯7秒,B红灯10秒 END CASE; ELSIF s="011000" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="0110"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<="11111101"

51、 WHEN "011"=>ttt<="1001"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯6秒,B红灯9秒 END CASE; ELSIF s="011001" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<

52、;="0101"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<="11111101" WHEN "011"=>ttt<="1000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯5秒,B红灯8秒 END CASE; ELSIF s="011010" TH

53、EN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="0100"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<="11111101" WHEN "011"=>ttt<="0111"cm

54、d<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯4秒,B红灯7秒 END CASE; ELSIF s="011011" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="0011"cmd<="11101111" WHEN

55、"010"=>ttt<="0000"cmd<="11111101" WHEN "011"=>ttt<="0110"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯3秒,B红灯6秒 END CASE; ELSIF s="011100" THEN CASE cnt IS WHEN "000"=>ttt<=&quo

56、t;0000"cmd<="11011111" WHEN "001"=>ttt<="0010"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<="11111101" WHEN "011"=>ttt<="0101"cmd<="11111110" WHEN OTHERS=>cmd<=&

57、quot;11111111" -A绿灯2秒,B红灯5秒 END CASE; ELSIF s="011101" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="0001"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<=

58、"11111101" WHEN "011"=>ttt<="0100"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A绿灯1秒,B红灯4秒 END CASE; END IF; ELSIF snum="001" THEN -A亮黄灯,B亮红灯 deng<="00100100" IF s="000000" THEN CASE cnt IS WHEN "

59、000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="0011"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<="11111101" WHEN "011"=>ttt<="0011"cmd<="11111110"

60、 WHEN OTHERS=>cmd<="11111111" -A黄灯3秒,B红灯3秒 END CASE; ELSIF s="000001" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="11011111" WHEN "001"=>ttt<="0010"cmd<="11101111" WHEN "010"=>ttt<

61、;="0000"cmd<="11111101" WHEN "011"=>ttt<="0010"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A黄灯2秒,B红灯2秒 END CASE; ELSIF s="000010" THEN CASE cnt IS WHEN "000"=>ttt<="0000"cmd<="

62、11011111" WHEN "001"=>ttt<="0001"cmd<="11101111" WHEN "010"=>ttt<="0000"cmd<="11111101" WHEN "011"=>ttt<="0001"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -A黄灯1秒

63、,B红灯1秒 END CASE; END IF; ELSIF snum="010" THEN -B亮绿灯,A8亮红灯 deng<="01000001" IF s="000000" THEN CASE cnt IS WHEN "000"=>ttt<="0011"cmd<="11011111" WHEN "001"=>ttt<="0011"cmd<="11101111" WHEN

64、 "010"=>ttt<="0011"cmd<="11111101" WHEN "011"=>ttt<="0000"cmd<="11111110" WHEN OTHERS=>cmd<="11111111" -B绿灯30秒,A红灯33秒 END CASE; ELSIF s="000001" THEN CASE cnt IS WHEN "000"=>ttt<=&

65、quot;0011"cmd<="11011111" WHEN "001"=>ttt<="0010"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<="11111101" WHEN "011"=>ttt<="1001"cmd<="11111110" WHEN OTHERS=>cmd<

66、;="11111111" -B绿灯29秒,A红灯32秒 END CASE; ELSIF s="000010" THEN CASE cnt IS WHEN "000"=>ttt<="0011"cmd<="11011111" WHEN "001"=>ttt<="0001"cmd<="11101111" WHEN "010"=>ttt<="0010"cmd<=

温馨提示

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

评论

0/150

提交评论