EDA与FPGA课设交通灯.docx
- 文档编号:30744018
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:9
- 大小:909.37KB
EDA与FPGA课设交通灯.docx
《EDA与FPGA课设交通灯.docx》由会员分享,可在线阅读,更多相关《EDA与FPGA课设交通灯.docx(9页珍藏版)》请在冰豆网上搜索。
EDA与FPGA课设交通灯
一、实验目的
①学习较复杂的数字电路系统的设计
②熟悉ispEXPERT软件的使用方法
③学习用VHDL基本逻辑电路和状态机电路的综合设计应用。
二、实验要求
①主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
②主干道处于常允许通行状态,而支干道有车来才允许通行。
当主干道允许通行亮绿灯时,支干道亮红灯。
而支干道允许通行亮绿灯时,主干道亮红灯。
③当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,由亮绿灯变成亮红灯转换时,先亮5s的黄灯作为过渡,并进行减计时显示。
三、设计方案
①设置支干道有车开关SB。
②系统中要求有45秒、25秒和5秒三种定时信号,需要设计三种相应的计时显示电路。
计时方法为倒计时。
定时的起始信号由主控电路给出,定时时间结束的信号输入到主控电路。
③主控制电路的输入信号一方面来自车辆检测,另一方面来自45秒、25秒、5秒的定时到信号;输出有计时启动信号(置计数起始值)和红绿灯驱动信号。
四、实验原理
实验有四个模块组成:
显示模块,计数模块,控制模块,链接模块。
①显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
②每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
③控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
④链接模块将各个模块链接起来。
实验交通灯状态转移如图1所示:
模块结构
五、主要仪器设备
IspDesignEXPERT软件,FPGA配置存储芯片,硬件电路板。
六、实验步骤
①启动IspDesignEXPERT软件,并创立设计项目emma和选择器件ispLSI1016E。
②在Source-New中,选择“VHDLModule”,然后选择OK。
③在VHDL文本编辑器中输入源文件。
④选择Tools-SynplicitySynplifySynthesis命令,对源文件进行编译、综合。
⑤在项目管理器的处理过程窗口中选择ConstraintManager选项,进行引脚锁定,根据实验板来进行引脚锁定。
⑥插板,在Tools-ISDP中,搜索源文件和板,进行调试,观察板上结果。
七、调试过程
原理图
编译:
看到Done则说明通过。
图1
当前面打对勾时说明通过。
引脚锁定图
下载程序成功:
功能仿真:
时序仿真
八、程序
控制程序:
JTDKZLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYJTDKZISPORT(CLK,SB,cnt,RST:
INSTD_LOGIC;en,MR,MY,MG,BR,BY,BG:
OUTSTD_LOGIC;din:
outSTD_LOGIC_vector(7downto0));ENDENTITYJTDKZ;ARCHITECTUREARTOFJTDKZISTYPESTATE_TYPEIS(A,B,C,D);SIGNALp_STATE,n_state:
STATE_TYPE;BEGINreg:
PROCESS(CLK,rst)ISBEGINifrst='1'thenp_STATE<=A;ELSIF(CLK'EVENTANDCLK='1')THENp_STATE<=n_state;ENDIF;endprocessreg;
com:
PROCESS(sb,cnt,p_state)beginCASEp_STATEISWHENA=>MR<='0';MY<='0';MG<='1';BR<='1';BY<='0';BG<='0';IF(SBANDcnt)='1'THENn_STATE<=B;din<="00000101";EN<='0';ELSEn_STATE<=A;din<="01000101";EN<='1';ENDIF;WHENB=>MR<='0';MY<='1';MG<='0';BR<='1';BY<='0';BG<='0';IFcnt='1'THENn_STATE<=C;din<="00100101";EN<='0';ELSEn_STATE<=B;din<="01000101";EN<='1';ENDIF;WHENC=>MR<='1';MY<='0';MG<='0';BR<='0';BY<='0';BG<='1';IFcnt='1'THENn_STATE<=D;din<="00000101";EN<='0';ELSEn_STATE<=C;din<="01000101";EN<='1';ENDIF;WHEND=>MR<='1';MY<='0';MG<='0';BR<='0';BY<='1';BG<='0';IFcnt='1'THENn_STATE<=A;din<="01000101";EN<='0';ELSEn_STATE<=D;din<="01000101";EN<='1';ENDIF;ENDCASE;ENDPROCESScom;ENDARCHITECTUREART;
计数器程序:
JSQLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjsqISPORT(en,RST:
INSTD_LOGIC;Din:
INSTD_LOGIC_VECTOR(7DOWNTO0);CLK:
INSTD_LOGIC;Cnt:
OUTSTD_LOGIC;QH,QL:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYjsq;ARCHITECTUREARTOFjsqISBEGINcnt<='1'WHEN(QH="0000"ANDQL="0000")ELSE'0';PROCESS(CLK,en,RST)BEGINIFRST='1'THENQH<="0100";QL<="0101";ELSIFCLK'EVENTANDCLK='1'THENIFen='0'THENQH<=Din(7DOWNTO4);QL<=Din(3DOWNTO0);elsIFQL=0ANDQH=0THENQL<="0101";QH<="0100";ELSEQH<=QH-1;ENDIF;ELSEQL<=QL-1;ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREART;
译码器程序:
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYyima7ISPORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREartOFyima7ISBEGINPROCESS(A)BEGINCASEAISWHEN"0000"=>LED7S<="1000000";WHEN"0001"=>LED7S<="1111001";WHEN"0010"=>LED7S<="0100100";WHEN"0011"=>LED7S<="0110000";WHEN"0100"=>LED7S<="0011001";WHEN"0101"=>LED7S<="0010010";WHEN"0110"=>LED7S<="0000010";WHEN"0111"=>LED7S<="1111000";WHEN"1000"=>LED7S<="0000000";WHEN"1001"=>LED7S<="0010000";WHENOTHERS=>LED7S<="1111111";ENDCASE;ENDPROCESS;END;
链接程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYJTDIS
PORT(CLK,SB,RST:
INSTD_LOGIC;
LED1,LED2,LED3,LED4,LED5,LED6:
OUTSTD_LOGIC;
SEG1:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
SEG2:
OUTSTD_LOGIC_VECTOR(6DOWNTO0)
);
ENDJTD;
ARCHITECTUREBEHAVIORALOFJTDIS
SIGNALE:
STD_LOGIC;
SIGNALCN:
STD_LOGIC;
SIGNALDI:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALYIMA1,YIMA2:
STD_LOGIC_VECTOR(3DOWNTO0);
COMPONENTJTDKZIS
PORT(CLK,SB,cnt,RST:
INSTD_LOGIC;
en,MR,MY,MG,BR,BY,BG:
OUTSTD_LOGIC;
din:
outSTD_LOGIC_vector(7downto0)
);
ENDCOMPONENT;
COMPONENTJSQIS
PORT(en,RST:
INSTD_LOGIC;
Din:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
INSTD_LOGIC;
Cnt:
OUTSTD_LOGIC;
QH,QL:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDCOMPONENT;
COMPONENTYIMA7IS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0)
);
ENDCOMPONENT;
BEGIN
U0:
JTDKZ
PORTMAP(CLK,SB,CN,RST,E,LED1,LED2,LED3,LED4,LED5,LED6,DI);
U1:
JSQPORTMAP(E,RST,DI,CLK,CN,YIMA1,YIMA2);
U2:
YIMA7PORTMAP(YIMA1,SEG1);
U3:
YIMA7PORTMAP(YIMA2,SEG2);
ENDBEHAVIORAL;
九、实验结果与分析
若SB为高电平,主干道45s显示红灯,45s显示绿灯,支干道上25s显示绿灯,25s显示红灯,5s显示黄灯作为过渡。
若SB为低电平,表示两边都有车,道路两边的红绿灯有序亮灭45s倒计时后再从45s重新开始倒计时。
置位时显示45s。
十、心得体会
通过此次课程设计,使我对EDA程序设计有了进一步的学习,进一步的认识;在程序的设计,程序的调试方面都学到了很多东西。
在设计的过程中还应该多联系实际情况,要了解实际情况下交通信号灯的工作状态,才能更好的完成此次的课程设计。
这次的课程设计巩固了以前学习到的知识,还掌握了不知道的知识,同时锻炼了自己的能力。
在调试过程中,出现好多次编译不通过的现象,检查程序没有出错,发现是自己编译过程不对,有遗漏的地方。
不管做什么一定要安下心来,仔仔细细的做,不应浮躁。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA FPGA 交通灯