EDA课程设计报告-用VerilogHDL语言编写-红绿灯控制程序

合集下载

EDA课程设计报告交通灯控制系统

EDA课程设计报告交通灯控制系统

一、课程设计目的和要求目的:掌握基于FPGA 的复杂数字系统的设计和验证方法。

提高学生复杂数字系统的设计能力。

要求:使用实验箱为W48-PK2SOPC 试验开发系统,核心器件为Alatera 公司的EP1C6Q240C8芯片,开发软件为Quartus4.0.本实验环节要求学生以FPGA 器件为目标器件,设计典型的数字系统,如:A/D 、D/A 接口;电子密码锁,交通灯控制系统,数字表等复杂硬件电路,完成设计综合、仿真和硬件测试,并写实验报告。

二、设计方案工作原理:本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续40S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续40S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。

用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

实现方法:本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

进入10状态两路黄灯亮起。

结束一个循环,从00状态重新开始循环。

EDA电子设计交通灯

EDA电子设计交通灯

电子技术课程设计——EDA交通灯设计任务一、EDA课程设计目标1.掌握用Verilog HDL语言的设计方法;2.掌握Verilog HDL语言程序的基本结构,学习编写简单的Verilog HDL设计实用程序;3.了解Quartus II软件的基本使用方法,数字电路系统的设计流程,掌握QuartusII的使用方法;4.在Quartus II环境下,对其设计功能进行编程、仿真、并下载到EDA试验箱的FPGA芯片,验证其设计的正确性。

二、题目1.设计流程图2.使用说明①建立新的工程●File → New Project Wizard…或点击对应符号;输入工程所在目录和两个工程文件名,两个文件要同名;●选择器件Cyclone EP1C6Q240C8;●不选用第三方设计工具。

②编写程序③编译●Processing → Start Compilation开始编译,直至检查成功,0错误④建立波形分析文件●File → New → Others→ Vector Waveform File…;●Edit →Insert Node or Bus…或在弹出窗口的Name区域点击左键选择InsertNode or Bus…;●在弹出窗口中点击Node Finder…;●在弹出窗口中点击点击List;注意Filter=Pins:unassigned●在左侧窗口选择待分析节点并移至右侧窗口,点击Ok;●Edit → End Time…设置分析结束时间●Edit → Grid Size…设置分析网格时间●在波形分析文件中利用左侧工具箱设置分析节点的初值;●点击文件保存符号,用默认名保存波形分析文件;⑤波形仿真分析●全编译Processing → Start Compilation或点击对应符号;可编程系统的仿真一般分为功能仿真和时序仿真。

其中功能仿真,主要是检查逻辑功能是否正确。

●选择Tools →Simulator Tool,在弹出窗口,在“Simulator Mode”下拉列表框中选择“Functional”项,在“Simulation input”栏中指定波形激励文件。

交通信号灯控制器的verilog实现

交通信号灯控制器的verilog实现

H a r b i n I n s t i t u t e o f T e c h n o l o g yV e r i l o g实验报告(2)实验内容:交通信号灯控制器班级:姓名:学号:哈尔滨工业大学2015年6月一、功能描述本设计利用Verilog HDL 语言,对一个十字路口的交通信号灯进行控制,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。

并通过ModelSim软件对系统进行了仿真。

仿真结果表明系统可自动实现十字路口红绿灯及左转弯信号灯的控制。

