基于FPGA的汽车尾灯控制器设计

1.1设计目的

本次设计的目的是通过实践深入理解计算机组成原理、EDA技术[2]并掌握VHDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,将VHDL语言与电子电路设计知识理论相结合,掌握课程知识和基本单元电路的综合设计应用。通过实际汽车尾灯控制器的设计[3],巩固和综合运用所学知识,提高IC设计能力,提高计算机技术分析和解决实际问题的独立工作能力。

1.2设计的基本内容

根据计算机中状态机的原理,用VHDL语言设计了汽车尾灯控制器的模块,并用EDA工具对模块进行了仿真和验证。汽车尾灯控制器的设计分为四个模块:时钟分频模块、汽车尾灯主控模块、左灯控制模块和右灯控制模块。将各个模块集成后,就形成了汽车尾灯控制器。通过输入系统时钟信号和相关的汽车控制信号,汽车尾灯将正确显示当前的汽车控制状态。

1.3 EDA简介

1.3.1 EDA技术的概念

EDA(电子设计自动化)是电子设计自动化(Electronic Design Automation)的缩写,它是在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术是将计算机作为一种工具来使用。在EDA软件平台上,设计人员使用硬件描述语言HDL完成设计文件,然后计算机自动完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至针对特定目标芯片的适配编译、逻辑映射和编程下载。

1.3.2 EDA技术的特点

利用EDA技术设计电子系统具有以下特点:①用软件设计硬件;(2)由软件设计的系统到硬件系统的转换由相关开发软件自动完成;(3)设计过程中可以通过相关软件进行各种模拟;④系统可现场编程,在线升级;⑤整个系统可以集成在一个芯片上,体积小,功耗低,可靠性高。因此,EDA技术是现代电子设计的发展趋势。

1.3.3 EDA设计流程

典型的EDA设计流程如下:

1,文字/原理图编辑修改。首先,利用EDA工具的文本或图形编辑器,将设计者的设计意图用文本或图形表达出来。

2.编译。设计描述完成后,可以通过编译器进行调试和编译,变成特定的文本格式,为下一步的综合做准备。

3.合成。将软件设计与硬件实现联系起来是将软件转化为硬件电路的关键步骤。

4.行为模拟和功能模拟。生成的网表文件用于功能仿真,以了解设计描述和设计意图之间的一致性。

5、改编。使用FPGA/CPLD布局适配器,将合成的网表文件逻辑映射到特定的目标器件,包括底层器件配置、逻辑划分、逻辑优化和布局。适配报告指示芯片中资源的分配和利用、管脚锁定和设计的布尔方程描述。

6.功能模拟和时序模拟。

7.下载。如果以上所有过程都没有发现问题,则可以通过FPGA/CPLD下载线将适配器生成的下载文件加载到目标芯片中。

8.硬件模拟和测试。

1.4硬件描述语言(VHDL)

1.4.1 VHDL简介

VHDL(超高速集成电路硬件描述语言)主要用于描述数字系统的结构、行为、功能和接口。除了许多带有硬件特征的句子外,VHDL的语言形式、描述风格和语法与通用计算机高级语言非常相似。VHDL的程序结构的特点是将一个工程设计,或设计实体(可以是一个部件、一个电路模块或一个系统)分为外部(或部件和端口)和内部(或不可见部分),既涉及实体的内部功能,也涉及算法完成部分。定义了一个设计实体的外部接口后,一旦其内部开发完成,其他设计就可以直接调用这个实体。这种将设计实体分为内部和外部部分的概念是VHDL系统设计的基础。

1.4.2 VHDL语言的特点

1.用VHDL代码代替原理图进行设计,意味着可以通过计算机仿真来验证整个电路板的模型和性能。

2.2的设计。VHDL组件与进程无关,独立于进程,便于进程转换。

3.VHDL支持各种设计方法,自顶向下、自底向上或混合。

4.可以从系统级到逻辑级进行描述,即混合描述。

5.VHDL不同于其他HDL,已经形成了标准,其代码可以在不同的系统中交换进行建模。

2.总设计

2.1需求分析

根据现代交通规则,尾灯控制器应满足以下基本要求:

1.汽车正常使用时,指示灯熄灭。

当汽车向右转时,右边的一盏灯就亮了。

当汽车向左转时,左侧的一盏灯亮了。

汽车刹车时,左右指示灯同时亮。

汽车夜间行驶时,左右指示灯一直亮着照明。

2.2汽车尾灯控制器的工作原理

