现代电子系统设计汽车尾灯设计文档格式.docx
《现代电子系统设计汽车尾灯设计文档格式.docx》由会员分享,可在线阅读,更多相关《现代电子系统设计汽车尾灯设计文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
系统实现采用硬件描述语言VHDL把系统电路按模块化方式进行设计,然后进行编译、时序仿真等。
三:
实验仪器
PC机一台;
电子综合设计实验箱一套。
目录
方案设计与论证…………………………………..…
(1)
1:
方案一……………………………….…..3
2:
方案二……………………………………..4
3:
方案比较…………………………………..5
4:
方案二的工作原理…………………….5
仿真与测试分析………………………………………(5)
设计总结……………………………………………..…(6)
四:
附件……………………………………………………..(7)
1:
方案设计与论证
方案一
根据方案所有的功能,将整个工程分成两个模块,一个模块为分频模块,将50M频率进行8分频。
以使指示灯进行适当的闪烁。
另一个模块是主要功能实现模块,包括实现出现刹车、右转、左转,夜行等各种情况下指示灯的显示情况。
系统框图:
方案二
根据方案的功能要求,将整个工程分成四个模块,其中两个模块也是分频模块和尾灯主模块,还有左边灯控制模块和右边灯控制模块来分别控制左右的指示灯。
其系统框图如图所示:
方案比较
方案一和二所实现的功能是一样的,但是方案一是具有两个模块,方案二是将其中的主模块分成了三个模块来实现其功能,设计起来逻辑性强,思路清晰,也便于扩展和完善,因此在实现相同功能的情况下,理所当然应该选择简单明了的方案二。
方案二的工作原理
汽车尾灯控制器就是一个状态机的实例。
当汽车正常行驶时所有指示灯都不亮;
当汽车向左转弯时,汽车左侧的指示灯left0,left1,left2依次点亮;
当汽车向右侧转弯时,汽车右侧的指示灯right0,right1,right2依次点亮;
当汽车刹车时,汽车左侧的指示灯left3和汽车右侧的指示灯Lright3同时亮;
当汽车在夜间行驶时,汽车所有指示灯全部亮。
通过设置系统的输入信号:
系统时钟信号clk,汽车左转弯控制信号left,汽车右转弯控制信号right,刹车信号brake,夜间行驶信号night和系统的输出信号:
汽车左侧4盏指示灯left0,left1,left2,left3和汽车右侧4盏指示灯right0,right1,right2,right3实现以上功能。
各组成模块原理图及程序详见附件。
2:
仿真与测试分析
根据设计电路图及设计程序,经仿真得到如下的仿真图。
因空间有限,以brake,left,right控制信号为例:
3:
设计总结
本次实验利用VHDL程序来设计出控制汽车尾灯各底
层模块,再进一步生成顶层原理图。
通过这次的实验过程,从选择这个课题到后来设计运行这个程序,其中遇到故很多问题,很多困难。
在尾灯主模块中,利用最基本的VHDL语言来设计,其中最需要注意的是brake、left、right、night四个功能的设计顺序,要合理安排,才能使得符合功能要求,更符合实际情况。
整个过程,曾尝试过很多方法,包括用更多的模块来设计程序,但最终选择了用这种方案是因为程序简单明了,但又不会缺少任何功能显示。
在书上所提出的几个功能中,为了更符合实际情况和更好的完善这个实验,又完善了转弯时尾灯依次点亮,不断闪烁的功能;
刹车时采用与转弯时不同的灯来显示,便于区分等功能。
由于在实验箱上正好四个开关,所以可进行适当的引脚分配,通过控制开关的on或off来显示实验结果。
最后,运行成功,得到了想要的汽车尾灯显示结果。
4.附件
原理图
2.分频模块的VHDL语言程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityckis
port(clk:
instd_logic;
cp:
outstd_logic);
endck;
architecturebehaveofckis
signalcounter:
std_logic_vector(7downto0);
begin
process(clk)
begin
ifclk'
eventandclk='
1'
then
counter<
=counter+1;
endif;
endprocess;
cp<
=counter(3);
endbehave;
3.尾灯主模块的VHDL语言程序
entitycontrolis
port(leftin,rightin,brake,night:
leften,righten,lr,led3,rled3:
endcontrol;
architecturebehaveofcontrolis
signaltemp:
std_logic_vector(1downto0);
process(leftin,rightin)
ifbrake='
leften<
='
0'
;
righten<
lr<
led3<
rled3<
else
temp<
=leftin&
rightin;
iftemp="
01"
10"
else
ifnight='
endbehave;
4.左边灯控制模块
entityleftpis
port(leften,clk,lr:
led2,led1,led0:
endleftp;
architecturebehaveofleftpis
std_logic_vector(2downto0);
process(leften,clk,lr)
if(clk'
)then
iflr='
ifleften='
="
000"
if(temp="
001"
=temp(1downto0)&
'
111"
led2<
=temp
(2);
led1<
=temp
(1);
led0<
=temp(0);
5.右边灯控制模块
entityrightpis
port(righten,clk,lr:
rled2,rled1,rled0:
endrightp;
architecturebehaveofrightpis
process(righten,clk,lr)
ifrighten='
100"
&
temp(2downto1);
rled2<
rled1<
rled0<