实现设计目标如下:(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿、左转四盏交通信号灯。

通过控制器对四个路口的四组交通灯的状态实现自动循环控制;(2)实现两主干道车辆交替运行,每次通行直行时间为30 秒;左转时间为10秒,右转不受信号灯控制。

(3)黄灯作为绿灯转为左转灯,左转灯转为红灯的过渡信号灯,过渡时间为5s。

(4)系统设有总复位开关,可在任意时间对系统进行复位。

二、设计方案1.设计思路我们对图1所示的十字路口进行设计,路口A和路口C的车辆同时行驶,路口B和路口D的车辆同时行驶,所以虽然要控制4组信号灯,但其实它们可以俩俩合并,这样大大简化了设计。

由于我们采用自动控制方式,两个方向的灯按照顺序依次交替循环显示,每种灯亮的时间结合实际生活合理设定。

系统设有复位开关,可在任意时间内对系统进行复位。

图1 十字路口示意图由以上分析可知,该系统可视为一个状态机,而且共有8种状态,如表1所示。

表1 交通灯状态示意表由上表我们还可以得到状态转换图,如图2所示:图2 状态转移示意图该状态机共有两个输入信号rstn和clk,rstn为复位信号,当该信号为低电平时,状态机处于S0,且状态不发生改变。

当rstn为高电平时,这8个状态依次按时间顺序发生变化,每个状态保持多长时间由clk信号控制。

三、关键代码1.我们通过宏定义来设置每个状态保持的时间,这样既增强了代码的可读性,又方便以后的更改。

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(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;五.仿真波形图仿真时序波形图。

EDA交通灯实验程序verilog语言

EDA交通灯实验程序verilog语言

CLK 同步时钟EN 使能信号LAMPA 0~3分别控制A方向的左拐、绿、黄和红灯LAMPB 0~3分别控制B方向的左拐、绿、黄和红灯ACOUNT 用于A方向的时间显示,驱动两个数码管BCOUNT 用于B方向的时间显示*/module traffic( CLK, EN, LAMPA, LAMPB, ACOUNT, BCOUNT );output[7:0] ACOUNT, BCOUNT;output[3:0] LAMPA, LAMPB;input CLK, EN;reg[3:0] LAMPA, LAMPB;reg[7:0] numa, numb; // 剩余时间reg tempa, tempb; // 切换状态reg[2:0] counta, countb; // 状态量reg[7:0] ared, ayellow, agreen, aleft, // 保持时间bred, byellow, bgreen, bleft;assign ACOUNT = numa;assign BCOUNT = numb;/**************** 设置灯的计数初值****************/ always @( EN )beginif( !EN )beginared <= 8'h55; ayellow <= 8'h5;agreen <= 8'h40; aleft <= 8'h15;bred <= 8'h65; byellow <= 8'h5;bgreen <= 8'h30; bleft <= 8'h15;endendalways @( posedge CLK )beginif( EN ) // 正常情况beginif( !tempa ) // 切换状态begintempa <= 1;case( counta ) // 控制亮灯的顺序0: begin numa<=agreen; LAMPA<=2; counta<=1; end1: begin numa<=ayellow; LAMPA<=4; counta<=2; end2: begin numa<=aleft; LAMPA<=1; counta<=3; end3: begin numa<=ayellow; LAMPA<=4; counta<=4; end4: begin numa<=ared; LAMPA<=8; counta<=0; enddefault: LAMPA <= 8; // 红灯亮endelse // 倒计时beginif( numa > 1 )if( numa[3:0] == 0 )beginnuma[3:0] <= 4'b1001;numa[7:4] <= numa[7:4] - 1;endelse numa[3:0] <= numa[3:0] - 1;if( numa == 2 ) tempa <= 0;endendelse // 返回初态beginLAMPA <= 4'b1000; counta <= 0; tempa <= 0;endendalways @( posedge CLK )beginif( EN )beginif( !tempb )begintempb <= 1;case( countb ) // 控制亮灯的顺序0: begin numb<=bred; LAMPB<=8; countb<=1; end1: begin numb<=bgreen; LAMPB<=2; countb<=2; end2: begin numb<=byellow; LAMPB<=4; countb<=3; end3: begin numb<=bleft; LAMPB<=1; countb<=4; end4: begin numb<=byellow; LAMPB<=4; countb<=0; enddefault: LAMPB <= 8;endcaseendelsebegin // 倒计时if( numb > 1 )if( numb[3:0] == 0 )beginnumb[3:0] <= 4'b1001;numb[7:4] <= numb[7:4] - 1;endelse numb[3:0] <= numb[3:0] - 1;if( numb == 2 ) tempb <= 0;endendelsebeginLAMPB <= 4'b1000; countb <= 0; tempb <= 0;endend。

毕业设计-EDA技术交通灯控制器(课程设计)

毕业设计-EDA技术交通灯控制器(课程设计)

课程设计报告课程设计:交通灯控制器一:实验目的:实现高速公路与乡间小路的交叉路口红绿灯的控制二:功能要求:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。

2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间.〔注;这段时间定义为20S时间)。

3.高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯(注:这段时间定义为60S)。

三:设计思路:五:VHDL源程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TrafficLight ISPORT (Clk : IN STD_LOGIC;S,Reset : IN STD_LOGIC;mg,my,mr,cg,cy,cr : OUT STD_LOGIC );END TrafficLight ;ARCHITECTURE rtl OF TrafficLight ISTYPE TrafficState IS (mgcr, mycr, mrcg, mrcy);SIGNAL current_state,next_state : TrafficState ;SIGNAL Count : STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL Clrn : STD_LOGIC ;BEGINCounter : PROCESS(clk)BEGINIF Reset = '1' OR (Clrn = '1' AND NOT(Count = "000000")) THEN Count <= "000000";ELSIF clk'EVENT AND clk = '1' THENIF NOT(s='0' AND current_state = mgcr) THEN Count <= Count + 1;END IF;END IF;END PROCESS Counter;StateTransition : PROCESS(clk,Count, current_state)BEGINIF Reset = '1' THEN next_state <= mgcr;Clrn <= '0';ELSIF clk'EVENT AND clk = '1' THENCASE current_state ISWHEN mgcr => mr<='0';mg<='1';my<='0';cr<='1';cg<='0';cy<='0';IF Count >= "111011" AND S = '1' THEN next_state <= mycr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mycr => mr<='0';mg<='0';my<='1';cr<='1';cg<='0';cy<='0';IF Count >= "000100" THEN next_state <= mrcg;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcg => mr<='1';mg<='0';my<='0';cr<='0';cg<='1';cy<='0';IF Count >= "010011" OR S = '0' THEN next_state <= mrcy;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcy => mr<='1';mg<='0';my<='0';cr<='0';cg<='0';cy<='1';IF Count >= "000100" THEN next_state <= mgcr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN OTHERS => NULL;END CASE;END IF;END PROCESS StateTransition;PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENcurrent_state <= next_state;END IF;END PROCESS;END rtl;仿真图如下:六:实验心得:通过本次课程设计,使用进一步熟悉了MAX-PLUSLL这种EDA软件工具。

用verilog语言编写交通灯程序

用verilog语言编写交通灯程序

交通灯一、实验目的写一个交通灯,要求:①有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为30个时间单位,绿灯时间为25个时间单位,黄灯时间为5个时间单位。

最后用modelsim软件进行仿真。

②要求设计是一个可综合设计。

二、实验原理根据实验要求的逻辑功能描述,可以分析得出原理图如下:控制器即可以设计为一个有限状态机的形式:E-W方向S-N方向状态R Y G R Y G100100IDLE100001S1100010S2001100S3010100S4根据实验要求画出控制器的状态转移图如下:三、代码1、源代码(1)控制器模块module traffic_lights(clk,rst,count,ew,sn);input clk,rst;input[5:0] count;output[2:0] ew,sn;reg[2:0] ew,sn;reg[3:0] state;parameter Idle=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100; always @(posedge clk)if(!rst)beginstate<=Idle;endelsecasex(state)Idle: if(rst)beginstate<=s1;ends1: if(count=='d25)beginstate<=s2;ends2: if(count=='d30)beginstate<=s3;ends3: if(count=='d55)beginstate<=s4;ends4: if(count=='d60)beginstate<=s1;endendcasealways @(posedge clk)beginif(!rst)beginew<=3'b100;sn<=3'b100;endelsecasex(state)Idle: if(rst)beginew<=3'b100;sn<=3'b001;ends1: if(count=='d25)beginew<=3'b100;sn<=3'b010;ends2: if(count=='d30)beginew<=3'b001;sn<=3'b100;ends3: if(count=='d55)beginew<=3'b010;sn<=3'b100;ends4: if(count=='d60)beginew<=3'b100;sn<=3'b001;enddefault: state<=Idle;endcaseendendmodule(2)计数器模块module counter(en,clk,rst,out);output[5:0]out;input en,clk,rst;reg[5:0] out;always@(posedge clk or negedge rst)beginif(!rst)out<='d0;else if(!en&&out<'d60)out<=out+1;elseout<='d1;endendmodule(3)将控制器与计数器进行连接module traffic_lights_top(out,clk,rst,en,ew,sn); input clk,rst,en;output[2:0] ew,sn;output[5:0]out;wire[5:0] out;traffic_lights u1(.clk(clk),.rst(rst),.count(out),.ew(ew),.sn(sn));counter u2(.en(en),.clk(clk),.rst(rst),.out(out));endmodule2、激励`timescale 1ns/100ps module traffic_lights_tb;reg clk,rst,en;wire[2:0] ew,sn;wire[5:0]out;traffic_lights_top m(.clk(clk),.rst(rst),.en(en),.ew(ew),.sn(sn),.out(out));always#5 clk=~clk;initialen<=1;initialbeginclk<=1;en<=0;rst<=0;#5 rst<=1;endendmodule四、仿真波形(图一)(图二)五、波形说明波形图中,从上至下依次为:时钟信号clk、复位信号rst、计数器使能端en、东西方向上灯的状态ew、南北方向上灯的状态sn、计数器的输出out。

