完整word版汽车尾灯控制器的设计EDA课程设计.docx
《完整word版汽车尾灯控制器的设计EDA课程设计.docx》由会员分享,可在线阅读,更多相关《完整word版汽车尾灯控制器的设计EDA课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
完整word版汽车尾灯控制器的设计EDA课程设计
EDA课程设计报告书
课题名称
汽车尾灯控制器的设计
姓名
谢亨
学号
0812201-48
院系
物理与电信工程系
专业
电子信息工程
指导教师
周来秀讲师
2011年6月10日
一、设计任务及要求:
设计一个汽车尾灯控制器,功能及要求如下:
(1)汽车正常行驶时,指示灯不亮。
(2)汽车右转时,右侧的指示灯亮。
(3)汽车左转时,左侧的指示灯亮。
(4)汽车刹车时,左右两侧的指示灯同时亮。
(5)汽车在雾中行驶时,左侧的指示灯不断闪烁。
(6)汽车在倒车时,右侧的指示灯不断闪烁。
指导教师签名:
年月日
二、指导教师评语:
指导教师签名:
年月日
三、成绩
验收盖章
年月日
汽车尾灯控制器的设计
谢亨
(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)
1设计目的
(1)学会在QuartusⅡ环境中运用VHDL语言设计方法来构建具有一定逻辑功能的模块,并能运用原理图设计方法完成顶层设计。
掌握所学的课程知识和基本单元电路的综合设计应用。
(2)通过对实用汽车尾灯控制器的设计,巩固和综合运用所学知识,提高设计能力,并掌握汽车尾灯控制在FPGA中实现的方法。
2设计的主要内容和要求
(1)汽车正常行驶时,指示灯不亮。
(2)汽车右转时,右侧的指示灯亮。
(3)汽车左转时,左侧的指示灯亮。
(4)汽车刹车时,左右两侧的指示灯同时亮。
(5)汽车在雾中行驶时,左侧的指示灯不断闪烁。
(6)汽车在倒车时,右侧的指示灯不断闪烁。
3整体设计方案
汽车尾灯控制器就是一个状态机的实例。
整体设计方框图如图3.1所示
图3.1整体设计方框图
整个系统由4个模块组成:
主控制模块,左侧控制模块,雾、倒车控制模块,右侧控制模块和显示模块。
其中主控制模块主要包括转向控制、雾中行驶控制和倒车控制,CLK为时钟信号。
左侧控制模块主要包括对左侧转向和刹车指示灯的控制。
右侧控制模块主要包括对右侧转向和刹车指示灯的控制。
雾、倒车控制模块主要包括对雾中行驶指示灯和倒车指示灯的控制。
显示模块为各状态的指示灯。
汽车尾灯控制器工作过程:
当汽车正常行驶时所有指示灯都不亮;汽车右转弯时,汽车右侧的指示灯RD1亮;汽车左转弯时,汽车左侧的指示灯LD1亮;刹车时,汽车右侧的指示灯RD2和左侧的指示灯LD2同时亮;汽车在雾中行驶时,左侧的指示灯LD3不断闪烁。
汽车在倒车时,右侧的指示灯RD3不断闪烁。
各个状态之间相互不影响。
4硬件电路的设计
根据汽车尾灯工作过程,设置系统的输入信号:
系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车控制信号BRAKE,雾中行驶控制信号FOG,倒车控制信号BACK和系统的输出信号:
汽车左侧3盏指示灯LD1、LD2、LD3和汽车右侧3盏指示灯RD1、RD2、RD3来实现尾灯控制器的功能。
系统的整体设计原理图如图4.1所示。
图4.1整体设计原理图
系统的工作原理及过程:
当汽车正常行驶时所有指示灯都不亮;汽车在右转弯时,右转弯控制信号RIGHT为1,此时汽车右侧的指示灯RD1亮;汽车在左转弯时,左转弯控制信号LEFT为1,此时汽车左侧的指示灯LD1亮;汽车在刹车时,刹车控制信号BRAKE为1,此时汽车右侧的指示灯RD2和左侧的指示灯LD2同时亮;汽车在雾中行驶时,雾中行驶控制信号FOG为1,此时汽车左侧的指示灯LD3不断闪烁(闪烁的频率与时钟CLK的频率相等)。
汽车在倒车时,倒车控制信号BACK为1,此时汽车右侧的指示灯RD3不断闪烁(闪烁的频率与时钟CLK的频率相等)。
在汽车尾灯控制器工作过程中各个状态之间无影响。
5软件设计
5.1主控制模块
主控制模块master如图5.1所示,LEFT为汽车左转弯控制信号LEFT,RIGHT为汽车右转弯控制信号,BRAKE为刹车控制信号,FOG为雾中行驶控制信号,BACK为倒车控制信号,上述信号均在高电平时有效。
LP为左转弯输出脉冲:
当LEFT为1,CLK由0往1跳变时LP输出为1。
RP为右转弯输出脉冲:
当RIGHT为1,CLK由0往1跳变时RP输出为1。
LR为左侧控制模块和右侧控制模块的使能信号(低电平有效)当LEFT和RIGHT同时为1时,LR输出为1,此时左右两侧控制模块均不起作用。
F为雾中行驶输出脉冲:
当FOG为1,CLK由0往1跳变时F输出为1。
B为倒车输出脉冲:
当BACK为1,CLK由0往1跳变时B输出为1。
BRAKE_LED为刹车输出脉冲:
当BRAKE为1,CLK由0往1跳变时BRAKE_LED输出为1。
该模块各输入输出信号之间无影响。
图5.1主控制模块图
主控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ENTITYmasterIS
PORT(LEFT,RIGHT,BRAKE,FOG,BACK:
INSTD_LOGIC;--端口定义
LP,RP,LR,F,B,BRAKE_LED:
OUTSTD_LOGIC);
END;
ARCHITECTUREARTOFmasterIS
BEGIN
BRAKE_LED<=BRAKE;--将刹车控制信号BRAKE赋给刹车输出脉冲BRAKE_LED
F<=FOG;--将雾中行驶控制信号FOG赋给雾中行驶输出脉冲F
B<=BACK;--将倒车控制信号BACK赋给倒车输出脉冲B
PROCESS(LEFT,RIGHT)
VARIABLETEMP:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
TEMP:
=LEFT&RIGHT;
CASETEMPIS
WHEN"00"=>LP<='0';RP<='0';LR<='0';
WHEN"01"=>LP<='0';RP<='1';LR<='0';--RP为1,右转弯输出脉冲
WHEN"10"=>LP<='1';RP<='0';LR<='0';--LP为1,左转弯输出脉冲
WHENOTHERS=>LP<='0';RP<='0';LR<='1';--LR为1,转弯无效
ENDCASE;
ENDPROCESS;
ENDART;
5.2左侧控制模块
左侧控制模块L_ctrl如图5.2所示,CLK为时钟输入信号;LP为左转弯输入脉冲(高电平有效);LR为该模块使能信号(低电平有效);BRAKE为刹车输入脉冲(高电平有效);LEDL为左转弯输出信号:
当LP为1,CLK由0往1跳变时LEDL输出为1;LEDB为刹车输出信号:
当BRAKE为1,CLK由0往1跳变时LEDB输出为1。
该模块中各个输入输出信号之间无影响。
图5.2左侧控制模块图
左侧控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ENTITYL_ctrlIS
PORT(CLK,LP,LR,BRAKE:
INSTD_LOGIC;--端口定义
LEDL,LEDB:
OUTSTD_LOGIC);
END;
ARCHITECTUREARTOFL_ctrlIS
BEGIN
LEDB<=BRAKE;--将刹车输入脉冲BRAKE赋给刹车输出信号LEDB
PROCESS(CLK,LP,LR)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--上升沿有效
IF(LR='0')THEN--转弯使能信号LR
IF(LP='0')THEN--左转弯输入脉冲LP为高时,左转弯输出信号LEDL输出为高
LEDL<='0';
ELSE
LEDL<='1';
ENDIF;
ELSE
LEDL<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDART;
5.3雾、倒车控制模块
雾、倒车控制模块FogBack如图5.3所示,CLK为时钟输入信号;F为雾中行驶输入脉冲(高电平有效);B为倒车输入脉冲(高电平有效);LEDFOG为雾中行驶输出信号:
当F为1时,LEDFOG输出为CLK信号(即高低电平,频率与时钟信号一致);LEDBACK为倒车输出信号:
当B为1时,LEDBACK输出为CLK信号(即高低电平,频率与时钟信号一致)。
该模块中各个输入输出信号之间无影响。
图5.3雾、倒车控制模块图
雾、倒车控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:
ENTITYFogBackIS
PORT(CLK,F,B:
INSTD_LOGIC;--端口定义
LEDFOG,LEDBACK:
OUTSTD_LOGIC);
END;
ARCHITECTUREARTOFFogBackIS
BEGIN
PROCESS(CLK,F,B)
BEGIN
IF(F='1')THEN--判断雾中行驶输入脉冲F是否为高电平
LEDFOG<=CLK;--若F为高,将时钟信号赋给雾中行驶输出信号LEDFOG
ELSELEDFOG<='0';--若F为低,LEDFOG为低
ENDIF;
IF(B='1')THEN--判断倒车输入脉冲B是否为高电平
LEDBACK<=CLK;--若B为高,将时钟信号赋给倒车输出信号LEDBACK
ELSELEDBACK<='0';--若B为低,LEDBACK为低
ENDIF;
ENDPROCESS;
ENDART;
5.4右侧控制模块
右侧控制模块R_ctrl如图5.4所示,CLK为时钟输入信号;RP为右转弯输入脉冲(高电平有效);LR为该模块使能信号(低电平有效);BRAKE为刹车输入脉冲(高电平有效);LEDR为右转弯输出信号:
当RP为1,CLK由0往1跳变时LEDR输出为1。
LEDB为刹车输出信号:
当BRAKE为1,CLK由0往1跳变时LEDB输出为1。
该模块中各个输入输出信号之间无影响。
图5.4右侧控制模块图
右侧控制模块由VHDL程序来实现,下面是其中的一段VHDL代码:
BEGIN
LEDB<=BRAKE;--将刹车输入脉冲BRAKE赋给刹车输出信号LEDB
PROCESS(CLK,RP,LR)
BEGIN
IFCLK'EVENTANDCLK='1'THEN--上升沿有效
IF(LR='0')THEN--转弯使能信号LR
IF(RP='0')THEN--右转弯输入脉冲RP为高时,右转弯输出信号LEDR输出为高
LEDR<='0';
ELSE
LEDR<='1';
ENDIF;
ELSE
LEDR<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDART;
5.5显示模块
显示模块为LED灯,左侧与右侧分别3个:
LD1、LD2、LD3,RD1、RD2、RD3。
LED灯均为高电平亮,其中LD1与RD1分别为左转向指示灯和右转向指示灯,LD2与RD2分别为左右两侧刹车指示灯,LD3为雾中行驶指示灯,RD3为倒车指示灯。
当LED均在工作状态时,LD1、LD2、RD1、RD2亮,LD3、RD3闪烁(闪烁的频率与时钟信号一致)。
6系统仿真
6.1主控制模块仿真
汽车尾灯主控制模块由VHDL程序实现后,其仿真图如图6.1所示。
图6.1汽车主控模块仿真图
对时序仿真图进行分析:
RIGHT,LEFT,BRAKE,FOG,BACK为输入信号,RIGHT为1表示右转,LEFT为1表示左转,BRAKE为1表示刹车,FOG为1表示在雾中行驶,BACK为1表示倒车。
RP,LP,B,F,BRAKE_LED,LR为输出信号。
如图所示:
当RIGHT为1时,产生一个RP为1的信号脉冲输出;当LEFT为1时,产生一个LP为1的信号脉冲输出;当FOG为1时,产生一个F为1的信号脉冲输出;当BRAKE为1时,产生一个BRAKE_LED为1的信号脉冲输出;当BACK为1时,产生一个B为1的信号脉冲输出;当LEFT和RIGHT同为1时产生一个LR为1的信号脉冲输出。
由仿真图分析可知该模块中各个输入输出信号之间无影响。
6.2左侧控制模块仿真
左侧控制模块由VHDL程序实现后,其仿真图如图6.2所示。
图6.2左侧控制模块仿真图
对时序仿真图进行分析:
LP,LR,BRAKE为输入信号,CLK为时钟输入信号。
LP为1表示左转,LR为1表示该模块没有被使能,BRAKE为1表示刹车。
LEDL,LEDB为输出信号,并与汽车左侧的两盏指示灯相连。
如图所示:
当LP为1时,LEDL输出为1表示左侧一盏指示灯亮,此时为左转弯;当BRAKE为1时,LEDB输出为1表示左侧一盏指示灯亮,此时为刹车。
由仿真图分析可知该模块中各个输入输出信号之间无影响。
6.3雾、倒车控制模块仿真
雾、倒车控制模块由VHDL程序实现后,其仿真图如图6.3所示。
图6.3雾、倒车控制模块仿真图
对时序仿真图进行分析:
B,F为输入信号,CLK为时钟输入信号。
B为1表示倒车,F为1表示在雾中行驶。
LEDBACK,LEDFOG为输出信号,分别与右侧和左侧的一盏指示灯相连。
如图所示:
当B为1时,LEDBACK输出为CLK信号,表示右侧一盏指示灯闪烁,此时为雾中行驶;当F为1时,LEDFOG输出CLK信号,表示左侧一盏指示灯闪烁,此时为倒车。
由仿真图分析可知该模块中各个输入输出信号之间无影响。
6.4右侧控制模块仿真
右侧控制模块由VHDL程序实现后,其仿真图如图6.4所示。
图6.4右侧控制模块仿真图
对时序仿真图进行分析:
RP,LR,BRAKE为输入信号,CLK为时钟输入信号。
RP为1表示右转,LR为1表示该模块没有被使能,BRAKE为1表示刹车。
LEDR,LEDB为输出信号,并与汽车右侧的两盏指示灯相连。
如图所示:
当RP为1时,LEDR输出为1表示右侧一盏指示灯亮,此时为右转弯;当BRAKE为1时,LEDB输出为1表示右侧一盏指示灯亮,此时为刹车。
由仿真图分析可知该模块中各个输入输出信号之间无影响。
6.5控制器系统仿真
按图4.1连接好各模块组成的尾灯控制器系统的仿真图如图6.5所示。
图6.5控制器系统仿真图
对时序仿真图进行分析:
CLK为时钟输入信号,LEFT为汽车左转弯控制信号,RIGHT为汽车右转弯控制信号,BRAKE为刹车控制信号,FOG为雾中行驶控制信号,BACK为倒车控制信号,上述信号均在高电平时有效。
LD1为左转弯输出信号:
当LEFT为1,CLK由0往1跳变时LD1输出为1,此时LD1指示灯亮。
RD1为右转弯输出信号:
当RIGHT为1,CLK由0往1跳变时RD1输出为1,此时RD1指示灯亮。
LD2和RD2为刹车输出信号:
当BRAKE为1,CLK由0往1跳变时LD2和RD2输出均为1,此时LD2、RD2指示灯亮。
LD3为雾中行驶输出信号:
当FOG为1时,LD3输出为时钟信号(CLK),此时LD3指示灯不断闪烁。
RD3为倒车输出信号:
当BACK为1时,RD3输出为时钟信号(CLK),此时RD3指示灯不断闪烁。
通过对该系统仿真图的分析可知该系统中各输入输出信号之间无影响。
7设计总结
本次课程设计使我受益匪浅,他使我更加深入的了解了硬件设计的整个流程,并且加深了我对EDA技术这门的课内容的理解,让我巩固了以前所学过的知识。
通过本次课程设计,我加深了我对VHDL语言的理解,扩充了我的知识面。
本次设计课不仅仅培养了我们的实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。
本次课程设计给我提供了一个既动手又动脑、自学、独立实践的机会,也培养了我的耐心和毅力,设计中遇到不少问题,而一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,因此本次课程设计使我积累了一定的实际操作与独立自主设计的经验,相信这些经验在我以后的学习和工作中会有很大的作用。
参考文献
[1]江国强.EDA技术与应用[M].电子工业出版社,2010:
30-67.
[2]胡立涛.《EWB电子仿真实验指导书》[M].海口:
南海出版公司,2006:
61-78.
[3]朱运利.《EDA技术应用》[M].北京:
电子工业出版社,2004:
41-63.
[4]郭勇.《EDA技术》[M].北京:
高等教育出版社,2004:
73-89.
[5]唐治德.《数字电子技术》[M].北京:
科学出版社,2010:
56-67.
[6]何宾.Xilinx可编程逻辑器件设计技术详解[M].北京:
清华大学出版社,2010:
15-43.