eda课程设计交通灯带左拐.docx

上传人:b****6 文档编号:7621037 上传时间:2023-01-25 格式:DOCX 页数:11 大小:81.93KB
下载 相关 举报
eda课程设计交通灯带左拐.docx_第1页
第1页 / 共11页
eda课程设计交通灯带左拐.docx_第2页
第2页 / 共11页
eda课程设计交通灯带左拐.docx_第3页
第3页 / 共11页
eda课程设计交通灯带左拐.docx_第4页
第4页 / 共11页
eda课程设计交通灯带左拐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

eda课程设计交通灯带左拐.docx

《eda课程设计交通灯带左拐.docx》由会员分享,可在线阅读,更多相关《eda课程设计交通灯带左拐.docx(11页珍藏版)》请在冰豆网上搜索。

eda课程设计交通灯带左拐.docx

eda课程设计交通灯带左拐

eda课程设计交通灯带左拐

1设计任务和要求.........................................................2

1.1设计任务............................................................2

1.2交通灯控制器的基本要求..............................................2

2工作原理及方案设计.....................................................2

2.1交通灯控制器的设计原理..............................................2

2.2交通灯控制器的基本方案...............................................3

3系统设计...............................................................4

3.1计数器的设计........................................................4

3.2控制器的设计........................................................4

3.3分位器的设计........................................................5

3.4交通灯控制器的顶层原理..............................................5

4参考程序...............................................................6

4.1计数器的程序........................................................6

4.2控制器的程序.......................................................7

4.3分位电路程序.......................................................10

4.4.七段译码电路的程序................................................11

5系统调试与性能分析.....................................................13

5.1交通灯计数器波形图.................................................13

5.2控制器的波形图......................................................13

5.3分位的波形图.......................................................14

5.4七段译码电路的波形图...............................................14

1设计任务和要求

1.1设计任务

用FPGA实现一个智能交通灯系统,根据设计要求分析智能交通灯系统的基本原理,设计系统框图,设计完成后给出FPGA占用资源分析。

1.2交通灯控制器的基本要求

(1)道路足够宽,有双向六通道。

车辆直行不允许车辆左拐,允许右拐。

须另设左拐时间。

针对上述通行规则,车辆控制灯有直行(?

)、左拐(?

)和右拐(?

)三个绿色指示灯、黄灯以及一个红色指示灯。

红色指示灯亮,代表禁止车辆通行、一个方向灯亮的顺序为绿灯、黄灯、左拐灯、红灯,前三种灯亮时间等于另一侧的红灯亮时间。

(2)车辆正常通行时间为40秒,黄灯为5秒,左拐为10秒,由各方向设置的倒计时显示器显示时间,向司机提剩余时间。

当一个方向车流量加大时,自动调节。

(3)行人过马路需提出申请,且只在车辆直行时才能响应行人的请求,行人在申请得到响应后方可穿越,穿越时间为60秒。

(4)交通警察有权随时指定系统停在某个状态,确保某个方向的车辆流通。

2工作原理及方案设计

2.1交通灯控制器的设计原理

交通灯控制器的核心范围是一个计数范围为0~59共(60秒)的计数器和一个根据计数值做出规定反映的控制器。

另外,还需要输入CLK时钟信号。

最后,要驱动七段数码管,显然还需要一个译码电路。

2

图2.1交通灯控制器原理图

2.2交通灯控制器的基本方案

交通灯控制器的核心范围是一个计数范围为0~59共(60秒)的计数器和一个根据计数值做出规定反映的控制器。

另外,作者所用的实验仪配备的晶振为50MHZ,因此还需要一个分频电路。

最后,要驱动七段数码管,显然还需要一个译码电路。

3

七段数码管分位译码电路

倒计时数字及Clk1Hz

“闪烁控制信

号”红,黄,绿Reset控制器计数器发光二极管

Hold

图2.2交通灯控制器系统框图

3系统设计

3.1计数器的设计

这里需要的计数器的计数范围为0~59。

计到59后,下一个时钟沿恢复到0,开始下一轮计数。

此外,当检测到特殊情况(hold=1)发生时,计数器暂停计数,而系统恢复信号则使计数器异步清0。

3.2控制器的设计

控制器的作用是根据计数器控制发光二极管的亮、灭,以及输出倒计时数值给七段数译管的分位译码电路。

此外,当检测到特殊情况时,无条件点亮红色的发光二极管。

由于控制器要对于数值进行判断,很容易想到用IF语句来实现。

本设计采用利用时

4

钟沿的下降沿读取前级计数器的计数植,然后做出反应。

GYGRGYGRNANB

E11

1

数码控制器显

clkNnanb

]

.2控制器符号框图图3

3.3分位器的设计

因为控制器输出的倒计时数值可能是1位或2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数。

(如25分为2和5,7分为0和7)

与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。

控制器中,引入了寄存器。

为了让读者开拓眼界,分位电路就用组合逻辑电路实现。

3.4交通灯控制器的顶层原理

交通灯控制器的核心范围是一个计数范围为0~59共(60秒)的计数器和一个根据计数值做出规定反映的控制器。

另外,还需要输入CLK时钟信号。

最后,要驱动七段数码管,显然还需要一个译码电路来完成交通灯控制器的设计。