EDA课程设计-交通信号灯

EDA课程设计-交通信号灯

EDA技术课程设计报告交通灯控制器一、设计功能:实现高速公路与乡间小路的交叉路口红绿灯的控制二、具体功能要求:1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。

2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。

(注:这段时间定义为20秒时间)3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。

(注:这段时间定义为60秒时间)4、原理框图如下:A B C D高速交通灯绿(60秒)黄(5秒)红(20秒)红(5秒)小道交通灯红红绿黄三、参考设计方案:图2 交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器图3 交通信号灯控制器程序原理框图该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。

进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

计数器驱动脉冲如图所示:四、编写相应源程序: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'THEN CASE STATE ISWHEN GREEN=>IF A='0'THEN TH:="0101";TL:="1001";A:='1';GA<='1';RA<='0';YA<='0';ELSE IFNOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=RED;END IF;END IF;WHEN RED=>IF A='0'THEN TH:="0001";TL:="1001";A:='1';RA<='1';YA<='0';GA<='0';ELSE IFNOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';RA<='0';GA<='0';STATE:=YELLOW2;END IF;END IF;WHEN YELLOW2=>IF A='0'THEN TH:="0000";TL:="0101";A:='1';YA<='1';GA<='0';RA<='0';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="0101";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";GA<='0';RA<='0';YA<='0';A:='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;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);BEGIN PROCESS(CLK)VARIABLE A:STD_LOGIC;VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE STATE:RGY;BEGIN IF CLK'EVENT AND CLK='1'THEN CASE STATE ISWHEN YELLOW1=>IF A='0'THEN TH:="0000";TL:="0100";A:='1';YB<='1';GB<='0';RB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=GREEN;END IF;END IF;WHEN GREEN=>IF A='0'THEN TH:="0001";TL:="1001";A:='1';GB<='1';RB<='0';YB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=YELLOW2;END IF;END IF;WHEN RED=>IF A='0'THEN TH:="0101";TL:="0100";A:='1';RB<='1';YB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001")THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="0000";TL:="0000";A:='0';STATE:=YELLOW1;END IF;END IF;WHEN YELLOW2=>IF A='0'THEN TH:="0000";TL:="0100";A:='1';YB<='1';GB<='0';RB<='0';CHU<='1';ELSE IF NOT(TH="0000"AND TL="0001") THEN IF TL="0000"THEN TL:="1001";TH:=TH-1;ELSE TL:=TL-1;END IF;ELSE TH:="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;五、对源程序进行编译及仿真1、对程序进行编译,结果如下图:2、用waveform对程序进行波形仿真,结果如下图:六、设计思路在听完课程设计指导课前,我们对交通灯的程序设计思路基本上可以称得上是一片茫然,在听完课后虽然有个大致的思路,但还是不知道具体要怎么实施,于是我们开始去图书馆寻找参考书。

