有关汽车尾灯的完整数字逻辑课程设计报告.docx
- 文档编号:30358417
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:16
- 大小:35.10KB
有关汽车尾灯的完整数字逻辑课程设计报告.docx
《有关汽车尾灯的完整数字逻辑课程设计报告.docx》由会员分享,可在线阅读,更多相关《有关汽车尾灯的完整数字逻辑课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
有关汽车尾灯的完整数字逻辑课程设计报告
有关汽车尾灯的完整数字逻辑课程设计报告
————————————————————————————————作者:
————————————————————————————————日期:
石家庄经济学院
信息工程学院
数字逻辑课程设计报告
题目汽车尾灯控制器的设计
成绩
2010年6月
1。
功能描述02
2。
开发工具选择02
3。
设计方案02
4.模块描述04
5.VHDL实现07
6。
调试仿真12
7.课程设计回顾总结13
参考文献14
附录14
一、功能描述
设计功能描述:
存在6盏汽车尾灯(汽车尾部左、右各3盏),用两个开关作为转弯和刹车控制信号(一个开关控制右转弯,另一个开关控制左转弯),用一个开关作为汽车车锁开启控制,打开汽车时车灯闪烁3秒钟,才能行驶.
当汽车往前行驶时(此时两个开关都未接通),6盏灯全灭。
当汽车转弯时,若右转弯(即右转开关接通),右边的3盏尾灯从左至右顺序亮灭,左边3盏灯全灭;若左转弯(即左转开关接通),左边的3盏尾灯从右至左顺序亮灭,右边3盏灯全灭.当左、右两个开关同时接通时,6盏尾灯同时明、暗闪烁.
二、开发工具选择
采用硬件描述语言VHDL进行描述,依靠计算机,借助EDA开发工具,实现系统功能。
三、设计方案
(1)、以Opencarcar作为总控制开关,当Opencarcar为1时,汽车解锁,汽车启动,此时车灯闪烁以两个开关L、R为控制信号,分别控制汽车的行驶、刹车、左转以及右转。
如下图:
当总控制开关Opencarcar为1,汽车启动,车灯闪烁3秒。
车灯
脉冲
L[0]
L[1]
L[2]
R[0]
R[1]
R[2]
1
0
0
0
0
0
0
2
1
1
1
1
1
1
(2)、当总控制开关Opencarcar为1,汽车向前行驶,LR=00,6盏灯全灭,即L[0]L[1]L[2]=000,R[0]R[1]R[2]=000;
如下图:
当总控制开关Opencarcar为0,汽车向前行驶时,车灯全灭。
车灯
脉冲
L[0]
L[1]
L[2]
R[0]
R[1]
R[2]
1
0
0
0
0
0
0
2
0
0
0
0
0
0
(3)、当总控制开关Opencar为1,汽车刹车,LR=11,6盏灯闪烁,即L[0]L[1]L[2]=000←—>111,R[0]R[1]R[2]=000←-〉111;
如下图:
当总控制开关Opencarcar为0,汽车刹车时,车灯闪烁。
车灯
脉冲
L[0]
L[1]
L[2]
R[0]
R[1]
R[2]
1
0
0
0
0
0
0
2
1
1
1
1
1
1
(4)、当总控制开关Opencarcar为1,汽车左转,LR=10,左边的3盏尾灯从右至左顺序亮灭,右边3盏灯全灭;
如下图:
当总控制开关Opencarcar为1,汽车左转时左边的3盏尾灯从右至左顺序亮灭,右边3盏灯全灭.
车灯
脉冲
L[0]
L[1]
L[2]
R[0]
R[1]
R[2]
1
0
0
0
0
0
0
2
0
0
1
0
0
0
3
0
1
0
0
0
0
4
1
0
0
0
0
0
(5)、当总控制开关Opencarcar为1,汽车右转,LR=01,右边的3盏尾灯从左至右顺序亮灭,左边3盏灯全灭;
如下图:
当总控制开关Opencarcar为1,汽车右转时右边的3盏尾灯从左至右顺序亮灭,左边3盏灯全灭.
车灯
脉冲
L[0]
L[1]
L[2]
R[0]
R[1]
R[2]
1
0
0
0
0
0
0
2
0
0
0
1
0
0
3
0
0
0
0
1
0
4
0
0
0
0
0
1
(6)、底层文件描述闪烁过程
用单独的实体实现计时模块,实现车灯闪烁和亮灭要求亮0。
5秒灭1秒。
四、模块描述
总模块1:
顶层文件设计,实现汽车开启时解锁,车灯闪烁3秒;汽车向前行驶,车灯全灭,汽车刹车时车灯闪烁,汽车转弯时相应车灯闪烁。
总模块2:
底层文件设计,实现汽车开启时,解锁,车灯闪烁3秒。
用模6计数原理。
IF(CP'EVENTANDCP=’0')THEN--下降沿出触发
IFOpencarcar=’1’THEN——汽车解锁,车灯闪烁。
IFQ<5THEN
caseQis
when”000”=〉
L〈="111";
R<=”111";
when”001"=>
L〈="000”;
R<="000”;
when"010"=〉
L〈="000”;
R〈=”000";
when”011"=〉
L<=”111”;
R〈=”111";
when”100"=〉
L<="000";
R<=”000”;
when"101"=〉
L〈="000";
R〈="000";
whenOTHERS=>
Q〈=”101”;
endcase;
Q〈=Q+1;
ELSEQ〈="000";
ENDIF;
ENDIF;
ENDIF;
总模块3:
底层文件设计,实现汽车锁定,汽车行驶,车灯全灭,汽车刹车,车灯闪烁,汽车转弯车灯相应闪烁.
模块1:
当总控制开关Opencarcar为1,汽车向前行驶,LR=00,6盏灯全灭。
IFadder=”00”THEN
L〈=”000”;
R<=”000”;
模块2:
总开关Opencarcar为1时,汽车刹车,LR=11,6盏灯闪烁.
ELSIFOpencarcar='0'ANDadder=”11"THEN-—汽车刹车
IFQ<5THEN
caseQis
when"000"=>
L〈="111";
R<=”111";
when”001"=〉
L〈=”000”;
R<=”000";
when”010”=>
L〈=”000”;
R〈=”000”;
when”011"=>
L<=”111";
R〈="111”;
when"100"=>
L〈="000";
R〈=”000”;
when"101"=〉
L<=”000”;
R<=”000";
whenOTHERS=>
Q<=”000”;
endcase;
Q〈=Q+1;
ELSEQ〈="000";
ENDIF;
模块3:
总开关Opencarcar为1时,汽车左转,LR=10,左边的3盏尾灯从右至左顺序亮灭,右边3盏灯全灭。
ifL="000"then
L<=”001”;
R<=”000";
elsif(L="001")then
L<="010”;
R<="000";
elsif(L=”010”)then
L<=”100";
R<="000";
elseL<="001”;R<="000";
endif;
模块4:
总开关Opencarcar为1时,汽车右转,LR=01,右边的3盏尾灯从左至右顺序亮灭,左边3盏灯全灭。
ifR="000"then
R<=”100”;
L<=”000";
elsif(R=”100")then
R〈="010”;
L<=”000”;
elsif(R="010”)then
R<="001";
L<=”000";
elseR<=”100”;L〈=”000”;
endif;
五、VHDL实现
——利用原件例化方法
--顶层文件,汽车尾灯控制系统。
LIBRARYIEEE;-—汽车尾灯控制器设计
USEIEEE.STD_LOGIC_1164。
ALL;
USEIEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITYCARLIGHTIS--实体:
一个总控制开关,两个信号控制开关,两个输出信号
PORT(CP:
INSTD_LOGIC;
Opencarcar:
INSTD_LOGIC;
Lift,Right:
INSTD_LOGIC;
L:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
R:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
Q:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0));
END;
ARCHITECTURECARLIGHT1OFCARLIGHTIS
COMPONENTOpencarmond6——例化说明,汽车解锁,车灯闪烁,计时模块
PORT(CP:
INSTD_LOGIC;
Opencarcar:
INSTD_LOGIC;
L:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
R:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
Q:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0));
ENDCOMPONENT;
COMPONENTStopCarmond6——例化说明,汽车刹车,车灯闪烁,计时模块
PORT(CP:
INSTD_LOGIC;
Opencarcar:
INSTD_LOGIC;
Lift,Right:
INSTD_LOGIC;
L:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
R:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
Q:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0));
ENDCOMPONENT;
BEGIN
U1:
Opencarmond6PORTMAP(CP=〉CP,Opencarcar=〉Opencarcar,L=〉L,R=〉R,Q=〉Q);
U2:
StopCarmond6PORTMAP(CP=〉CP,Opencarcar=>Opencarcar,Lift=〉Lift,Right=>Right,L=>L,R=〉R,Q=>Q);
END;
——底层实体,汽车解锁,车灯闪烁,计时模块
-—底层文件,模6计时器
LIBRARYIEEE;
USEIEEE。
STD_LOGIC_1164。
ALL;
USEIEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITYOpencarmond6IS
PORT(CP:
INSTD_LOGIC;
Opencarcar:
INSTD_LOGIC;
L:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
R:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
Q:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0));
END;
ARCHITECTUREONEOFOpencarmond6IS
BEGIN
PROCESS(CP)
BEGIN
IF(CP’EVENTANDCP='0')THEN——下降沿出触发
IFOpencarcar='1'THEN—-汽车解锁,车灯闪烁。
IFQ〈5THEN
caseQis
when"000”=〉
L〈="111";
R<=”111”;
when"001"=〉
L〈="000";
R〈=”000”;
when”010"=〉
L〈="000”;
R<=”000";
when”011”=>
L〈="111";
R<="111”;
when”100”=>
L<="000";
R<="000";
when”101"=〉
L<=”000";
R<="000";
whenOTHERS=〉
Q<="101";
endcase;
Q<=Q+1;
ELSEQ〈="000”;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
END;
-—底层实体,汽车控制系统实现汽车行驶,转弯,汽车刹车,车灯闪烁,计时模块
-—底层文件,模6计时器
LIBRARYIEEE;
USEIEEE。
STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYStopCarmond6IS
PORT(CP:
INSTD_LOGIC;
Opencarcar:
INSTD_LOGIC;
Lift,Right:
INSTD_LOGIC;
L:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
R:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);
Q:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0));
END;
ARCHITECTUREONE1OFStopCarmond6IS
SIGNALadder:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
adder<=Lift&Right;——中间信号
PROCESS(adder,CP,Q)—-进程
BEGIN
IF(CP’EVENTANDCP=’0')THEN-—下降沿出触发
IFOpencarcar='1’ANDadder="00"THEN-—汽车向前行驶
L〈="000";
R〈=”000";
ELSIFOpencarcar=’1’ANDadder="11"THEN—-汽车刹车
IFQ〈5THEN
caseQis
when"000"=>
L〈="111”;
R<=”111”;
when"001"=>
L<="000”;
R<="000";
when"010"=>
L<="000”;
R〈=”000”;
when”011"=〉
L<="111”;
R〈="111”;
when"100"=>
L〈="000";
R<="000";
when”101”=〉
L〈=”000”;
R〈=”000”;
whenOTHERS=>
Q<=”000";
endcase;
Q〈=Q+1;
ELSEQ<=”000";
ENDIF;
ELSIFOpencarcar='1’ANDadder=”10”THEN—-汽车左转
ifL=”000"then
L<="001”;
R〈=”000";
elsif(L="001")then
L<=”010";
R〈="000";
elsif(L=”010”)then
L〈=”100”;
R<=”000";
elseL<=”001";R<="000”;
endif;
ELSIFOpencarcar=’1'ANDadder=”01”THEN--汽车右转
ifR=”000"then
R<=”100";
L<="000";
elsif(R=”100”)then
R<=”010”;
L〈="000”;
elsif(R=”010”)then
R〈=”001";
L〈="000”;
elseR<="100";L〈=”000";
endif;
ENDIF;
ENDIF;
ENDPROCESS;
END;
六、调试仿真
七、课程设计回顾总结
通过这次设计,进一步加深了对EDA的了解,对它有了更加浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心.但是在编写程序时,遇到了不少问题,首先由于自己对于汽车的发动过程不是很了解,所以汽车解锁与汽车锁定方面存在误区,程序一直运行不成功,在上网查询汽车操作以及在同学帮助下,在细心的检查下,终于找出了错误,排除困难后,程序编译就通过了,仿真文件基本符合这次实验要求。
这次试验总的来说,进行的还算顺利,但在调试过程中,也遇到了一些自己不能解决的问题,通过请教同学,我明白解决的办法,在这次试验中,提高了整体设计和构思的能力,原来在学习过程中不明白的问题,在这次实习中通过自己操作有了进一步的理解,在解决困难的过程中,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
参考文献
张兴忠数字逻辑与数字系统科学出版社
李景华可编程逻辑器件与EDA技术东北大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有关 汽车 尾灯 完整 数字 逻辑 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)