EDA红绿灯控制设计.
- 格式:doc
- 大小:111.50 KB
- 文档页数:13
交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。
(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。
(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。
(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。
二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。
频率设定CLK1k对应的频率为50MHZ。
2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。
四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。
交通灯控制器课程设计该交通信号控制器控制十字路甲、乙两条道路的红、黄和绿三色灯,指挥车辆和行人安全通行。
功能要求如下:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。
2.当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的时间。
(20s)3.高速公路灯转为绿色后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持绿灯。
(60s)。
设计如下:——1hz分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen_pin1 isport(clk100hz:in std_logic;clk1hz:out std_logic);end fen_pin1;architecture bhv of fen_pin1 issignal qan:std_logic_vector(3 downto 0); signal qbn:std_logic_vector(3 downto 0); signal cin:std_logic;beginprocess(clk100hz)beginif(clk100hz'event and clk100hz='1')thenif qan="1001"then qan<="0000";cin<='1';else qan<=qan+1;cin<='0';end if;end if;end process;process(clk100hz,cin)beginif(clk100hz'event and clk100hz='1')thenif cin='1' thenif qbn="1001" then qbn<="0000";else qbn<=qbn+1;end if ;end if ;end if ;end process;process(qan,qbn)beginif (qan="1001"and qbn="1001")then clk1hz<='1'; else clk1hz<='0';end if;end process;end bhv;——2hz分频器library ieee;use ieee.std_logic_1164.all;entity fen_pin2 isport (clk100hz:in std_logic;clk2hz:out std_logic);end fen_pin2;architecture bhv of fen_pin2 isbeginprocess(clk100hz)variable cnt:integer range 0 to 24;variable tmp:std_logic;beginif(clk100hz'event and clk100hz='1')thenif cnt=24 thencnt:=0;tmp:=not tmp;elsecnt:=cnt+1;end if;end if;clk2hz<=tmp;end process;end bhv;——主干道控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity contralz isport(clk:in std_logic;ra,ga,ya:out std_logic;timeah,timeal:out std_logic_vector(3 downto 0)); end contralz;architecture bhv of contralz istype rg is(green,red,yellow2);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rg;beginif clk'event and clk='1'thencase state iswhen green=>if a='0'thenth:="0101";tl:="1001";a:='1';ga<='1';ra<='0';ya<='0';elseif not(th="0000"and tl="0001")thenif tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;elseth:="0000";tl:="0000";a:='0';state:=red;end if;end if;when red=>if a='0'thenth:="0001";tl:="1001";a:='1';ra<='1';ya<='0';ga<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';ra<='0';ga<='0';state:=yellow2;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="1001";a:='1';ya<='1';ga<='0';ra<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;tl:=tl-1;end if;elseth:="0000";tl:="0000";ga<='0';ra<='0';ya<='0';a:='0';state:=green;end if;end if;end case;end if;timeah<=th;timeal<=tl;end process;end bhv;——支路控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity contralx isport(clk:in std_logic;rb,gb,yb,chu:out std_logic;timeah,timeal:out std_logic_vector(3 downto 0)); end contralx;architecture bhv of contralx istype rgy is(red,yellow1,green,yellow2);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rgy;beginif clk'event and clk='1'thencase state iswhen yellow1=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=green;end if;end if;when green=>if a='0'thenth:="0001";tl:="1001";a:='1';gb<='1';rb<='0';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow2;end if;end if;when red=>if a='0'thenth:="0101";tl:="0100";a:='1';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow1;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';rb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';chu<='0';state:=red;end if;end if;end case;end if;timeah<=th;timeal<=tl;end process;end bhv;——反馈器library ieee;use ieee.std_logic_1164.all;entity smen isport( sm ,re,gr,ye:in std_logic;jinji:out std_logic);end smen;architecture se of smen isbeginprocess isbeginif(sm='1' and re='0' and gr='0' and ye='0') then jinji<='1'; elsejinji<='0';end if;end process;end se;——消抖电路library ieee;use ieee.std_logic_1164.all;entity xiaodou isport(jinji,clk1hz:in std_logic;b:out std_logic);end xiaodou;architecture bhv of xiaodou issignal temp1:std_logic;beginprocess(clk1hz,jinji)variable temp2:std_logic;beginif(clk1hz'event and clk1hz='0')thentemp1<=jinji;temp2:=not temp1;end if;b<=temp1 and temp2 and clk1hz;end process;end bhv;——状态转换library ieee;use ieee.std_logic_1164.all;entity no isport(a:in std_logic;en:out std_logic);end no;architecture no_arc of no isbeginprocess(a)variable tmp:std_logic;beginif(a'event and a='1')thentmp:=not tmp;end if;en<=tmp;end process;end no_arc;——mux4llibrary ieee;use ieee.std_logic_1164.all;entity mux41 isport(sel:in std_logic_vector(2 downto 0);d0,d1,d2,d3:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0);so:out std_logic_vector(1 downto 0));end mux41;architecture bhv of mux41 isbeginprocess(sel)begincase sel iswhen"100"=>q<=d2;so<="00"; when"101"=>q<=d3;so<="01"; when"000"=>q<=d0;so<="10";when others=>q<=d1;so<="11";end case;end process;end bhv;——译码器library ieee;use ieee.std_logic_1164.all;entity dec7s isport(d:in std_logic_vector(3 downto 0);q0,q1,q2,q3,q4,q5,q6:out std_logic);end dec7s;architecture bhv of dec7s isbeginprocess(d)variable q:std_logic_vector(6 downto 0); begincase d iswhen"0000"=>q:="0111111"; when"0001"=>q:="0000110"; when"0010"=>q:="1011011"; when"0011"=>q:="1001111"; when"0100"=>q:="1100110"; when"0101"=>q:="1101101"; when"0110"=>q:="1111101"; when"0111"=>q:="0100111"; when"1000"=>q:="1111111"; when"1001"=>q:="1101111";when others=>q:="1111001";end case;q0<=q(0);q1<=q(1);q2<=q(2);q3<=q(3);q4<=q(4);q5<=q(5);q6<=q(6);end process;end bhv;--- - . -word 资料- 仿真图如下:Ya,ra,ga 表示主干道黄红绿灯;yb,rb,gb 表示乡村小路黄红绿灯。
E D A课程设计-用V e r i l o g H D L语言编写-红绿灯控制程序(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--成绩:XI’AN UNIVERSITY OF TECHNOLOGYEDA综合实践所在院系自动化与信息工程学院专业名称电子信息科学与技术班级电技111题目红绿灯设计指导教师XXXX3、报告评语及成绩(30%):二、红绿灯原理及设计思路设计思路:为了实现两个方向红绿灯循环亮灭的过程,假设该过程如下:起始(st0)东西方向绿灯亮(green1=1),南北方向红灯亮(red2=1),这个过程持续3个clock周期;然后(st3)东西方向黄灯亮,绿灯灭,南北方向红灯仍然亮着,这个过程持续1个clock;然后(st4)东西方向红灯亮,南北方向绿灯亮,这个过程持续3个clock;然后南北(st7)方向黄灯亮,东西方向红灯仍然亮着,这个过程持续一个clock;接下来就回到起始(st0)的状态进行循环。
此程序中无论哪个方向,各个灯亮着的时间之比为, 绿:黄:红=3:1:4,可以设置clock的值确定各灯具体的亮的时间。
1、红绿灯工作状态的真值表:2、模型图:(见下页)3状态机:三、源程序module traffic(clock,reset,red1,yellow1,green1,red2,yellow2,green2); input clock,reset;output red1,yellow1,green1,red2,yellow2,green2;parameter st0=0,st1=1,st2=2,st3=3,st4=4,st5=5,st6=6,st7=7;reg[2:0] state,nxstate;reg red1,yellow1,green1,red2,yellow2,green2;always(posedge clock or posedge reset)beginif(reset)state=st0;elsestate=nxstate;endalways(state)beginred1=1'b0; yellow1=1'b0; green1=1'b0; red2=1'b0; yellow2=1'b0; green2=1'b0; case(state)st0:begingreen1=1'b1;red2=1'b1;nxstate=st1;endst1:begingreen1=1'b1;red2=1'b1;nxstate=st2;endst2:begingreen1=1'b1;red2=1'b1;nxstate=st3; endst3:begingreen1=1'b0; yellow1=1'b1; red2=1'b1;nxstate=st4; endst4:beginred1=1'b1;red2=1'b0;yellow1=1'b0; green2=1'b1; nxstate=st5; endst5:beginred1=1'b1;green2=1'b1; nxstate=st6; endst6:beginred1=1'b1;green2=1'b1;nxstate=st7;endst7:begingreen2=1'b0;red1=1'b1;yellow2=1'b1;nxstate=st0;endendcaseendendmodule四、编译和仿真波形红绿灯设计仿真图五、仿真分析及结论根据仿真波形图可以看出实验结果符合预期设想,基本实现了红绿黄灯按一定规律进行循环闪烁的功能,仿真结果与预想的一致,实现了各个方向绿、黄、红灯闪亮的时间比为3:1:4。
《EDA技术及应用》交通灯控制电路的设计1 系统设计1.1 设计要求1.1.1 设计任务1、用4个八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。
2、能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。
3、交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。
4、红、绿、黄灯显示的次序应符合实际交通道路控制的要求。
5、其它功能。
1.1.2性能指标要求设计一个交通控制器,用LED 显示灯表示交通状态,并以8 段数码显示器显示当前状态剩余秒数南北方向绿灯亮时,东西方向红灯亮;反之亦然,二者交替允许通行,南北方向每次放行99s,东西方向每次放行99s,南北红绿灯始终比东西红绿灯快3s。
每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为3s。
因为开发板没有绿黄灯,所以用两组三个led灯替代显示红黄绿灯。
南北方向与东西方向各用两个8位数码管显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。
1.2 设计思路及设计框图1.2.1设计思路本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。
设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下两个方向的都为红灯亮启,进入正常工作状态后,当南北方向红绿灯上绿灯亮时,东西方向红绿灯上红灯亮,各方向最后倒计时3s时,南北方向红绿灯和东西方向红绿灯上的代表黄灯的led灯亮启,持续3S后,南北方向红绿灯上红灯亮启,东西方向红绿灯上绿灯亮启持续99s,之后南北方向和东西方向上的黄灯都亮启3s,一个循环完成,循环往复的直行这个过程。
1.2.2总体设计框图根据任务需求,总体设计有:分频器模块、控制器模块、倒计时模块、红绿灯显示模块、码模块和译码显示模块如下图所示:2 各个模块程序的设计led红绿灯显示:module led(clk,led,N,D,cout,zt);input clk;input [6:0] N;input [6:0] D;output reg [5:0] led;output reg [1:0] zt;output reg [6:0] cout;always@(posedge clk)begincout=cout+1;if(cout<N-3)led=6'b100001;//南北绿灯,东西红灯else if(cout>N-3&&cout<N)led=6'b100010;//南北黄灯,东西红灯else if(cout>N&&cout<D+N-3)led=6'b001100;//南北红灯,东西绿灯else if(cout>N+D-3&&cout<N+D)led=6'b010100;//南北红灯,东西黄灯else if(cout==N+D)cout=0;if(cout<N-4)zt=0;else if(cout>N-4&&cout<N-1)zt=1;else if(cout>N-1&&cout<D+N-4)zt=2;else if(cout>D+N-4&&cout<N+D-1)zt=3;endEndmodule分频器:module div(clk,clkout);input clk;output reg clkout;Parameter CNT_MAX =50_000_000;//1s->1hz(50_000_000/1),0.5s->2hz(50_000_000/2=25_000_000) //parameter CNT_MAX = 1; //for simulationreg [25:0] cnt;always @ (posedge clk)if (cnt < CNT_MAX - 1'b1)cnt <= cnt + 1'b1;elsecnt <= 26'd0;always @(posedge clk)if(cnt == CNT_MAX - 1'b1)clkout=1'b1;elseclkout=1'b0; Endmodule调时控制:module ts(s,N,D,mode);input [1:0] s;input mode;output [6:0] N;output [6:0] D;j u1(.s(s[0]),.q(N),.mode(mode));j u2(.s(s[1]),.q(D),.mode(mode));Endmodule倒计时计数:module seg(clk,N,D,cout,zt,fs1,fs2); input clk;input [6:0] N;input [6:0] D;input [6:0] cout;input [1:0] zt;output reg [6:0] fs1;output reg [6:0] fs2;always@(posedge clk)case(zt)2'b00:begin fs1=N-cout-4; fs2=N-cout-1;end2'b01:begin fs1=N+D-cout-1; fs2=N-cout-1;end2'b10:begin fs1=N+D-cout-1; fs2=N+D-4-cout;end2'b11:begin fs1=N+D-cout-1; fs2=2*N+D-cout-1;endendcaseEndmodule计时输出:module j(s,q,mode);input s,mode;output reg [6:0] q;initialq=15;//初始从15开始启动always@(posedge s)if(mode)q=q+1;elseq=q-1;Endmodule数码管调用:// Module Function:数码管的译码模块初始化module segment7 (seg_datin,seg_led,en);input [3:0] seg_datin; //数码管需要显示0~f共16个数字,所以需要4位数据输入端 input en; //数码管使能端output [7:0] seg_led; //在DE10-Standard上控制一个数码管需要7个信号MSB~LSB=DP、G、F、E、D、C、B、Areg [7:0] seg [15:0]; //定义了一个reg型的数组变量,相当于一个16*8的存储器,存储器一共有16个数,每个数有8位宽initial //在过程块中只能给reg型变量赋值,Verilog中有两种过程块always和initial//initial和always不同,其中语句只执行一次beginseg[0] = ~(8'h3f) ; //对存储器中第一个数赋值8'b0011_1111,7段显示数字 0 seg[1] = ~(8'h06); //7段显示数字 1seg[2] = ~(8'h5b); //7段显示数字 2seg[3] = ~(8'h4f); //7段显示数字 3seg[4] = ~(8'h66); //7段显示数字 4seg[5] = ~(8'h6d); //7段显示数字 5seg[6] = ~(8'h7d); //7段显示数字 6seg[7] = ~(8'h07); //7段显示数字 7seg[8] = ~(8'h7f); //7段显示数字 8seg[9] = ~(8'h6f); //7段显示数字 9seg[10] = ~(8'h77); //7段显示数字 aseg[11] = ~(8'h7c); //7段显示数字 bseg[12] = ~(8'h39); //7段显示数字 cseg[13] = ~(8'h5e); //7段显示数字 dseg[14] = ~(8'h79); //7段显示数字 eseg[15] = ~(8'h71); //7段显示数字 fendassign seg_led = en?seg[seg_datin]:8'hff; //连续赋值,输入不同四位数,输出对于译码的8位输出,共阴数码管取反。
EDA课程设计报告设计题目:交通灯信号控制器专业年级:姓名:学号:指导教师:2012.5.30摘要-----------------------------------------------------1 关键词--------------------------------------------------1 一交通灯控制系统简介------------------------------------2 1.1 交通灯的发展----------------------------------------2 1.2 交通灯控制系统的目的--------------------------------2 二交通灯控制系统的设计----------------------------------2 2.1 设计要求--------------------------------------------3 2.2 设计思路--------------------------------------------3 2.2.1 设计流程----------------------------------------4 2.2.2 状态机变化图------------------------------------5 三详细设计----------------------------------------------6 3.1 红黄绿灯控制模块------------------------------------6 3.2 倒计时传输、控制模块---------------------------------6 3.3 倒计时45秒模块-------------------------------------7 3.4倒计时25秒模块--------------------------------------8 3.5倒计时5秒模块---------------------------------------8 3.6 总体连线图------------------------------------------9 四心得体会---------------------------------------------10 参考文献-----------------------------------------------10 附录---------------------------------------------------11随着电子设计技术、ISP(在系统可编程)技术,PLD(可编程逻辑器件),与EDA(电子设计自动化)紧密结合,它代表了数字系统设计领域的最高水平,给数字电路的设计带来了革命性的变化。
eda 交通控制灯课程设计一、课程目标知识目标:1. 学生能够理解并掌握交通控制灯(红绿灯)的基本原理和工作机制。
2. 学生能够描述EDA(电子设计自动化)工具在交通控制灯设计中的应用。
3. 学生能够解释交通控制灯系统中涉及的基础电子元件及其功能。
技能目标:1. 学生能够运用EDA软件完成交通控制灯电路图的绘制。
2. 学生能够通过编程实现对交通控制灯系统的简单控制逻辑。
3. 学生能够运用团队协作和问题解决技能,设计和优化交通控制灯系统。
情感态度价值观目标:1. 培养学生对电子工程领域的兴趣,激发创新意识和探索精神。
2. 增强学生的环保意识和交通安全意识,认识到交通控制灯在现代社会中的重要性。
3. 培养学生的团队协作意识,学会尊重他人意见,共同解决问题。
课程性质:本课程结合了电子技术与实际应用,注重理论与实践相结合,以项目为导向,提升学生的综合技能。
学生特点:假设学生为初中年级,具有一定的电子元件知识基础,对新技术的学习充满好奇,具备基本的计算机操作能力。
教学要求:课程需注重实践性,通过互动式教学和团队协作,使学生在动手实践中理解和掌握知识,提高问题解决能力。
同时,强调安全意识和责任感,培养符合社会主义核心价值观的技能人才。
二、教学内容1. 交通控制灯基础知识:- 红绿灯工作原理介绍- 交通控制灯系统的组成与功能- 交通控制灯在交通安全中的作用2. EDA工具的应用:- EDA软件的认识与基本操作- 交通控制灯电路图的绘制方法- 电路仿真与调试技巧3. 交通控制灯电路设计与制作:- 基本电子元件的选择与应用- 交通控制灯控制逻辑的编写与实现- 电路板设计与焊接技巧4. 项目实践与优化:- 团队协作设计与制作交通控制灯系统- 控制逻辑优化与功能拓展- 作品展示与评价教学内容安排与进度:第一课时:交通控制灯基础知识学习第二课时:EDA软件的认识与基本操作第三课时:交通控制灯电路图绘制与仿真第四课时:电路设计与制作第五课时:项目实践与优化第六课时:作品展示与评价教材章节关联:教学内容与教材中“电子技术应用”章节相关,涉及电子元件、电路设计、EDA工具应用等方面的知识。
EDA交通灯控制电路的设计交通灯控制电路是城市交通管理系统中的重要组成部分,主要用于控制交通信号灯的亮灭和切换,以确保交通的有序进行。
本文将对EDA交通灯控制电路的设计进行详细介绍。
首先,我们需要了解交通灯的基本工作原理。
交通灯一般由红灯、黄灯和绿灯组成,红灯表示停车,黄灯表示准备停车或行驶警告,绿灯表示行驶。
交通灯的工作需要按照一定的时间间隔和顺序进行切换。
接下来,我们将介绍EDA交通灯控制电路的设计步骤。
第一步是确定控制模块。
在设计交通灯控制电路时,我们可以使用数字逻辑芯片或微控制器作为控制模块。
数字逻辑芯片适用于简单的交通灯控制电路,而微控制器可以实现更复杂的功能和灵活的控制。
第二步是确定交通灯的切换顺序和时间间隔。
交通灯的切换顺序和时间间隔需要根据实际道路情况和交通流量进行调整。
一般来说,红灯的时间较长,绿灯的时间较短,以确保交通的流畅和安全。
第三步是确定交通灯控制电路的输入信号。
交通灯的输入信号通常是来自于传感器或计时器。
传感器可以检测车辆、行人等情况,计时器可以按照设定的时间间隔控制灯的切换。
第四步是确定交通灯控制电路的输出信号。
交通灯的输出信号通常是控制灯的亮灭。
通过电路设计,我们可以控制每个交通灯的亮灭,以实现交通灯的切换。
第五步是进行电路设计和布局。
根据确定的输入和输出信号,我们可以开始进行电路设计和布局。
在设计过程中,需要考虑电源供给、输入输出电平、电路保护等因素。
第六步是进行电路仿真和测试。
在完成电路设计和布局后,我们可以使用EDA软件进行电路仿真和测试。
通过仿真和测试,可以确保电路的正常工作和性能符合设计要求。
第七步是进行电路制作和调试。
在电路仿真和测试通过后,我们可以进行电路的制作和调试工作。
在制作和调试过程中,需要注意电路元件的连接、焊接和固定,以确保电路的稳定和可靠性。
最后,我们需要进行交通灯控制电路的性能和安全评估。
通过对电路的性能和安全进行评估,可以检查和改进电路设计,以提高交通灯控制系统的可靠性和安全性。
eda红绿灯课程设计一、课程目标知识目标:1. 学生能够理解并描述红绿灯在交通系统中的作用和重要性。
2. 学生能够掌握EDA(电子设计自动化)的基本概念,并将其与红绿灯系统设计相结合。
3. 学生能够解释红绿灯工作原理,包括电路组成、信号控制等。
技能目标:1. 学生能够运用EDA工具进行红绿灯系统的电路设计和仿真。
2. 学生通过小组合作,提高问题解决能力和团队协作能力,完成红绿灯系统的设计任务。
3. 学生能够运用所学知识,分析和解决实际交通问题,具备一定的创新设计能力。
情感态度价值观目标:1. 学生培养对电子科技的兴趣,激发学习热情,形成积极的学习态度。
2. 学生认识到红绿灯在维护交通秩序、保障人民生命安全中的重要性,增强社会责任感和法治意识。
3. 学生在合作学习中,培养尊重他人、团结协作的良好品质,提高人际沟通能力。
课程性质:本课程为实践性强的学科课程,结合电子技术与交通工程知识,培养学生的实际操作能力和创新思维。
学生特点:五年级学生,具有一定的电子知识基础,对新鲜事物充满好奇,善于合作与分享。
教学要求:注重理论与实践相结合,鼓励学生动手实践,关注个体差异,提高学生的综合素质。
通过分解课程目标为具体学习成果,为教学设计和评估提供依据。
二、教学内容本课程教学内容围绕红绿灯系统的设计与实现展开,依据课程目标,选择以下内容:1. 交通信号灯基础知识:介绍红绿灯在交通控制中的应用,理解信号灯的颜色及其代表意义。
2. EDA工具简介:学习EDA软件的基本操作,了解电路设计与仿真流程。
3. 红绿灯电路设计:- 电路元件认知:教授电阻、电容、二极管等基本元件的作用及使用方法。
- 电路图绘制:学习使用EDA工具绘制红绿灯电路图。
- 仿真与调试:指导学生进行电路仿真,观察并分析红绿灯工作过程。
4. 红绿灯控制系统实现:- 编写控制程序:学习基础编程知识,编写控制红绿灯变换的程序。
- 系统集成:将电路设计与控制程序相结合,完成整个红绿灯系统的搭建。
目录一.方案分析与对比 (2)1.1方案分析 (2)1.2方案对比 (2)二.整体设计论述 (3)三.单元模块设计与仿真 (6)3.1时钟分频模块 (6)3.2交通灯控制及计时模块 (7)3.3扫描显示译码模块 (9)3.4顶层文件的编写 (10)四.硬件实验方案及实验结果 (13)4.1硬件实验方案 (13)4.2实验结果 (15)五.收获和体会 (15)六.参考文献 (13)附录(程序代码) (17)一.方案分析与对比§1.1方案分析通过分析可以知道,所要设计的交通信号灯控制电路要能够适用于由一条主干道和一条支干道的汇合点形成的十字交叉路口。
能够做到主、支干道的红绿灯闪亮的时间不完全相同,在绿灯跳变红灯的过程中能够用黄灯进行过渡,使得行驶过程中的车辆有足够的时间停下来。
还要求在主、支干道各设立一组计时显示器,能够显示相应的红、黄、绿倒计时。
可以利用VHDL语言合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。
§1.2方案对比实现路口交通灯系统的控制方法很多,可以用标准逻辑器件、可编程序控制器和单片机等方案来实现。
若用单片机方案来实现的话,模型可以由电源电路、单片机主控电路、无线收发控制电路和显示电路四部分组成。
在电源电路中,需要用到+5V的直流稳压电源,无线收发控制电路和显示电路应由编码芯片和数据发射模块两部分组成,主控电路的主要元件为AT89C51。
硬件设计完成后还要利用计算机软件经行软件部分的设计才能够实现相应的功能。
虽然利用单片机系统设计的交通灯控制器相对来说较稳定,能够完成较多功能的实现,但这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统设计与调试的困难。
相反,使用基于FPGA的设计方法具有周期短,设计灵活,易于修改等明显的的优点。
而且,随着FPGA器件、设计语言和电子设计自动化工具的发展和改进,越来越多的电子系统采用FPGA来设计。
目录前言: (1)一、设计任务: (2)二、题目分析与整体构思: (2)三、硬件电路设计: (3)四、程序设计: (7)五、心得体会: (20)六、设计创新: (20)七、参考文献: (20)前言伴随着社会的发展以及人类生活水平的提高,汽车的数量在D的DEA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。
随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。
以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。
一﹑设计任务设计一个十字路口的交通灯控制系统,用实验平台上的LED发光二极管显示车辆通过的方向(东西和南北各一组),用数码管显示该方向的剩余时间。
要求:工作顺序为东西方向红灯亮45秒,前40秒南北方向绿灯亮,后5秒黄灯亮。
然后南北方向红灯亮45秒,前40秒东西方向绿灯亮,后5秒黄灯亮。
依次重复。
有紧急事件时允许将某方向一直开绿灯或者开红灯,另外允许特定情况两方向均为红灯,车辆禁行,比如十字路口恶性交通事故时,东西,南北两个方向均有两位数码管适时显示该方向亮灯时间。
二、题目分析与整体构思(1)该交通灯控制器应具备的功能设东西和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45sec,黄灯5sec,绿灯40sec,同时用数码管指示当前状态(红、黄、绿)剩余时间。
另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。
紧急状态解除后,重新计数并指示时间。
(2) 实现方案一从题目中计数值与交通灯的亮灭的关系如图(1)所示三﹑硬件电路设计(1)分频器分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。
该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。
(2)控制器设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。
此外,当检测到特殊情况(HOLD=‘1’)发生时,无条件点亮红灯的二极管。
本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。
这两种方法各有所长,必须根据所用器件的特性进行选择:比如有些FPGA有丰富的寄存器资源,而且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。
(3)计数器设计这里需要的计数器的计数范围为0-90。
计到90后,下一个时钟沿回复到0,开始下一轮计数。
此外,当检测到特殊情况(HOLD=‘1’)发生是,计数器暂停计数,而系统复位信号RESET则使计数器异步清零。
(4)分位译码电路设计--1因为控制器输出的到计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如25分为2和5,7分为0和7)。
与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。
控制器中,引入了寄存器。
为了让读者开拓眼界,分位电路就用组合逻辑电路实现。
(5)分位译码电路设计—2(6)数码管驱动设计串行连接,即每个数码管对应的引脚都接在一起(如每个数码管的a引脚都接到一起,然后再接到CPLD/FPGA上的一个引脚上),通过控制公共端为高电平控制相应数码管的亮、灭(共阴极数码管的公共端为高电平时,LED不亮;共阳极的公共端为低电平时,LED不亮)。
串行法的优点在于消耗的系统资源少,占用的I/O口少,N个数码管只需要(7+N)个引脚(如果需要小数点,则是(8+N)个引脚)。
其缺点是控制起来不如并行法容易。
(7)下图为交通灯控制器的顶层文件连接图四、程序设计(1)分频器的设计LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider ISPORT(Clkin:IN Std_Logic;Clkout:OUT Std_Logic);END;ARCHITECTURE Devider OF FreDevider IS CONSTANT N:Integer:=499;signal counter:Integer range 0 to N; signal Clk:Std_Logic;BEGINPROCESS(Clkin)beginIF rising_edge(Clkin)THENIF Counter=N thencounter<=0;Clk<=not clk;elsecounter<=counter+1;end if;end if;end process;clkout<=clk;end;(2)控制设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管的分译码电路。
此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY countroller ISPORT (Clock:IN STD_LOGIC;Hold:in std_logic;CountNum:in INTEGER RANGE 0 TO 89;NumA,NumB:out INTEGER RANGE 0 TO 45;RedA,GreenA,YellowA:out std_logic;RedB,GreenB,YellowB:out std_logic);END;ARCHITECTURE behavior OF Countroller ISBEGINprocess(Clock)BEGINIF falling_edge(Clock)THENIF Hold='1' THENRedA<='1';RedB<='1';GreenA<='0';GreenA<='0';YellowA<='0';YellowB<='0';ELSIF CountNum<=39 THENNumA<=40-CountNum;RedA<='0';GreenA<='1';YellowA<='0';ELSIF CountNum<=44 THENNumA<=45-CountNum;RedA<='0';GreenA<='0';YellowA<='1';ELSENumA<=90-CountNum;RedA<='1';GreenA<='0';YellowA<='0';END IF;IF CountNum<=44 THENNumB<=45-CountNum;RedB<='1';GreenB<='0';YellowB<='0';ELSIF CountNum<=84 THENNumB<=85-CountNum;RedB<='0';GreenB<='1';YellowB<='0';ELSeNumB<=90-CountNum;RedB<='0';GreenB<='0';YellowB<='1';END IF;END IF;END PROCESS;END;(3)计数器的设计这里计数器的计数范围为0—45S 。
计到45后,下一个时钟沿回复到0,开始下一轮计数.此外,当检测到特殊情况(Hold=‘1‘)发生时,计数器暂停计数,而系统复位号Reset则使计数器异步清0。
程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY counter ISPORT (clock:IN STD_LOGIC;reset:in std_logic;Hold:in std_logic;countNum:BuFFeR INTEGER RANGE 0 TO 90); END;ARCHITECTURE behavior OF counter IS BEGINprocess(reset,Clock)BEGINIF Reset='1' THENcountNum<=0;ELSIF rising_edge(Clock) THENIF countNum=90 THENcountNum<=0;ELSEcountNum<=countNum+1;END IF;END IF;END IF;END PROCESS;END;(4)分位译码电路设计--1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Fenwei ISPORT(Numin:IN integer RANGE 0 TO 45;NumA,NumB:OUT Integer RANGE 0 to 9);END;ARCHITECTURE behavior OF Fenwei ISBEGINprocess(Numin)BEGINIF Numin>=40 THENNumA<=4;NumB<=Numin-40;ELSIF Numin>=30 THENNumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THENNumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THENNumA<=1;NumB<=Numin-10;ELSENumA<=0;NumB<=Numin;END IF;END PROCESS;END;(5)分位译码电路设计—2USE IEEE.STD_LOGIC_1164.ALL; ENTITY Fenwei2 ISPORT(Numin:IN integer RANGE 0 TO 45; NumC,NumD:OUT Integer RANGE 0 to 9 );END;ARCHITECTURE behavior OF Fenwei2 IS BEGINprocess(Numin)BEGINIF Numin>=40 THENNumC<=4;NumD<=Numin-40;ELSIF Numin>=30 THENNumC<=3;NumD<=Numin-30;ELSIF Numin>=20 THENNumC<=2;NumD<=Numin-20;ELSIF Numin>=10 THENNumC<=1;NumD<=Numin-10;ELSENumC<=0;NumD<=Numin;END IF;END PROCESS;END;(6)数码管驱动设计电平控制数码管显示0----9LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY bcd_data ISPORT(bcd_data:in STD_LOGIC_VECTOR(3 downto 0);segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF bcd_data ISBEGINprocess(bcd_data)BEGINcase bcd_data iswhen "0000"=>segout<="1111110";when "0001"=>segout<="0110000";when "0010"=>segout<="1101101";when "0011" =>segout<="1111001" ;when "0100" =>segout<="0110011" ;when "0101"=>segout<="1011011" ;when "0110"=>segout<="0011111" ;when "0111"=>segout<="1110000" ;when "1000" =>segout<="1111111" ;when "1001" =>segout<="1110011";when others =>null;END CASE;END PROCESS;END;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY dtsm ISPORT(clk:in STD_LOGIC;NumA,NumB,NumC,NumD: in STD_LOGIC_VECTOR(3 downto 0); segout1:out STD_LOGIC_VECTOR(6 downto 0);led_sel: out STD_LOGIC_VECTOR(3 downto 0));END dtsm;architecture bhv of dtsm iscomponent bcd_data isport (bcd_data:in STD_LOGIC_VECTOR(3 downto 0);segout:out STD_LOGIC_VECTOR(6 downto 0)); end component;signal x:STD_LOGIC_VECTOR(3 downto 0);signal q:STD_LOGIC_VECTOR(1 downto 0);beginp1:process(clk)beginif clk'event and clk ='1' thenQ<= Q + '1';end if;end process;p2:process(Q)begincase Q iswhen"00"=>led_sel<="1110";x<=NumD;when"01"=>led_sel<="1101";x<=NumC;when"10"=>led_sel<="1011";x<=NumB;when"11"=>led_sel<="0111";x<=NumA;when others=>null;end case;end process;u1:bcd_data PORT map(bcd_data=>x,segout=>segout1); end五﹑设计创新1﹑模块化编程,模块化接线,再编译总原理图,思路比较清楚解容易。