交通灯控制电路设计与仿真_第1页
交通灯控制电路设计与仿真_第2页
交通灯控制电路设计与仿真_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、交通灯控制电路设计和仿真一、实验目的1、了解交通灯的燃灭规律。2、了解交通灯控制器的工作原理。3、熟悉VHDL语言编程,了解实际设计中的优化方案。二、实验原理交通灯的显示有很多方式,如十字路口、 丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管, 即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通的燃灭规律为:初始态是两个路口的红灯全亮,之后

2、,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东 西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。在实验中使用8个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间均设定为20s。数码管的时间总是显示为19、18、172、1、0、19、18。在显示时间小于3秒的时候,通车方向的黄灯闪烁。三、实验内容本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选

3、择时钟模块的1KHz时钟,黄灯闪烁时钟要求为 2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于 3秒的时候,通车方向的黄灯以2Hz的频率闪烁。系统中用S1按键进行复位。实验箱中用到的数字时钟模块、按键开关、数码管和FPGA的接口电路,以及数字时钟源、按键开关、数码管和FPGA的管脚连接在以前的实验中都做了详细说明,这里不在赘述。交通灯模块原理和LED灯模块的电路原理一致,当有高电平输入时LED灯就会被点亮,反之不亮。只是LED发出的光有颜色之分。其和 FPGA的管脚连接如下表19-1所示:信号名称对应FFGA管玄弭说明RI山纵向红鱼交逍信号LED if¥1D