EDA交通灯控制系统的课程设计报告书

EDA交通灯控制系统的课程设计报告书

摘要 (1)一设计目的与要求 (2)二设计原理 (2)2.1交通灯控制的系统构成 (3)2.2交通灯控制器的电路控制原理框图 (3)2.3器件下载编程与硬件实现 (4)三设计内容 (4)3.1设计步骤 (5)3.2交通灯控制器各模块的程序 (6)3.3软件仿真结果 (9)3.4硬件实现及调试结果 (10)总结与致谢 (11)参考文献 (12)附录 (21)EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

随着社会经济的发展,城市交通问题越来越引起人们的关注。

人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。

交通控制系统的适用场合主要是用于交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代交通监控指挥系统中最重要的组成部分。

关键字:EDA 交通灯 Verilog HDL QuartusII一设计目的与要求(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

(2) 主、支道交替允许通行,主干道每次放行45 s,支干道每次放行25 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5 s的黄灯作为过渡,并进行减计时显示。

(3) 具有清零、可预置主、支干道通行时间功能。

二设计原理交通灯控制系统的作用主要是实现城市十字交叉路口红绿灯的控制。

在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。

FPGA(EDA)课程设计——交通灯(附源代码)

FPGA(EDA)课程设计——交通灯(附源代码)

技术规范功能描述:实现一个由一条主干道和一条支干道的汇合点形成的十字路口的交通灯控制器,具体功能:(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

(2) 主干道处于长允许通行状态,而支干道有车来时才允许通行。

当主干道允许通行亮绿灯时,支干道亮红灯。

而支干道允许通行亮绿灯时,主干道亮红灯。

(3) 当主干道、支干道均有车时,两者交替允许通行,主干道每次通行45 秒,支干道每次通行25 秒,在每次由绿灯向红灯转换的过程中,要亮5 秒的黄灯作为过渡,并进行减计时显示。

AB45秒倒计时绿灯亮50秒倒计时红灯亮30秒? 红灯亮25秒绿灯亮5秒黄5秒黄图一:交通灯闪烁时序图<!--[if !vml]--><!--[endif]--> <!--[if !vml]--><!--[endif]-->每个周期结束时都要进行支干道是否有车的检测,若有车则进行下一个周期,若没有,则主干道亮绿灯,支干道亮红灯,直到检测到支干道有车。

系统总体框图:根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示的交通信号灯控制器的系统框图。

数码管位码数码管段码LED灯clkcarrst时钟分频模块交通灯控制及计时模块扫描显示译码模<!--[endif]-->图二:系统总体框图总体设计方案交通灯<!--[if !supportLists]-->一、<!--[endif]-->系统详细框图在系统总体框图的基础上进一步详细设计,得到如下系统详细框图数码管位码数码管段码LED灯clkcarrst时钟分频模块交通灯控制及计时模块扫描显示译码模块clk_odd<!--[if !vml]--><!--[endif]-->。

图三:系统详细框图注:系统总体I/O管脚描述请查看技术规范。

<!--[if !supportLists]-->二、<!--[endif]-->具体模块设计1.时钟分频模块系统的动态扫描需要10KHZ的脉冲,而系统时钟计时模块需要1 HZ的脉冲。

Verilog实验报告交通灯

Verilog实验报告交通灯

Verilog实验报告---第四次交通灯班级:集电0802班姓名:张鹏学号: 04086057序号: 16一、规范(1)具有开关功能:当reset=0时红绿灯关闭,使主支干道六个灯全灭;(2)具有四个功能:当reset=1且func=2’b00时,主干道和支路正常计数;且func=2’b01时,支干道一直绿灯,主干道一直红灯;且func=2’b10时,主干道一直绿灯,支干道一直红灯;且func=2’b11时,主干道和支干道一直黄灯闪;(3)计数器频率:运行频率2Hz计数器;(4)信号灯种类:红、黄、绿;(5)信号灯计执行时间关系:主干道:绿灯常亮+绿灯闪+黄灯=支干道:红灯常亮;此设计中:主干道:绿灯常亮=57s,T绿灯闪=3s,T黄灯亮=3s支干道:绿灯常亮=15s,T绿灯闪=3s,T黄灯亮=3s(6)信号灯到计时功能:信号灯预置后,开始执行2Hz计数器;(7)信号灯跳转功能:当各信号灯计时至T时在下一个时钟信号上升沿到来时自动转为下一状态;(8)信号灯各状态跳转关系:绿-黄-红-绿;二、输入输出定义reset,clk, func[1:0] ,green[1:0],red[1:0],yellow[1:0]信号名宽度输入/输出管脚描述reset 1 input L13 红绿灯总开关clk 1 input C9 freq:50MHz func 2 input N17/H18 控制红绿灯功能green[1] 1 output D11 主绿green[0] 1 output E11 支绿red[1] 1 output F11 主红red[0] 1 output F12 支红yellow[1] 1 output C11 主黄yellow[0] 1 output E12 支黄三、模块设计状态转移图:四、测试代码module frequency_divider_small(reset,clk,out); //重写一个小分频模块测试交通灯主模块功能input reset,clk;output out;reg [1:0] temp;reg out;always @ (posedge clk or negedge reset)if (!reset)temp<=2'b00;elsetemp<=(temp==2'b11)?2'b00:temp+2'b01;always @ (temp)out=(temp==2'b11);endmodulemodule test_traffic_light;reg reset,clk;reg [1:0] func;wire [1:0] green;wire [1:0] red;wire [1:0] yellow;traffic_lightsimulation(.reset(reset),.clk(clk),.func(func),.green(green),.red(red),.yellow(yellow));always #10 clk=~clk;initialbeginreset=0;clk=1;func=2'b00;#20 reset=1;#21000 func=2'b01;#10000 func=2'b10;#10000 func=2'b11;endendmodule波形:五、源代码module frequency_divider(reset,clk,out);//分频模块,把50MHz时钟分成半秒计时器input reset,clk;output out;reg [5:0] mol1,mol2;reg [6:0] mol3,mol4;reg out1,out2,out3,out;always @ (posedge clk or negedge reset)//把25000000分成40*40*125*125if(!reset)mol1<=6'd0;elsemol1<=(mol1==6'd39)?6'd0:mol1+6'd1;always @ (posedge clk or negedge reset)if(!reset)mol2<=6'd0;else if(out1)mol2<=(mol2==6'd39)?6'd0:mol2+6'd1;always @ (posedge clk or negedge reset)if(!reset)mol3<=7'd0;else if(out2)mol3<=(mol3==7'd124)?7'd0:mol3+7'd1;always @ (posedge clk or negedge reset)if(!reset)mol4<=7'd0;else if(out3)mol4<=(mol4==7'd124)?7'd0:mol4+7'd1;always @ (mol1 or mol2 or mol3 or mol4)beginout1=(mol1==6'd39);out2=((mol2==6'd39)&&out1);out3=((mol3==7'd124)&&out2);out=((mol4==7'd124)&&out3);endendmodulemodule traffic_light(reset,clk,func,green,red,yellow);//交通灯主模块input reset,clk;input [1:0] func;output [1:0] green,red,yellow;reg [1:0] green,red,yellow;reg [2:0] state;reg [6:0] cnt;wire in;parameter greentime1=6'd57;//主干道绿灯时间parameter greentime0=6'd27;//支干道绿灯时间parameter yellowtime=3'd3;//黄灯时间,绿灯闪时间frequency_divider fenpin(.reset(reset),.clk(clk),.out(in));//调用分频模块always @ (posedge clk or negedge reset)if(!reset)begincnt<=7'd0;state<=3'd1;green<=2'b00;red<=2'b00;yellow<=2'b00;endelseif(in)//分频器结果当主模块始能if(func==2'b00)//选择不同功能控制开关if(cnt==7'd0)case(state)//选择不同状态3'd1:begincnt<=greentime1<<1;state<=3'd2;green<=2'b10;red<=2'b01;yellow<=2'b00;end3'd2:begincnt<=yellowtime<<1;state<=3'd3;end3'd3:begincnt<=yellowtime<<1;state<=3'd4;green<=2'b00;red<=2'b01;yellow<=2'b10;end3'd4:begincnt<=greentime1<<1;state<=3'd5;green<=2'b01;red<=2'b10;yellow<=2'b00;end3'd5:begincnt<=yellowtime<<1;state<=3'd6;end3'd6:begincnt<=yellowtime<<1;state<=3'd1;green<=2'b00;red<=2'b10;yellow<=2'b01;endendcaseelsebegincnt<=cnt-7'd1;//倒计数,计数结束进入下一状态case(state)3'd3:green[1]<=cnt[0];//主干道绿灯闪3'd6:green[0]<=cnt[0];//支干道绿灯闪endcaseendelse if(func==2'b10)//主干道常绿,支干道常红begincnt<=0;state<=3'd1;green<=2'b10;red<=2'b01;yellow<=2'b00;endelse if(func==2'b01)//主干道常红,支干道常绿begincnt<=0;state<=3'd1;green<=2'b01;red<=2'b10;yellow<=2'b00;endelse if(func==2'b11)//主干道,支干道黄灯一直闪begincnt<=0;state<=3'd1;green<=2'b00;red<=2'b00;yellow[1]<=~yellow[1];yellow[0]<=~yellow[1];endendmodule。

EDA课程设计之交通灯设计报告

EDA课程设计之交通灯设计报告

EDA综合设计与实践一、设计目的和要求1.熟练掌握QuartusII软件的使用方法和系统总体设计。

2.学会设计较复杂的数字系统,用Verilog HDL描述语言编写设计代码,并综合仿真验证设计,用FPGA试验箱验证设计。

3.学习FPGA试验箱的使用,各种电路图的引脚接法及其功能。

4.本实验要求学生以FPGA器件为目标器件,设计典型的数字系统。

本设计选题为交通灯控制系统设计。

二、设计方案:方案一:(1)明确系统的功能图1-1所示为位于主干道和支干道的十字路口交通灯系统,支干道两边是安装传感器S,要求优先保证主干道的畅通。

平时处于主干道绿灯、支干道红灯的状态。

当支干道有车时,传感器发出信号S=1,主干道绿灯先转换成黄灯再转换成红灯,支干道由红灯转换为绿灯,支干道绿灯亮不超过30s,主干道每次通行不少于60s(在此期间,不管S是否有信号,都不改状态)。

(2)画状态转换图说明:1)Tl:主干道绿灯亮的最短时间间隔,不少于60s;2)Ts:支干道绿灯亮的最长时间间隔不多于30s。

