汽车尾灯控制器.docx
- 文档编号:5868320
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:18
- 大小:150.64KB
汽车尾灯控制器.docx
《汽车尾灯控制器.docx》由会员分享,可在线阅读,更多相关《汽车尾灯控制器.docx(18页珍藏版)》请在冰豆网上搜索。
汽车尾灯控制器
电子系统综合设计设计实验
――设计三汽车尾灯控制器
设计者:
电子信息工程专业
2011年12月14日
摘要
伴随着现代电子技术的发展,人们正处于一个信息时代,每天要从周围环境获取大量的信息。
这些信息是通过我们的感觉器官(眼、耳等)进入大脑,并进行储存和分析。
电子技术几乎应用于每一电子设备和电子系统中。
所以,掌握或具有一定的电子技术对于我们工科学生来说是至关重要的。
CPLD(ComplexProgrammableLogicDevice)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。
是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产之中。
本文介绍了一种通过CPLD/FPGA设计模拟汽车尾灯工作情况电路的方法。
主要阐述了如何通过Quartus软件,结合VHDL语言及原理图设计,通过EPM570芯片,实现汽车尾灯的模拟。
实验通过发光二极管模拟汽车尾灯来实现了汽车在行驶时候的几种情况:
正常行驶,左拐弯,右拐弯,临时刹车,夜间行驶等。
本文将汽车尾灯控制模块分为主要三个模块,其中一个主控模块控制两个分控模块。
这种模块化的设计,使系统设计条理清晰、便于阅读、方便维护改进。
关键字:
汽车尾灯,分频器,计数器,主控模块,分控模块,行驶情况
目录
1、
方案设计与论证
1.1、
设计要求
1.2、
设计思路
1.3、
1
控制信号输入方式
2、
电路图及有关设计文件
2.1、总电路图
2.2、分频器
2.3、总控制模块
2.4、左边灯控制模块
2.5、右边灯控制模块
3、
仿真与测试分析
3.1、分频器
8
3.2、总控制模块
8
3.3、左边灯控制模块
8
3.4、右边灯控制模块
9
3.5、总电路仿真
10
3.6、系统的测试
8
4、
11
设计总结
121
附录1参考文献
附录2附件
1.方案设计与论证
1.1设计要求
假设汽车尾部左右两侧各有3盏指示灯,其控制功能包括:
(1)正常行驶时,指示灯都不亮
(2)汽车右转时,右侧的一盏指示灯亮
(3)汽车左转时,坐侧的一盏指示灯亮
(4)汽车刹车时,左右两侧的一盏指示灯同时亮
(5)汽车夜间行驶时,左右两侧的一盏指示灯同时亮,供照明使用
1.2设计思路
1.2.1汽车尾部三盏灯功能
左侧灯
右侧灯
左转
夜间
刹车
刹车
夜间
右转
左转时闪烁
夜间点亮
踩下刹车时点亮
踩下刹车时点亮
夜间点亮
右转时闪烁
1.2.2系统框图
1.3控制信号输入方式
1.3.1转弯控制
转弯控制由两个拨码开关控制,以免出现误导,当两个开关同时打开时,转弯灯不亮
1.3.2夜间行驶控制
夜间行驶开关为按键开关,按下一次打开灯光,再按下一次,灯光熄灭
1.3.3刹车控制
刹车控制也为按键开关,刹车时,按键按下,刹车灯亮,刹车停止时,按键松开,刹车灯熄灭
2.电路图及有关设计文件
2.1总电路图
总体电路由总控制器、左边灯控制器、右边灯控制器和分频器组成
2.2分频器
分频器程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityclkis
port
(clk:
instd_logic;
qcnt:
bufferstd_logic_vector(24downto0);
clkout:
bufferstd_logic;
clkout0:
bufferstd_logic
);
endclk;
architecturebehaveofclkis
begin
process(clk)
begin
if(clk'eventandclk='1')then
if(qcnt="1011111010111100001000000")then
qcnt<="0000000000000000000000000";
if(clkout='1')then
clkout<='0';
else
clkout<='1';
endif;
else
qcnt<=qcnt+1;
endif;
endif;
clkout0<=qcnt(22);
endprocess;
endbehave;
分频器主要用于对系统50MHz输入频率的分频,将50MHz分频成为1Hz和大约4Hz的频率输出,1Hz信号用于转弯灯光的闪烁,4Hz信号用于按键的消抖。
2.3总控制模块
总控制模块程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycontrolis
port
(turn:
instd_logic_vector(1downto0);
clk:
instd_logic;
stop:
instd_logic;
night:
instd_logic;
cleft:
bufferstd_logic_vector(2downto0);
cright:
bufferstd_logic_vector(2downto0)
);
endcontrol;
architecturebehaveofcontrolis
begin
process(stop)
begin
if(stop='0')then
cleft(0)<='1';
cright
(2)<='1';
else
cleft(0)<='0';
cright
(2)<='0';
endif;
endprocess;
process(night,clk)
begin
if(clk'eventandclk='1')then
if(night='0')then
cleft
(1)<=notcleft
(1);
cright
(1)<=notcright
(1);
endif;
endif;
endprocess;
process(turn)
begin
if(turn
(1)='1'andturn(0)='1')then
cleft
(2)<='0';
cright(0)<='0';
else
cleft
(2)<=turn
(1);
cright(0)<=turn(0);
endif;
endprocess;
endbehave;
主控制器主要用于接收输入信号并对输入信号进行处理,转弯控制由拨码开关控制输入,刹车及照明灯由键盘按键控制输入,低电平有效。
2.4左边灯控制模块
左边灯控制器程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityLcontrolis
port
(clk:
instd_logic;
how:
instd_logic_vector(2downto0);
Llight:
outstd_logic_vector(2downto0)
);
endLcontrol;
architecturebehaveofLcontrolis
begin
process(how,clk)
begin
Llight(1downto0)<=how(1downto0);
if(how
(2)='1')then
Llight
(2)<=clk;
else
Llight
(2)<='0';
endif;
endprocess;
endbehave;
左边灯控制器接收主控制器的控制信号,通过对主控制器控制信号的处理,控制左边三盏灯。
2.5右边灯控制模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityRcontrolis
port
(clk:
instd_logic;
how:
instd_logic_vector(2downto0);
Rlight:
outstd_logic_vector(2downto0)
);
endRcontrol;
architecturebehaveofRcontrolis
begin
process(how,clk)
begin
Rlight(2downto1)<=how(2downto1);
if(how(0)='1')then
Rlight(0)<=clk;
else
Rlight(0)<='0';
endif;
endprocess;
endbehave;
右边控制器原理与左边控制器基本相同,只是各种灯光的顺序发生改变
3.仿真与测试分析
3.1分频器模块
3.2总控制模块
从40ns到130ns,刹车信号输入,总控制器输出cright[2]和cleft[0]为1,控制左、右灯控制模块点亮刹车灯。
在10ns到30ns间,night信号输入一次,并且有CLK上升沿输入,总控制器输出cright[1]和cleft[1]为1,控制左、右灯控制模块点亮照明灯。
当80ns和110ns时,虽然night信号有输入,但是由于没有有效的CLK上升沿作用,照明灯信号不改变,以此起到消除按键抖动作用。
170ns到190ns时,night信号输入一次,并且有CLK上升沿输入,总控制器输出cright[1]和cleft[1]为0,控制左、右灯控制模块熄灭照明灯。
30ns到80ns,右转信号输入,cright[0]置1,但是由于70ns到80ns,左转信号同时也输入,于是为了避免出错,转弯控制器停止工作。
70ns到120ns时,左转信号输入,在80ns时开始,右转信号停止输入,于是转弯控制器继续工作,cleft[2]置1。
3.3左边灯控制模块
当how[2]为1时,左转弯灯以CLK的频率进行闪烁.
3.4右边灯控制模块
当how[0]为1时,右转弯灯以CLK的频率进行闪烁.
3.5总电路仿真
总电路仿真时,由于分频器的作用,仿真时间会很长,所以对总电路仿真时,去掉了分频器,直接对电路进行仿真,这样,对测试电路的可行性和正确性并无影响。
仿真结果如上图。
分析仿真结果发现,在理论上,电路的设计是完全正确的,因此,本次设计的理论阶段完成。
3.6系统的测试
将程序的输入输出分配引脚,再将程序下载到EPM570芯片中,进行实验,发现程序在实验箱的测试中并未出现错误,实验结果与仿真结果基本一致,说明本次设计成功完成。
4.设计总结
通过两星期的紧张工作,最后完成了我的设计任务——汽车尾灯控制器的设计。
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性。
本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。
它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。
希望学校以后多安排一些类似的实践环节,让同学们学以致用。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。
用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。
附录1参考文献
【1】邹彦、庄严等编.EDA技术与数字系统设计.北京:
电子工业出版社,2008
【2】张庆双主编.实用电子电路200例.北京:
机械工业出版社,2005
【3】赵世强、许杰等编.电子电路EDA技术.西安:
西安电子科技大学出版社,2000
【4】清华大学电子学教研组编.余孟尝主编.数字电子技术.第三版.北京:
高等教育出版社,2006
附录2附件
分频器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityclkis
port
(clk:
instd_logic;
qcnt:
bufferstd_logic_vector(24downto0);
clkout:
bufferstd_logic;
clkout0:
bufferstd_logic
);
endclk;
architecturebehaveofclkis
begin
process(clk)
begin
if(clk'eventandclk='1')then
if(qcnt="1011111010111100001000000")then
qcnt<="0000000000000000000000000";
if(clkout='1')then
clkout<='0';
else
clkout<='1';
endif;
else
qcnt<=qcnt+1;
endif;
endif;
clkout0<=qcnt(22);
endprocess;
endbehave;
总控制模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycontrolis
port
(turn:
instd_logic_vector(1downto0);
clk:
instd_logic;
stop:
instd_logic;
night:
instd_logic;
cleft:
bufferstd_logic_vector(2downto0);
cright:
bufferstd_logic_vector(2downto0)
);
endcontrol;
architecturebehaveofcontrolis
begin
process(stop)
begin
if(stop='0')then
cleft(0)<='1';
cright
(2)<='1';
else
cleft(0)<='0';
cright
(2)<='0';
endif;
endprocess;
process(night,clk)
begin
if(clk'eventandclk='1')then
if(night='0')then
cleft
(1)<=notcleft
(1);
cright
(1)<=notcright
(1);
endif;
endif;
endprocess;
process(turn)
begin
if(turn
(1)='1'andturn(0)='1')then
cleft
(2)<='0';
cright(0)<='0';
else
cleft
(2)<=turn
(1);
cright(0)<=turn(0);
endif;
endprocess;
endbehave;
左边灯控制模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityLcontrolis
port
(clk:
instd_logic;
how:
instd_logic_vector(2downto0);
Llight:
outstd_logic_vector(2downto0)
);
endLcontrol;
architecturebehaveofLcontrolis
begin
process(how,clk)
begin
Llight(1downto0)<=how(1downto0);
if(how
(2)='1')then
Llight
(2)<=clk;
else
Llight
(2)<='0';
endif;
endprocess;
endbehave;
右边灯控制模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityRcontrolis
port
(clk:
instd_logic;
how:
instd_logic_vector(2downto0);
Rlight:
outstd_logic_vector(2downto0)
);
endRcontrol;
architecturebehaveofRcontrolis
begin
process(how,clk)
begin
Rlight(2downto1)<=how(2downto1);
if(how(0)='1')then
Rlight(0)<=clk;
else
Rlight(0)<='0';
endif;
endprocess;
endbehave;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 尾灯 控制器