eda课程设计交通灯控制器的设计优秀文档Word下载.docx

上传人:b****1 文档编号:3830350 上传时间:2023-05-02 格式:DOCX 页数:48 大小:492.53KB
下载 相关 举报
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第1页
第1页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第2页
第2页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第3页
第3页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第4页
第4页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第5页
第5页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第6页
第6页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第7页
第7页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第8页
第8页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第9页
第9页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第10页
第10页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第11页
第11页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第12页
第12页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第13页
第13页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第14页
第14页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第15页
第15页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第16页
第16页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第17页
第17页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第18页
第18页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第19页
第19页 / 共48页
eda课程设计交通灯控制器的设计优秀文档Word下载.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

eda课程设计交通灯控制器的设计优秀文档Word下载.docx

《eda课程设计交通灯控制器的设计优秀文档Word下载.docx》由会员分享,可在线阅读,更多相关《eda课程设计交通灯控制器的设计优秀文档Word下载.docx(48页珍藏版)》请在冰点文库上搜索。

eda课程设计交通灯控制器的设计优秀文档Word下载.docx

2.2系统组成

其中系统时序发生电路最主要的功能就是产生一些额外的输出信号,它们是为红绿灯信号译码电路提供的频率39kHz的扫描信号,为定时控制电路提供的使能(enable)控制信号,为红绿灯信号译码电路提供的占空比为50%的秒闪烁信号;

红绿灯计数时间选择模块是负责输出显示器需要的值(即倒数的秒数值),作为定时控制电路的倒计时秒数,在该模块中可设置东西路口河南北路口的信号灯维持秒数;

定时控制电路功能就是负责接收红绿灯计数时间选择模块输出的值(即倒数的秒数值),然后将其转换成BCD码,利用七段显示器显示出来,让新人能清楚的知道再过多久就会变成红灯;

红绿灯信号译码电路除了负责控制路口红绿灯的显示外,最主要的功能就是能够利用开关来切换手动与自动的模式,让交警能够通过外部输入的方式指挥交通的,但为了配合高峰时段,防止交通拥挤,有时还必须使用手动红字,即让交警执行指挥交通。

为了系统正常运作,整个控制器采用同步工作方式,由外接信号发生器(该电路的设计可参见本章)提供1Hz的时钟信号CLK。

3.系统层次化设计与软件仿真

EDA技术的基本设计方法有电路设计方法和系统设计方法。

电路级设计方法已经不能适应新的形势,本系统采用的是系统级层次设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片FPGA芯片实现,首先用VHDL语言编写各个功能模块程序,最后通过综合器和适配器生成最终的目标器件,然后用顶层原理图将各功能模块连接起来。

下面给出各模块的VHDL设计过程和仿真结果。

3.1系统时序发生电路

在红绿灯交通信号控制系统中,大多数的情况是通过自动控制的方式指挥交通的。

因此,为了避免意外事件的发生,电路必须有一个稳定的时钟(clock)才能让系统正常工作。

但为了配合高峰时段,防止交通拥挤,有时也必须使用手动可能工资,即让交警能够顺利的指挥交通。

CLK_gen电路最主要的功能就是产生一些额外的输出信号,并将其用作后续几个电路的使用(enable)控制与同步信号处理。

该电路的核心部分就是分频电路,通过对外接信号发生器提供1Hz的时钟信号进行1000分频,得到一个周期1s的输出使能信号ena_1Hz(占空比1:

1000)和flash_Hz(占空比1:

1);

1024分频后得到红绿灯信号译码电路所需要的频率为39kHz的显示使能信号ena_scan。

VHDL源代码:

LIBRARYIEEE;

ENTITYclk_genIS

Port(reset:

instd_logic;

clk:

ena_scan:

outstd_logic;

ena_1Hz:

flash_1Hz:

outstd_logic);

end;

ARCHITECTUREBEHAVIORofclk_genIS

CONSTANTscan_bit:

positive:

=10;

CONSTANTscan_val:

=1024;

CONSTANTtwo_Hz_bit:

=15;

CONSTANTtwo_Hz_val:

=19532;

signalclk_scan_ff:

std_logic_vector(scan_bit-1downto0);

signalclk_2Hz_ff:

std_logic_vector(two_Hz_bit-1downto0);

signalena_s,ena_one,ena_two:

