基于EDA技的汽车尾灯控制电路设计.docx
《基于EDA技的汽车尾灯控制电路设计.docx》由会员分享,可在线阅读,更多相关《基于EDA技的汽车尾灯控制电路设计.docx(9页珍藏版)》请在冰豆网上搜索。
![基于EDA技的汽车尾灯控制电路设计.docx](https://file1.bdocx.com/fileroot1/2022-12/12/e0448f11-8554-4e96-b499-663e5667f81e/e0448f11-8554-4e96-b499-663e5667f81e1.gif)
基于EDA技的汽车尾灯控制电路设计
汽车尾灯控制电路
一、设计任务
(一)系统功能
汽车尾灯控制电路是很常用的工作电路,在日常的生活中有着很广泛的应用。
汽车行驶时,会出现正常行驶、左转弯、右转弯、刹车、倒车五种情况,针对这五种情况可以设计出汽车尾灯的控制电路来表示这五种状态。
根据以上所述,应用数字电子技术的知识,设计一款汽车尾灯控制系统,该系统中:
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仿真实验条件要求
实验板仿真芯片用AlteraCyclone系列的1C6240-pinTQFP可编程逻辑芯片。
大部分仿真用计算机软件来完成,当认为运行比较理想时,要按照后文的管脚定义,分配好管脚,编译成可下载的文件,下载到实验板上。
要求能够实现主体功能,实验结果存在的问题,要在报告中分析其原因。
二、实际设计
(一)、系统框图与原理图设计
该系统的内部控制主要由个模块构成,分别为:
状态开关、控制器、倒车警告电路及二极管电路。
系统原理框图如下:
1、状态开关共由3个开关组成,一个开关控制汽车运行方向,其余两个开关表示汽车运行状态。
2、控制器为写入程序的AlteraCyclone系列的1C6240-pinTQFPFPGA芯片,由它根据输入的开关状态控制相应的输出信号。
3、尾灯发光二极管是由6个二极管分成两组构成的电路,模拟汽车尾部的左右尾灯。
4、倒车报警电路是由语音芯片WTV020构成,当汽车倒车时控制器输出相应信号使该报警电路工作。
(二)系统原理EDA设计与仿真
1、EDA软件和硬件环境
EDA软件为Modelsim和QuartusII,硬件环境为友晶公司Trex_C1开发板。
2、verilog编程设计
本设计才用verilog语言编写了含有4个状态的状态机,四个状态分别对应正常行驶、左转、右转和紧急刹车,在左转和右转状态中利用verilog模拟移位寄存器对输出信号移位处理得到信号灯循环闪亮的效果,具体设计原理图如下:
程序代码:
`timescale1ns/100ps
modulecarled(clk,sw_in,led_left,led_right,state);
inputclk;
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;
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@(stateorclk)
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代码:
`timescale1ns/100ps
modulecarled_tb;
reg[1:
0]sw_in;
wire[2:
0]led_left;
wire[2:
0]led_right;
wire[1:
0]state;
regclk;
carledcarled_inst(clk,sw_in,led_left,led_right,state);
initialbegin
clk=1'b0;
end
initial
begin
forever#1
clk=~clk;
end
initialbegin
sw_in=2'b00;
#5sw_in=2'b01;
#5sw_in=2'b10;
#5sw_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、QuartusII设计验证:
QuartusII编译结果:
将生成的文件通过JTAG方式下载到TrexC1开发板中:
开发板引脚分配:
名称
引脚号
接口
名称
引脚号
接口
sw_in[0]
Pin14
KEY[0]
led_left[0]
Pin50
LED[0]
sw_in[1]
Pin13
KEY[1]
led_left[1]
Pin11
LED[1]
led_right[0]
Pin193
LED[3]
led_left[2]
Pin228
LED[2]
led_right[1]
Pin170
LED[4]
clk
Pin28
OSC_50
led_right[2]
Pin131
LED[5]
测试结果:
当KEY[0],KEY[1]均未按下时,6个LED均不发亮,当按下KEY[0]时,LED[3:
5]依次向右循环闪亮,当按下KEY[1]时,LED[0:
2]依次向左循环闪亮。
当同时按下KEY[0:
1]时,6个LED灯同时亮。