4、4緘向黄色交通信号LED灯G11)5纵向館色交通信号LEU灯R2圜讨虹色交道信号LED灯Y2B4横間黄色交逋信号LED灯G2F3陌向垛生交通信号LEU灯四、实验步骤1、打开QUARTUSII软件,新建一个工程。2、 建完工程之后,再新建一个 VHDL File,打开VHDL编辑器对话框。3、按照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序,用户 可参照光盘中提供的示例程序。4、编写完 VHDL 程序后,保存起来。(1) -jtdkz.vhdlibrary ieee;use ieee.std_logic_1164.all;entity jtdkz is port(clk,sm

5、,sb:in std_logic;mr,my0,mg0,br,by0,bg0:out std_logic);end entity jtdkz; architecture art of jtdkz is type state_type is(A,B,C,D); signal state:state_type;begincnt: process(clk) isvariable s:integer range 0 to 45; variable clr,en:bit;beginif(clk'event and clk='1')thenif clr='0'the

6、n s:=0;elsif en='0' then s:=s; else s:=s+1;end if; case state iswhen A=>mr<='0'my0<='0'mg0<='1'br<='1'by0<='0'bg0<='0'if(sb and sm)='1' thenif s=45 then state<= B;clr:='0'en:='0'else state<=A;c

7、lr:='1'en:='1'end if;elsif(sb and(not sm)='1'then state<=B;clr:='0'en:='0'else state<=A;clr:='1'en:='1'end if;when B=>mr<='0'my0<='1'mg0<='0'br<='1'by0<='0'bg0<='0'if s=

8、5 then state<=C;clr:='0'en:='0'else state<=B;clr:='1'en:='1'end if;when C=>mr<='1'my0<='0'mg0<='0'br<='0'by0<='0'bg0<='1'if(sb and sm)='1' thenif s=25 then state<= D;clr:='0'

9、en:='0'else state<=C;clr:='1'en:='1'end if;elsif sb='0' then state<=D;clr:='0'en:='0'else state<=C;clr:='1'en:='1'end if;whe n D=>mr<='1'myO<='O'mgO<='O'br<='O'byO<='1'b

10、gO<='O: if s=5 the n state<=A;clr:='O'e n:='O:else state<=D;clr:='1'e n:='1'end if;end case;end if;end process ent;end architecture art;ritejk':""=4 elkmr-j SinnmyO-i sbmgObrinstSinnl4.lion rtode: Fiaiicti on.alMaslsr Time Bar14.0 rJJPartwz孰Intw

11、vat329.03rwSiaitEn*Ag40.9 hSSO ni120. ,0 bSISO p M200.0 ns20 p nr291 卩皿岂】141ILSJb或1_&LbrbjO*3?lkru-i-ngQ11Tnr1amiryOr口皋AT1 i1 1 丨rLlR侨l *1L11丨.丨l . 11(2) cskz.vhdlibrary ieee;use ieee.std _lo gic_1164.all;use ieee.std_logic_ un sig ned.all; en tity cskz isport(i na:i n std_logic;outa:out std_log

12、ic);end en tity cskz;architecture art of cskz isbeginprocess(i na) isbeginif in a='1' the n outa<='1'else outa<='0'end if;end process;end architecture art;i Cf kzL .jL k- ina outa ; JL !L .-!i j: inft?E .址IMG(3) cnt45s.vhdlibrary ieee;use ieee.std _lo gic_1164.all;use i

13、eee.std_logic_ un sig ned.all;en tity cn t45s isport(sb,clk,e n45:in std_logic;dout45m,dout45b:out std_logic_vector(7 dow nto 0);end en tity cn t45s;architecture art of cn t45s issig nal cn t6b:std_logic_vector(5 dow nto 0);beginprocess(sb,clk,e n45)isbeginif sb='0'then cnt6b<=cnt6b-cnt6b

14、-1;elsif(clk'event and clk='1')thenif en 45='1'then cnt6b<=c nt6b+1;elsif en45='0' then cnt6b<=cnt6b-cnt6b-1;end if;end if;end process;process(c nt6b)isbegincase cn t6b iswhen "000000"=>dout45m<="01000101"dout45b<="01010000" wh

15、en "000001"=>dout45m<="01000100"dout45b<="01001001" when "000010"=>dout45m<="01000011"dout45b<="01001000" whe n "000011"=>dout45m<="01000010"dout45b<="01000111" when "000100"

16、;=>dout45m<="01000001"dout45b<="01000110" when "000101"=>dout45m<="01000000"dout45b<="01000101" when "000110"=>dout45m<="00111001"dout45b<="01000100"when "000111"=>dout45m<=&quo

17、t;00111000"dout45b<="01000011"when "001000"=>dout45m<="00110111"dout45b<="01000010"when "001001"=>dout45m<="00110110"dout45b<="01000001"when "001010"=>dout45m<="00110101"dout45b&

18、lt;="01000000"when "001011"=>dout45m<="00110100"dout45b<="01101001"when "001100"=>dout45m<="00110011"dout45b<="00111000"when "001101"=>dout45m<="00110010"dout45b<="00110111"

19、when "001110"=>dout45m<="00110001"dout45b<="00110110"when "001111"=>dout45m<="00110000"dout45b<="00110101"when "010000"=>dout45m<="00101001"dout45b<="00110100"when "010001"=

20、>dout45m<="00101000"dout45b<="00110011"when "010010"=>dout45m<="00100111"dout45b<="00110010"when "010011"=>dout45m<="00100110"dout45b<="00110001"when "010100"=>dout45m<="00

21、100101"dout45b<="00110000"when "010101"=>dout45m<="00100100"dout45b<="00101001"when "010110"=>dout45m<="00100011"dout45b<="00101000"when "010111"=>dout45m<="00100010"dout45b<=

22、"00100111"when "011000"=>dout45m<="00100001"dout45b<="00100110"when "011001"=>dout45m<="00100000"dout45b<="00100101"when "011010"=>dout45m<="00011001"dout45b<="00100100"when

23、 "011011"=>dout45m<="00011000"dout45b<="00100011"when "011100"=>dout45m<="00010111"dout45b<="00100010"when "011101"=>dout45m<="00010110"dout45b<="00100001"when "011110"=>

24、dout45m<="00010101"dout45b<="00100000"when "011111"=>dout45m<="00010100"dout45b<="00011001"when "100000"=>dout45m<="00010011"dout45b<="00011000"when "100001"=>dout45m<="000100

25、10"dout45b<="00010111"when "100010"=>dout45m<="00010001"dout45b<="00010110"when "100011"=>dout45m<="00010000"dout45b<="00010101"when "100100"=>dout45m<="00001001"dout45b<=&quo

26、t;00010100"when "100101"=>dout45m<="00001000"dout45b<="00010011"when "100110"=>dout45m<="00000111"dout45b<="00010010"when "100111"=>dout45m<="00000110"dout45b<="00010001"when &qu

27、ot;101000"=>dout45m<="00000101"dout45b<="00010000"when "101001"=>dout45m<="00000100"dout45b<="00001001"when "101010"=>dout45m<="00000011"dout45b<="00001000"when "101011"=>dout

28、45m<="00000010"dout45b<="00000111"when "101100"=>dout45m<="00000001"dout45b<="00000110"when others=>dout45m<="00000000"dout45b<="00000000"end case;end process;end architecture art;§雪bdowt4<5mp,.0elk

29、do 叶僦7, Dcnt45sinrfMaster Time Bar:Ops1 KBns Irtervai:132.8 ns StditEnd(4) c nt05s.vhdlibrary ieee;use ieee.std _lo gic_1164.all;use ieee.std_logic_ un sig ned.all;en tity cn t05s isport(clk,e nO 5m,e nO 5b:i n std_logic; dout5:out std_logic_vector(7 dow nto 0); end en tity cn t05s;architecture art

30、of cn t05s issig nal cn t3b:std_logic_vector(2 dow nto 0); beginprocess(clk,e n0 5m,e n05b)isbeginif(clk'event and clk='1')thenif en 05m='1'then cnt3b<=cnt3b+1;elsif en 05b='1'then cnt3b<=cnt3b+1;elsif en 05b='0'then cnt3b<=cnt3b-c nt3b-1; end if;end if;e

31、nd process;process(c nt3b)isbegincase cn t3b iswhen "000"=>dout5<="00000101"when "001"=>dout5<="00000100"when "010"=>dout5<="00000011"when "011"=>dout5<="00000010"when "100"=>dout5<

32、;="00000001"when others=>dout5<="00000000"end case;end process;end architecture art;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity cn t25s isport(sb,sm,clk,e n25:i n std_logic;dout25m,dout25b:out std_logic_vector(7 dow nto 0);end en tity

33、 cn t25s;architecture art of cn t25s issig nal cn t5b:std_logic_vector(4 dow nto 0);beginprocess(sb,sm,clk,e n25)isbeginif sb='0'then cnt5b<=cnt5b-c nt5b-1;elsif sm='0' the n cn t5b<=c nt5b-c nt5b-1;elsif(clk'event and clk='1') thenif en 25='1' then cnt5b<

34、;=cnt5b+1;elsif en 25='0' then cnt5b<=cnt5b-c nt5b-1;end if;end if;end process;process(c nt5b)isbegincase cn t5b iswhen "00000"=>dout25b<="00100101"dout25m<="00110000"when "00001"=>dout25b<="00100100"dout25m<="001010

35、01"when "00010"=>dout25b<="00100011"dout25m<="00101000"when "00011"=>dout25b<="00100010"dout25m<="00100111"when "00100"=>dout25b<="00100001"dout25m<="00100110"whe n "00101&q

36、uot;=>dout25b<="00100000"dout25m<="00100101"when "00110"=>dout25b<="00011001"dout25m<="00100100"when "00111"=>dout25b<="00011000"dout25m<="00100011"when "01000"=>dout25b<="

37、00010111"dout25m<="00100010"when "01001"=>dout25b<="00010110"dout25m<="00100001"when "01010"=>dout25b<="00010101"dout25m<="00100000"when "01011"=>dout25b<="00010100"dout25m<=&

38、quot;00011001"when "01100"=>dout25b<="00010011"dout25m<="00011000"when "01101"=>dout25b<="00010010"dout25m<="00010111"when "01110"=>dout25b<="00010001"dout25m<="00010110"when &qu

39、ot;01111"=>dout25b<="00010000"dout25m<="00010101"when "10000"=>dout25b<="00001001"dout25m<="00010100"when "10001"=>dout25b<="00001000"dout25m<="00010011"when "10010"=>dout25b&

40、lt;="00000111"dout25m<="00010010"when "10011"=>dout25b<="00000110"dout25m<="00010001"when "10100"=>dout25b<="00000101"dout25m<="00010000"when "10101"=>dout25b<="00000100"dou

41、t25m<="00010001"when "10110"=>dout25b<="00000011"dout25m<="00001000"when "10111"=>dout25b<="00000010"dout25m<="00000111"when "11000"=>dout25b<="00000001"dout25m<="00000110&quo

42、t;when others=>dout25b<="00000000"dout25m<="00000000"end case;end process;end architecture art;(6) xskz.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xskz is port(en45,en25,en05m,en05b:in std_logic; ain45m,ain45b,ain25m,ain25b,ain05:i

43、n std_logic_vector(7 downto 0); doutm,doutb:out std_logic_vector(7 downto 0);end entity xskz;architecture art of xskz is begin process(en45,en25,en05m,en05b,ain45m,ain45b,ain25m,ain25b,ain05)is beginif en45='1'then doutm<=ain45m(7 downto 0);doutb<=ain45b(7 downto 0);elsif en05m='1&

44、#39;then doutm<=ain05(7 downto 0);doutb<=ain05(7 downto 0); elsif en25='1'then doutm<=ain25m(7 downto 0);doutb<=ain25b(7 downto 0); elsif en05b='1'then doutm<=ain05(7 downto 0);doutb<=ain05(7 downto 0); end if;end process;end architecture art;:xskz-fen46doutm7- 07决“

45、2巧doutb7.O1enOSmenOb:3in4flmR.0Jfjin43bp.jOJin25m.Dain25bp.JDainOSR .0;Inst"*ZQ14. D MJKone10国 &a dJOS靜g aiuESbl£i LE13 as n25rtlz?0 43 M5bv田 a n45fiEl doutbEl doutrianOSlienJOSnen25en.45QocmoooigooojcjoOCOO120.0 RE40 ¥ nsnojQCiooogiTCDOoooi lXdoooidc)oi locXcooi iTiijjmoi 1 wXomi

46、 11 lJQcu amu 】gjX (CBmmoc55 BOKXnomflomojooc)j5)o o:)>joo j i5i)>KO 1(0001 i师 omaz)>M a55tOomooM炖 mo lcXb iifioooo l l Laxamcjo oc)>oo ioaoi 伽 oottc如cgmooc貶5xxn 氓gjjjil<)gjQL l l)colom)阪ci 肚肿01 顾pq 11 績R i i.炬iomocfflij 氓iMX Ltomo l ipooo l l Lfoooimc)nDoo i loioco i lcJjoi i i 咖】Qo5

47、oh OPOX(:j55)oujjo l lpjooq l lJQoouo loc)!>jjjo Lo QTTTjTiiuooo i tffl»oioaj5a5I55555i5Iooo pocccoM)5 i)j555noaMOi LffloaMixXcoMiaijnioom iQmoiax>5Ii7ji>jii56Ii5i7>jMCaoi(7) ymq.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity ymq isport(clk:in

48、 std_logic;ain41,ain42,ain43,ain44:in std_logic_vector(3 downto 0);del:out std_logic_vector(2 dow nto 0);dout7:out std_logic_vector(6 dow nto 0);end en tity ymq;architecture art of ymq issig nal ain4: std_logic_vector(3 downto 0);sig nal ent: std_logic_vector(2 dow nto 0);beginprocess(clk)beginif cl

49、k'eve nt and clk='1' the nif cnt="011" the ncnt<="000"elsecn t<=c nt+1;end if;end if;end process;process(c nt,a in 41,a in 42,a in 43,a in44)begincase ent iswhen "000" => ain4<=ain41; del<="111"when "001" => ain4<=ain

50、42; del<="110"when "010" => ain4<=ain43; del<="101"when "011" => ain4<=ain44; del<="100"when "100" => ain4<=ain41; del<="000"when "101" => ain4<=ain41; del<="000"when &quo

51、t;110" => ain4<=ain41; del<="000"when "111" => ain4<=ain41; del<="000" end case;end process;process(a in 4)isbegincase ain4 iswhen "0000"=>dout7<="0111111"when "0001"=>dout7<="0000110"when "

52、0010"=>dout7<="1011011"when "0011"=>dout7<="1001111"when "0100"=>dout7<="1100110"when "0101"=>dout7<="1101101"when "0110"=>dout7<="1111101"when "0111"=>dout7<=

53、"0000111"when "1000"=>dout7<="1111111"when "1001"=>dout7<="1101111"when others=>dout7<="0000000"end case;end process;end architecture art;:ymqelk姻2. JO】3in4i3.0dout7p5.0)L3in42 3.0in$t9Master Tine Bar;14.0 ns4 * Poirier;33

