汽车尾灯控制电路代码

汽车尾灯发出的信号主要是给后面行驶汽车的司机看的,通常汽车驾驶室有刹车开关(HAZ)、左转弯开关(LEFT)和右转弯开关(RIGHT),司机通过操作这3个开关给出车辆的行驶状态。假设在汽车尾部左、右两侧各有3个指示灯,分别用LA、LB、LC、RA、RB、RC表示。这些灯的亮、灭规律如下:

1)汽车正常行驶时,尾部两侧的6个灯全部熄灭。

2)刹车时,汽车尾灯工作在告警状态,所有6个灯按一定频率闪烁。

3)左转弯时,左侧3个灯轮流顺序点亮,其规律如图(a)所示,右侧灯全灭。

4)右转弯时,右侧3个灯轮流顺序点亮,其规律如图(b)所示,左侧灯全灭。

假设电路的输入时钟信号为CP,CP的频率对应于汽车尾灯所要求的闪烁频率。试根据上述要求设计出一个时钟同步的状态机来控制汽车的尾灯,并进行仿真测试。

在这里插入图片描述

采用三段式状态机
汽车尾灯控制电路代码

module carlight_541_V3(CP,nCR,HAZ,LEFT,RIGHT,LA,LB,LC,RA,RB,RC);
input nCR,CP;
input HAZ,LEFT,RIGHT;
output reg LA,LB,LC,RA,RB,RC;
 
reg [2:0]Current_state,Next_state;
parameter [2:0]IDLE=3'b000,L1=3'b001,L2=3'b010,L3=3'b011,R1=3'b100,R2=3'b101,R3=3'b110,LR3=3'b111;
//时序逻辑
always @(posedge CP or negedge nCR) 
begin
    if (~nCR) 
        Current_state<=IDLE;
    else
        Current_state<=Next_state;
end
//组合逻辑
always @(Current_state or HAZ or LEFT or RIGHT)
begin
    Next_state=3'bxxx;
    case(Current_state)
    IDLE:begin        
    if(LEFT&&(!HAZ)&&(!RIGHT))    Next_state=L1;
    else if (HAZ+LEFT&&RIGHT)   Next_state=LR3;
    else if (RIGHT&&(!HAZ)&&(!LEFT))  Next_state=R1;
    else Next_state=IDLE;  //
    end
 
    L1:begin        
    if(!HAZ)       Next_state=L2;
    else  Next_state=LR3;
    end
     
    L2:begin    
    if(!HAZ)       Next_state=L3;
    else  Next_state=LR3;
    end
 
    L3:begin 
         Next_state=IDLE;        
    end
 
    R1:begin  
    if(!HAZ)       Next_state=R2;
    else  Next_state=LR3;
    end
 
    R2:begin  
    if(!HAZ)       Next_state=R3;
    else  Next_state=LR3;
    end
 
    R3:begin 
         Next_state=IDLE;        
    end
 
    LR3:begin  
     Next_state=IDLE;
    end
    endcase
end
 
//输出逻辑
always @(posedge CP or negedge nCR) 
begin
    if(~nCR) 
    begin
        LC=1'b0;LB=1'b0;LA=1'b0;RC=1'b0;RB=1'b0;RA=1'b0;
    end
    else begin
        LC=1'b0;LB=1'b0;LA=1'b0;RC=1'b0;RB=1'b0;RA=1'b0;
case(Current_state)
    IDLE:begin        LC=1'b0;LB=1'b0;LA=1'b0;RC=1'b0;RB=1'b0;RA=1'b0;    end
    L1:begin        LC=1'b0;LB=1'b0;LA=1'b1;RC=1'b0;RB=1'b0;RA=1'b0;    end
    L2:begin        LC=1'b0;LB=1'b1;LA=1'b1;RC=1'b0;RB=1'b0;RA=1'b0;    end
    L3:begin          LC=1'b1;LB=1'b1;LA=1'b1;RC=1'b0;RB=1'b0;RA=1'b0;    end
    R1:begin          LC=1'b0;LB=1'b0;LA=1'b0;RC=1'b0;RB=1'b0;RA=1'b1;    end
    R2:begin          LC=1'b0;LB=1'b0;LA=1'b0;RC=1'b0;RB=1'b1;RA=1'b1;    end
    R3:begin           LC=1'b0;LB=1'b0;LA=1'b0;RC=1'b1;RB=1'b1;RA=1'b1;    end
    LR3:begin          LC=1'b1;LB=1'b1;LA=1'b1;RC=1'b1;RB=1'b1;RA=1'b1;    end
    endcase
        end
end 
 
endmodule
  1. 测试文件
`timescale 1ns/1ns
module carlight_541_V3_test;
reg CP,nCR,HAZ,LEFT,RIGHT;
wire LA,LB,LC,RA,RB,RC;
carlight_541_V3  u0(CP,nCR,HAZ,LEFT,RIGHT,LA,LB,LC,RA,RB,RC);
 
initial
begin
nCR=1'b0;
nCR= #20 1'b1;
HAZ=1'b0;LEFT=1'b0;RIGHT=1'b0;
    #200 HAZ=1'b0;LEFT=1'b0;RIGHT=1'b0;
    #200 HAZ=1'b0;LEFT=1'b0;RIGHT=1'b1;  //RIGHT
    #200 HAZ=1'b0;LEFT=1'b1;RIGHT=1'b0;  //LEFT
    #200 HAZ=1'b0;LEFT=1'b1;RIGHT=1'b1;  
    #200 HAZ=1'b1;LEFT=1'b0;RIGHT=1'b0;  //HAZ
    #200 HAZ=1'b1;LEFT=1'b0;RIGHT=1'b1;
    #200 HAZ=1'b1;LEFT=1'b1;RIGHT=1'b0;
    #200 HAZ=1'b1;LEFT=1'b1;RIGHT=1'b1;
#200 $stop;    
end
 
always 
 begin
CP=1'b0;
CP= #10 1'b1;
#10;
    end
endmodule

3.仿真结果
在这里插入图片描述

  • 11
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
基于Quartus的FPGA汽车尾灯控制电路课程设计主要涉及汽车电子技术和数字电路设计。下面我将简要介绍一下设计流程和主要设计内容。 首先,在FPGA开发板上搭建设计平台,使用Quartus软件进行开发环境的配置和搭建。确保开发板和软件的正常运行。 接下来,我们需要进行尾灯控制电路的设计。根据汽车尾灯常用的操作功能,例如开启、关闭、闪烁等,我们可以将这些功能抽象成数字信号,再将其映射到FPGA开发板上。 然后,我们需要设计数字电路的逻辑。使用硬件描述语言(如VHDL或Verilog)来描述逻辑电路的功能和运行原理。通过编写代码,实现将输入信号(例如车辆行驶状态、刹车信号)转换为对应的输出信号(例如灯光亮度、闪烁频率)。 在设计过程中,我们还需要考虑到FPGA开发板的资源限制。尾灯控制电路设计需要合理利用FPGA的逻辑门、存储器和I/O接口等资源。并且要确保设计的稳定性和可靠性,防止由于电路抖动或误操作导致尾灯工作异常。 最后,我们需要将设计完成的代码通过Quartus进行综合和布局布线,生成逻辑电路的实现。之后,将生成的二进制文件下载到FPGA开发板上进行验证和测试,确保尾灯控制电路的正常工作。 整个设计流程中,Quartus作为专业的FPGA开发软件,提供了强大的功能和丰富的资源库,能够辅助我们完成汽车尾灯控制电路的设计。这个课程设计将帮助学生提高数字电路设计的能力,并且能够直接应用于汽车电子领域。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值