汽车尾灯控制器设计.docx
《汽车尾灯控制器设计.docx》由会员分享,可在线阅读,更多相关《汽车尾灯控制器设计.docx(15页珍藏版)》请在冰豆网上搜索。
汽车尾灯控制器设计
《可编程器件》课程设计报告
课题:
汽车尾灯控制器设计
班级学号
学生姓名
专业
系别
指导老师
淮阴工学院
电子与电气工程学院
2014年11月
一、设计目的
《可编程器件》课程设计是时一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生通过综合的系统设计,熟悉应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培养:
(1)独立工作能力和创造力;
(2)综合运用专业知识及基础知识,解决实际工程技术问题的能力;
(3)查阅图书资料、产品手册和各种工具书的能力;
(4)工程绘图的能力;
(5)编写技术报告和编制技术资料的能力。
二、设计要求
假设汽车尾部左右两侧各有3盏知识灯,其控制功能包括:
(1)汽车正常行驶是指示灯都不亮。
(2)汽车右转弯时,右侧的一盏指示灯RD1交替闪烁,周期为2秒,其余灯熄灭。
(3)汽车左转弯时,左侧的一盏指示灯LD1交替闪烁,周期为2秒,其余灯熄灭。
(4)汽车刹车时,左右两侧的一盏指示灯LD2,RD2同时亮。
(5)汽车夜间行驶时,左右两侧的一盏指示灯LD3,RD3同时一直亮,供照明使用。
三、设计的具体实现
1、汽车尾灯控制器的工作原理
汽车尾灯控制器就是一个状态机的实例。
当汽车正常行驶时所有指示灯都不亮;当汽车向右转弯时,汽车右侧的指示灯RD1亮;当汽车向左侧转弯时,汽车左侧的指示灯LD1亮;当汽车刹车时,汽车右侧的指示灯RD2和汽车左侧的指示灯LD2同时亮;当汽车在夜间行驶时,汽车右侧的指示灯RD3和汽车左侧的指示灯LD3同时一直亮。
通过设置系统的输入信号:
系统时钟信号clk,汽车左转弯控制信号left,汽车右转弯控制信号right,刹车信号brake,夜间行驶信号night系统的输出信号:
汽车左侧3盏指示灯LD1,LD2,LD3和汽车右侧3盏指示灯RD1,RD2,RD3实现以上功能。
系统的整体组装设计原理如图所示:
系统设计整体框图
汽车尾灯点亮与汽车运行状态之间的关系
运行状态
左侧尾灯
LD1,LD2,LD3
右侧尾灯
RD1,RD2,RD3
正常运行
灯灭
右转弯
灯灭
RD1交替闪烁
左转弯
LD1交替闪烁
灯灭
刹车
LD2亮
RD2亮
夜间行车
LD3亮
RD3亮
2、单元模块设计与分析
(1)、汽车尾灯主控模块
数据入口:
RIGHT:
右转信号;
LEFT:
左转信号;
BRAKE:
刹车信号;
NIGHT:
夜间行驶信号;
数据入口:
LP:
左侧灯控制信号;
RP:
右侧灯控制信号;
LR:
错误控制信号;
BRAKE_LED:
刹车控制信号;
NIGHT_LED:
夜间行驶控制信号;
VHDL程序(CTRL.VHD):
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCTRLIS
PORT(LEFT,RIGHT,BRAKE,NIGHT:
INSTD_LOGIC;
LP,RP,LR,BRAKE_LED,NIGHT_LED:
OUTSTD_LOGIC);
ENDENTITYCTRL;
ARCHITECTUREARTOFCTRLIS
BEGIN
NIGHT_LED<=NIGHT;
BRAKE_LED<=BRAKE;
PROCESS(LEFT,RIGHT)
VARIABLETEMP:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
TEMP:
=LEFT&RIGHT;
CASETEMPIS
WHEN"00"=>LP<='0';RP<='0';LR<='0';--当汽车直行时,左右灯都不亮
WHEN"01"=>LP<='0';RP<='1';LR<='0';;--当汽车右拐时,右拐指示灯亮
WHEN"10"=>LP<='1';RP<='0';LR<='0';--当汽车左拐时,左指示灯亮
WHENOTHERS=>LP<='0';RP<='0';LR<='1';--当汽车刹车时,左右灯都亮
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
仿真波形:
功能:
该段程序用于对汽车尾灯进行整体控制,当输入为左转信号时,输出左侧灯控制信号;当输入为右转信号时,输出右侧灯控制信号;当同时输入LEFT和RIGHT信号时,输出错误控制信号。
当输入为刹车信号时,输出刹车控制信号;当输入为夜间行驶信号时,输出为夜间行驶控制信号。
(2)、左边灯控制模块
数据入口:
CLK:
时钟控制信号;
LP:
左侧灯控制信号;
LR:
错误控制信号;
BRAKE:
刹车控制信号;
NIGHT:
夜间行驶控制信号;
数据出口:
LEDL:
左侧LD1灯控制信号;
LEDB:
左侧LD2灯控制信号;
LEDN:
左侧LD3灯控制信号;
VHDL程序(LC.VHD):
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLCIS
PORT(CLK,LP,LR,BRAKE,NIGHT:
INSTD_LOGIC;
LEDL,LEDB,LEDN:
OUTSTD_LOGIC);
ENDENTITYLC;
ARCHITECTUREARTOFLCIS
BEGIN
LEDB<=BRAKE;
LEDN<=NIGHT;
PROCESS(CLK,LP,LR)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--时钟上升沿有效
IF(LR='0')THEN--没有刹车信号时
IF(LP='0')THEN--没有左拐信号时
LEDL<='0';--左信号灯不亮
ELSE--相反情况
LEDL<='1';
ENDIF;
ELSE
LEDL<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
仿真波形:
功能:
本程序用于控制左侧灯的亮、灭和闪烁情况,当时钟上升沿信号和左侧灯控制信号或刹车控制信号或夜间行驶信号同时出现时,左侧相应的灯亮或出现闪烁。
当错误控制信号出现时,LD1灯不亮。
(3)、右边灯控制模块
数据入口:
CLK:
时钟控制信号;
RP:
右侧灯控制信号;
LR:
错误控制信号;
BRAKE:
刹车控制信号;
NIGHT:
夜间行驶控制信号;
数据出口:
LEDR:
右侧RD1灯控制信号;
LEDB:
右侧RD2灯控制信号;
LEDN:
右侧RD3灯控制信号;
VHDL程序(RC.VHD):
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYRCIS
PORT(CLK,RP,LR,BRAKE,NIGHT:
INSTD_LOGIC;
LEDR,LEDB,LEDN:
OUTSTD_LOGIC);
ENDENTITYRC;
ARCHITECTUREARTOFRCIS
BEGIN
LEDB<=BRAKE;
LEDN<=NIGHT;
PROCESS(CLK,RP,LR)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿
IF(LR='0')THEN
IF(RP='0')THEN
LEDR<='0';
ELSE
LEDR<='1';
ENDIF;
ELSE
LEDR<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
仿真波形:
功能:
本描述用于控制右侧灯的亮、灭和闪烁情况,当时钟上升沿信号和右侧灯控制信号或刹车控制信号或夜间行驶信号同时出现时,右侧相应的灯亮或出现闪烁。
当错误控制信号出现时,RD1灯不亮。
(4)、时钟分频模块
VHDL程序(SZ.VHD):
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSZIS
PORT(CLK:
INSTD_LOGIC;--时钟输入
CP:
OUTSTD_LOGIC);
ENDENTITYSZ;
ARCHITECTUREARTOFSZIS
SIGNALCOUNT:
STD_LOGIC_VECTOR(7DOWNTO0);--定义八位标准逻辑位矢量数据类型
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿
COUNT<=COUNT+1;
ENDIF;
ENDPROCESS;
CP<=COUNT(3);--输出第五位
ENDARCHITECTUREART;
仿真波形:
功能:
这块的功能是对左右两边的LLED1、RLED1的闪烁时间间隔,以CLK为输入信号,CP为输出信号,在程序中定义一个八位节点信号COUNT来放计数值,当CLK的上升沿到来时就开始计数,最后将COUNT(3)给CP,实现对CLK的八分频。
再将CP的电平信号分别和LEDL、LEDR电平与,最后用输出的电平来控制汽车左右的LLED1、RLED1,实现左右转的指示功能。
(5)、顶层文件
VHDL程序(tn.VHD):
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
Entitytnis
Port(clk:
instd_logic;
Left:
instd_logic;
Right:
instd_logic;
Brake:
instd_logic;
Night:
instd_logic;
Ld1,ld2,ld3:
outstd_logic;
Rd1,rd2,rd3:
outstd_logic);
End;
Architecturebhoftnis
Componentszis
Port(clk:
instd_logic;
Cp:
outstd_logic);
Endcomponent;
Componentctrlis
Port(left,right,brake,night:
instd_logic;
Lp,rp,lr,brake_led,night_led:
outstd_logic);
Endcomponent;
Componentlcis
Port(clk,lp,lr,brake,night:
instd_logic;
Ledl,ledb,ledn:
outstd_logic);
Endcomponent;
Componentrcis
Port(clk,rp,lr,brake,night:
instd_logic;
Ledr,ledb,ledn:
outstd_logic);
Endcomponent;
Signaltmp0,tmp1,tmp2,tmp3,tmp4:
std_logic;
Signalerr0,err1,err2,err3,err4,err5:
std_logic;
signalbm:
std_logic;
Begin
U1:
szportmap(clk,bm);
U2:
ctrlportmap(left,right,brake,night,tmp0,tmp1,tmp2,tmp3,tmp4);
U3:
lcportmap(clk,tmp0,tmp2,tmp3,tmp4,err0,err1,err2);
U4:
rcportmap(clk,tmp1,tmp2,tmp3,tmp4,err3,err4,err5);
Ld1<=err0andbm;
Ld2<=err1;
Ld3<=err2;
Rd1<=err3andbm;
Rd2<=err4;
Rd3<=err5;
End;
仿真波形:
四、原理图
五、管脚分配
CLK
N1
BRAKE
AE14
NIGHT
AF14
LEFT
AD13
RIGHT
AC13
LD1
H17
LD2
E20
LD3
D21
RD1
AE5
RD2
AA6
RD3
AF5
六、心得体会
本设计基于完成汽车尾灯控制电路,在确立总体预期实现功能的前提下,分层次进行描述,满足设计要求。
在QuartusII环境下,用语言实现该电路,根据VerilogHDL的语法规则,对系统的逻辑行为进行描述,然后通过综合工具进行电路结构的综合、编译、优化,利用波形仿真工具,可在短时间内设计出高效、稳定、符合设计要求的电路。
这种利用FPGA设计的汽车尾灯电路,具有较强的灵活性,具备系统可编程能力,便于扩展,而且使用一块核心芯片就可以完成多项功能。
本次课程设计不仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,分析问题和解决问题的能力。
它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。
本设计采用自顶向下设计方法,底层为一些具有独立功能的小模块,由小组人员分工完成,即一人完成一个到多个模块,最后再合到一起完成顶层文件的设计。
从局部到整体,不仅使得系统设计的思路清晰明了,减少了错误的产生,更方便了程序的调试以及系统功能的扩充。
在设计过程中,能与同学相互交流讨论,分工合作,不仅降低了设计难度,缩短了设计周期,更是进一步培养了我们的团队合作精神。
在此次设计过程中,不仅要求我们掌握扎实的理论知识,分析问题能从根本原理出发,联系实际解决问题,还要求我们要有耐心,毅力及细心。
稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查更要求我们要有足够的耐心,反复调试,直到程序顺利通过。
这次设计中我也遇到了一些问题,但通过相关资料的查询,在老师的指导和同学们的帮助下,都顺利得以解决。
这些经历使我得以积累了一定的经验,相信对以后学习设计工作也会有一定的帮助!
七、参考文献
[1]王金明.数字系统设计与VerilogHDL(第四版)[M].北京:
电子工业出版社.2012.
[2]李皓瑜.汽车尾灯控制电路设计[J].软件导刊,2013,12(8):
33-34.
[3]刘宗佳.汽车尾灯控制电路设计[J].科技资讯,2013,34(8):
100.