汽车尾灯控制电路 VHDL.doc
文本预览下载声明
可编程逻辑器件设计大作业
题 目 汽车尾灯控制电路
学 院
班 级
姓 名
学 号
2013年12月20日
题 目:汽车尾灯控制电路
设计要求:
假设汽车尾部左右两侧各有3个指示灯(用发光二极管模拟
1)汽车正常运行时指示灯全灭。
2)转弯时,右侧3个指示灯按右循印顺序点亮。
3)转弯时,左侧3个指示灯按左循别顺序点亮。
4)临时刹车时,所有指示灯随着P时钟脉冲同步闪烁。
2、顶层原理图:
三、单元模块设计
1、各模块功能
汽车尾灯主控模块工作框图如上图
左边灯控制模块的工作框图如上图
右边灯控制模块的工作框图如上图
2、VHDL源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
use ieee.STD_LOGIC_UNSIGNED.ALL;
ENTITY weideng IS --实体
port(clk,tright,tleft:IN STD_LOGIC; --端口说明
rightdeng:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
leftdeng:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));
END ENTITY weideng;
ARCHITECTURE qiche OF weideng IS --结构体部分
SIGNAL leftd:STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL rightd:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
control:PROCESS(clk,tleft,tright)
BEGIN
IF clkEVENT AND clk=1THEN
IF rightd=01THEN --右信号
rightd=11;
ELSE rightd=(rightd-1);
END IF;
IF leftd=01THEN --左信号
leftd=11;
ELSE leftd=(leftd-1);
END IF;
END IF;
END PROCESS control;
proout:PROCESS(clk,tright,tleft,rightd,leftd)
BEGIN
IF clkEVENT AND clk=1THEN
IF tright=1THEN --右信号有效时
leftdeng=000;
CASE rightd IS --右边灯的亮灭状态
WHEN01=rightdeng=001;
WHEN10=rightdeng=010;
WHEN11=rightdeng=100;
WHEN OTHERS=rightdeng=000;
END CASE;
ELSIF tright=0THEN --右信号无效
rightdeng=000; --右边3个灯全灭
END IF;
IF tleft=1THEN --左信号有效
rightdeng=000;
CASE leftd IS --左边灯的亮灭状态
WHEN01=leftdeng=100;
WHEN10= leftdeng=010;
WHEN11= leftdeng=001;
WHEN OTHERS= leftdeng=000;
END CASE;
ELSIF tleft=0THEN --左信号无效
leftdeng=000; --左边3个灯全灭
END IF;
END IF;
IF tleft=1AND tright=1 THEN --左右信号都有效时6个灯全亮
显示全部