3)T y:主干道或支干道黄灯亮的时间间隔为5s4)HR、HY、HG分别表示主干道红黄绿灯;5)FR、FY、FG分别表示支干道红黄绿灯。

注:H表示Header,F表示Follower,R表示Red,Y表示Yellow,G表示Green交通灯控制单元控制过程分四个阶段:分别用S0,S1,S2,S3表示:S0:主干道绿灯亮,支干道红灯亮,此时若支干道有车等待,且主干道已亮足时间Tl,则控制器发出状态转换信号,输出从S0转换到S1。

S1:主干道黄灯亮,支干道红灯亮,进入此状态,黄灯亮足规定时间间隔Ty时,控制器发出状态转换信号St,输出从此状态S1到S2。

S2:支干道绿灯亮,主干道红灯亮,若此时支干道继续有车,则继续保持此状态,但支干道绿灯亮时间不超过Ts时间间隔,否则控制单元发出状态转换信号St,使输出转换到S3状态。

S3:支干道黄灯亮,主干道红灯亮,此时状态与S1状态持续时间间隔相同,均为Ty,时间到时,控制器发出St信号,输出从状态S3回到S0状态。

EDA课程设计报告-- 交通灯控制器

EDA课程设计报告--  交通灯控制器

郑州航空工业管理学院电子通信工程系EDA技术及应用课程设计报告题目:交通灯控制器姓名:学号:同组成员:指导老师:年月日目录一、设计任务书二、硬件系统设计1、电路原理图1.1 CPLD核心电路1.2 数码管显示电路1.3电源电路1.4 LED指示灯电路2、管脚分配3、设计方案三、Verilog HDL 代码设计四、系统调试1、逻辑功能模块RTL级描述2、仿真图五、总结1、对本次课程设计的总结六、参考文献一、设计任务书设计要求(1)主干道通行(绿灯):支干道有车24秒;支路红灯,数码管实时显示倒计时的秒,秒计时的频率为1Hz 。

