汽车尾灯控制器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汽车尾灯控制器

12. 13

2 汽车尾灯控制器

1.1系统需求分析

根据现代交通规则,汽车尾灯控制器应满足以下基本要求:

1.汽车正常使用是指示灯不亮

2.汽车右转时,右侧的一盏灯亮

3.汽车左转时,左侧的一盏灯亮

4.汽车刹车时,左右两侧的指示灯同时亮

5.汽车夜间行驶时,左右两侧的指示灯同时一直亮,供照明使用

1.2汽车尾灯控制器的工作原理

汽车尾灯控制器就是一个状态机的实例。当汽车正常行驶时所有指示灯都不亮;当汽车向右转弯时,汽车右侧的指示灯rd1亮;当汽车向左侧转弯时,汽车左侧的指示灯ld1亮;当汽车刹车时,汽车右侧的指示灯rd2和汽车左侧的指示灯ld2同时亮;当汽车在夜间行驶时,汽车右侧的指示灯rd3和汽车左侧的指示灯ld3同时一直亮。通过设置系统的输入信号:系统时钟信号clk,汽车左转弯控制信号left,汽车右转弯控制信号right,刹车信号brake,夜间行驶信号night和系统的输出信号:汽车左侧3盏指示灯ld1、ld2、ld3和汽车右侧3盏指示灯rd1、rd2、rd3实现以上功能。系统的整体组装设计原理如图1.1所示。

图1.1 系统的整体组装设计原理

汽车尾灯控制器有4个模块组成,分别为:时钟分频模块、汽车尾灯主控模块,左边灯控制模块和右边灯控制模块,以下介绍各模块的详细设计。

1.3.1时钟分频模块

整个时钟分频模块的工作框图如图1.2所示。

图1.2时钟分频模块工作框图

时钟分频模块由VHDL程序来实现,下面是其VHDL代码:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity fenpin is

port(

clk : in std_logic;

q : out std_logic

);

end entity fenpin;

architecture behave of fenpin is

signal count:std_logic_vector(7 downto 0);

begin

process(clk)

begin

if rising_edge(clk) then

count<=count+1;

end if;

end process;

1.3.2 汽车尾灯主控模块

汽车尾灯主控模块工作框图如图3.3所示。

.

图1.3 主控模块工作框图

汽车尾灯主控模块由VHDL 程序来实现,下面是其段VHDL 代码: library ieee;

use ieee.std_logic_1164.all;

entity contrl is port( left,right,brake,night : in std_logic;

lp,rp,lr,brake_led,night_led :out std_logic

); end entity contrl;

architecture behave of contrl is begin

night_led<=night; brake_led<=brake; process(left,right)

variable temp:std_logic_vector(1 downto 0); begin

temp:=left & right;

when "01"=> lp<='0';rp<='1';lr<='0';

when "10"=> lp<='1';rp<='0';lr<='0';

when others=> lp<='0';rp<='0';lr<='0';

end case;

end process;

end architecture behave;

1.3.3左边灯控制模块

左边灯控制模块的工作框图如图3.4所示。

图1.4左边灯控制模块的工作框图

左边灯控制模块由VHDL程序来实现,下面是其VHDL代码:library ieee;

use ieee.std_logic_1164.all;

entity left_ctl is

port(

clk,lp,lr,brake,night:in std_logic;

ledl,ledb,ledn :out std_logic

);

end entity left_ctl;

architecture behave of left_ctl is

begin

process(clk,lp,lr)

begin

if rising_edge(clk) 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 architecture behave;

1.3.4右边灯控制模块

右边灯控制模块的工作框图如图3.5所示。

图1.5 右边灯控制模块的工作框图

右边灯控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:library ieee;

use ieee.std_logic_1164.all;

entity right_ctl is

port(

相关文档
最新文档