交通灯信号控制设计 精品.docx
《交通灯信号控制设计 精品.docx》由会员分享,可在线阅读,更多相关《交通灯信号控制设计 精品.docx(23页珍藏版)》请在冰豆网上搜索。
交通灯信号控制设计精品
EDA技术实验报告册
班 级:
姓 名:
学 号:
指导教师:
开课时间:
2013至2014学年第1学期
实验名称
交通灯信号控制设计
实验时间
2013年12月05日
姓名
实验成绩
一、实验目的
1.掌握VHDL语言的基本结构。
2.掌握VHDL层次化的设计方法。
3.掌握VHDL基本逻辑电路的综合设计应用。
二、实验设备
计算机软件:
QuartusII
EDA实验箱。
主芯片:
EPM7128SLC84-15或EP1K100QC208-3。
下载电缆,导线等。
三、实验内容
设计并调试好一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:
1.主、支干道各设一个绿、黄、红指示灯,两个显示数码管。
2.主干道处于常允许通行状态,而支干道有车来时才允许通行。
当主干道允许通行亮绿灯时,支干道亮红灯。
而支干道允许通行亮绿灯时,主干道亮红灯。
3.当主、支干道均有车时,两者交替允许通行,主干道每次放行45S,支干道每次放行25S,在每次由亮绿灯变成亮红灯的转换过程中,要亮5S的黄灯作为过渡,并进行减计时显示。
要求编写交通灯控制器电路逻辑图中的各个模块的VHDL语言程序,并完成交通灯控制器的顶层设计,然后利用开发工具软件对其进行编译和仿真,最后要通过实验开发系统对其进行硬件验证。
(一)编写交通灯控制器JTDKZ模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYJTDKZIS
PORT(CLK,SM,SB:
INSTD_LOGIC;
MR,MY,MG,BR,BY,BG:
OUTSTD_LOGIC);
ENDENTITYJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
SIGNALSTATE:
STATE_TYPE;
signalcnt:
integerrange0to45;
BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
CASESTATEIS
WHENA=>
IF(SBANDSM)='1'THEN
IFCNT=44THEN
CNT<=0;STATE<=B;
ELSE
CNT<=CNT+1;STATE<=A;
ENDIF;
ELSIF(SBAND(NOTSM))='1'THEN
STATE<=B;CNT<=0;
ELSESTATE<=A;CNT<=0;
ENDIF;
WHENB=>
IFCNT=4THEN
CNT<=0;STATE<=C;
ELSE
CNT<=CNT+1;STATE<=B;
ENDIF;
WHENC=>
IF(SMANDSB)='1'THEN
IFCNT=24THEN
CNT<=0;STATE<=D;
ELSE
CNT<=CNT+1;STATE<=C;
ENDIF;
ELSIFSB='0'THEN
STATE<=D;CNT<=0;
ELSESTATE<=C;CNT<=0;
ENDIF;
WHEND=>
IFCNT=4THEN
CNT<=0;STATE<=A;
ELSE
CNT<=CNT+1;STATE<=D;
ENDIF;
ENDCASE;
ENDIF;
ENDPROCESS;
RGY:
PROCESS(STATE)IS
BEGIN
CASESTATEIS
WHENA=>
MR<='0';MY<='0';MG<='1';
BR<='1';BY<='0';BG<='0';
WHENB=>
MR<='0';MY<='1';MG<='0';
BR<='1';BY<='0';BG<='0';
WHENC=>
MR<='1';MY<='0';MG<='0';
BR<='0';BY<='0';BG<='1';
WHEND=>
MR<='1';MY<='0';MG<='0';
BR<='0';BY<='1';BG<='0';
ENDCASE;
ENDPROCESSRGY;
ENDARCHITECTUREART;
(二)编写45S定时单元CNT45S模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
--45s定时模块源程序CNT45S.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtime_45sIS
PORT(SB,SM,CLK,EN45:
INSTD_LOGIC;
DOUT45M,DOUT45B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYtime_45s;
ARCHITECTUREARTOFtime_45sIS
SIGNALCNT6B:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(SB,SM,CLK,EN45)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IFSB='1'ANDSM='1'THEN
IFEN45='1'THENCNT6B<=CNT6B+1;
ELSECNT6B<="000000";
ENDIF;
ELSECNT6B<="000000";
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CNT6B)IS
BEGIN
CASECNT6BIS
WHEN"000000"=>DOUT45M<="01000101";DOUT45B<="01010000";--BCD数45,50
WHEN"000001"=>DOUT45M<="01000100";DOUT45B<="01001001";--BCD数44,49
WHEN"000010"=>DOUT45M<="01000011";DOUT45B<="01001000";--BCD数43,48
WHEN"000011"=>DOUT45M<="01000010";DOUT45B<="01000111";--BCD数42,48
WHEN"000100"=>DOUT45M<="01000001";DOUT45B<="01000110";--BCD数41,50
WHEN"000101"=>DOUT45M<="01000000";DOUT45B<="01000101";--BCD数40,49
WHEN"000110"=>DOUT45M<="00111001";DOUT45B<="01000100";--BCD数39,48
WHEN"000111"=>DOUT45M<="00111000";DOUT45B<="01000011";--BCD数38,48
WHEN"001000"=>DOUT45M<="00110111";DOUT45B<="01000010";--BCD数37,50
WHEN"001001"=>DOUT45M<="00110110";DOUT45B<="01000001";--BCD数36,49
WHEN"001010"=>DOUT45M<="00110101";DOUT45B<="01000000";--BCD数35,48
WHEN"001011"=>DOUT45M<="00110100";DOUT45B<="00111001";--BCD数34,48
WHEN"001100"=>DOUT45M<="00110011";DOUT45B<="00111000";--BCD数33,50
WHEN"001101"=>DOUT45M<="00110010";DOUT45B<="00110111";--BCD数32,49
WHEN"001110"=>DOUT45M<="00110001";DOUT45B<="00110110";--BCD数31,48
WHEN"001111"=>DOUT45M<="00110000";DOUT45B<="00110101";--BCD数30,48
WHEN"010000"=>DOUT45M<="00101001";DOUT45B<="00110100";--BCD数29,50
WHEN"010001"=>DOUT45M<="00101000";DOUT45B<="00110011";--BCD数28,49
WHEN"010010"=>DOUT45M<="00100111";DOUT45B<="00110010";--BCD数27,48
WHEN"010011"=>DOUT45M<="00100110";DOUT45B<="00110001";--BCD数26,48
WHEN"010100"=>DOUT45M<="00100101";DOUT45B<="00110000";--BCD数25,50
WHEN"010101"=>DOUT45M<="00100100";DOUT45B<="00101001";--BCD数24,49
WHEN"010110"=>DOUT45M<="00100011";DOUT45B<="00101000";--BCD数23,48
WHEN"010111"=>DOUT45M<="00100010";DOUT45B<="00100111";--BCD数22,48
WHEN"011000"=>DOUT45M<="00100001";DOUT45B<="00100110";--BCD数21,50
WHEN"011001"=>DOUT45M<="00100000";DOUT45B<="00100101";--BCD数20,49
WHEN"011010"=>DOUT45M<="00011001";DOUT45B<="00100100";--BCD数19,48
WHEN"011011"=>DOUT45M<="00011000";DOUT45B<="00100011";--BCD数18,48
WHEN"011100"=>DOUT45M<="00010111";DOUT45B<="00100010";--BCD数17,50
WHEN"011101"=>DOUT45M<="00010110";DOUT45B<="00100001";--BCD数16,49
WHEN"011110"=>DOU