汽车尾灯控制电路的设计
首先,通过555定时器产生频率为1Hz的脉冲信号,该脉冲信号用于提供给D触发器和刹车时的输入信号。3个D触发器用于产生三端输出的001、010、100的循环信号,此信号提供左转、右转的原始信号。左转、右转的原始信号通过6个与门以及电键提供的高低电位信号,将原始信号分别输出到左、右的3个汽车尾灯上。这部分电路起到信号分拣的作用。分拣之后的信号通过或门,实现与刹车、检查电键信号的之间选择。最终得到的信号即可输出到发光二极管上,实现所需功能。
总体框图:由于汽车左或右转弯时,三个指示灯循环点亮,所以用三进制计数器控制译码器电路顺序输出低电平,从而控制尾灯按要求点亮。由此得出在每种运行状态下,各指示灯与各给定条件(S1、S0、CP、Q1、Q0)的关系,即逻辑功能表(如表6-2所示(表中0表示灯灭,1表示灯亮)。
由表1得总体框图如图所示
图1汽车尾灯控制电路原理框图
表1汽车尾灯控制逻辑功能表
开关控制
S1 S0
三进制计数器
Q1 Q0
六个指示灯
D6 D5 D4 D1 D2 D3
0 0
0 0 0 0 0 0
0 1
0 0
0 1
1 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
1 0
0 0
0 1
1 0
0 0 1 0 0 0
0 1 0 0 0 0
1 0 0 0 0 0
1 1
CP CP CP CP CP CP
3.2 单元电路设计与分析
3.2.1 开关控制电路的设计
设74LSl38和显示驱动电路的使能端信号分别为G和A,根据总体逻辑功能表分析及组合得G、A与给定条件(S1、S0、CP)的真值表,如表2所示。
开关控制
S1 S0
CP
使能信号
G A
0 0
0 1
0 1
1 1
1 0
1 1
1 1
CP
0 CP
表2 S1、S0、CP与 G、A逻辑功能真值表
由表6—3经过整理得逻辑表达式
, ,
由上式得开关控制电路,如图2所示
图2 开关控制电路
3.2.2 三进制计数器电路的设计
三进制计数器电路可根据表1由双J—K触发器74LS76构成,此电路结构简单,成本较低,选用此方案。电路图如图3所示
图3 三进制计数器
3.2.3译码与显示驱动电路的设计
译码与显示驱动电路的功能是:在开关控制电路输出和三进制计数器状态的作用下,提供6个尾灯控制信号,当译码驱动电路输出的控制信号为低电平时,相应指示灯点亮。因此,译码与显示驱动电路可用74LS138(其功能表如表3.3所示)、6个与非门和6个反相器构成,逻辑电路如图3.10中的(Ⅰ)所示。图中,译码器74LS138的输入端C、B、A分别接K1、Q1、Q0。当图中G=F=1、K1=0时,对于计数器状态Q1Q0为00、01、10,译码器输出依次为0,使得与指示灯D1、D2、D3对应的反相器输出依次为低电平,从而使指示灯D1、D2、D3依次顺序点亮,示意汽车右转弯;当图中G=F=1、K1=1时,对于计数器状态Q1Q0为00、01、10,译码器输出依次为0,使得与指示灯D4、D5、D6对应的反相器输出依次为低电平,从而使指示灯D4、D5、D6依次顺序点亮,示意汽车左转弯;当图中G=0,F=1时,译码器输出为全1,使所有指示灯对应的反相器输出全部为高电平,指示灯全部熄灭;当图中G=0,F=cp时,所有指示灯随cp的频率闪烁。实现了4种不同模式下的尾灯状态显示。
3.3.4 尾灯电路的设计
尾灯显示驱动电路由6个发光二极管和6各电阻构成,反相器G1—G3的输出端也依次为0,指示灯D1→D2→D3按顺序点亮,示意汽车右转弯;反相器G4~G6的输出端依次为0,故指示灯D4→D5→D6按顺序点亮,示意汽车左转弯。当G=0,A=1时,74LSl38的输出端全为1,G6~G1的输出端也全为1,指示灯全灭;当G=0,A=CP时,指示灯随CP的频率闪烁。
3.3.5 秒脉冲电路的设计
由555定时器构成的多谐振荡器;如图4为多谐震荡器的电路,由于555定时器内部的比较器灵敏度搞,输出驱动电流大,功能灵活,又频率受电压和温度影响很小。即此多谐振荡器的震荡频率稳定。
图4 脉冲产生电路
3.3电路的安装与调试
其工作原理图如图5所示,经过以上所述的设计内容及要求的分析,可以图5汽车尾灯控制器电路原理图
图5 电路原理图
首先,通过555定时器构成的多谐振荡器产生频率为1Hz的脉冲信号,该脉冲信号用于提供给双J-K触发器构成的三进制计数器和开关控制电路中的三输入与非门的输入信号。
其次,双J-K触发器构成的三进制计数器用于产生00、01、10的循环信号,此信号提供左转、右转的原始信号。
最后,左转、右转的原始信号通过6个与非门,6个非门以及7410提供的高低电位信号,将原始信号分别输出到左、右的3个汽车尾灯上。得到的信号即可输出到发光二极管上,实现所需功能。
4 心得体会及建议(四号,黑体)
4.1 心得体会(小四号宋体,加粗)
本次课程设计是我目前收获最大的一次课程设计。我是工学专业的学生,设计是我们将来必需的技能,这次课程设计恰恰给我们提供了一个应用自己所学知识的机会,从到图书馆查找资料到对电路的设计对电路的仿真再到最后电路的成型,都对我所学的知识进行了检验。可以说,本次课程设计有苦也有甜。 设计思路是最重要的,只要你的设计思路是成功的,那你的设计已经成功了一半。因此我们应该在设计前做好充分的准备,像查找详细的资料,为我们设计的成功打下坚实的基础。 制作过程是一个考验人耐心的过程,不能有丝毫的急躁,马虎,对电路的调试要一步一步来,不能急躁,因为是在电脑上调试,比较慢,又要求我们有一个比较正确的调试方法,像把频率调快等等。这又要我们要灵活处理,在不影响试验的前提下可以加快进度。 要熟练地掌握课本上的知识,这样才能对试验中出现的问题进行分析解决。 留给我印象最深的是要设计一个成功的电路,必须要有耐心,要有坚韧的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如CP脉冲的供给通断等。在多种方案的选择中,我们仔细比较分析其原理以及可行的原因,最后还是在老师的耐心指导下,使整个电路可稳定工作。设计过程中,我深刻的体会到在设计过程中,需要反复实践,其过程很可能相当烦琐,有时花很长时间设计出来的电路还是需要重做,那时心中未免有点灰心,有时还特别想放弃,此时更加需要静下心,查找原因。 总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。
4.2 建议
对于学生来说:做课程设计还是独立完成好。在做设计之前一定要搞清楚各个元件的特征与性质,做设计时就可以对号入座。而且做设计时要明白“要什么,怎么样”这样就不会盲目了,对于设计时会出现的各个错误现象,一定要仔细检查线路,不要盲目的就认为元器件的问题,或是人为其他的问题。做课程设计最主要的是锻炼实践能力,所以要注重独立思考怎样设计,而不是照搬照套。
对于指导老师来说:安排实验时能否在充足的时间安排,还可以有选择的选题,不要把题目限定得太死,充分激发学生兴趣爱好,才能更激情的深刻地做好课程设计。
5 附录
元器件明细表
元件名称
规格
数量
电阻
100Ω
500Ω
8
2
电容
100μF/25V
2
发光二极管
LED(共阴)
6
555定时器
NE555
1
译码器
74LS138
1
开关
2
其他各集
成元件
74LS00
74LS04
74LS10
74LS76
74LS86
1
1
1
1
1
6参考文献
一 汽车尾灯控制电路设计内容及要求
(一) 设计任务
设计一个汽车尾灯控制电路,汽车尾部左右两侧各有3个指示灯(用发光二极管模拟),当在汽车正常运行时只是灯全灭;在右转弯时,右侧3个指示灯按右循环顺序点亮(R1—R1R2—R1R2R3—全灭—R1)时间间隔0.5S(采用一个2Hz的方波源);在左转弯时,左侧3个指示灯按左循环顺序点亮(L1—L1L2—L1L2L3—全灭—L1);在临时刹车或者检查尾灯是否正常时,所有指示灯同时点亮(R1R2R3L1L2L3点亮);当汽车后退的时候所有尾灯循环点亮,当晚上行车的时候汽车尾灯最下一个灯一直点亮。
(二) 设计要求
1 汽车尾灯的控制电路的设计要求
汽车尾部左右两侧各有3个指示灯。当接通左转、右转、刹车和检查时,指示灯按照指定要求闪烁。
(1)当接通右转电键时,右侧的3个汽车尾灯(用发光二极管模拟)按照右循环的顺序依次点亮。
(2)当接通左转电键时,左侧的3个汽车尾灯按照左循环的顺序依次点亮。
(3)当接通刹车电键时,汽车所有的尾灯同时闪烁。
(4)当接通检查电键时,汽车所有的尾灯点亮。
分析以上设计任务,由于汽车左转弯、右转弯、刹车、倒车、晚上行车时,所有灯点亮的次序和是否点亮是不同的,所以用74138译码器对输入的信号进行译码,从而得到一个低电平输出,再由这个低电平控制一个计数器74161,计数器输出为高点评时就点亮不同的尾灯(这里用发光二极管模拟),从而控制尾灯按要求点亮。由此得出在每种运行状态下,各指示灯与给定条件间的关系,即逻辑功能表1所示,汽车尾灯控制电路设计总体框图如图1所示。
表1 汽车尾灯和汽车运行状态表
图1 汽车尾灯控制电路设计总体框图
二 电路的工作原理
经过以上所述的设计内容及要求的分析,可以将电路分为以下几部分:
首先,通过555定时器产生频率为1Hz的脉冲信号,该脉冲信号用于提供给D触发器和刹车时的输入信号。
3个D触发器用于产生三端输出的001、010、100的循环信号,此信号提供左转、右转的原始信号。
左转、右转的原始信号通过6个与门以及电键提供的高低电位信号,将原始信号分别输出到左、右的3个汽车尾灯上。这部分电路起到信号分拣的作用。
分拣之后的信号通过或门,实现与刹车、检查电键信号的之间选择。最终得到的信号即可输出到发光二极管上,实现所需功能。
三 系统方案的选择
在设计本电路时,一共考虑过二种方案。这二种方案的不同点在于产生001、010、100三种信号的方法不同。下面简单的介绍一下这二种方案:
(一)方案一:该方案通过74LS160计数器构成能产生01、10、11三种状态循环的信号,然后再通过逻辑电路将其转换成所需的001、010、100三种左转或右转的信号。
设:74LS160输出的两位信号从高位到低位分别是B A,输出信号为Z Y X。
则 经过
的逻辑运算便可实现所需的功能。
电路图如下
图2 尾灯在闪烁时会出现不自然
但是该方案在模拟时发现,由于计数器的竞争冒险的存在,使得尾灯在闪烁时总会出现不自然的中间过程。
(二)方案二:该方案是由555脉冲电路产生频率为1Hz的脉冲信号来驱动74LS160S组成的计数器电路,由开关电路来控制74LS138组成的译码电路,由计数电路和译码电路一起控制显示驱动电路,从而控制尾灯的亮灭,555定时器产生的信号可以使尾灯快速闪亮,通过D触发器产生001、010、100的三种状态信号,此信号提供左转、右转的原始信号。
左转、右转的原始信号通过6个与门以及电键提供的高低电位信号,将原始信号分别输出到左、右的3个汽车尾灯上。这部分电路起到信号分拣的作用。
分拣之后的信号通过或门,实现与刹车、检查电键信号的之间选择。最终得到的信号即可输出到发光二极管上,实现所需功能。
方案二是本次设计中使用的方案,该方案的详细设计将在下面详细叙述。
摘要:本课题主要是基于可编程逻辑器件,使用硬件描述语言VHDL,采用“自顶向下”的设计方法编写程序实现汽车尾灯的控制,并对控制器进行编程下载,它的体积小,功耗低,成本低,安全可靠,能实现控制器的在系统编程,其升级与改进极为方便。
关键词: VHDL 汽车尾灯控制 时钟信号
1. 尾灯控制电路总框图,
根据电路总框图的描述,我们大概可以了解到整个汽车控制尾灯的工作原理,从中我们可以发现当左右转信号同时有效时,6盏灯的闪烁是通过一个与非门实现的。并且可以获知本次设计的汽车尾灯控制电路主要分为三个模块,即控制模块,左转LFTA模块和右转RITA模块。了解到这几点,就可以对本次设计作较为详尽的解释。
2.模块KONG。
模块KONG如图所示,此为整个程序的控制模块。程序如下:
Library ieee
Use ieee.std_logic_1164.all
Entity kong is
Port(left,right:in std_logic
Lft,rit,lr:out std_logic)
End kong
Architecture kong_logic of kong is
Begin
Process(left,right)
Variable a:std_logic_vector(1 downto 0)
Begin
A:=left &right
Case a is
When”00”=>lft<=’0’
Rit<=’0’
Lr <=’0’
When”10”=>lft<=’1’
Rit<=’0’
Lr <=’0’
When”01”=>rit<=’1’
Lft<=’0’
Lr <=’0’
When other=>rit<=’1’
lft<=’1’
lr<=’1’
end case
end process
end kong_arc
控制模块首先使用了库说明语句:library ieee
Use ieee.std_logic_1164.all
使用ieee库中的std_logic_1164程序包的全部资源。此控制模块定义的实体名为kong。在程序中要求实体名与存储的文件名一致。实体名为kong,则存储的文件名为kong.vhd。且此段程序包有5个端口,其名称分别为left. Right. Lft. Rit. Lr 。left 和right的端口方式是输入,lft, rit, lr 是输出,他们的端口类型都是std_logic的数据类型。实体说明部分结束以后,就是结构体的说明部分。结构体是整个VHDL语言中至关重要的一个组成部分,这个部分给出模块的具体说明,指定输入与输出之间的行为。结构体对实体的输入输出关系可以用三种关进行描述,即行为描述,寄存器传输描述和结构描述。只不过结构体的框架是完全一样的。本结构体中包含有一个进程语句,进程语句中又包含有两个敏感量process(left ,right),从begin开始到end process结束是一组顺序执行语句,ieee标准数据类型“std_logic_vector”定义了两位位矢量1downto 0,变量为a。程序往下把left和right的与赋值给a,下面便执行case语句了 ,case语句是无序的,所以所有条件表达式的值都是并行处理的。当条件表达式的值为”00”时则把lft ,rit ,lr,都变为0,所有信号都无效。当条件表达式为”10”时,左转信号lft有效,其它信号都无效,当条件表达式的值为”01”时右转信号rit有效,其余的无效。若条件表达式为其它的情况的话,那么就将rit ,lft ,lr 全部置1,即全部有效。最后结束case语句 end case .结束进程和结构体语句。
3. 模块LFTA
源程序:
Library ieee
Use ieee.std_logic_1164.all
Entity lfta is
Port(en,clk,lr:in std_logic
L2,l1,l0:out std_logic)
End lfta
Architecture lft_arc of lfta is
Begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0)
Begin
If lr=’1’ then
Tmp:=”111”
Elsif en=’0’ then
Tmp:=”000”
Elsif clk’event and clk=’1’ then
If tmp=”000” then
Tmp:=”001”
Else
Tmp:=tmp(1 downto 0) &‘0’
End if
End if
L2<=tmp(2)
L1<=tmp(1)
L0<=tmp(0)
End process
End lft_arc
模块LFTA同样使用了ieee库语句,定义的实体名为lfta,其共分为六个端口即en,clk,lr,l2,l1,l0,其中en,clk,lr为输入,l2,l1,l0的端口方式为输出,而它的端口类型同样也为std_logic数据类型。LFTA程序中结构体名为lft_arc,实体名为lfta 。结构体中包含有一个进程,共定义了三个敏感量clk,en,lr,设变量名tmp为2 downto 0 的三位位矢量。当左右开关同时接通时lr有效,即lr=1,此时tmp:=”111”右边的三盏灯全亮起来,当tr=1时但en=0则左边三盏灯全灭不亮。而如果这两种情况都不是的话,那么lr=’0’时当时钟上升沿脉冲到来时,如果tmp=”000”则左边第一盏灯亮,否则就将tmp(1 downto 0)和’0’的与赋值给tmp,那么依次左边的三盏灯就能实现从左到右按次序亮灭了。最后将tmp(2)送到l2,tmp(1)送到l1,tmp(0)送到lo,结束程序和结构体。这就是在实现左转弯的时候执行的程序的全过程。通过对左转的理解,右转弯就很容易了,其执行的过程和左转弯的时候非常相似的 。我们也可发现LFTA模块的功能是当左转时控制左边的三盏灯,当左右转信号都有效时,输出为全’1’。下面来看一下右转弯控制模块。
4.模块RITA
源程序:
Library ieee
Use ieee.std_logic_1164.all
Entity rita is
Port(en,clk,lr:in std_logic
R2,r1,r0:out std_logic)
End rita
Architecture rit_arc of rita is
Begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0)
Begin
If lr=’1’ then
Tmp:=”111”
Elsif en=’0’ then
Tmp:=”000”
Elsif clk’event and clk=’1’ then
If tmp=”000” then
Tmp:=”100”
Else
Tmp:=’0’ &tmp(2 downto 1)
End if
End if
R2<=tmp(2)
R1<=tmp(1)
R0<=tmp(0)
End process
End rit_arc
和左转弯时候的相同,右转弯时再次使用了ieee的库说明,这样我们可以很清楚的理解了右转弯的原理,此时库定义的实体名为rita,对于实体名前面已经讲过了不再重复了,同样的程序包中还是使用了6个端口en ,clk,lr,r2,r1,r0. en ,clk, lr的端口方式是输入,r2,r1,r0的端口方式是输出。结构体中和左转时相同引入一个进程同时和三个敏感量:clk,en,lr。变量tmp为2downto 0的三位位矢量。当左右开关同时接通时lr=’1’,那么此时变量tmp=’111’,即右面的三盏灯都有信号,三盏灯全亮。否则lr=’0’,当en=’0’时,tmp=’000’,即三盏灯全灭掉。Elsif clk’event and clk=‘1’即当时钟脉冲上升沿到来时,en=’1’,如果tmp=”000”,就把”100”送到tmp 此时右边的第一盏灯亮。否则就把’0’和tmp(2 downto 1)的与送到tmp,则依次为右边第一盏灯,第二盏,第三盏亮。然后结束if语句。这个之后就和左转的程序是一样的了,将tmp(2)中的数值送到r2,将tmp(1)中的数值送到r1,将tmp(0)中的数据送到r0,然后结束进程语句和整个结构体语句。那么到这里整个汽车尾灯的VHDL程序控制就结束了。
5.结论:
本次设计用到了硬件描述语言VHDL实现了对汽车尾灯的控制,总结整个设计程序我们可以发现一些问题;
设计中的优点:基本实现了汽车在运行时候尾灯点亮方式的各种情况。
设计中的不足:由于在行车的时候都是用开关控制的,所以每一个开关应该有一个消除机械振动的装置,可以利用基本RS触发器来实现,所以在条件允许的情况下可以对整个设计进行进一步的改进。
6.参考资料:
王振红 《VHDL数字电路设计与应用实践教程》机械工业出版社2006年1月
彭容修 《数字电子技术基础》 武汉理工大学出版社2005年9月
潘松 黄继业《EDA技术与VHDL》清华大学出版社 2006年11月
2009.12.27
library ieee
use ieee.std_logic_1164.all
entity ZHUKONG is
Port(left,right:in std_logic
Lft,rit,lr:out std_logic)
end
architecture kong_arc of ZHUKONG is
begin
Process(left,right)
Variable a:std_logic_vector(1 downto 0)
Begin
A:=left &right
Case a is
When"00"=>lft<='0'
Rit<='0'
Lr <='0'
When"10"=>lft<='1'
Rit<='0'
Lr <='0'
When"01"=>rit<='1'
Lft<='0'
Lr <='0'
When others=>rit<='1'
lft<='1'
lr<='1'
end case
end process
end kong_arc
library ieee
use ieee.std_logic_1164.all
entity LFTA is
Port(en,clk,lr:in std_logic
L2,l1,l0:out std_logic)
end
architecture lft_arc of LFTA is
begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0)
Begin
If lr='1' then
Tmp:="111"
Elsif en='0' then
Tmp:="000"
Elsif clk'event and clk='1' then
If tmp="000" then
Tmp:="001"
Else
Tmp:=tmp(1 downto 0) &'0'
End if
End if
L2<=tmp(2)
L1<=tmp(1)
L0<=tmp(0)
End process
end lft_arc
library ieee
use ieee.std_logic_1164.all
entity RITA is
Port(en,clk,lr:in std_logic
R2,r1,r0:out std_logic)
end
architecture rit_arc of RITA is
begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0)
Begin
If lr='1' then
Tmp:="111"
Elsif en='0' then
Tmp:="000"
Elsif clk'event and clk='1' then
If tmp="000" then
Tmp:="100"
Else
Tmp:='0' &tmp(2 downto 1)
End if
End if
R2<=tmp(2)
R1<=tmp(1)
R0<=tmp(0)
End process
end rit_arc
本次设计的目的就是通过实践深入理解计算机组成原理,了解EDA技术[2]并掌握VHDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。通过对实用汽车尾灯控制器[3]的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。
1.2设计的基本内容
根据计算机中状态机原理,利用VHDL设计汽车尾灯控制器的各个模块,并使用EDA 工具对各模块进行仿真验证。汽车尾灯控制器的设计分为4个模块:时钟分频模块、汽车尾灯主控模块,左边灯控制模块和右边灯控制模块。把各个模块整合后就形成了汽车尾灯控制器。通过输入系统时钟信号和相关的汽车控制信号,汽车尾灯将正确显示当前汽车的控制状态。
1.3 EDA的介绍
1.3.1 EDA技术的概念
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
1.3.2 EDA技术的特点
利用EDA技术进行电子系统的设计,具有以下几个特点:① 用软件的方式设计硬件;② 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③ 设计过程中可用有关软件进行各种仿真;④ 系统可现场编程,在线升级;⑤ 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。
1.3.3 EDA设计流程
典型的EDA设计流程如下:
1、文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本或图形方式表达出来。
2、编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。
3、 综合。将软件设计与硬件的可实现性挂钩,是将软件转化为硬件电路的关键步骤。
4、 行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。
5、适配。利用FPGA/CPLD布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。
6、 功能仿真和时序仿真。
7、 下载。如果以上的所有过程都没有发现问题,就可以将适配器产生的下载文件通过FPGA/CPLD下载电缆载入目标芯片中。
8、 硬件仿真与测试。
1.4硬件描述语言(VHDL)
1.4.1 VHDL的介绍
VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本
1.4.2 VHDL语言的特点
1.用VHDL代码而不是用原理图进行设计,意味着整个电路板的模型及性能可用计算机模拟进行验证。
2.VHDL元件的设计与工艺无关,与工艺独立,方便工艺转换。
3.VHDL支持各种设计方法,自顶向下、自底向上或者混合的都可以。
4.可以进行从系统级到逻辑级的描述,即混合描述。
5.VHDL区别于其他的HDL,已形成标准,其代码在不同的系统中可交换建模。
2.总体设计
2.1需求分析
根据现代交通规则,汽车尾灯控制器应满足以下基本要求:
1.汽车正常使用是指示灯不亮
2.汽车右转时,右侧的一盏灯亮
3.汽车左转时,左侧的一盏灯亮
4.汽车刹车时,左右两侧的指示灯同时亮
5.汽车夜间行驶时,左右两侧的指示灯同时一直亮,供照明使用
2.2汽车尾灯控制器的工作原理
汽车尾灯控制器就是一个状态机的实例。当汽车正常行驶时所有指示灯都不亮;当汽车向右转弯时,汽车右侧的指示灯RD1亮;当汽车向左侧转弯时,汽车左侧的指示灯LD1亮;当汽车刹车时,汽车右侧的指示灯RD2和汽车左侧的指示灯LD2同时亮;当汽车在夜间行驶时,汽车右侧的指示灯RD3和汽车左侧的指示灯LD3同时一直亮。通过设置系统的输入信号:系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车信号BRAKE,夜间行驶信号NIGHT和系统的输出信号:汽车左侧3盏指示灯LD1、LD2、LD3和汽车右侧3盏指示灯RD1、RD2、
RD3实现以上功能。系统的整体组装设计原理如图3.1所示。
图2.3整体组装设计原理
2.3 汽车运行状态表和总体框图
汽车尾灯和汽车运行状态表如表1所示。
汽车尾灯和汽车运行状态表1-1
开关控制 汽车运行状态 右转尾灯 左转尾灯
S0 S1S2 R1 R2R3 L1L2L3
00 0 正常运行 灯灭 灯灭
00 1 左转弯 灯灭 按L1L2L3顺序循环点亮
01 0 右转弯 按R1R2R3顺序循环点亮 灯灭
01 1 临时刹车/检测 所有尾灯同时点亮
10 0 倒车 所有尾灯按照转弯次序点亮
10 1 晚上行车时 R3 ,L3一直点亮
汽车尾灯控制电路设计总体框图如图1所示:
图1汽车尾灯控制电路设计总体框图
3.详细设计
3.1各组成模块
实现的主要功能是通过开关控制从而实现汽车尾灯的点亮方式。汽车尾灯控制器有4个模块组成,分别为:时钟分频模块、汽车尾灯主控模块,左边灯控制模块和右边灯控制模块,以下介绍各模块的详细设计。
3.2时钟分频模块
整个时钟分频模块的工作框图如图3.2所示。
图3.2时钟分频模块工作框图
时钟分频模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ARCHITECTURE ART OF SZ IS
SIGNAL COUNT:STD_LOGIC_VECTOR(7 DOWNTO 0)
BEGIN
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK = '1'THEN
COUNT <= COUNT + 1
END IF
END PROCESS
CP<= COUNT(3)
END ART
3.3 汽车尾灯主控模块
汽车尾灯主控模块工作框图如图3.3所示
图3.3 主控模块工作框图
汽车尾灯主控模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ARCHITECTURE ART OF CTRL IS
BEGIN
NIGHT_LED<=NIGHT
BRAKE_LED<=BAKE
PROCESS(LEFT,RIGHT)
VARIABLE TEMP:STD_LOGIC_VECTOR(1 DOWNTO 0)
BEGIN
TEMP:=LEFT &RIGHT
CASE TEMP IS
WHEN "00" =>LP<='0'RP<='0'LR<='0'
WHEN "01" =>LP<='0'RP<='1'LR<='0'
WHEN "10" =>LP<='1'RP<='0'LR<='0'
WHEN OTHERS=>LP<='0'RP<='0'LR<='1'
END CASE
END PROCESS
END ART
3.4左边灯控制模块
左边灯控制模块的工作框图如图3.4所示。
图3.4左边灯控制模块的工作框图
左边灯控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ARCHITECTURE ART OF LC IS
BEGIN
LEDB<=BRAKE
LEDN<=NIGHT
PROCESS(CLK,LP,LR)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF(LR ='0')THEN
IF(LP = '0')THEN
LEDL<='0'
ELSE
LEDL<='1'
END IF
ELSE
LEDL <='0'
END IF
END IF
END PROCESS
END ART
3.5右边灯控制模块
右边灯控制模块的工作框图如图3.5所示
图3.5 右边灯控制模块的工作框图
右边灯控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ARCHITECTURE ART OF RC IS
BEGIN
LEDB<=BRAKE
LEDN<=NIGHT
PROCESS(CLK,RP,LR)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF(LR = '0')THEN
IF(RP = '0')THEN
LEDR <='0'
ELSE
LEDR <= '1'
END IF
ELSE
LEDR <='0'
END IF
END IF
END PROCESS
END ART
4.系统仿真与调试
4.1分频模块仿真及分析
分频模块由VHDL程序实现后,其仿真图如图4.1所示
图4.1 分频模块仿真图
对其仿真图进行仿真分析:如图所示,首先生成一个600ns的时钟脉冲,通过时钟分频把600ns的脉冲分成一个40ns的脉冲,实现了信号同步。
4.2汽车尾灯主控模块仿真及分析
汽车尾灯主控模块由VHDL程序实现后,其仿真图如图4.2所示。
图4.2主控模块时序仿真图
对时序仿真图进行分析:RIGHT,LEFT,NIGHT,BRAKE 为输入信号,RIGHT为1表示右转,LEFT为1表示左转,NIGHT为1表示夜间行路,BRAKE为1表示刹车。RP,LP,NIGHT_LED,BRAKE_LED为输出信号。如图所示:当RIGHT为1时,产生一个RP为1的信号脉冲输出,当LEFT为1时,产生一个LP为1的信号脉冲输出,当NIGHT为1时,产生一个NIGHT_LED为1的信号脉冲输出。当BRAKE为1时,产生一个BRAKE_LED为1的信号脉冲输出。
4.3左边灯控制模块仿真及分析
左边灯控制模块由VHDL程序实现后,其仿真图如下图4.3所示。
对时序仿真图进行分析:LP,LR,NIGHT,BRAKE 为输入信号,LP为1表示左转,LR为1表示右转,NIGHT为1表示夜间行路,BRAKE为1表示刹车。LEDL,LEDB,LEDN为输出信号,表示汽车左侧的三盏灯。如图所示:当LP为1时,LEDL输出为1表示左侧灯亮,当BRAKE为1时,LEDB输出为1表示左侧灯亮,当NIGHT为1时,LEDN输出为1表示左侧灯亮。当LR为1时,左侧三盏灯输出均为0。即没有灯亮。
图4.3左边灯控制模块时序仿真图
4.4右边灯控制模块仿真及分析
右边灯控制模块由VHDL程序实现后,其仿真图如图4.4所示。
图4.4 右边灯控制模块时序仿真图
对时序仿真图进行分析:RP,LR,NIGHT,BRAKE 为输入信号,LR为1表示左转,RP为1表示右转,NIGHT为1表示夜间行路,BRAKE为1表示刹车。LEDR,LEDB,LEDN为输出信号,表示汽车右侧的三盏灯。如图所示:当RP为1时,LEDR输出为1表示右侧灯亮,当BRAKE为1时,LEDB输出为1表示右侧灯亮,当NIGHT为1时,LEDN输出为1表示右侧灯亮。当LR为1时,右侧三盏灯输出均为0。即没有灯亮。
4.5整个系统仿真及分析
按图2.3组装系统后的仿真图如下图4.5所示。
对时序仿真图进行分析:RIGHT,LEFT,NIGHT,BRAKE 为输入信号,RIGHT为1表示右转,LEFT为1表示左转,NIGHT为1表示夜间行路,BRAKE为1表示刹车。RD1,RD2,RD3为输出信号,表示汽车右侧的三盏灯。LD1,LD2,LD3为输出信号,表示汽车左侧的三盏灯。如图所示:当RIGHT为1时,RD1输出为1表示右侧灯亮,当LEFT为1时,LD1为输出为1表示左侧灯亮,当NIGHT为1时,LD2,RD2输出均为1,表示左,右两侧各有一盏灯亮。当BRAKE为1时,LD3,RD3输出均为1,表示左,右两侧各有一盏灯亮。
图4.5 整个系统仿真图
4.6 总体设计电路图
图4.6总体设计电路图
总结
通过两星期的紧张工作,最后完成了我的设计任务——汽车尾灯控制器的设计。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让同学们学以致用。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。
参考文献
[1] 王爱英.计算机组成与结构.北京:清华大学出版社,2001.2,
[2] 黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006
[3] 曹昕燕,周凤臣,聂春燕.EDA技术实验与课程设计.北京:清华大学出版社,2006.5
[4] 杨亦华,延明.数字电路EDA入门.北京:北京邮电大学出版社,2003
[5] 彭容修,《数字电子技术基础》, 武汉,武汉理工大学出版社,2005
[6] 潘松 ,黄继业《EDA技术与VHDL》,北京,清华大学出版社,2006
1、雾灯完全可以用申通,那玩意作用不大,真正碰到雾天,还是大灯+双跳+喇叭作用大;
2、大灯,申通主要差距不在那个生锈的铁片,而是加工精度,特别反光碗曲面的精确度,这直接决定了它的光照均匀度、照射范围、照射亮度,这些方面它远不如小糸;
3、申通大灯还有一个比较大的问题,就是远近光高度不匹配,很难找到一个远近光高度都合适的位置,这也是加工精度造成的;
4、尽管如此,如果你要改透镜,就完全用不到反光碗,可以用申通;
5、另外,如果你有足够自信可以通过DIY克服以上缺点,也可以用申通。
3个灯泡其中刹车灯和示宽灯是一个灯泡,5根线分别是一根搭铁线,转向灯,刹车灯,示宽灯,和倒车灯!分别打开各自的开关,一个一个找,非常好找,剩下最后的是搭铁线!
还有一根那就是雾灯线,货车的雾灯是独立一个的,有些车有线没灯!找对其它的,那个就好找了,
大众后尾转向灯原车亮一半,不可以全亮。可以去4S的售后吧,如果确认这个后箱盖子上面的灯是不亮的就没问题的。正常现象的。后面他有小灯,雾灯,刹车灯,倒车灯,不会一下子开大灯全亮的,也不能换led爆闪刹车灯,这样会亮故障灯的。
后尾灯工作原理
具有良好的汽车尾灯性能是汽车必不可少的,也是行车安全重要的一部分。汽车尾灯的闪烁并不是毫无规律的电动汽车控制器,它是根据汽车行驶的方向不断变化的。
按照设计要求汽车尾灯控制电路是由振荡电路、三进制计数器、译码电路、显示驱动电路和开关控制电路等电路组成。由于汽车左右转弯时,三个指示灯循环点亮,所以用三进制计数器控制译码器电路顺序输出低电平,从而控制尾灯按要求点亮。
后尾灯和刹车灯本来就是两根线,正常的接法就是使用两组灯来分别接线。并联的话那么开了尾灯,刹车灯就失去作用了。你弄了并联起来就好了。
刹车和行车灯在一个内腔里面的话,那么灯泡就是双脚的,里面有两组灯丝,行车的功率比较低,刹车的功率比较大,这样就是为了给后方人员识别你是正常行驶还是刹车了。
高位刹车灯
如果仔细观察的话,大家可以观察到一些新型轿车的后面中间较高的位置上有一个方形或长方形的红色刹车灯。这种灯的学名叫高位刹车灯,一般要比汽车尾部两侧的刹车灯高出一段距离。高位刹车灯的作用是警示后面行驶的车辆,从而避免发生追尾事故。
没有高位刹车灯的车辆,尤其是底盘较低的轿车和微型汽车,在刹车时由于后刹车灯位置较低,通常亮度也不够,其后面跟随行驶的车辆,特别是底盘较高的卡车、客车和公共汽车的司机有时很难看清楚。