沈阳理工大学EDA技术课程设计报告1尾灯控制器1设计目的(1)学会在QuartusⅡ环境中运用VHDL语言设计方法来构建具有一定逻辑功能的模块,并能运用原理图设计方法完成顶层设计。掌握所学的课程知识和基本单元电路的综合设计应用。(2)通过对实用汽车尾灯控制器的设计,巩固和综合运用所学知识,提高设计能力,并掌握汽车尾灯控制在FPGA中实现的方法。1.调试底层模块,并时序仿真。2.设计顶层模块,并时序仿真。3.撰写课程设计报告。2设计要求和任务假设汽车尾部左右侧各有3盏指示灯,其控制功能应包括:(1)汽车正常行驶时指示灯都不亮(2)汽车右转弯时,右侧的一盏指示灯亮(3)汽车左转弯时,左侧的一盏指示灯亮(4)汽车刹车时,左右侧的指示灯同时亮(5)汽车在夜间行驶时,左右侧的指示灯同时一直亮,供照明使用顶层设计采用原理图设计方案,它由时钟分频模块,汽车尾灯主控模块,左边灯控制模块和右边灯控制模块四部分组成。3总体设计思路及原理描述汽车尾灯控制器就是一个状态机的实例。当汽车正常行驶时所有指示灯都不亮;当汽车向右转弯时,汽车右侧的指示灯ldright亮;当汽车向左侧转弯时,汽车左侧的指示灯ldleft亮;当汽车刹车时,汽车右侧的指示灯ldbrake1和汽车左侧的指示灯ldbrake2同时亮;当汽车在夜间行驶时,汽车右侧的指示灯ldnight1和汽车左侧的指示灯ldnight2同时一直亮。通过设置系统的输入信号:系统时钟信号clk,汽车左转弯控制信号left,汽车右转弯控制信号right,刹车信号brake,夜间行驶信号night和系统的输出信号:汽车左侧3盏指示灯ldleft,dbrake1,dnight1和汽车右侧3盏指示灯ldright,ldbrake2,ldnight2实现以上功能。系统的整体组装设计原理如图所示:沈阳理工大学EDA技术课程设计报告24分层次方案设计及代码描述4.1汽车尾灯主控模块汽车尾灯主控模块的工作框图如图4.1所示:图4.1汽车尾灯主控模块数据入口:RIGHT:右转信号;LEFT:左转信号;BRAKE:刹车信号;NIGHT:夜间行驶信号;数据出口:LP:左侧灯控制信号;RP:右侧灯控制信号;LR:错误控制信号;BRAKE_LED:刹车控制信号;NIGHT_LED:夜间行驶控制信号;汽车行驶信号主控模块左灯控制模块右灯控制模块显示时钟图3.1系统设计整体框图沈阳理工大学EDA技术课程设计报告3VHDL程序(CTRL.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCTRLISPORT(LEFT,RIGHT,BRAKE,NIGHT:INSTD_LOGIC;LP,RP,LR,BRAKE_LED,NIGHT_LED:OUTSTD_LOGIC);ENDENTITYCTRL;ARCHITECTUREARTOFCTRLISBEGINNIGHT_LED=NIGHT;BRAKE_LED=BRAKE;PROCESS(LEFT,RIGHT)VARIABLETEMP:STD_LOGIC_VECTOR(1DOWNTO0);BEGINTEMP:=LEFT&RIGHT;CASETEMPISWHEN00=LP='0';RP='0';LR='0';--当汽车直行时,左右灯都不亮WHEN01=LP='0';RP='1';LR='0';--当汽车右拐时,右拐指示灯亮WHEN10=LP='1';RP='0';LR='0';--当汽车左拐时,左指示灯亮WHENOTHERS=LP='0';RP='0';LR='1';--当汽车刹车时,左右灯都亮ENDCASE;ENDPROCESS;ENDARCHITECTUREART;功能:该段程序用于对汽车尾灯进行整体控制,当输入为左转信号时,输出左侧灯控制信号;当输入为右转信号时,输出右侧灯控制信号;当同时输入LEFT和RIGHT信号时,输出错误控制信号。当输入为刹车信号时,输出刹车控制信号;当输入为夜间行驶信号时,输出为夜间行驶控制信号。4.2左边灯控制模块左边灯控制模块的工作框图如图4.2所示:沈阳理工大学EDA技术课程设计报告4图4.2左边灯控制模块数据入口:CLK:时钟控制信号;LP:左侧灯控制信号;LR:错误控制信号;BRAKE:刹车控制信号;NIGHT:夜间行驶控制信号;数据出口:LEDL:左侧LD1灯控制信号;LEDB:左侧LD2灯控制信号;LEDN:左侧LD3灯控制信号;VHDL程序(LC.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLCISPORT(CLK,LP,LR,BRAKE,NIGHT:INSTD_LOGIC;LEDL,LEDB,LEDN:OUTSTD_LOGIC);ENDENTITYLC;ARCHITECTUREARTOFLCISBEGINLEDB=BRAKE;LEDN=NIGHT;PROCESS(CLK,LP,LR)BEGINIFCLK'EVENTANDCLK='1'THEN--时钟上升沿有效IF(LR='0')THEN--没有刹车信号时IF(LP='0')THEN--没有左拐信号时LEDL='0';--左信号灯不亮ELSE--相反情况LEDL='1';ENDIF;ELSELEDL='0';ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREART;沈阳理工大学EDA技术课程设计报告5功能:本程序用于控制左侧灯的亮、灭和闪烁情况,当时钟上升沿信号和左侧灯控制信号或刹车控制信号或夜间行驶信号同时出现时,左侧相应的灯亮或出现闪烁。当错误控制信号出现时,LD1灯不亮。4.3右边灯控制模块右边灯控制模块的工作框图如图4.3所示:图4.3右边灯控制模块数据入口:CLK:时钟控制信号;RP:右侧灯控制信号;LR:错误控制信号;BRAKE:刹车控制信号;NIGHT:夜间行驶控制信号;数据出口:LEDR:右侧RD1灯控制信号;LEDB:右侧RD2灯控制信号;LEDN:右侧RD3灯控制信号;VHDL程序(RC.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYRCISPORT(CLK,RP,LR,BRAKE,NIGHT:INSTD_LOGIC;LEDR,LEDB,LEDN:OUTSTD_LOGIC);ENDENTITYRC;ARCHITECTUREARTOFRCISBEGINLEDB=BRAKE;LEDN=NIGHT;PROCESS(CLK,RP,LR)沈阳理工大学EDA技术课程设计报告6BEGINIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IF(LR='0')THENIF(RP='0')THENLEDR='0';ELSELEDR='1';ENDIF;ELSELEDR='0';ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREART;功能:本描述用于控制右侧灯的亮、灭和闪烁情况,当时钟上升沿信号和右侧灯控制信号或刹车控制信号或夜间行驶信号同时出现时,右侧相应的灯亮或出现闪烁。当错误控制信号出现时,RD1灯不亮。4.4时钟分频模块时钟分频模块的工作框图如图4.4所示:图4.4时钟分频模块VHDL程序(SZ.VHD)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSZISPORT(CLK:INSTD_LOGIC;--时钟输入CP:OUTSTD_LOGIC);ENDENTITYSZ;ARCHITECTUREARTOFSZISSIGNALCOUNT:STD_LOGIC_VECTOR(7DOWNTO0);--定义八位标准逻辑位矢量数据类型BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沈阳理工大学EDA技术课程设计报告7沿COUNT=COUNT+1;ENDIF;ENDPROCESS;CP=COUNT(3);--输出第五位ENDARCHITECTUREART;功能:这块的功能是对左右两边的LLED1、RLED1的闪烁时间间隔,以CLK为输入信号,CP为输出信号,在程序中定义一个八位节点信号COUNT来放计数值,当CLK的上升沿到来时就开始计数,最后将COUNT(3)给CP,实现对CLK的八分频。再将CP的电平信号分别和LEDL、LEDR电平与,最后用输出的电平来控制汽车左右的LLED1、RLED1,实现左右转的指示功能。4.5顶层原理图顶层原理图如图4.5所示:图4.5顶层原理图顶层文件VHDL程序(tp.VHD)Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;EntitytpisPort(clk:instd_logic;Left:instd_logic;Right:instd_logic;Brake:instd_logic;Night:instd_logic;Ld1,ld2,ld3:outstd_logic;沈阳理工大学EDA技术课程设计报告8Rd1,rd2,rd3:outstd_logic);End;ArchitecturebhoftpisComponentszisPort(clk:instd_logic;Cp:outstd_logic);Endcomponent;ComponentctrlisPort(left,right,brake,night:instd_logic;Lp,rp,lr,brake_led,night_led:outstd_logic);Endcomponent;ComponentlcisPort(clk,lp,lr,brake,night:instd_logic;Ledl,ledb,ledn:outstd_logic);Endcomponent;ComponentrcisPort(clk,rp,lr,brake,night:instd_logic;Ledr,ledb,ledn:outstd_logic);Endcomponent;Signaltmp0,tmp1,tmp2,tmp3,tmp4:std_logic;Signalerr0,err1,err2,err3,err4,err5:std_logic;signalbm:std_logic;BeginU1:szportmap(clk,bm);U2:ctrlportmap(left,right,brake,night,tmp0,tmp1,tmp2,tmp3,tmp4);U3:lcportmap(clk,tmp0,tmp2,tmp3,tmp4,err0,err1,err2);U4:rcportmap(clk,tmp1,tmp2,tmp3,tmp4,err3,err4,err5);Ld1=err0andbm;Ld2=err1;Ld3=err2;Rd1=err3andbm;Rd2=err4;Rd3=err5;End;5各模块的时序仿真图5.1汽车尾灯主控模块仿真汽车尾灯主控模块由VHDL程序实现后,其仿真图如图5.1所示:沈阳理工大学EDA技术课程设计报告9图5.1汽车尾灯主控模块仿真图对时序仿真图进行分析:当分别输入刹车信号BRAKE,左转控制信号LEFT,夜间信号NIGHT,右转控制信号RIGHT时,BRAKE_LED,LP,NIGHT_LED,RP分别亮;当同时输入刹车信号BRAKE,左转控制信号LEFT,BRAKE_LED和LP同时亮;当同时输入BRAKE和NIGHT,同时输入BRAKE和RIGHT,同时输入LEFT和NIGHT,同时输入NIGHT和RIGHT,对应的灯分别同时亮;当同时输入BRAKE,LEFT和NIGHT,同时输入BRAKE,RIGHT和NIGHT时,对应的灯分别同时