爱玩科技网
您的当前位置:首页EDA课设报告

EDA课设报告

来源:爱玩科技网
沈阳理工大学EDA技术课程设计报告

尾灯控制器

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实现以上功能。

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

1

沈阳理工大学EDA技术课程设计报告

汽车行驶信号 主控模块 左灯控制模块 显示 右灯控制模块 时钟

图3.1 系统设计整体框图 4 分层次方案设计及代码描述

4.1汽车尾灯主控模块

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

图4.1汽车尾灯主控模块

数据入口:

RIGHT:右转信号;

LEFT:左转信号; BRAKE:刹车信号; NIGHT:夜间行驶信号; 数据出口:

LP:左侧灯控制信号; RP:右侧灯控制信号; LR:错误控制信号;

BRAKE_LED:刹车控制信号; NIGHT_LED:夜间行驶控制信号;

2

沈阳理工大学EDA技术课程设计报告

VHDL程序(CTRL.VHD) LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.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;

功能:

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

4.2左边灯控制模块

左边灯控制模块的工作框图如图4.2所示:

3

沈阳理工大学EDA技术课程设计报告

图4.2左边灯控制模块

数据入口:

CLK:时钟控制信号;

LP:左侧灯控制信号; LR:错误控制信号; BRAKE:刹车控制信号; NIGHT:夜间行驶控制信号; 数据出口:

LEDL:左侧LD1灯控制信号; LEDB:左侧LD2灯控制信号; LEDN:左侧LD3灯控制信号;

VHDL程序(LC.VHD) LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.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;

4

沈阳理工大学EDA技术课程设计报告

功能:

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

4.3右边灯控制模块

右边灯控制模块的工作框图如图4.3所示:

图4.3 右边灯控制模块

数据入口:

CLK:时钟控制信号;

RP:右侧灯控制信号; LR:错误控制信号; BRAKE:刹车控制信号; NIGHT:夜间行驶控制信号; 数据出口:

LEDR:右侧RD1灯控制信号; LEDB:右侧RD2灯控制信号; LEDN:右侧RD3灯控制信号;

VHDL程序(RC.VHD) LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.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)

5

沈阳理工大学EDA技术课程设计报告

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;

功能:

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

4.4时钟分频模块

时钟分频模块的工作框图如图4.4所示:

图4.4 时钟分频模块

VHDL程序(SZ.VHD) LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.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 --检测时钟上升

6

沈阳理工大学EDA技术课程设计报告

沿

COUNT<=COUNT+1; END IF; END PROCESS;

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

功能:

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

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

4.5顶层原理图

顶层原理图如图4.5所示:

图4.5 顶层原理图 顶层文件VHDL程序(tp.VHD) Library ieee;

Use ieee.std_logic_11.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;

7

沈阳理工大学EDA技术课程设计报告

Rd1,rd2,rd3:out std_logic); End;

Architecture bh of tp is 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;

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

Signal err0,err1,err2,err3,err4,err5:std_logic; signal bm:std_logic; Begin

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;

5 各模块的时序仿真图

5.1汽车尾灯主控模块仿真

汽车尾灯主控模块由VHDL程序实现后,其仿真图如图5.1所示:

8

沈阳理工大学EDA技术课程设计报告

图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时,对应的灯分别同时亮;只要出现LEFT和RIGHT同时输入的情况,LP和RP都不亮,LR输出为“1”。

5.2左边灯控制模块仿真

左边灯控制模块由VHDL程序实现后,其仿真图如下图5.2所示:

图5.2 左边灯控制模块仿真图

对时序仿真图进行分析:当分别输入刹车信号BRAKE,左转控制信号LEFT,夜间信号NIGHT,相应的灯都会亮。

5.3右边灯控制模块仿真

左边灯控制模块由VHDL程序实现后,其仿真图如下图5.2所示:

9

沈阳理工大学EDA技术课程设计报告

图5.3 右边灯控制模块仿真图

对时序仿真图进行分析:当分别输入刹车信号BRAKE,右转控制信号RIGHT,夜间信号NIGHT,相应的灯都会亮,不会发生冲突。

5.4时钟分频模块仿真

分频模块由VHDL程序实现后,其仿真图如图5.4所示:

图5.4 时钟分频模块仿真图

对其仿真图进行仿真分析:时钟分频实现了信号同步。

5.5顶层原理图

顶层原理图实现后,其仿真图如图5.5所示:

图5.5 顶层原理图仿真图

对其仿真图进行仿真分析:RIGHT,LEFT,NIGHT,BRAKE 为输入信号,RIGHT为1表示右转,LEFT为1表示左转,NIGHT为1表示夜间行路,BRAKE为1表示刹车。RD1,RD2,RD3为输出信号,表示汽车右侧的三盏灯。LD1,LD2,LD3为输出信号,表示汽车左侧的三盏灯。如图所示:当RIGHT为1时,RD1输出为1表示右侧灯亮,当LEFT为1时,LD1为输出为1表示左侧灯亮,当NIGHT为1时,

10

沈阳理工大学EDA技术课程设计报告

LD3,RD3输出均为1,表示左,右两侧各有一盏灯亮。当BRAKE为1时,LD2,RD2输出均为1,表示左,右两侧各有一盏灯亮。

6 总结

通过本次课程设计,我们对EDA技术有了更深的了解,初步学会了采用自顶向下的系统设计方法设计系统,并熟练掌握了利用VHDL语言进行简单的电路模块设计。此外,我们还进一步熟悉了Quartus II这款软件的使用,深刻体会到了用软件实现硬件设计的便捷与优越。

本次课程设计不仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,分析问题和解决问题的能力。它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。

本设计采用自顶向下设计方法,底层为一些具有功能的小模块,完成这些小模块后再合到一起完成顶层文件的设计。从局部到整体,不仅使得系统设计的思路清晰明了,减少了错误的产生,更方便了程序的调试以及系统功能的扩充。在设计过程中,能与同学相互交流讨论,不仅降低了设计难度,缩短了设计周期,更是进一步培养了我们的团队合作精神。

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

这次设计中我也遇到了一些问题,但通过相关资料的查询,在老师的指导和同学们的帮助下,都顺利得以解决。这些经历使我得以积累了一定的经验,相信对以后学习设计工作也会有一定的帮助。

7 参考文献

《EDA技术及应用教程》 赵全利 秦春斌主编 机械工业出版社 《EDA技术与数字系统设计》 邹彦主编 电子工业出版社 《实用电子电路200例》 张庆双主编. 机械工业出版社

《电子电路EDA技术》 赵世强、许杰等编 西安电子科技大学出版社

11

因篇幅问题不能全部显示,请点此查看更多更全内容