交通灯信号控制设计.docx

上传人:b****8 文档编号:9564684 上传时间:2023-02-05 格式:DOCX 页数:24 大小:593.63KB
下载 相关 举报
交通灯信号控制设计.docx_第1页
第1页 / 共24页
交通灯信号控制设计.docx_第2页
第2页 / 共24页
交通灯信号控制设计.docx_第3页
第3页 / 共24页
交通灯信号控制设计.docx_第4页
第4页 / 共24页
交通灯信号控制设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

交通灯信号控制设计.docx

《交通灯信号控制设计.docx》由会员分享,可在线阅读,更多相关《交通灯信号控制设计.docx(24页珍藏版)》请在冰豆网上搜索。

交通灯信号控制设计.docx

交通灯信号控制设计

 

 

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"=>DOUT45M<="00010101"。

DOUT45B<="00100000"。

--BCD数15,48

WHEN"011111"=>DOUT45M<="00010100"。

DOUT45B<="00011001"。

--BCD数14,48

WHEN"100000"=>DOUT45M<="00010011"。

DOUT45B<="00011000"。

--BCD数13,50

WHEN"100001"=>DOUT45M<="00010010"。

DOUT45B<="00010111"。

--BCD数12,49

WHEN"100010"=>DOUT45M<="00010001"。

DOUT45B<="00010110"。

--BCD数11,48

WHEN"100011"=>DOUT45M<="00010000"。

DOUT45B<="00010101"。

--BCD数10,48

WHEN"100100"=>DOUT45M<="00001001"。

DOUT45B<="00010100"。

--BCD数9,50

WHEN"100101"=>DOUT45M<="00001000"。

DOUT45B<="00010011"。

--BCD数8,49

WHEN"100110"=>DOUT45M<="00000111"。

DOUT45B<="00010010"。

--BCD数7,48

WHEN"100111"=>DOUT45M<="00000110"。

DOUT45B<="00010001"。

--BCD数6,48

WHEN"101000"=>DOUT45M<="00000101"。

DOUT45B<="00010000"。

--BCD数5,50

WHEN"101001"=>DOUT45M<="00000100"。

DOUT45B<="00001001"。

--BCD数4,49

WHEN"101010"=>DOUT45M<="00000011"。

DOUT45B<="00001000"。

--BCD数3,48

WHEN"101011"=>DOUT45M<="00000010"。

DOUT45B<="00000111"。

--BCD数2,07

WHEN"101100"=>DOUT45M<="00000001"。

DOUT45B<="00000110"。

--BCD数1,06

WHENOTHERS=>DOUT45M<="00000000"。

DOUT45B<="00000000"。

--BCD数00,00

ENDCASE。

ENDPROCESS。

ENDARCHITECTUREART。

(三)编写25S定时单元CNT25S模块地VHDL程序,并对其进行编译和仿真,初步验证设计地正确性.

--25s定时模块源程序CNT25S.VHD

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

USEIEEE.STD_LOGIC_UNSIGNED.ALL。

ENTITYtime_25sIS

PORT(SB,SM,CLK,EN25:

INSTD_LOGIC。

DOUT25M,DOUT25B:

OUTSTD_LOGIC_VECTOR(7DOWNTO0))。

ENDENTITYtime_25s。

ARCHITECTUREARTOFtime_25sIS

SIGNALCNT_5Bit:

STD_LOGIC_VECTOR(4DOWNTO0)。

BEGIN

PROCESS(SB,SM,CLK,EN25)IS

BEGIN

IFSB='0'ORSM='0'THEN

CNT_5Bit<="00000"。