(2)主干道缓冲(黄灯):6秒,(不显示计数),秒计时的频率为1Hz 。

(3)支路通行(绿灯):20秒,主干道红灯,数码管实时显示倒计时的秒,秒计时的频率为1Hz 。

(4)支路缓冲(黄灯):6秒,不显示,秒计时的频率为1Hz 。

数码管采用动态显示。

其他要求:(1)晶振为12 MHz(2)采用CPLD 器件,为ALTERA 的EPM7064SL-44(3)采用数码管显示二、硬件系统设计1、电路原理图:1.1 CPLD核心电路1.2 数码管显示电路1.3电源电路1.4 LED指示灯电路2、管脚分配管脚分配:CPLD型号: FAMILY:MAX7000AEDEVICE:EPM7064AELC44-10sys_clk : pin 43 // 12Mhz4个LED灯: led0 ~ led3 : pin 14 16 17 188个数码管:8个位线:com0~com3(dig0~dig3):pin 34, 33,31, 29, com4~com7 (dig4~dig7):pin 28 , 27,26 , 258个数据线:seg0~seg 3: pin 36, 37 ,39, 40seg4~seg 7: pin 41, 4 , 5, 64个按键:sw0~sw3: pin 19, 20, 21, 243、设计方案三、Verilog HDL 代码设计module ds(clk,led,dig,seg);//输入input clk;//输出output[3:0] dig;output[7:0] seg;output[4:0] led;//定义变量reg[24:0] count;reg[15:0] miao;reg[4:0] leden;reg[7:0] seg_r; reg[3:0] dig_r;reg[3:0] disp_dat;reg sec;reg num;reg[1:0] flag; //计数变量reg[1:0]f2; //计数变量assign dig=dig_r;assign seg=seg_r;assign led=leden;//秒产生信号always@(posedge clk)begincount=count+1'b1;if(count==25'd2*******)begincount=25'b0;sec=~sec;endend//数码管动态扫描always@(posedge clk)begincase(count[16:15])0:disp_dat=miao[3:0];1:disp_dat=miao[7:4];2:disp_dat=miao[11:8];3:disp_dat=miao[15:12];endcasecase(count[16:15]) //选择数码管显示位0:dig_r=4'b1110;1:dig_r=4'b1101;2:dig_r=4'b1011;3:dig_r=4'b0111;endcaseendalways@(posedge clk)begincase(disp_dat)4'h0:seg_r=8'hc0;4'h1:seg_r=8'hf9;4'h2:seg_r=8'ha4;4'h3:seg_r=8'hb0;4'h4:seg_r=8'h99;4'h5:seg_r=8'h92;4'h6:seg_r=8'h82;4'h7:seg_r=8'hf8;4'h8:seg_r=8'h80;4'h9:seg_r=8'h90;default:seg_r=8'hff;endcaseendalways@(negedge sec) //数码管倒计时及指示灯显示倒计时模块beginif(flag==0)beginmiao[3:0]=miao[3:0]-1;if(miao[3:0]==4'hf)beginmiao[7:0]=8'h18; 主干道绿灯倒计时leden=5'b01101; 主绿支红flag[1:0]=4'h1; 计数转向第二步endendelse if(flag[1:0]==4'h1)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b110; 主干道黄灯flag[1:0]=4'h2;miao[7:0]=8'h06; 黄灯倒计时endelse miao[3:0]=4'h9;endendelse if(flag[1:0]==4'h2)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b101; 主干道红灯flag[1:0]=4'h3;miao[7:0]=8'h20;endelse miao[3:0]=4'h9;endendelse if(flag[1:0]==4'h3)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b011; 主干道绿灯返回flag==1flag[1:0]=4'h1;miao[7:0]=8'h18;endelse miao[3:0]=4'h9;endendelse flag[1:0]=4'h0;if(f2==0)beginmiao[11:8]=miao[11:8]-1;if(miao[11:8]==4'hf)beginmiao[15:8]=8'h24;//leden=6'b011110;f2[1:0]=4'h1;endendelse if(f2[1:0]==4'h1)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b110;f2[1:0]=4'h2;miao[15:8]=8'h14;endelse miao[11:8]=4'h9;endendelse if(f2[1:0]==4'h2)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b011;f2[1:0]=4'h3;miao[15:8]=8'h06;endelse miao[11:8]=4'h9;endendelse if(f2[1:0]==4'h3)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b101;f2[1:0]=4'h1;miao[15:8]=8'h24;endelse miao[11:8]=4'h9;endendelse f2[1:0]=4'h0;endendmodule四、系统调试1、逻辑功能模块RTL级描述VCC clk INPUT dig[3..0]OUTPUT seg[7..0]OUTPUT led[4..0]OUTPUT clk dig[3..0]seg[7..0]led[4..0]dsinst仿真图五、总结在做本课程设计的过程中,从程序编写到硬件实现,我们遇到了许多问题。

