基于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灯同时亮。