您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > EDA(课程设计)交通灯课程设计报告(EDA)
第1页共20页目录第一章设计任务和要求·········································1.1设计任务与要求··················································1.2设计分析························································第二章电路工作原理及方案设计第三章单元电路设计与仿真·································3.1软件原理图······················································3.2各模块的原理及其程序············································3.2.1计数模块的设计及仿真图········································3.2.2控制模块的设计及仿真图········································3.2.3分位模块的设计及仿真图········································3.2.4分频模块的设计及仿真图········································3.2.5译码模块的设计及仿真图········································第四章心得总结···········································第2页共20页第一章设计任务与要求1.1设计任务与要求在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向为绿灯、黄灯、红灯。另一个方向为红灯、绿灯、黄灯。设置一组数码管,以倒计时的方式显示可以通过的或者禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别为20S,5S,25S当各条路上任意一条路上出现故障时,各方向都是红灯亮,倒计时停止,且显示数字在闪烁。当特殊情况结束后,控制器恢复正常。1.2设计分析1,主控制模块:(1)当没有故障出现时,灯的运行方法如下所示:其中,s1,s2,s3,s4分别是四种状态下的表现,程序我们用了状态机的方法,罗列了4种状态,利用case语句把4种状态分别表现出来;部分程序如下:casestateiswhens1=--“=”等效于thenreda='1';--a路红灯灭yellowa='1';--a路黄灯灭greena='0';--a路绿灯亮redb='0';--b路红灯亮yellowb='1';--b路黄等灭greenb='1';--b路黄等灭numa=count;numb=count+5;可见,一路灯走完一个周期T=50s(红25+黄5+绿20).状态A路(主干道)B路(支干道)红黄绿红黄绿S1√√S2√√S3√√S4√√第3页共20页第二章电路工作原理及方案设计总体框图:在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;外部时钟信号clk。LED七段显示数码管的输出信号count1(6downto0),count2(6downto0),count3(6downto0),count4(6downto0);在自顶向下的VHDL设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。通过上面的分析,不难得知可以把交通灯控制系统划分为4个模块:时钟分频模块,计数模块,控制模块,分位译码模块。控制器电路:根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译码管的分位译码电路。当检测到手动控制信号(Con=’1’)时,执行手动控制;计数器电路:这里需要的计数器的计数范围为0~89。计到89后,下一个时钟沿升为1时,开始下一轮计数,此外当系统复位信号(Reset=’1’)使计数器异步清‘0’。手动信号(Con=’1’)使系统清‘0’。分位译码电路:因为控制器输出的倒计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如20分为2和发光二极管控制器分频电路分位电路计数器七段数码管译码电路倒计时数字显示ResetdClkd计数值Con1dCond第4页共20页0,7分为0和7)。七段数码管的译码电路根据控制电路的控制信号,驱动交通灯的显示,通过输入二进制数值,输出信号点亮二极管,我们用的是共阳极数码管,因此译码电路输出逻辑数值‘0’点亮二极管,译码电路输出逻辑数值‘1’熄灭二极管。第三章单元电路设计与仿真3.1软件原理图3.2各模块的原理及其程序3.2.1计数模块的设计及仿真图功能:实现0到99的计数clk0—脉冲输入con—手动控制信号reset—复位信号countnum—计数输出counterinstclk0clk0conconresetresetcountnum[6..0]countnum[6..0]第5页共20页仿真波形如下:第6页共20页模块程序:libraryieee;useieee.std_logic_1164.all;entitycounterisport(clk0:instd_logic;con:instd_logic;reset:instd_logic;countnum:bufferintegerrange0to99);endcounter;architectureoneofcounterisbeginprocess(reset,clk0)beginifreset='1'thencountnum=0;elsifrising_edge(clk0)thenifcon='1'thencountnum=0;elseifcountnum=99thencountnum=0;elsecountnum=countnum+1;endif;endif;endif;endprocess;endone;3.2.2控制模块的设计及仿真图功能:控制发光二极管的亮、灭,以及输出倒计时数值给七段译码管的分位译码电路。clk1—脉冲信号输入con1—手动控制信号con2—状态控制信号countnum—计数输入numa,numb—两个方向的倒计时数值输出ra,ga,ya,ga1,rb,gb,yb,gb1—发光二极管输出controllerinstclk1clk1con1con1con2con2countnum[6..0]countnum[6..0]numa[4..0]numa[4..0]numb[4..0]numb[4..0]raragagayayaga1ga1rbrbgbgbybybgb1gb1第7页共20页仿真波形如下:模块程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycontrolleris第8页共20页port(clk1:instd_logic;con1:instd_logic;con2:instd_logic;countnum:inintegerrange0to89;numa,numb:outintegerrange0to25;ra,ga,ya,ga1:outstd_logic;rb,gb,yb,gb1:outstd_logic);endcontroller;architectureoneofcontrollerissignalm:integerrange0to7;beginprocess(clk1,con1,con2,countnum)variableaa:std_logic_vector(7downto0);beginif(clk1'eventandclk1='1')thenifcon1='0'thenifcountnum=65thennumb=90-countnum;numa=90-countnum;ifcountnum=70thenaa:=00011000;elseaa:=00101000;numa=70-countnum;endif;elsifcountnum=45thennumb=65-countnum;numa=65-countnum;ifcountnum=50thenaa:=10000100;elseaa:=10000010;numb=50-countnum;endif;elsifcountnum=20thennuma=45-countnum;numb=45-countnum;ifcountnum=25thenaa:=01001000;elseaa:=00101000;numa=25-countnum;endif;elsifcountnum=0thennuma=20-countnum;第9页共20页numb=20-countnum;ifcountnum=5thenaa:=10000100;elseaa:=10000010;numb=5-countnum;endif;endif;elseifcon1='1'thennuma=0;numb=0;ifcon2='1'thenifm=7thenm=0;elsem=m+1;endif;endif;ifm=0thenaa:=01001000;elsifm=1thenaa:=00101000;elsifm=2thenaa:=10000100;elsifm=3thenaa:=10000010;elsifm=4thenaa:=00011000;elsifm=5thenaa:=00101000;elsifm=6thenaa:=10000001;elsifm=7thenaa:=10000010;endif;endif;endif;endif;ra=aa(7);ga=aa(6);第10页共20页ya=aa(5);ga1=aa(4);rb=aa(3);gb=aa(2);yb=aa(1);gb1=aa(0);endprocess;endone;3.2.3分位模块的设计与仿真图模块程序:libraryieee;useieee.std_logic_1164.all;entityfenweiisport(numin:inintegerrange0to25;numa,numb:outintegerrange0to9);endfenwei;architectureoneoffenweiisbeginprocess(numin)variablenuma1,numb1:integerrange0to9;beginifnumin=20thennuma1:=2;numb1:=numin-20;elsifnumin=10thennuma1:=1;numb1:=numin-10;elsenuma1:=0;numb1:=numin;endif;numa=numa1;numb=numb1;endprocess;endone;功能:把倒计时的数值分成2个1位的十进制数。fenweiinstnumin[4..0]numin[4..0]numa[3..0]numa[3..0]numb[3..0]numb[3..0]第11页共20页numin:倒计时数值输入numa,numb—将数值分为2个1位的十进制输出仿真波形如下:3.2.4分频模块的设计及仿真模块程序useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityclk_10isport(clk:instd_logic;clk_div10:outstd_logic);e
本文标题:EDA(课程设计)交通灯课程设计报告(EDA)
链接地址:https://www.777doc.com/doc-2405523 .html