EDA红绿灯控制设计.

EDA红绿灯控制设计.

目录前言: (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)分频器分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。

Verilog语言实现设计交通灯控制器

Verilog语言实现设计交通灯控制器

Verilog语言实现设计交通灯控制器实验模块组成:(计数器+控制器)可以分开实现,最好一起实现避免接口对接时出错译码器实验要求:1.在十字路口两个方向各设一组红、绿、黄灯,显示顺序为:南北方向是绿、黄、红灯;东西方向是红、绿、黄灯。

2.要求红、绿、黄灯的持续时间分别为:10s、7s、3s,东西、南北方向各用一个数码管显示倒计时时间。

3.当任意方向出现特殊情况时,应优先放行,即使各方向均亮红灯,倒计时停止,且显示数字闪烁。

经过规定时间之后,恢复正常运行状态。

//计数器+控制器module ZTJ(clk,s,count1,count2,led);parameter s0=6’b010100,s1=6’b001100,s2=6'b100010,s3=6'b100001,s4=6'b100100;input clk,s;output[3:0]count1;output[3:0]count2;output[5:0]led;reg[3:0]count1;reg[3:0]count2;reg[5:0]led;reg[5:0]st;reg[5:0]jicun;reg[3:0]i;always @(posedge clk)if(s==0 &led==6’b000000)beginled<=s0;st<=s0;count1<=4'b0110;count2〈=4’b1001;endelse if(s==0 & led!=6’b000000)begincase(st)s0:if(count1!=4'b0000) begin led<=s0;count1〈=count1—1;count2<=count2-1;end else begin count1<=4'b0010;st<=s1;ends1:if(count1!=4'b0000)begin led〈=s1;count1〈=count1—1;count2<=count2-1;end else begin count1〈=4’b1001;count2<=4'b0110;st<=s2;ends2:if(count2!=4’b0000) begin led〈=s2;count1<=count1-1;count2〈=count2-1;end else begin count2〈=4’b0010;st〈=s3;ends3:if(count2!=4'b0000)begin led<=s3;count1〈=count1—1;count2〈=count2—1;end else begin count1<=4’b0110;count2〈=4’b1001;st<=s0;enddefault:led<=s4;endcaseendelsebeginjicun<=led;led〈=s4;count1<=count1;count2〈=count2;i<=i+1;if(i==4’b1001)led〈=jicun;endendmodule//译码器module DECL7S(A,LED7S);input [3:0]A;output [6:0]LED7S;reg [6:0]LED7S;always@(A)begincase(A)4’b0000:LED7S<=7'b0111111;4’b0001: LED7S<=7'b0000110;4'b0010: LED7S<=7'b1011011;4'b0011:LED7S〈=7'b1001111;4'b0100:LED7S<=7’b1100110;4’b0101:LED7S<=7’b1101101;4'b0110: LED7S<=7’b1111101;4'b0111:LED7S<=7'b0000111;4’b1000:LED7S<=7'b1111111;4’b1001: LED7S<=7'b1101111;4'b1010: LED7S<=7’b1110111;4’b1011:LED7S〈=7'b1111100;4’b1100: LED7S〈=7'b0111001;4'b1101:LED7S<=7’b1011110;4'b1110: LED7S<=7'b1111001;4’b1111:LED7S〈=7’b1110001;default:LED7S〈=7'b0111111;endcaseendendmodule。

