基于EDA技术的汽车尾灯控制电路设计

  • 格式:doc
  • 大小:424.50 KB
  • 文档页数:10

汽车尾灯控制电路

一、设计任务

(一)系统功能

汽车尾灯控制电路是很常用的工作电路,在日常的生活中有着很广泛的应用。汽车行驶时,会出现正常行驶、左转弯、右转弯、刹车、倒车五种情况,针对这五种情况可以设计出汽车尾灯的控制电路来表示这五种状态。

根据以上所述,应用数字电子技术的知识,设计一款汽车尾灯控制系统,该系统中:

1、假设汽车尾部左右两侧各有3个指示灯(用发光二极管模拟);

2、汽车正常运行时指示灯全灭;

3、汽车左转弯时,左侧3个指示灯按左循环顺序点亮,汽车右转弯时,右侧3个指示灯按右循环顺序点亮,临时刹车和倒车时所有指示灯同时亮。

4、倒车时播放语音警告

5、设置两个可控制的开关,可产生00、01、10、11四种状态

开关置为00状态时,表示汽车处于正常运行状态。

开关置为01状态时,表示汽车处于右转弯状态。

开关置为10状态时,表示汽车处于左转弯状态。

开关置为11状态时,表示汽车处于刹车状态。

另设一开关表示汽车运行状态,0表示向前运行,1表示向后倒车。

(二) 汽车尾灯控制电路设计任务

1、系统框图与原理图设计

2、系统电路原理EDA设计与仿真

3、系统电路的PCB印制板设计

4、硬件调试

(三)EDA仿真实验条件要求

实验板仿真芯片用Altera Cyclone系列的1C6 240-pin TQFP可编程逻辑芯片。 大部分仿真用计算机软件QuartusII9.0来完成,当认为运行比较理想时,要按照后文的管脚定义,分配好管脚,编译成可下载的文件,下载到实验板上。要求能够实现主体功能,实验结果存在的问题,要在报告中分析其原因。

二、实际设计

(一)、系统框图与原理图设计

该系统的内部控制主要由个模块构成,分别为:状态开关、控制器、倒车警告电路及二极管电路。系统原理框图如下:

1、状态开关共由3个开关组成,一个开关控制汽车运行方向,其余两个开关表示汽车运行状态。

2、控制器为写入程序的Altera Cyclone系列的1C6 240-pin

TQFP FPGA芯片,由它根据输入的开关状态控制相应的输出信号。

3、尾灯发光二极管是由6个二极管分成两组构成的电路,模拟汽车尾部的左右尾灯。

4、倒车报警电路是由语音芯片WTV020构成,当汽车倒车时控制器输出相应信号使该报警电路工作。

(二)系统原理EDA设计与仿真

1、EDA软件和硬件环境

EDA软件为Modelsim和QuartusII,硬件环境为友晶公司Trex_C1开发板。 状态开关 控制器 倒车警告电路

尾灯发光二极管 2、verilog编程设计

本设计才用verilog语言编写了含有4个状态的状态机,四个状态分别对应正常行驶、左转、右转和紧急刹车,在左转和右转状态中利用verilog模拟移位寄存器对输出信号移位处理得到信号灯循环闪亮的效果,具体设计原理图如下:

程序代码:

`timescale 1ns/100ps

module carled(clk,sw_in,led_left,led_right,state);

input clk;

input [1:0] sw_in;

output [1:0] state;

output [2:0] led_left;

output [2:0] led_right;

reg [2:0] led_left;

reg [2:0] led_right; 状态0(正常行驶)

状态1(右转) 状态2(左转) 状态3(紧急刹车) 控制开关

移位寄存器 移位寄存器

左侧尾灯 右侧尾灯 reg [31:0] count;

reg [31:0]temp1;

reg [31:0]temp2;

parameter[1:0]

s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;

reg [1:0] state;

always@(sw_in)

case (sw_in)

2'b00:state=s0;

2'b01:state=s1;

2'b10:state=s2;

2'b11:state=s3;

endcase

always@(state or clk)

case(state)

s0:

begin

led_left[2:0]=3'b0;

led_right[2:0]=3'b0;

temp1=0;

temp2=0;

end

s1:

begin

led_left[2:0]=3'b000;

//initial

if(temp1==0)

led_right[2:0]=3'b100; else

led_right[2:0]={led_right[0],led_right[2:1]};

temp1=temp1+1;

end

///////////////////////////////////////////////

s2:

begin

led_right[2:0]=3'b000;

if(temp2==0)

led_left[2:0]=3'b001;

else

led_left[2:0]={led_left[1:0],led_left[2]};

temp2=temp2+1;

end

s3:

begin

led_left[2:0]=3'b111;

led_right[2:0]=3'b111;

temp1=0;

temp2=0;

end

endcase

endmodule

testbanch代码:

`timescale 1ns/100ps

module carled_tb;

reg [1:0] sw_in;

wire [2:0] led_left; wire [2:0] led_right;

wire [1:0] state;

reg clk;

carled carled_inst(clk,sw_in,led_left,led_right,state);

initial begin

clk=1'b0;

end

initial

begin

forever #1

clk=~clk;

end

initial begin

sw_in=2'b00;

#5 sw_in=2'b01;

#5 sw_in=2'b10;

#5 sw_in=2'b11;

#5 $stop;

end

Endmodule

3、ModelSim系统仿真:

ModelSim编译结果:

ModelSim波形仿真结果:

仿真结果分析:

sw_in[1:0]代表汽车状态控制开关,led_left[2:0]表示汽车左尾灯,led_right[2:0]表示汽车右尾灯,state表示汽车状态,clk为时钟信号。当汽车控制开关为00时,汽车处于正常运行状态,左右尾灯都是000。当控制开关sw_in[1:0]变为01时,汽车状态state变为01,汽车处于右转状态,右尾灯随时钟信号循环右移闪亮。当控制开关sw_in[1:0]变为10时,汽车状态state变为 10汽车左转,左尾灯随时钟信号循环左移闪亮。当sw_in[1:0]变为11时,左右尾灯全部亮。

波形仿真时选择时钟周期为1ns,汽车尾灯移位周期为1个时钟周期,实际应用时可根据时钟频率调节尾灯移位周期为多个时钟周期。

4、由Verilog源代码生成RTL级电路:

4、Quartus II设计验证:

Quartus II 编译结果:

将生成的文件通过JTAG方式下载到Trex C1开发板中:

开发板引脚分配:

名称 引脚号 接口 名称 引脚号 接口

sw_in[0] Pin 14 KEY[0] led_left[0] Pin 50 LED[0]

sw_in[1] Pin 13 KEY[1] led_left[1] Pin 11 LED[1]

led_right[0] Pin 193 LED[3] led_left[2] Pin 228 LED[2]

led_right[1] Pin 170 LED[4] clk Pin 28 OSC_50

led_right[2] Pin 131 LED[5]

测试结果:

当KEY[0],KEY[1]均未按下时,6个LED均不发亮,当按下KEY[0]时,LED[3:5]依次向右循环闪亮,当按下KEY[1]时,LED[0:2]依次向左循环闪亮。当同时按下KEY[0:1]时,6个LED灯同时亮。