VHDL 汽车尾灯报告

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

实验报告

实验项目名称:汽车尾灯的设计

一、实验目的

掌握VHDL程序设计方法

二、实验内容和要求

共6个尾灯,汽车正常行驶时,6个灯全灭;

左转时,左边3个灯从右到左依次亮灭;

右转时,右边3个灯从左到右依次亮灭;

刹车时,车灯全亮;故障时,全部闪烁。

在软件工具平台上,进行VHDL语言的各模块编程输入、编译实现和仿真验证。

三、设计思想

首先设置5种状态,即正常行驶“000”,左转“001”,右转“010”,刹车“011”,故障“100”,这里用CONTROL的三位二进制来表示汽车的行驶状态。然后6个二极管和5个状态一一对应,并依据引入的时钟信号在上升沿发光二极管发生响应并循环,直到改变状态。这里用LAMP6S表示6个发光二极管的状态。

四、源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY CAR IS

PORT(CLK:IN STD_LOGIC;--normaldriving:000, left:001, right:010, brake:011, breakdown:100 CONTROL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);

LAMP6S:BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0):="000000");

END;

ARCHITECTURE one OF CAR IS

SIGNAL LK:STD_LOGIC:='1';

SIGNAL CONTORL:STD_LOGIC_VECTOR(2 DOWNTO 0);

BEGIN

PROCESS(CLK,CONTROL)

BEGIN

IF CLK'EVENT AND CLK='1' THEN

CASE CONTROL IS

WHEN "000"=>LAMP6S<="000000";--normaldriving

WHEN "001"=> CASE LAMP6S IS

WHEN "000000"=>LAMP6S<="001000";

WHEN "001000"=>LAMP6S<="010000";

WHEN "010000"=>LAMP6S<="100000";

WHEN OTHERS=>LAMP6S<="001000";

END CASE;

WHEN "010"=> CASE LAMP6S IS

WHEN "000000"=>LAMP6S<="000100";

WHEN "000100"=>LAMP6S<="000010";

WHEN "000010"=>LAMP6S<="000001";

WHEN OTHERS=>LAMP6S<="000100";

END CASE;

WHEN "011"=>LAMP6S<="111111";--brake

WHEN "100" =>LK<=NOT(LK);IF LK='1' THEN LAMP6S<="000000";

ELSE LAMP6S<="111111";

END IF;

WHEN OTHERS=>NULL;

END CASE;

END IF;

END PROCESS;

END;

仿真波形如下:

其中LAMP6S中的345是左转灯,左转时(CONTROL为001),左边3个灯从右到左依次亮灭,而右边灯全灭;012是右转灯,右转时(CONTROL为010),右边3个灯从左到右依次亮灭,而左边灯全灭;刹车时(CONTROL为011),车灯全亮;故障时(CONTROL为100),全部闪烁。正常行驶时(CONTROL为000),灯全灭。

五、总结

通过本次实验,我们更进一步地掌握了VHDL程序设计方法,并熟悉了利用双重case语句来实现多重循环的要求。

相关文档
最新文档