当前位置:文档之家› 汽车尾灯设计VHDL语言--EDA课程设计

汽车尾灯设计VHDL语言--EDA课程设计

汽车尾灯设计VHDL语言--EDA课程设计
元件列化部分

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity tp is

Port(clk:in std_logic;

Left:in std_logic;

Right:in std_logic;

Brake:in std_logic;

Night:in std_logic;

Ld1,ld2,ld3:out std_logic;

Rd1,rd2,rd3:out std_logic);

End;

Architecture bh of tp is

Signal tmp0,tmp1,tmp2,tmp3,tmp4:std_logic;

Signal err0,err1,err2,err3,err4,err5:std_logic;

signal bm:std_logic;

Begin

Component sz is

Port(clk:in std_logic;

Cp:out std_logic);

End component;

Component ctrl is

Port(left,right,brake,night:in std_logic;

Lp,rp,lr,brake_led,night_led:out std_logic);

End component;

Component lc is

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

Ledl,ledb,ledn:out std_logic);

End component;

Component rc is

Port(clk,rp,lr,brake,night:in std_logic;

Ledr,ledb,ledn:out std_logic);

End component;

U1:sz port map(clk,bm);

U2:ctrl port map(left,right,brake,night,tmp0,tmp1,tmp2,tmp3,tmp4);

U3:lc port map(clk,tmp0,tmp2,tmp3,tmp4,err0,err1,err2);

U4:rc port map(clk,tmp1,tmp2,tmp3,tmp4,err3,err4,err5);

Ld1<=err0 and bm;

Ld2<=err1;

Ld3<=err2;

Rd1<=err3 and bm;

Rd2<=err4;

Rd3<=err5;

End;

汽车尾灯主控制模块CTRL:
LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY CTRL IS

PORT(LEFT,RIGHT,BRAKE,NIGHT: IN STD_LOGIC;

LP,RP,LR,BRAKE_LED,NIGHT_LED: OUT STD_LOGIC);

END ENTITY CTRL;

ARCHITECTURE ART OF CTRL IS

BEGIN

NIGHT_LED<=NIGHT;

BRAKE_LED<=BRAKE;

PROCESS(LEFT,RIGHT)

VARIABLE TEMP:STD_LOGIC_VECTOR(1 DOWNTO 0);

BEGIN

TEMP:=LEFT&RIGHT;

CASE TEMP IS

WHEN "00"=>LP<='0';RP<='0';LR<='0';

WHEN "01"=>LP<='0';RP<='1';LR<='0';

WHEN "10"=>LP<='1';RP<='0';LR<='0';

WHEN OTHERS=>LP<='0';RP<='0';LR<='1'; --输出错误控制信号

END CASE;

END PROCESS;

END ARCHITECTURE ART;



时钟分频模块SZ:
LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY SZ IS

PORT(CLK: IN STD_LOGIC; --时钟输入

CP: OUT STD_LOGIC);

END ENTITY SZ;

ARCHITECTURE ART OF SZ IS

SIGNAL COUNT:STD_LOGIC_VECTOR(7 DOWNTO 0); --定义八位标准逻辑位矢量数据类型

BEGIN

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿

COUNT<=COUNT+1;

END IF;

END PROCESS;

CP<=COUNT(3); --输出第五位

END ARCHITECTURE ART;

右边尾灯控制模块RC:
LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY RC IS

PORT(CLK,RP,LR,BRAKE,NIGHT: IN STD_LOGIC;

LEDR

,LEDB,LEDN: OUT STD_LOGIC);

END ENTITY RC;

ARCHITECTURE ART OF RC IS

BEGIN

LEDB<=BRAKE;

LEDN<=NIGHT;

PROCESS(CLK,RP,LR)

BEGIN

IF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿

IF(LR='0') THEN

IF(RP='0') THEN

LEDR<='0';

ELSE

LEDR<='1';

END IF;

ELSE

LEDR<='0';

END IF;

END IF;

END PROCESS;

END ARCHITECTURE ART;

左边尾灯控制模块LC:
LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LC IS

PORT(CLK,LP,LR,BRAKE,NIGHT: IN STD_LOGIC;

LEDL,LEDB,LEDN: OUT STD_LOGIC);

END ENTITY LC;

ARCHITECTURE ART OF LC IS

BEGIN

LEDB<=BRAKE;

LEDN<=NIGHT;

PROCESS(CLK,LP,LR)

BEGIN

IF CLK'EVENT AND CLK='1' 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 ART;


相关主题
文本预览
相关文档 最新文档