汽车尾灯控制器12. 132 汽车尾灯控制器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 isport(clk : in std_logic;q : out std_logic);end entity fenpin;architecture behave of fenpin issignal count:std_logic_vector(7 downto 0);beginprocess(clk)beginif rising_edge(clk) thencount<=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 beginnight_led<=night; brake_led<=brake; process(left,right)variable temp:std_logic_vector(1 downto 0); begintemp:=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 isport(clk,lp,lr,brake,night:in std_logic;ledl,ledb,ledn :out std_logic);end entity left_ctl;architecture behave of left_ctl isbeginprocess(clk,lp,lr)beginif rising_edge(clk) thenif(lr='0') thenif(lp<='0') thenledl<='0';elseledl<='1';end if;elseledl<='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 isport(end entity right_ctl;architecture behave of right_ctl isbeginledb<=brake;ledn<=night;process(clk,rp,lr)beginif rising_edge(clk) thenif(lr='0') thenif(rp<='0') thenledr<='0';elseledr<='1';end if;elseledr<='0';end if;end if;end process;end architecture behave;2系统仿真2.1分频模块仿真及分析分频模块由VHDL程序实现后,其仿真图如图2.1所示。
图2.1 分频模块仿真图2.2汽车尾灯主控模块仿真及分析汽车尾灯主控模块由VHDL程序实现后,其仿真图如图2.2所示。
图2.2主控模块时序仿真图对时序仿真图进行分析:right,left,night,brake 为输入信号,right为1表示右转,leftT为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左边灯控制模块由VHDL程序实现后,其仿真图如图2.3所示。
图2.3左边灯控制模块时序仿真图对时序仿真图进行分析:lp,lr,night,brake 为输入信号,lp为1表示左转,lr 为1表示右转,night为1表示夜间行路,brakeE为1表示刹车。
ledl,ledb,ledn为输出信号,表示汽车左侧的三盏灯。
如图所示:当lp为1时,ledl输出为1表示左侧灯亮,当brake为1时,ledb输出为1表示左侧灯亮,当night为1时,ledn输出为1表示左侧灯亮。
当lr为1时,左侧三盏灯输出均为0。
即没有灯亮。
2.4右边灯控制模块仿真及分析右边灯控制模块由VHDL程序实现后,其仿真图如图4.4所示。
汽车尾灯控制器12. 1310图2.4右边灯控制模块时序仿真图对时序仿真图进行分析:rp,lr,night,brake 为输入信号,lr为1表示左转,rp为1表示右转,night为1表示夜间行路,brakeE为1表示刹车。
ledr,ledbB,ledn为输出信号,表示汽车右侧的三盏灯。
如图所示:当rp为1时,ledr输出为1表示右侧灯亮,当brake为1时,ledb输出为1表示右侧灯亮,当night为1时,ledn输出为1表示右侧灯亮。
当lr为1时,右侧三盏灯输出均为0。
即没有灯亮。
2.5整个系统仿真及分析按图3.1组装系统后的仿真图如图4.5所示。
图2.5 整个系统仿真图对时序仿真图进行分析:right,left,night,brake 为输入信号,right为1表示汽车尾灯控制器201211右转,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,表示左,右两侧各有一盏灯亮。
3 硬件电路部分 3.1芯片的选择CPLD 采用Altera 新一代的MaxII 器件EPM570T100C5,配合QuartusII 可以很容易实现CPLD 的开发,模块具有4位键盘输入,4位开关量输入,8个动态LED 显示,1个静态LED 显示,8个发光管,1个蜂鸣器,用于完成试验,同时引出了3.3V 的IO 口,方便模块的扩展。
程序下载方法采用ByteBlaster ,本模块下载时,插上跳线帽JP214~JP217;其他模块下载时拔下跳线帽JP214~JP217。
3.1.1芯片的选择(图2.6)图2.6汽车尾灯控制器12. 1312 3.1.2 详细连线图(如图2.7)图 2.73.2输入输出接口的选择3.2.1开关量输入接口(S205~S208)表F.3-3 拨盘开关输入接口名称EPM507引脚号输入电平备注接口S205 33 左为0,右为1 电平输入left S206 34 左为0,右为1 电平输入right S207 35 左为0,右为1 电平输入brake S208 36 左为0,右为1 电平输入night3.2.2发光管输出(D201~D208)表F.3-4 发光管输出4 试验总结通过两星期的紧张工作,最后完成了我们的设计任务——汽车尾灯控制器的设计。
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性。
在设计中要求我们要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,我也积累了一定的经验,相信对以后从事集成电路设计工作会有一定的帮助。