std_logic;

begin

scan:

process(clk,reset)

begin

ifreset='

1'

then

clk_scan_ff<

="

000000000"

;

ena_s<

='

0'

elsif(clk'

eventandclk='

)then

ifclk_scan_ff>

=scan_val-1then

else

=clk_scan_ff+1;

endif;

endprocess;

ena_scan<

=ena_s;

two_Hz:

process(reset,clk,ena_s)

then

ena_one<

ena_two<

clk_2Hz_ff<

0000000000000"

)then

ifena_s='

ifclk_2Hz_ff>

=two_Hz_val-1then

=notena_one;

=clk_2Hz_ff+1;

ena_1Hz<

=ena_oneandena_twoandena_s;

flash_1Hz<

=ena_one;

endBEHAVIOR;

系统时序发生电路clk_gen的仿真输出波形和元件符号

系统时序发生电路clk_gen的仿真输出波形

图3-1系统时序发生电路CLK_GEN

3.2红绿灯计数时间选择模块

当过马路的时候,绿灯的一方又是会附加一个显示器告诉行人,目前还剩下几秒信号灯将变成红灯。

因此,traffic_mux电路最主要的功能就是负责输出显示器需要的值(即倒数的秒值数),作为定时控制电路的技术秒数。

该电路的核心部分就是数据选择电路,利用选择语句case_when(单输入,多输出)实现4选1,其选择输入信号sign_state是红绿灯信号译码电路产生的4种状态信号,状态转换输出表如表3-2所示。

状态sign_state

东西路口

南北路口

时间(s)

00(状态0)

东西路口为通行状态,此时东西路口绿灯亮

南北路口红灯亮

30

01(状态1)

东西路口为过渡状态,此时东西路口黄灯亮

5

10(状态2)

东西路口红灯亮

南北路口为通行状态,此时南北路口绿灯亮

20

11(状态3)

南北路口为过渡状态,此时南北路口黄灯亮

表3-2红绿灯计数时间状态转换表

ENTITYtraffic_muxIS

PORT(reset,clk,ena_scan,recount:

sign_state:

instd_logic_vector(1downto0);

load:

outstd_logic_vector(7downto0));

ARCHITECTUREBEHAVIORoftraffic_muxIS

CONSTANTyellow0_time:

integer:

=5;

CONSTANTgreen0_time:

=30;

CONSTANTyellow1_time:

CONSTANTgreen1_time:

=20;

load_time:

process(reset,clk)

load<

00000000"

