eda交通灯.docx
- 文档编号:11739405
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:12
- 大小:230.05KB
eda交通灯.docx
《eda交通灯.docx》由会员分享,可在线阅读,更多相关《eda交通灯.docx(12页珍藏版)》请在冰豆网上搜索。
eda交通灯
EDA结课作业设计报告
——交通灯控制器
1.设计选题
十字路口交通控制系统设计。
2.设计要求
设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的持续时间分别是40、5和45秒。
当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。
当特殊运行状态结束后,管理系统恢复原来的状态,继续正常运行。
40s5s45s
东西绿灯黄灯红灯
5s
南北红灯绿灯黄灯
45s
计数值与交通灯亮灭的关系图
三.设计实现
1.clk时钟秒脉冲发生电路
模块功能:
稳定产生1hz的脉冲信号
系统输入信号:
Clk:
由外接信号发生器提供10hz的时钟信号;
系统输出信号:
clk_out:
产生每秒一个脉冲的信号。
Vhdl源程序
LIBRARYIEEE;
USEIEEE.Std_Logic_1164.ALL;
USEIEEE.Std_Logic_unsigned.ALL;
ENTITYfenpinqiIS
PORT(clk:
INStd_Logic;
clk_out:
OUTStd_Logic);
ENDfenpinqi;
ARCHITECTUREDeviderOFfenpinqiIS
signalcount:
Std_Logic_vector(3downto0);
BEGIN
PROCESS
begin
waituntilClk'eventandclk='1';
IF(Count<9)then
count<=count+1;
Clk_out<='0';
else
count<=(others=>'0');
clk_out<='1';
endif;
endprocess;
endARCHITECTUREDevider;
Quartus下的仿真图:
2.模90计数器
模块功能:
产生从0到89的周期信号
系统输入:
clk_out:
接收由clk电路的提供的1hz的时钟脉冲信号;
系统输出信号:
countNum:
倒计数值。
Vhdl源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYcountIS
PORT(clock:
INSTD_LOGIC;
countNum:
BuFFeRINTEGERRANGE0TO90);
END;
ARCHITECTUREbehaviorOFcountIS
BEGIN
process(Clock)
BEGIN
IFfalling_edge(Clock)THEN
IFcountNum=90THEN
countNum<=0;
ELSE
countNum<=countNum+1;
ENDIF;
ENDIF;
ENDPROCESS;
END;
Quartus下的仿真图:
3.红绿灯状态转换电路
模块功能:
控制红绿灯的转换
系统输入信号:
Clock:
时钟信号;
Hold:
紧急信号;
countNum:
倒计数信号。
系统输出信号:
NumA,NumB:
接收计数秒数选择电路状态转换信号;
DXR,DXG,DXY:
控制东西方向灯的状态显示;
NBR,NBG,NBY:
控制南北方向灯的状态显示。
Vhdl源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmainIS
PORT(Clock:
INSTD_LOGIC;
Hold:
instd_logic;
CountNum:
inINTEGERRANGE0TO89;
NumA,NumB:
outINTEGERRANGE0TO45;
RedA,GreenA,YellowA:
outstd_logic;
RedB,GreenB,YellowB:
outstd_logic);
ENDmain;
ARCHITECTUREbehaviorOFmainIS
BEGIN
process(Clock)
BEGIN
IFfalling_edge(Clock)THEN
IF(Hold='0')THEN
RedA<='1';
RedB<='1';
GreenA<='0';
GreenA<='0';
YellowA<='0';
YellowB<='0';
ELSIFCountNum<=39THEN
NumA<=39-CountNum;
RedA<='0';
GreenA<='1';
YellowA<='0';
ELSIFCountNum<=44THEN
NumA<=44-CountNum;
RedA<='0';
GreenA<='0';
YellowA<='1';
ELSE
NumA<=89-CountNum;
RedA<='1';
GreenA<='0';
YellowA<='0';
ENDIF;
IFCountNum<=44THEN
NumB<=44-CountNum;
RedB<='1';
GreenB<='0';
YellowB<='0';
ELSIFCountNum<=84THEN
NumB<=84-CountNum;
RedB<='0';
GreenB<='1';
YellowB<='0';
ELSe
NumB<=89-CountNum;
RedB<='0';
GreenB<='0';
YellowB<='1';
ENDIF;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREbehavior;
4.时间显示电路
模块功能:
本电路负责红绿灯的计数时间的显示;
模块说明:
系统输入信号:
Clock:
时钟信号;
Hold:
紧急信号;
Numin:
时间信号。
系统输出信号:
NumA,NumB:
负责东西路红绿灯的显示秒数位;
NumC,NumD:
负责南北路红绿灯的显示秒数位。
Vhdl源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjiema1IS
PORT(Numin:
INintegerRANGE0TO45;
clk:
instd_logic;
hold:
instd_logic;
NumC,NumD:
OUTIntegerRANGE0to15);
END;
ARCHITECTUREbehaviorOFjiema1IS
signaltimes:
std_logic;
BEGIN
process(Numin,clk)
BEGIN
IFclk'eventandclk='1'then
IFhold='1'then
IFNumin>=40THEN
NumC<=4;
NumD<=Numin-40;
ELSIFNumin>=30THEN
NumC<=3;
NumD<=Numin-30;
ELSIFNumin>=20THEN
NumC<=2;
NumD<=Numin-20;
ELSIFNumin>=10THEN
NumC<=1;
NumD<=Numin-10;
ELSE
NumC<=0;
NumD<=Numin;
ENDIF;
else
iftimes='1'then
times<='0';
NumC<=15;
NumD<=15;
else
times<='1';
IFNumin>=40THEN
NumC<=4;
NumD<=Numin-40;
ELSIFNumin>=30THEN
NumC<=3;
NumD<=Numin-30;
ELSIFNumin>=20THEN
NumC<=2;
NumD<=Numin-20;
ELSIFNumin>=10THEN
NumC<=1;
NumD<=Numin-10;
ELSE
NumC<=0;
NumD<=Numin;
ENDIF;
endif;
endif;
endif;
ENDPROCESS;
END;
顶层文件(画电路图实现)
Quartus下的仿真图:
Block=1时:
Block=0时:
4.结束语
通过这次利用Quartus实现交通灯的经历,我对来时上课讲的EDA知识有了更深一层的认识。
在编写整个程序的过程中,我对于Vhdl的编写水平有了明显的提升。
这些都让我体会的学以致用的乐趣,知识不光只是记笔记。
同时,我也深深的体会到要想学好EDA,动手操作十分关键。
因此,我建议学院调整EDA课程的学习时间分配,让同学们有更多的上机学习时间和机会。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 交通灯
![提示](https://static.bdocx.com/images/bang_tan.gif)