EDA汽车尾灯控制器设计报告

《EDA技术应用》

课程设计报告

    业:   通信工程           

    级:                        

    名:                        

指导教师:                       

0一二  12  2   

1. 设计任务和要求......................................................................... 2

1.1设计任务............................................................................... 2

1.2设计要求............................................................................... 2

2. 设计方案..................................................................................... 3

3. 各模块设计................................................................................. 3

3.1主控模块............................................................................... 3

3.2右边灯控制模块................................................................... 5

3.3左边灯控制模块................................................................... 7

3.4时钟分频模块....................................................................... 9

3.5顶层文件(ourdesign.vhd)........................................ 11

4.整体设计..................................................................................... 12

4.1系统仿真图......................................................................... 12

4.2系统电路图......................................................................... 13

5.硬件测试..................................................................................... 14

5.1端口设置............................................................................. 14

5.2测试结果............................................................................. 15

6.心得体会..................................................................................... 15

7.指导教师意见............................................................................. 15

8 .参考文献...................................................................................... 16

                  

                    汽车尾灯控制器的设计

1.设计任务及要求

1.1设计任务

       假设汽车尾部左右两侧各有3盏指示灯,其控制功能应包括:

(1)  汽车正常行驶时指示灯都不亮。

(2)  汽车右转弯时,右侧的一盏指示灯亮。

(3)  汽车左转弯时,左侧的一盏指示灯亮。

(4)  汽车刹车时,左右两侧的一盏指示灯同时亮。

(5)  汽车在夜间行驶时,左右两侧的一盏指示灯同时一直亮,供照明使用。

1.2设计要求

(1) 采用VHDL语言编写程序,并在QuartusII工具平台中进行开发,下载到EDA实验箱进行验证。

(2) 编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。

2.设计方案

大致设计方案: 根据系统设计要求,系统设计采用自顶向下的设计方法,顶层设计采用原理图设计方案,它是由时钟分频模块、汽车尾灯主控模块、左边灯控制模块、右边灯控制模块四部分组成。

           

系统的输入信号包括:系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车信号BRAKE,夜间行驶信号NIGHT。

系统的输出信号包括:汽车左侧3 盏指示灯LLED1,LLED2,LLED3和汽车右侧3 盏指示灯RLED1,RLED2,RLED3。

当汽车正常行驶时所有的指示灯都不亮,当汽车向左转时,汽车左边的指示灯LLED1亮,当汽车向右转时,汽车右边的指示灯RLED1亮,当汽车刹车时,左右的LLED2、RLED2亮,当汽车夜间行驶时,汽车左右的LLED3、RLED3一直亮。

通过编写相关VHDL语言程序实现以上功能,将四个模块的各个程序编写出来作为相应的底层文件,然后再设计一个顶层文件将四个不同模块连接起来,实现成整体的程序。通过不同模块生成相应的元件,将生成的各个元件按功能进行连接形成整体的设计电路。在完成编程后,再进行功能,时序仿真,最后进行硬件检测。

系统的整体组装设计原理如图所示

3各组成模块原理及相应的程序

3.1汽车尾灯主控模块

                   

a. 数据入口 :                                                   

    LEFT:左转信号;             

 RIGHT:右转信号;                   

 BRAKE:刹车信号;          

    LR:错误控制信号;

    NIGHT:夜间行驶信号;                                               

b.数据出口:

     LP:左侧灯控制信号;

     RP:右侧灯控制信号;

    BRAKE_LED:刹车控制信号;

    NIGHT_LED:夜间行驶控制信号;

c.模块VHDL程序(MC.vhd)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY MC IS

PORT(LEFT,RIGHT,BRAKE,NIGHT:IN  STD_LOGIC;     --设定四个输入

LP,RP,LR,BRAKE_LED,NIGHT_LED:OUT  STD_LOGIC);   --设定五个输出

END MC;

ARCHITECTURE ART OF MC 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 ART;

d.功能:

 该段程序用于对汽车尾灯进行整体控制,当输入为左转信号时,输出左侧灯控制信号;当输入为右转信号时,输出右侧灯控制信号;当同时输入LEFT和RIGHT信号时,输出错误控制信号。当输入为刹车信号时,输出刹车控制信号;当输入为夜间行驶信号时,输出为夜间行驶控制信号。

仿真图:

   

3.2右边灯控制模块

            

a.数据入口:                            

CLK:时钟控制信号;                 

RP:右侧灯控制信号;                

LR:错误控制信号;                  BRAKE:刹车控制信号;

   NIGHT:夜间行驶控制信号;

 b.数据出口:

LEDR:右侧RD1灯控制信号;

LEDB:右侧RD2灯控制信号;

 LEDN:右侧RD3灯控制信号;

C.模块VHDL程序(RC.vhd)

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;

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 ART;

d.功能:

       本描述用于控制右侧灯的亮、灭和闪烁情况,当时钟上升沿信号和右侧灯控制信号或刹车控制信号或夜间行驶信号同时出现时,右侧相应的灯亮或出现闪烁。当错误控制信号出现时,RD1灯不亮。

3.3左边灯控制模块

                

