好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

汽车尾灯控制.doc

6页
  • 卖家[上传人]:汽***
  • 文档编号:536887409
  • 上传时间:2023-04-15
  • 文档格式:DOC
  • 文档大小:102.01KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一 设计要求及其分析1.设计要求要求:(1)用8个发光二极管模拟8个汽车尾灯(左、右各4个,高电平点亮),用四个开关作为左转弯、右转弯、刹车、双闪控制信号(高电平有效) (2)当汽车往前行驶时,8灯全灭当汽车转弯时(左、右转弯开关不会同时有效),若右转弯,右边4个尾灯从左至右循环点亮,左边4个灯全灭若左转弯,左边4个尾灯从右至左循环点亮,右边4个灯全灭汽车刹车时(第2优先级),8个灯全亮双闪信号有效时(优先级最高)时,8个灯明、暗闪烁 (3)要求循环和闪烁时间间隔为500ms3)端口说明端口数据类型功能备注CLKSTD_LOGIC时钟信号输入LEFTSTD_LOGIC左转向信号输入RIGHTSTD_LOGIC左转向信号输入BRAKESTD_LOGIC刹车信号输入FLASHSTD_LOGIC双闪信号输入LAMPRSTD_LOGIC_VECTOR(3 downto 0)右灯输出输出LAMPLSTD_LOGIC_VECTOR(3 downto 0)左灯输出输出2.功能分析从以上设计要求,将本系统分成四个进程模块:汽车状态进程:该模块接收左转、右转、刹车、双闪和正常行驶的控制信号,根据所接受的信号控制左尾灯循环闪烁、右尾灯循环闪烁、刹车8个灯全亮、双闪明、暗闪烁。

      500ms时钟进程:利用计数分频,由于CPLD基本时钟为50MHZ,设计分频为25MHZ,实现500ms时钟左转控制进程:二.汽车尾灯控制 car 源码library ieee;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;entity car is port (clk: in std_logic; left:in std_logic;right:in std_logic;brake:in std_logic;flash:in std_logic;lampl:out std_logic_vector(3 downto 0); lampr:out std_logic_vector(3 downto 0)); end ; architecture one of car is signal counter:std_logic_vector(22 downto 0);signal clk1:std_logic;signal tmp1:std_logic_vector(3 downto 0);signal tmp2:std_logic_vector(3 downto 0);signal a3:std_logic_vector(3 downto 0);signal a4,a5:std_logic_vector(3 downto 0);begin----------分频控制进程-------------- process(clk) begin if clk'event and clk='1' then if counter=2500000 then clk1<=not clk1; counter<=(OTHERS =>'0'); else counter<=counter+1; end if; end if; end process;----------左转控制进程------------- process(clk1,left)begin if clk1'event and clk1='1' then if left='1' then if tmp1="0000" then tmp1<="0001"; elsif tmp1="1111" then tmp1<="0000"; else tmp1<=tmp1(2 downto 0)&'1'; end if; else tmp1<="0000"; end if; end if; end process;--------右转控制进程-------------- process(clk1,right) begin if clk1'event and clk1='1' then if right='1' then if tmp2="0000" then tmp2<="0001"; elsif tmp2="1111" then tmp2<="0000"; else tmp2<=tmp2(2 downto 0)&'1'; end if; else tmp2<="0000"; end if; end if;end process;--------闪烁控制进程-------------- process(clk1) begin if clk1'event and clk1='1' then if flash='1' then a3<=a3 xor "1111"; end if; end if;end process;---------汽车状态进程-------------- process(clk,flash,brake,left,right) begin a5<=flash & brake & left & right; case a5 iswhen "0000" =>lampl<="0000";lampr<="0000"; when "1000" =>lampl<=a3;lampr<=a3;when "1001" =>lampl<=a3;lampr<=a3;when "1010" =>lampl<=a3;lampr<=a3; when "1011" =>lampl<=a3;lampr<=a3;when "1100" =>lampl<=a3;lampr<=a3;when "1101" =>lampl<=a3;lampr<=a3; when "1110" =>lampl<=a3;lampr<=a3;when "1111" =>lampl<=a3;lampr<=a3; when "0100" =>lampl<="1111";lampr<="1111";when "0101" =>lampl<="1111";lampr<="1111";when "0110" =>lampl<="1111";lampr<="1111";when "0111" =>lampl<="1111";lampr<="1111"; when "0010" =>lampl<=tmp1;lampr<="0000"; when "0001" =>lampr<=tmp2;lampl<="0000"; when others =>null; end case;end process;end;三.心得体会这次EDA课程设计虽然短短的1个星期,加上由于端午节假日,时间比较仓促,我们通过自己上网查资料,在同学间的帮助下,结合本小组大家共同的努力总算苦尽甘来;但是自己学到了很多很多的东西,同时不仅可以巩固以前所学过的知识,加深了对MaxplusII软件的使用。

      通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣特别是当每一个子模块编写调试成功时,心里特别的开心但是在编写程序时,遇到了不少问题,特别是各进程的优先级,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气其次,在管脚锁定时也得细心,要不然灯的转向会出现错误,实现左转时向左的循环跑马灯,向右时向右的循环跑马灯双闪是全部闪烁,刹车时全亮的效果通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,提高自己的实际动手能力和独立思考的能力在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固总的来说,自己在这次设计中学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!四、参考文献1.EDA设计使用教程;2.CSDN下载频道;。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.