5

图3.4交通灯控制器的顶层原理图

4参考程序

4.1计数器的程序

libraryieee;

useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt120is

port(clk,rst,hold:

instd_logic;

cq:

outstd_logic_vector(6downto0));

endcnt120;

architecturebehavofcnt120isbegin

process(clk,rst,hold)

variablecqi:

std_logic_vector(6downto0);

begin

ifrst='1'thencqi:

=(others=>'0');

elsifclk'eventandclk='1'then

6

ifhold='1'then

cqi:

=cqi+0;——当出现紧急情况时,计数器暂停计数

else

ifcqi<119thencqi:

=cqi+1;

elsecqi:

=(others=>'0');

endif;

endif;

endif;

cq<=cqi;

endprocess;

endbehav;

4.2控制器的程序

libraryieee;

useieee.std_logic_1164.all;

entitycontrolleris

port

(clock:

instd_logic;

countnum:

inintegerrange0to119;

numa,numb:

outintegerrange0to59;

reda,greena,yellowa,lefta,reda1,greena1,yellowa1,lefta1:

outstd_logic;

redb,greenb,yellowb,leftb,redb1,greenb1,yellowb1,leftb1:

outstd_logic);

end;

architecturebehaviorofcontrolleris

begin

process(clock)

begin

iffalling_edge(clock)then

7

ifcountnum<=39then

numa<=40-countnum;

reda<='0';

greena<='1';

yellowa<='0';

lefta<='0';

reda1<='0';

greena1<='1';

yellowa1<='0';

lefta1<='0';

elsif(countnum<=44)then

numa<=45-countnum;

reda<='0';

greena<='0';

yellowa<='1';

lefta<='0';

reda1<='0';

greena1<='0';

yellowa1<='1';

lefta1<='0';

elsif(countnum<=59)then

numa<=59-countnum;

reda<='0';

greena<='0';

yellowa<='0';

lefta<='1';

reda1<='0';

greena1<='0';

yellowa1<='0';

lefta1<='1';

else

8

numa<=119-countnum;

reda<='1';

greena<='0';

yellowa<='0';

lefta<='0';

reda1<='1';

greena1<='0';

yellowa1<='0';

lefta1<='0';

endif;

ifcountnum<=59then

numb<=59-countnum;

redb<='1';

greenb<='0';

yellowb<='0';

leftb<='0';

redb1<='1';

greenb1<='0';

yellowb1<='0';

leftb1<='0';

elsifcountnum<=99then

numb<=100-countnum;

redb<='0';

greenb<='1';

yellowb<='0';

leftb<='0';

redb1<='0';

greenb1<='1';

yellowb1<='0';

leftb1<='0';

elsifcountnum<=104then

9

numb<=105-countnum;

redb<='0';

greenb<='0';

yellowb<='1';

leftb<='0';

redb1<='0';

greenb1<='0';

yellowb1<='1';

leftb1<='0';

else

numb<=119-countnum;

redb<='0';

greenb<='0';

yellowb<='0';

leftb<='1';

redb1<='0';

greenb1<='0';

yellowb1<='0';

leftb1<='1';

endif;

endif;

endprocess;

end;

4.3分位电路程序

libraryieee;

useieee.std_logic_1164.all;

entityfenweiis

port(numin:

inintegerrange0to60;

numa:

outintegerrange0to9;

10

numb:

outintegerrange0to9);

end;

architecturebehavioroffenweiis

begin

process(numin)

begin

ifnumin>=50then

numa<=5;

numb<=numin-50;

elsifnumin>=40then

numa<=4;

numb<=numin-40;

elsifnumin>=30then

numa<=3;

numb<=numin-30;

elsifnumin>=20then

numa<=2;

numb<=numin-20;

elsifnumin>=10then

numa<=1;

numb<=numin-10;

else

numa<=0;

numb<=numin;

endif;

endprocess;

end;

4.4七段译码电路的程序

libraryieee;

11

useieee.std_logic_1164.all;entityymqis

port(ain:

instd_logic_vector(3downto0);

yout:

outstd_logic_vector(6downto0));

end;

architectureoneofymqisbegin

process(ain)

begin

caseainis

when"0000"=>yout<="0111111";when"0001"=>yout<="0000110";when"0010"=>yout<="1011011";when"0011"=>yout<="1001111";when"0100"=>yout<="1101101";when"0101"=>yout<="1111101";when"0110"=>yout<="0000111";when"0111"=>yout<="1111111";when"1000"=>yout<="1101111";whenothers=>yout<="0000000";endcase;

endprocess;

end;

12

5系统调试与性能分析

5.1交通灯计数器波形图

Clk为输入频率,上升沿有效。

cq为输出的计数值,最大为120。

当hold为低电平时,cq数值保持不变,当rst为低电平时cq数值复位。

5.2控制器的波形图

Clock为输入频率,当下降沿来时有效。

Greena到leftb1为东西南北的控制灯亮暗情况。

Numa,numb分别为东西,南北的控制灯的倒计时。

13

5.3分位的波形图

Numin的输入数值拆成个位numa和百位numb

5.4七段译码电路的波形图

译码器顾名思义,把qin输入的数值变成7位数的二进制码,驱动数码管显示。

数码管为

静态显示

14

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

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1