a.数据入口:                                         

   LP:左侧灯控制信号;             

   LR:错误控制信号;                 

   BRAKE:刹车控制信号;

   NIGHT:夜间行驶控制信号;

 b.数据出口:

    LEDL:左侧LD1灯控制信号;

    LEDN:左侧LD3灯控制信号;

    LEDB:左侧LD2灯控制信号; 

    CLK:时钟控制信号;

c.模块VHDL程序(LC.vhd)

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;

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 ART; 

功能:

本程序用于控制左侧灯的亮、灭和闪烁情况,当时钟上升沿信号和左侧灯控制信号或刹车控制信号或夜间行驶信号同时出现时,左侧相应的灯亮或出现闪烁。当错误控制信号出现时,LD1灯不亮。

仿真图:

时序仿真

仿真图:

时序仿真

3.4时钟分频模块

模块VHDL程序(CLK_1.vhd)

                            

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CLK_1 IS  

PORT(CLK:IN STD_LOGIC;       

CP:OUT STD_LOGIC);

END;

ARCHITECTURE ART OF CLK_1 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(2); --进行8分频

END ART;

功能:

     这块的功能是对左右两边的LLED1、RLED1的闪烁时间间隔,以CLK为输入信号,  CP为输出信号,在程序中定义一个八位节点信号COUNT来放计数值,当CLK的上升沿到来时就开始计数,最后将COUNT(2)给CP,实现对CLK的8分频。

     再将CP的电平信号分别和LEDL、LEDR电平与,最后用输出的电平来控制汽车左右的LLED1、RLED1,实现左右转的指示功能。

仿真图:

3.5顶层文件(ourdesign.vhd)

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity ourdesign 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 aabb of ourdesign is

Component CLK_1 is

Port(clk:in std_logic;

Cp:out std_logic);

End component;

Component MC 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;

Signal t0,t1,t2,t3,t4:std_logic;           --定义中间信号以方便元件例化

Signal e0,e1,e2,e3,e4,e5:std_logic;

signal tm:std_logic;

begin

U1:CLK_1 port map(clk,tm);

U2:MC port map(left,right,brake,night,t0,t1,t2,t3,t4);

U3:LC port map(clk,t0,t2,t3,t4,e0,e1,e2);

U4:RC port map(clk,t1,t2,t3,t4,e3,e4,e5);

Ld1<=e0 and tm;

Ld2<=e1;

Ld3<=e2;

Rd1<=e3 and tm;

Rd2<=e4;

Rd3<=e5;

End architecture aabb;                                                                                                             

功能:采用元件例化的设计方法将各个底层模块连接起来,整体完成汽车尾灯能。

4.整体设计

4.1系统仿真图

时序仿真

4.2系统电路图

5.硬件测试

选用硬件芯片为EP1K30T144-3

5.1端口设置

输入端口:

Clk-----------------PIN125选用1Hz脉冲

     开关控制

LEFT------------PIN32-----------SW1

RIGHT------------PIN33---------SW2

BRAKE------------PIN36--------SW3

NIGHT------------PIN37---------SW4

输出端口:

     彩灯显示

LD1------------PIN31---------------D112

LD2------------PIN30---------------D111

LD3------------PIN29---------------D110

RD1------------PIN26---------------D107

RD2------------PIN27---------------D108

RD3------------PIN28---------------D109

5.2测试结果

当打开单独左转开关,D112(LD1)亮;当打开单独右转开关,D107(RD1)亮;当左右同时打开时,D112,D107(LD1,RD1)都不亮;当打开夜行或刹车开关时,D111和D108(LD2和RD2)都亮或D110和D109(LD3和RD3)都亮。

6.心得体会

本次实验中,我主要负责的是左右边灯控制模块,在实验过程中有一些困难,但是我对EDA技术有了更深的了解。同时在同学的帮助下我初步学会了采用自顶向下的系统设计方法设计系统,掌握了利用VHDL语言进行简单的电路模块设计。经过这次实验,让我将书本上的知识运用到实际上去,也培养了实际操作能力,知道如何去分析,设计并解决问题,遇到问题如何改进,如何在多种方法中去找到最简单使用的方法。

本次实验最有感悟的是自顶向下的设计方法,每个人分别完成独立的模块,在通过综合完成顶层文件,思路清晰。

再者是我负责的左右灯模块设计,通过小组成员的帮忙最后顺利完成,在该设计中一定得有一个时钟脉冲,然后是每一数据输入对应的功能,输出对应的功能,及它们之间的关系是怎样的要很清楚。是如何可控制的,怎样在输出端体现都要认真想清楚。

在此次设计过程中,不仅要求我们掌握扎实的理论知识,分析问题能从根本原理出发,联系实际解决问题,还要求我们要特别有耐心,稍有不慎,一个小小的错误就会导致结果的不正确,检测过程也要很仔细,反复调试,直到程序顺利通过。

通过本次实验,我收获不少,想想对以后的学习会很有帮助。

7.指导教师意见

参考文献

[1]      柴诚敬,刘国维,李阿娜,《化工原理课程设计》,天津,天津科学技术出版社,1994

【2】邹彦、庄严等编.EDA技术与数字系统设计.北京:电子工业出版社,20##年

【3】谭慧生,张昌凡,《EDA技术及应用》,西安电子科技大学出版社,20##年

相关推荐