交通灯课程设计嵌入式.docx

上传人:b****0 文档编号:9043874 上传时间:2023-05-16 格式:DOCX 页数:16 大小:420.70KB
下载 相关 举报
交通灯课程设计嵌入式.docx_第1页
第1页 / 共16页
交通灯课程设计嵌入式.docx_第2页
第2页 / 共16页
交通灯课程设计嵌入式.docx_第3页
第3页 / 共16页
交通灯课程设计嵌入式.docx_第4页
第4页 / 共16页
交通灯课程设计嵌入式.docx_第5页
第5页 / 共16页
交通灯课程设计嵌入式.docx_第6页
第6页 / 共16页
交通灯课程设计嵌入式.docx_第7页
第7页 / 共16页
交通灯课程设计嵌入式.docx_第8页
第8页 / 共16页
交通灯课程设计嵌入式.docx_第9页
第9页 / 共16页
交通灯课程设计嵌入式.docx_第10页
第10页 / 共16页
交通灯课程设计嵌入式.docx_第11页
第11页 / 共16页
交通灯课程设计嵌入式.docx_第12页
第12页 / 共16页
交通灯课程设计嵌入式.docx_第13页
第13页 / 共16页
交通灯课程设计嵌入式.docx_第14页
第14页 / 共16页
交通灯课程设计嵌入式.docx_第15页
第15页 / 共16页
交通灯课程设计嵌入式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

交通灯课程设计嵌入式.docx

《交通灯课程设计嵌入式.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计嵌入式.docx(16页珍藏版)》请在冰点文库上搜索。

交通灯课程设计嵌入式.docx

交通灯课程设计嵌入式

嵌入式课程设计报告

设计题目:

交通信号灯的设计

指导老师:

傅文渊

班级:

09电子A

姓名:

***学号:

***

 

目录

1课程设计任务、内容与要求…………………………………3页

1.1设计任务…………………………………………………3页

1.2设计内容…………………………………………………3页

1.3具体要求…………………………………………………3页

2系统设计方案…………………………………………………4页

2.1设计思路…………………………………………………4页

2.2系统原理…………………………………………………4页

3功能模块及仿真………………………………………………5页

3.1分频模块…………………………………………………5页

3.2交通信号控制模块………………………………………5页

3.3显示控制模块……………………………………………8页

4总体设计电路图………………………………………………13页

5硬件验证………………………………………………………14页

6总结…………………………………………………………14页

7参考书目……………………………………………………15页

一、任务与要求

基于嵌入式技术利用VHDL等硬件描述交通信号灯的系统组成。

(1)基本要求:

a.设计一个南北方向为主干道,东西方向为支干道的;

b.选择一个标准时钟发生电路,为电路提供一个标准1HZ信号;

c.