尾灯控制器是状态机的一个例子。汽车正常行驶时,指示灯全部熄灭;汽车右转时,汽车右侧指示灯RD1亮起;汽车左转时,汽车左侧的指示灯LD1亮;汽车刹车时,汽车右侧指示灯RD2和汽车左侧指示灯LD2同时亮;汽车夜间行驶时,汽车右侧的指示灯RD3和汽车左侧的指示灯LD3一直亮着。通过设置系统的输入信号:系统时钟信号CLK、车辆左转控制信号LEFT、车辆右转控制信号RIGHT、刹车信号BRAKE、夜间行驶信号和系统的输出信号:车辆左侧三个指示灯LD1、LD2、LD3和车辆右侧三个指示灯RD1、RD2、

RD3实现了以上功能。系统的总体装配设计原理如图3.1所示。

图2.3整体组件的设计原理

2.3汽车运行状态表及总体框图

汽车尾灯和汽车行驶状态表见表1。

汽车尾灯和汽车运行状态表1-1

开关控制汽车的运行状态,右转向灯,左转向灯。

s0 s 1 S2 r 1 r2r 3 l 1l2l 3

0 0 0正常运行灯熄灭。

0 0 1左转向灯按照L1L2L3的顺序关闭和打开。

0 1 0右转,按R1R2R3的顺序开灯。

0 1 1临时制动/检测所有尾灯同时亮。

100倒车时所有尾灯依次点亮。

1 0 1 R3和L3在夜间行驶时一直开着。

汽车尾灯控制电路设计总体框图如图1所示:

图1汽车尾灯控制电路设计总体框图。

3.详细设计

3.1每个组件模块

主要功能是通过开关控制实现汽车尾灯的点亮模式。汽车尾灯控制器由四个模块组成,分别是:时钟分频模块、汽车尾灯主控模块、左灯控制模块和右灯控制模块。下面介绍各个模块的详细设计。

3.2时钟分频模块

整个时钟分频模块的工作框图如图3.2所示。

图3.2时钟分频模块工作框图

时钟分频模块用VHDL程序实现,以下是一段VHDL代码:

深圳的建筑艺术是

信号计数:STD _ LOGIC _ VECTOR(7 down to 0);

开始

流程(CLK)

开始

如果CLK事件和CLK = '1 '那么

计数& lt= COUNT+1;

结束IF;

结束进程;

CP & lt= COUNT(3);

结束艺术;

3.3汽车尾灯主控模块

汽车尾灯主控模块的工作框图如图3.3所示。

图3.3主控模块工作框图

汽车尾灯主控模块是用VHDL程序实现的,下面是一段VHDL代码:

建筑艺术的CTRL是

开始

NIGHT _ LED & lt=夜晚;

BRAKE _ LED & lt=烘焙;

流程(左、右)

变量TEMP:STD _ LOGIC _ VECTOR(1 down to 0);

开始

温度:=左& amp对;

外壳温度为

当" 00" = >时;LP & lt='0';RP & lt='0';LR & lt='0';

当" 01" = >时;LP & lt='0';RP & lt='1';LR & lt='0';

当" 10" = >LP & lt='1';RP & lt='0';LR & lt='0';

当别人= & gtLP & lt='0';RP & lt='0';LR & lt='1';

结束案例;

结束进程;

结束艺术;

3.4左侧灯控制模块

左侧灯光控制模块的工作框图如图3.4所示。

图3.4左侧灯光控制模块工作框图

左灯控制模块用VHDL程序实现,以下是一段VHDL代码:

LC的建筑艺术是

开始

LEDB<=刹车;

LEDN & lt=夜晚;

流程(CLK、LP、LR)

开始

如果CLK事件和CLK = '1 '那么

如果(LR ='0 ')则

如果(LP = '0 ')那么

LEDL<='0';

其他

LEDL<='1';

结束IF;

其他

LEDL <='0';

结束IF;

结束IF;

结束进程;

结束艺术;

3.5右侧灯光控制模块

右侧灯光控制模块的工作框图如图3.5所示。

图3.5右侧灯光控制模块工作框图

右灯控制模块是用VHDL程序实现的,下面是一段VHDL代码:

RC的建筑艺术是

开始

LEDB<=刹车;

LEDN & lt=夜晚;

流程(CLK、RP、LR)

开始

如果CLK事件和CLK = '1 '那么

如果(LR = '0 ')则

如果(RP = '0 ')则

LEDR <='0';

其他

LEDR <= '1';

结束IF;

其他

LEDR <='0';

结束IF;

结束IF;

结束进程;

结束艺术;

4.系统模拟和调试

4.1分频模块的仿真与分析

分频模块用VHDL程序实现后,其仿真图如图4.1所示。