ELSIF(CLK'EVENTANDCLK='1')THEN

IFEN25='1'THEN

CNT_5Bit<=CNT_5Bit+1。

ELSIFEN25='0'THEN

CNT_5Bit<="00000"。

ENDIF。

ENDIF。

ENDPROCESS。

PROCESS(CNT_5Bit)IS

BEGIN

CASECNT_5BitIS

WHEN"00000"=>DOUT25B<="00100101"。

DOUT25M<="00110000"。

--BCD数25,50

WHEN"00001"=>DOUT25B<="00100100"。

DOUT25M<="00101001"。

--BCD数24,49

WHEN"00010"=>DOUT25B<="00100011"。

DOUT25M<="00101000"。

--BCD数23,48

WHEN"00011"=>DOUT25B<="00100010"。

DOUT25M<="00100111"。

--BCD数22,48

WHEN"00100"=>DOUT25B<="00100001"。

DOUT25M<="00100110"。

--BCD数21,50

WHEN"00101"=>DOUT25B<="00100000"。

DOUT25M<="00100101"。

--BCD数20,49

WHEN"00110"=>DOUT25B<="00011001"。

DOUT25M<="00100100"。

--BCD数19,48

WHEN"00111"=>DOUT25B<="00011000"。

DOUT25M<="00100011"。

--BCD数18,48

WHEN"01000"=>DOUT25B<="00010111"。

DOUT25M<="00100010"。

--BCD数17,50

WHEN"01001"=>DOUT25B<="00010110"。

DOUT25M<="00100001"。

--BCD数16,49

WHEN"01010"=>DOUT25B<="00010101"。

DOUT25M<="00100000"。

--BCD数15,48

WHEN"01011"=>DOUT25B<="00010100"。

DOUT25M<="00011001"。

--BCD数14,48

WHEN"01100"=>DOUT25B<="00010011"。

DOUT25M<="00011000"。

--BCD数13,50

WHEN"01101"=>DOUT25B<="00010010"。

DOUT25M<="00010111"。

--BCD数12,49

WHEN"01110"=>DOUT25B<="00010001"。

DOUT25M<="00010110"。

--BCD数11,48

WHEN"01111"=>DOUT25B<="00010000"。

DOUT25M<="00010101"。

--BCD数10,48

WHEN"10000"=>DOUT25B<="00001001"。

DOUT25M<="00010100"。

--BCD数9,50

WHEN"10001"=>DOUT25B<="00001000"。

DOUT25M<="00010011"。

--BCD数8,49

WHEN"10010"=>DOUT25B<="00000111"。

DOUT25M<="00010010"。

--BCD数7,48

WHEN"10011"=>DOUT25B<="00000110"。

DOUT25M<="00010001"。

--BCD数6,48

WHEN"10100"=>DOUT25B<="00000101"。

DOUT25M<="00010000"。

--BCD数5,50

WHEN"10101"=>DOUT25B<="00000100"。

DOUT25M<="00001001"。

--BCD数4,49

WHEN"10110"=>DOUT25B<="00000011"。

DOUT25M<="00001000"。

--BCD数3,48

WHEN"10111"=>DOUT25B<="00000010"。

DOUT25M<="00000111"。

--BCD数2,07

WHEN"11000"=>DOUT25B<="00000001"。

DOUT25M<="00000110"。

--BCD数1,06

WHENOTHERS=>DOUT25B<="00000000"。

DOUT25M<="00000000"。

--BCD数00,00

ENDCASE。

ENDPROCESS。

ENDARCHITECTUREART。

(四)编写5S定时单元CNT05S模块地VHDL程序,并对其进行编译和仿真,初步验证设计地正确性.

--5s定时模块源程序CNT05S.VHD

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

USEIEEE.STD_LOGIC_UNSIGNED.ALL。

ENTITYtime_5sIS

PORT(CLK,EN05M,EN05B:

INSTD_LOGIC。

DOUT5:

OUTSTD_LOGIC_VECTOR(7DOWNTO0))。

ENDENTITYtime_5s。

ARCHITECTUREARTOFtime_5sIS

SIGNALCNT_3Bit:

STD_LOGIC_VECTOR(2DOWNTO0)。

BEGIN

PROCESS(CLK,EN05M,EN05B)IS

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

IFEN05M='1'OREN05B='1'THEN

CNT_3Bit<=CNT_3Bit+1。

ELSE

CNT_3Bit<="000"。

ENDIF。

ENDIF。

ENDPROCESS。

PROCESS(CNT_3Bit)IS

BEGIN

CASECNT_3BitIS

WHEN"000"=>DOUT5<="00000101"。

--BCD数05

WHEN"001"=>DOUT5<="00000100"。

--BCD数04

WHEN"010"=>DOUT5<="00000011"。

--BCD数03

WHEN"011"=>DOUT5<="00000010"。

--BCD数02

WHEN"100"=>DOUT5<="00000001"。

--BCD数01

WHENOTHERS=>DOUT5<="00000000"。

--BCD数00

ENDCASE。

ENDPROCESS。

ENDARCHITECTUREART。

(五)编写显示控制单元XSKZ模块地VHDL程序,并对其进行编译和仿真,初步验证设计地正确性.

--显示控制模块源程序XSKZ.VHD

LIBRARYIEEE。

USEIEEE.STD_LOGIC_1164.ALL。

USEIEEE.STD_LOGIC_UNSIGNED.ALL。

ENTITYXSKZIS

PORT(EN45,EN25,EN05M,EN05B:

INSTD_LOGIC。

AIN45M,AIN45B:

INSTD_LOGIC_VECTOR(7DOWNTO0)。

AIN25M,AIN25B,AIN05:

INSTD_LOGIC_VECTOR(7DOWNTO0)。

dec_

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

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1