(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;

(2)交通灯从红变绿时,有6秒间隔时间;

(3)主干道上的绿灯时间为60秒,支干道的绿灯时间为35秒;

d.在DE2开发板上演示其状态变化过程。

(2)发挥部分:

a.在SignalTap中显示指示灯变化的输出结果仿真波形图。

b.在任意时间显示每个状态到该状态结束所需的时间。

交通灯控制系统框图

 

二、设计方案

用VHDL编写程序实现交通信号控制器的端口控制信号。

其中,clk为标准的1HZ的时钟信号;R为复位信号;SPC为紧急情况信号,负责紧急情况的处理,当紧急情况发生时,南北主干道和东西支干道均显示红灯。

该程序定义了4个状态S0,S1,S2,S3。

当状态为S0时,南北方向亮绿灯,东西方向亮红灯60s;当为状态为S1时,南北方向亮黄灯,东西方向亮红5s;当状态为S2时,南北方向亮红灯,东西方向绿灯35s;当状态为S3时,南北方向亮灭灯,东西方向灭灯6s;程序还设计了一个紧急信号情况,当遭遇紧急情况时,主干道和支干道都亮红灯。

状态一:

主道绿灯次道绿灯持续时间小于65s时,状态保持不变,若持续时间等于65s时,转换到下一状态黄灯。

状态二:

主道黄灯持续时间小于5s时,状态保持不变,若持续时间等于5s时,转换到下一状态红灯。

状态三:

主道黄灯次道红灯持续时间小于35s时,状态保持不变,若持续时间等于35s时,转换到下一状态灭灯。

状态四:

主道灭灯持续时间小于46s时,状态保持不变,若持续时间等于6s时,转换到下一状态绿灯。

状态五:

紧急情况都亮红灯。

三、功能模块

模块一:

分频器

分频器实现的是将高频时钟信号转换成低频时钟信号,clk信号经分频器将50MHz经过PLL分频为25MHz在经过计数器分为1HZ.

分频器模块(div)

VHDL源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydivis

port(clk3:

INstd_logic;

clkout1:

OUTstd_logic);

enddiv;

architectureoneofdivis

begin

process(clk3)

variablecnt:

integerrange0to1250;

variabletmp:

std_logic;

begin

if(clk3'eventandclk3='1')then

ifcnt>=1249then

cnt:

=0;

tmp:

=nottmp;

elsecnt:

=cnt+1;

endif;

endif;

clkout1<=tmp;

endprocess;

endone;

时序仿真图:

模块二:

控制器

控制器的作用是根据计数器计数的值确定状态转换。

本控制器的设计方法是利用时钟沿的上升沿读取前级计数器的计数值,然后做出反应。

主要控制红、绿、黄灯的亮、灭。

VHDL源程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH;

ENTITYjiaotongd1IS

PORT(CLK,R,SPC:

INSTD_LOGIC;--时钟、复位、特殊情况

LIGHT:

OUTSTD_LOGIC_VECTOR(5DOWNTO0);--light:

G1,R1,Y1,G2,R2,Y2;

Q1,Q2:

OUTINTEGERRANGE0TO65);

ENDjiaotongd1;

ARCHITECTUREbehavOFjiaotongd1IS

TYPESTATESIS(S0,S1,S2,S3);--定义枚举

SIGNALSTATE:

STATES;

SIGNALT1,T2:

INTEGERRANGE0TO65;

BEGIN

P1:

PROCESS(CLK,STATE)

BEGIN

IFR='1'THENSTATE<=S0;T1<=60;T2<=65;--复位

ELSIFSPC='1'THENLIGHT<="010010";--特殊情况亮红灯

ELSIFCLK'EVENTANDCLK='1'THEN

CASESTATEIS

--states为s0时,南北方向亮绿灯,东西方向亮红灯,60s

WHENS0=>LIGHT<="100010";

T1<=T1-1;T2<=T2-1;

Q1<=T1;Q2<=T2;

IFT1=0THEN

STATE<=S1;T1<=4;T2<=4;

ENDIF;

--states为s1时,南北方向亮黄灯,东西方向亮红,5s

WHENS1=>LIGHT<="001010";

T1<=T1-1;T2<=T2-1;

Q1<=T1;Q2<=T2;

IFT1=0THEN

STATE<=S2;T1<=35;T2<=35;

ENDIF;

--states为s2时,南北方向亮红灯,东西方向绿灯,35s

WHENS2=>LIGHT<="010100";

T1<=T1-1;T2<=T2-1;

Q1<=T1;Q2<=T2;

IFT2=0THEN

STATE<=S3;T1<=6;T2<=6;

ENDIF;

--南北方向同时灭灯6s

WHENS3=>LIGHT<="000000";

T1<=T1-1;T2<=T2-1;

Q1<=T1;Q2<=T2;

IFT1=0THEN

STATE<=S0;T1<=60;T2<=65;

ENDIF;

WHENOTHERS=>STATE<=S0;T1<=60;T2<=65;--主干道

ENDCASE;

ENDIF;

ENDPROCESS;

ENDbehav;

时序仿真图:

 

模块三:

显示控制电路

译码首先是将二进制无符号数转化为BCD码,在把BCD码经过译码电路转换数码管显示:

VHDL源程序:

二进制转化BCD:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.all;

ENTITYyima2IS

PORT(datain:

INSTD_LOGIC_VECTOR(6DOWNTO0);--时钟、复位、特殊情况

--light:

G1,R1,Y1,G2,R2,Y2;

daout:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDyima2;

ARCHITECTUREbehavOFyima2IS

begin

PROCESS(datain)

BEGIN

casedatainis

when"0000000"=>daout<="00000000";

when"0000001"=>daout<="00000001";

when"0000010"=>daout<="00000010";

when"0000011"=>daout<="00000011";

when"0000100"=>daout<="00000100";

when"0000101"=>daout<="00000101";

when"0000110"=>daout<="00000110";

when"0000111"=>daout<="00000111";

when"0001000"=>daout<="00001000";

when"0001001"=>daout<="00001001";--9

when"0001010"=>daout<="00010000";

when"0001011"=>daout<="00010001";

when"0001100"=>daout<="00010010";

when"0001101"=>daout<="00010011";

when"0001110"=>daout<="00010100";

when"0001111"=>daout<="00010101";

when"0010000"=>daout<="00010110";

when"0010001"=>daout<="00010111";

when"0010010"=>daout<="00011000";

when"0010011"=>daout<="00011001";--19

when"0010100"=>daout<="00100000";

when"0010101"=>daout<="00100001";

when"0010110"=>daout<="00100010";

when"0010111"=>daout<="00100011";

when"0011000"=>daout<="00100100";

when"0011001"=>daout<="00100101";

when"0011010"=>daout<="00100110";

when"0011011"=>daout<="00100111";

when"0011100"=>daout<="00101000";

when"0011101"=>daout<="00101001";--29

when"0011110"=>daout<="00110000";--30

when"0011111"=>daout<="00110001";

when"0100000"=>daout<="00110010";

when"0100001"=>daout<="00110011";

when"0100010"=>daout<="00110100";

when"0100011"=>daout<="00110101";

when"0100100"=>daout<="00110110";

when"0100101"=>daout<="00110111";

when"0100110"=>daout<="00111000";

when"0100111"=>daout<="00111001";--39

when"0101000"=>daout<="01000000";

when"0101001"=>daout<="01000001";

when"0101010"=>daout<="01000010";

when"0101011"=>daout<="01000011";

when"0101100"=>daout<="01000100";

when"0101101"=>daout<="01000101";

when"0101110"=>daout<="01000110";

when"0101111"=>daout<="01000111";

when"0110000"=>daout<="01001000";

when"0110001"=>daout<="01001001";--49

when"0110010"=>daout<="01010000";

when"0110011"=>daout<="01010001";

when"0110100"=>daout<="01010010";

when"0110101"=>daout<="01010011";

when"0110110"=>daout<="01010100";

when"0110111"=>daout<="01010101";

when"0111000"=>daout<="01010110";

when"0111001"=>daout<="01010111";

when"0111010"=>daout<="01011000";

when"0111011"=>daout<="01011001";--59

when"0111100"=>daout<="01100000";--60

when"0111101"=>daout<="01100001";

when"0111110"=>daout<="01100010";

when"0111111"=>daout<="01100011";

when"1000000"=>daout<="01100100";

when"1000001"=>daout<="01100101";--65

whenothers=>daout<="11111111";

ENDCASE;

ENDPROCESS;

ENDbehav;

 

BCD译码显示:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.all;

ENTITYyimaIS

PORT(datain:

INSTD_LOGIC_VECTOR(7DOWNTO0);--时钟、复位、特殊情况

--datain2:

INSTD_LOGIC_VECTOR(3DOWNTO0);

daout1:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);--light:

G1,R1,Y1,G2,R2,Y2;

daout2:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDyima;

ARCHITECTUREbehavOFyimaIS

begin

PROCESS(datain)

BEGIN

casedatain(7downto4)is

when"0000"=>daout1<="1000000";

when"0001"=>daout1<="1111001";

when"0010"=>daout1<="0100100";

when"0011"=>daout1<="0110000";

when"0100"=>daout1<="0011001";

when"0101"=>daout1<="0010010";

when"0110"=>daout1<="0000010";

when"0111"=>daout1<="1111000";

when"1000"=>daout1<="0000000";

when"1001"=>daout1<="0010000";

whenothers=>daout1<="0000000";

ENDCASE;

casedatain(3downto0)is

when"0000"=>daout2<="1000000";

when"0001"=>daout2<="1111001";

when"0010"=>daout2<="0100100";

when"0011"=>daout2<="0110000";

when"0100"=>daout2<="0011001";

when"0101"=>daout2<="0010010";

when"0110"=>daout2<="0000010";

when"0111"=>daout2<="1111000";

when"1000"=>daout2<="0000000";

when"1001"=>daout2<="0010000";

whenothers=>daout2<="0000000";

ENDCASE;

ENDPROCESS;

ENDbehav;

四、总体设计电路图

交通灯控制系统总体电路图

部分管脚分配图

五、硬件验证:

输入CLK接50MHZ的晶振,输出G1、Y1、R1、G2、Y2、R2分别接到6个发光二极管上,从而可以显示主道以及次道之间的红绿灯亮灭的状态。

数码管依次显示倒计时时间;结果正确,满足要求。

六、总结

通过这次实训,我们在程序的功能,源程序修改以及最后的硬件调试波形仿真中取得了更深一步的成就,通过理论结合实际进行不断地修改、讨论。

填补了我们在这一方面的不足,当最后结果出来的时候,我们心比蜜甜,通过这次实训,我们在实践中学会了很多在平时的实验中无法学到得东西。

将使我们在以后的工作中受益匪浅。

 

七、参考书目:

1、PLD与数字系统设计李辉编著西安电子科技大学出版社,2005

2、《数字电子技术基础》(第四版),阎石主编,高教出版社

3、候伯亨、顾新《VHDL硬件描述语言与数字逻辑电路设计》【M】西安电子科技大学出版社,2001-4。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2