EDA课程设计报告-交通灯控制器

EDA课程设计报告-交通灯控制器

.EDA课程设计报告交通灯控制器一、设计任务要求1、控制器按东西、南北两个方向控制两组交通灯(红、绿、黄)2、两组灯亮的顺序满足交通安全的规则要求.3、东西向绿灯每次亮30S ,接着黄灯亮2S ,红灯亮20S ;南北向绿灯每次亮28S ,接着黄灯亮2S ,红灯亮30S. 4、有两组数码管给出灯亮的时间倒计时显示。

二、设计思路及总体结构框图设计思路:1.硬件:由设计任务要求可知,总体输入电路有:(1)在开始计时之前的等待状态,复位键reset 接低电位,接通电源后,首先要将它接高电位,表示计时开始。

(2)当按一下(on_off )键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off )键时,控制器恢复原来状态,正常工作。

输出电路:(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED 七段显示数码管。

(2)显示器的每一位都采用LED 七段显示数码管进行显示,每一个LED 七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:showtime1,showtime2,showtime3,showtime4。

(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。

外部电路图如下:clk 4/ stas reset on_off 4/ 7/ 7/ 7/ 7/ 4/State1State2Showtime1Showtime2Showtime3Showtime4Choose4东西方向交通灯南北方向交通灯2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成绩:
XI’AN UNIVERSITY OF TECHNOLOGY EDA综合实践
所在院系自动化与信息工程学院
专业名称电子信息科学与技术
班级电技111
题目红绿灯设计
指导教师XXXX
二、红绿灯原理及设计思路
设计思路:
为了实现两个方向红绿灯循环亮灭的过程,假设该过程如下:
起始(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)
begin
if(reset)
state=st0;
else
state=nxstate;
end
always(state)
begin
red1=1'b0; yellow1=1'b0; green1=1'b0; red2=1'b0; yellow2=1'b0; green2=1'b0; case(state)
st0:begin
green1=1'b1;
red2=1'b1;
nxstate=st1;
end
st1:begin
green1=1'b1;
red2=1'b1;
nxstate=st2;
end
st2:begin
green1=1'b1;
red2=1'b1;
end
st3:begin
green1=1'b0;
yellow1=1'b1;
red2=1'b1;
nxstate=st4; end
st4:begin
red1=1'b1;
red2=1'b0;
yellow1=1'b0;
green2=1'b1;
nxstate=st5; end
st5:begin
red1=1'b1;
green2=1'b1;
nxstate=st6; end
st6:begin
red1=1'b1;
nxstate=st7;
end
st7:begin
green2=1'b0;
red1=1'b1;
yellow2=1'b1;
nxstate=st0;
end
endcase
end
endmodule
四、编译和仿真波形红绿灯设计仿真图
五、仿真分析及结论
根据仿真波形图可以看出实验结果符合预期设想,基本实现了红绿黄灯按一定规律进行循环闪烁的功能,仿真结果与预想的一致,实现了各个方向绿、黄、红灯闪亮的时间比为3:1:4。

程序中美中不足的是这个比例是固定的,必须通过修改程序来修改时间比,而且只是一个比例,不是固定的以秒为单位的时间。

例如要实现绿、黄、红灯闪亮时间为20s,5s,25s,就无法用该程序实现,但可以通过在程序中修改时间比来实现。

另外此程序的缺憾是没有手动校准红绿灯时间的功能,假设红绿灯由于年代久远部芯片老化而导致时间产生误差,就无法进行校准,而必须更换红绿灯。

程序的亮点是简单易懂,容易理解,适合刚刚学习Verilog语言的人。

对于红绿灯的设计思路容易掌握。

通过此次课程设计,我基本了解了用Verilog语言编程的一般方法,掌握了用该语言编程的一些技巧,这对于刚刚接触Verilog语言的我来说是个不小的提高。

同时感老师的指导,让我在编程的过程中思路更清晰了一些,克服了一些很难的问题。

我会更加努力,如果以后还会用到该语言,定会再接再厉,做的更好。

相关文档
最新文档