if(ena_scan='

andrecount='

CASEsign_stateIS

WHEN"

00"

=>

load<

=CONV_STD_LOGIC_VECTOR(green0_time,8);

01"

=CONV_STD_LOGIC_VECTOR(yellow0_time,8);

10"

=CONV_STD_LOGIC_VECTOR(green1_time,8);

WHENOTHERS=>

=CONV_STD_LOGIC_VECTOR(yellow1_time,8);

ENDCASE;

ENDIF;

ENDPROCESS;

ENDBEHAVIOR;

3.2.2计数时间选择模块traffic_mux的仿真输出波形和元件符号

计数时间选择模块traffic_mux的仿真输出波形

3.3定时控制电路

该电路的核心部分是可置数的减法计数器电路和七段译码输出显示电路。

可置数的减法计数器电路是利用if_then_else语句完成,两位七段译码输出显示电路则利用case_when语句通过查表的方式构成。

USEIEEE.std_logic_1164.all;

ENTITYcount_downIS

Port(reset,clk,ena_1Hz,recount:

instd_logic_vector(7downto0);

seg7:

outstd_logic_vector(15downto0);

next_state:

ARCHITECTUREBEHAVIORofcount_downIS

signalcnt_ff:

std_logic_vector(7downto0);

count:

if(reset='

cnt_ff<

seg7<

0000000000000000"

ifena_1Hz='

if(recount='

=load-1;

=cnt_ff-1;

caseconv_integer(cnt_ff)is

when38=

endcase;

next_state<

whencnt_ff=1else'

定时控制电路count_down的仿真输出波形和元件符号

定时控制电路count_down的仿真输出波形

3.4红绿灯信号译码电路

在红绿灯交通灯信号系统中,大多数的情况是通过自动控制的方式指挥交通的。

但为了配合高峰时段,防止交通拥挤,有时还必须使用手动控制,即让交警自行指挥交通。

因此,traffic_fsm电路除了负责监控路口红绿灯之外,最主要的功能就是能够利用开关来切手动与自动的模式,让交警能够通过外部输入的方式来控制红绿灯信号系统的运作。

输出信号:

recount(产生重新计数的输出使能控制信号)、sign_state(产生的输出状态信号共2位,4种状态)、red(负责红灯的显示,共2位,4种状态)、green(负责绿灯的显示,共2位,4种状态)、yelllow(负责黄灯的显示,共2位,4种状态)。

设南北路口红黄绿3色灯为r0、y0、g0,东西路口的红黄绿3色灯为r1、y1、g1,自动操作模式和手动操作模式信号灯显示的真值表如表3-2、表3-3所示。

信号灯显示的真值表

CLK

reset

ena_1hz

next_stage

state状态

sign_stage

recount

light

state1

1

X

r0g1

00

010010

state2

r0g1->

roy1

01

011000

state3

r0y1->

g0r1

10

100001

r0y1

state4

g0r1->

y0r1

11

100100

state5

y0r1->

state6

others

110000

表中定义了一些进程(process)间整体共享的电路内部传递信号,以整合所有功能,它们是:

state信号(设定红绿灯电路的状态,在该程序里定义8种状态)、st_transfer(在手动模式下判断是否转态的控制信号)、light[5:

0](在自动模式下该信号为是否转态的控制信号,其位数从高到低分别表示red1、red0、yellow1、yellow0、green1、green0)。

USEIE

ENTITYtraffic_CONIS

Port(reset,clk,ena_scan,ena_1Hz,flash_1Hz,a_m,st_butt,next_state:

recount:

outstd_logic_vector(1downto0);

red:

green:

yellow:

outstd_logic_vector(1downto0));

ARCHITECTUREBEHAVIORoftraffic_CONIS

typeSreg0_typeis(r0g1,r0y1,g0r1,y0r1,y0y1,y0g1,g0y1,r0r1);

signalstate:

Sreg0_type;

signalst_transfer:

signallight:

std_logic_vector(5downto0);

rebounce:

process(reset,clk,ena_scan,st_butt)

variablerebn_ff:

if(st_butt='

orreset='

rebn_ff:

111111"

st_transfer<

if(ena_scan='

if(rebn_ff>

=3)then

rebn_ff:

=rebn_ff-1;

elsif(rebn_ff=2)then

else

=rebn_ff;

endif;

endprocess;

CON:

process(clk,ena_1Hz,reset)

If(reset='

state<

=r0g1;

sign_state<

recount<

if(clk'

caseSTATEis

whenr0g1=>

if(a_m='

andena_1Hz='

if(next_state='

=r0y1;

elsif(a_m='

andena_scan='

if(st_transfer='

whenr0y1=>

if(a_m='

=g0r1;

wheng0r1=>

=y0r1;

11"

wheny0r1=>

whenothers=>

state<

endcase;

light<

010010"

when(state=r0g1)else

"

011000"

when(state=r0y1)else

100001"

when(state=g0r1)else

100100"

when(state=y0r1)else

110000"

;

red<

=light(5downto4);

yellow<

=light(3downto2);

green<

=light(1downto0);

信号译码电路

信号译码电路traffic_CON的仿真输出波形

在源程序中,利用类别的定义格式Typetype_nameistype_mark,将所有红绿灯交通信号系统发生的状况利用类别(type)的定义格式一一列举出来(程序中共定义了8种情况),信号线state的设置的目的是将sreg0_type定义的8种状况转换成位的方式表示。

程序包含两个进程debounce、con。

进程debounce是抖动清除电路,其重点在于st_transfer何时为1.当外部按下st_butt键时(即st_buff=0),内部的计数器rebn_ff开始计数(3f-02),在rebn_ff尚未数到02秒时,st_butt键被松开,那么状态将不会改变。

假如是由于电路效应引起开关误动作,开关抖动的速度是非常快的(约小于1ms),故电路不会有误动作的产生,也就达到了这个抖动消除的目的。

进程con是红绿灯状态控制器和红绿灯闪烁控制器。

3.5红绿灯交通控制器顶层电

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

当前位置:首页 > 工程科技 > 能源化工

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

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