图4.1分频模块仿真图

仿真图仿真分析:如图所示,首先产生一个600ns的时钟脉冲,通过时钟分频将600ns的脉冲分成一个40ns的脉冲,实现信号同步。

4.2汽车尾灯主控模块仿真分析

汽车尾灯主控模块用VHDL程序实现后,其仿真图如图4.2所示。

图4.2主控模块时序模拟图

时序仿真图分析:右、左、夜、刹为输入信号,右表示右转,左表示左转,夜表示夜间行驶,刹表示刹车。Rp、LP、night _ led和brake _ led是输出信号。如图:右为1时,产生RP为1的信号脉冲,左为1时,产生LP为1的信号脉冲,夜为1时,产生NIGHT_LED为1的信号脉冲。当制动器为1时,会产生一个BRAKE_LED为1的信号脉冲输出。

4.3左灯控制模块仿真分析

左灯控制模块用VHDL程序实现后,其仿真图如下图4.3所示。

时序仿真图分析:LP、LR、夜间、刹车为输入信号,左转LP为1,右转LR为1,夜间行驶为1,刹车为1,刹车为1。LEDL、LEDB和LEDN是输出信号,代表汽车左侧的三个灯区。如图:LP为1时,LEDL输出为1,表示左灯亮;刹车为1时,LEDB输出为1,表示左灯亮;夜晚为1时,LEDN输出为1,表示左灯亮。当LR为1时,左侧三个灯区输出均为0。也就是没有灯亮。

图4.3左侧灯控制模块的时序模拟图

4.4右灯控制模块仿真分析

右灯控制模块用VHDL程序实现后,其仿真图如图4.4所示。

图4.4右侧灯控制模块的时序模拟图

时序仿真图分析:RP、LR、Night、Brake为输入信号,左转LR为1,右转RP为1,NIGHT为1夜间行驶,BRAKE为1制动。LEDR、LEDB和LEDN是输出信号,指示汽车右侧的三个灯区。如图:RP为1时,LEDR输出为1,表示右灯亮;刹车为1时,LEDB输出为1,表示右灯亮;夜晚为1时,LEDN输出为1,表示右侧灯亮。当LR为1时,右侧三个灯区输出均为0。也就是没有灯亮。

4.5整个系统的模拟和分析

根据图2.3组装系统后的模拟图如下图4.5所示。

时序仿真图分析:右、左、夜、刹为输入信号,右表示右转,左表示左转,夜表示夜间行驶,刹表示刹车。Rd1、rd2、rd3为输出信号,代表汽车右侧的三个灯区。Ld1、ld2、ld3为输出信号,表示汽车左侧的三个灯区。如图:右为1时,RD1的输出为1,表示右灯亮;左为1时,LD1的输出表示左灯亮;当夜晚是1时,LD 2和RD2的输出都是65438。刹车为1时,LD3和RD3的输出都为1,表示左右两侧各有一个灯。

图4.5整个系统的模拟图

4.6总体设计电路图

图4.6总体设计电路图

摘要

经过两周的紧张工作,我终于完成了我的设计任务——汽车尾灯控制器的设计。通过对本课程设计的学习,我深刻认识到了设计课程的重要性和目的。这门设计课不仅培养了我们的实际操作能力,还培养了我们灵活运用课本知识、理论联系实际、独立设计的能力。不仅是学习新知识、新方法的好机会,也是对所学知识的全面检验和复习,让自己明白自己的不足,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让学生学以致用。

在设计中,我被要求要有耐心和毅力,还要细心。如果我不小心,一个小错误就会导致不正确的结果。但是,我需要有足够的耐心来检查错误。通过这次设计和设计中遇到的问题,我积累了一些经验,对以后的集成电路设计工作有所帮助。在应用VHDL的过程中,我真正理解了其他软件并行运行和顺序执行的区别,以及在电路设计中的优越性。用VHDL硬件描述语言来设计数字系统是方便和灵活的。利用EDA软件进行编译和优化仿真,大大减少了电路设计时间和可能出现的错误,降低了开发成本。这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。

参考

王爱英。计算机组成与结构。北京:清华大学出版社,2001.2,

[2]黄仁信。EDA技术实践课程。北京:清华大学出版社,2006。

[3]曹、、聂、。EDA技术实验与课程设计。北京:清华大学出版社,2006.5。

杨艺华,严明。数字电路EDA导论。北京:北京邮电大学出版社,2003

[5]彭荣秀,数字电子技术基础,武汉,武汉理工大学出版社,2005。

[6]潘松,黄《EDA技术与VHDL》,北京,清华大学出版社,2006。