54、.8 naInterval;IS.Bns豺可卜zag m.40.9 »虹g mSO.f ni100 0 MNaive11. cR5JS(DOQD X 0)01 x (MID x O0IL X DIOO )(aioi x ouo )(am X looo )c译5回f MJOl X 0DO x 1000 x 0011 x 0100 )(0111 x L10D ;(Jill X100 ai n4 3| mu aBO X L0000110 >0111 :(ioio X mo 1(0101 x_S ain44(0000 X 0)11 X Di oo Y ODDO om ;C noo 尊

55、lioi (mo Zelk1 1 1田d*l(ni x cdo X ooi X oio X on )(1W X 101 )(110 X ill )(ow X ooH dflutT(oiiuiiXioc(KOOXlOOOOOl Xioow 10X1000011 Xioooi 00X1000101X300Q110X1000111 XlOOIOOOXlOOl(8) jtkzq.vhdlibrary ieee;use ieee.std_logic_1164.all;en tity jtkzq isport(clk,sm,sb:in std_logic; mr,mg,my,by,br,bg:out st

56、d_logic;del1:out std_logic_vector(2 dow nto 0);dout:out std_logic_vector(6 dow nto 0);end en tity jtkzq;architecture art of jtkzq iscomp onent div_clk isport(clk : in std_logic;clk1:out std_logic);end comp onent div_clk;comp onent jtdkz isport(clk,sm,sb:in std_logic;mr,myO,mgO,br,byO,bgO:out std_log

57、ic);end comp onent jtdkz;comp onent cskz isport(in a:in std_logic;outa:out std_logic);end comp onent cskz;comp onent cn t45s isport(sb,clk,e n45:in std_logic;dout45m,dout45b:out std_logic_vector(7 dow nto 0); end comp onent cn t45s;comp onent cn t05s isport(clk,e nO 5m,e nO 5b:i n std_logic;dout5:ou

58、t std_logic_vector(7 dow nto 0);end comp onent cn t05s;comp onent cn t25s isport(sb,sm,clk,e n25:i n std_logic; dout25m,dout25b:out std_logic_vector(7 dow nto 0); end component cnt25s; component xskz is port(en45,en25,en05m,en05b:in std_logic;ain45m,ain45b,ain25m,ain25b,ain05:in std_logic_vector(7 d

59、ownto 0); doutm,doutb:out std_logic_vector(7 downto 0);end component xskz;component ymq is port(clk:in std_logic;ain41,ain42,ain43,ain44:in std_logic_vector(3 downto 0);del:out std_logic_vector(2 downto 0); dout7:out std_logic_vector(6 downto 0);end component ymq;signal clk11:std_logic;signal en1,en

60、2,en3,en4:std_logic;signal s45m,s45b,s05,s25m,s25b:std_logic_vector(7 downto 0);signal ym1,ym2,ym3,ym4:std_logic_vector(3 downto 0);beginu1:div_clk port map(clk=>clk,clk1=>clk11);u2:jtdkz port map(clk=>clk11,sm=>sm,sb=>sb,mr=>mr,my0=>en2,mg0=>en1,br=>br,by0=>en4,bg0=>

61、;en3)Ju3:cskz port map(ina=>en1,outa=>mg);u4:cskz port map(ina=>en2,outa=>my);u5:cskz port map(ina=>en3,outa=>bg);u6:cskz port map(ina=>en4,outa=>by);u7:cnt45s port map(clk=>clk11,sb=>sb,en45=>en1,dout45m=>s45m,dout45b=>s45b); u8:cnt05s port map(clk=>clk11,en05m=>en2,dout5=>s05,en05b=>en4);u9:cnt25s

温馨提示

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

评论

0/150

提交评论