首页 > 编程知识 正文

数电交通信号灯控制系统(交通信号灯控制系统的设计)

时间:2023-05-06 11:26:04 阅读:76635 作者:586

交通信号灯控制系统的Verilog实现

作为数字系统设计的入门范例,简要介绍最简单的交通控制系统并说明设计思路。

首先,设计干线道路和干线道路交叉口交通信号控制电路

(1)一般保持主干道开通,主干道绿灯亮,主干道红灯亮,主干道绿灯亮时间不少于60秒。

)2)主干道红绿灯亮超过60秒,主干道有车时,主干道红绿灯亮,主干道红绿灯亮,但主干道亮时间不超过30秒。

)3)每当主干道或主干道红绿灯变红时,黄灯先亮5秒钟。

1 .逻辑抽象,明确输入输出。

主干道与主干道的交叉口信号灯系统要求优先确保主干道的畅通。 平时主干道是蓝色的,主干道是红色的。 如果主干道上有车,传感器就发出信号S=1,主干道上的绿灯暂时转换为黄灯,然后转换为红灯,主干道从红灯转换为绿灯。 如果车辆继续通过主干道,传感器将继续发出信号,使主干道亮起绿灯。 但是,干线道路在绿灯下持续点亮的时间不能超过30s。 否则,主干道的绿灯暂时转换为黄色信号后变为红灯,同时主干道由红灯变为绿灯。 干线道路的一次通行时间不得少于60s,在此期间,即使干线道路s有红绿灯也不能中止干线道路的绿灯点亮。

输入信号有时钟、复位、传感器信号; 输出干线道路的红黄绿信号和干线道路的红黄绿信号。

2 .确定系统框图

首先以状态机为主控制,状态机转换条件根据计时器信息判断转换条件,解码电路根据该状态输出对应的干线道路信号的状态。

控制单元根据时钟和感测信号向计数器发送信号,计时器向控制单元发送定时信号60s(T1 )、60s(T1 )、5s (T3 )。 主干道红黄绿用h_r、h_y、h_g表示,主干道红黄绿用f_r、f_y、f_g表示。

因此,在计时器分别产生三个持续时间后,向控制单元发送超时信号,控制单元根据计时器和传感器的信号,决定是否进行状态转移。 如果是,则控制单元发出状态转变信号St,计时器开始清零,准备重新计时。

信号灯控制单元的控制过程分为四个阶段,对应的输出有四种状态,分别为S0、S1、S2和S3,表示: S0状态主干道绿灯主干道红灯亮,此时主干道有车等待通过,主干道主干道

t1s=1主干道dmdfbx、主干道红色点亮,人进入该状态,当dmdfbx达到规定的时间t3时,控制器发出状态转移信号St,输出从状态S1转移到S2。 (转换条件) dmdfbx满足5s后,将状态转换为S1状态

t3=1主干道绿灯亮,主干道红灯亮。 此时,如果主干道上继续有车,将继续保持这种状态,但主干道绿灯点亮的时间不得超过t2。 否则,控制单元发出状态转移信号St,使输出转移到S3状态。 此时,如果干线道路上没有车,则控制单元立即发出状态转移信号St,使输出转移到S3状态。

(转换条件)干线道路在绿灯时点亮30s,或者检测到干线道路上没有车时为S2状态) ) ) ) ) ) ) ) )。

t2+(~s)=1干线道路dmdfbx、干线道路红灯亮,此时状态与S1状态持续的时间相同为t3,经过一段时间后,控制器发出St信号,输出从状态S3返回S0状态。 按照格雷码对上述S0、S1、S2、S3的4种状态进行编码,分别为00、01、11、10。

/控制状态机/

always@(PosedgeclkorNegedgerst ) )。

比根

if (! rst )

current _ state=2’d0;

else

current_state=next_state;

结束

Always@(s,current_state,t1,t2,t3 ) begincase(current_state ) s03360beginnext_state=(T1s )? s1:s0; ST=(T1S )? 1'b1:1'b0; ends1:beginnext_state=(t3 )? s2:s1; ST=(T3 )? 1'b1:1'b0; ends 2: beginnext _ state=(T2|~ s )? s3:s2; ST=(T2||~s )? 1'b1:1'b0; ends3:beginnext_state=(t3 )? s0:s3; ST=(T3 )? 1'b1:1'b0; 嵌入式会话

计时部使用两个寄存器来表示10比特(t_h )和1比特(t_l )的计数,同时在每次检测到转换信号时清除并重新计时

always@(PosedgeclkorNegedgerst ) /计时模块beginif (! rst () t_h,t_l )=8) D0; ELSEif(ST ) /控制信号有效地说明灯的颜色变化,{t_h,t_l}=8'd0; 判断是否计数到elseif () t_l==4'd9 ) )/60begin(t_h,t_l )={t_h,t_l} 要确定endelseif(t_L==4'D9 )/1位是否已完全计数,请在10位中输入begint_h=t_h 1'b1; t_l=4'd0; endelse begint_h=t_h; t_L=t_L1'B1; endendassignT3=(t_h==4'D0 ) ) t_l==4'd4 ); //干线道路绿灯计数时间assignT2=(t_h==4) D2 ) t_L==4) D9 ); //干线道路绿灯计数时间assignT1=(t_h==4'D5 ) ) t_l==4'd9 ); //黄信号计数时间解码部根据状态机某个状态输出对应的信号的状态

Always@(current_state ) Begincase(current_state ) s0:Begin(Hg,hy,HR )=3'b100; //干线道路绿灯{fg,fy,fr}=3'b001; //干线道路红灯ends1:begin{hg,hy,hr}=3'b010; //主干道黄灯{fg,fy,fr}=3'b001; //干线道路红灯ends2:begin{hg,hy,hr}=3'b001; //干线道路红灯{fg,fy,fr}=3'b100; //干线道路绿灯ends3:begin{hg,hy,hr}=3'b001; //干线道路红灯{fg,fy,fr}=3'b010; //干线道路黄灯endendcaseend

模拟结果图

总结:本文的设计比较简单,复杂的交通需要改进,但从中可以逐渐建立对系统架构的认知和联系,从而理顺各模块之间的关系。 之后,需要进一步调查研究资料。 如果有错误或不合理的地方,请告诉我。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。