实验五交通灯控制电路实验Word文件下载.docx

上传人:b****4 文档编号:7898260 上传时间:2023-05-09 格式:DOCX 页数:14 大小:91.80KB
下载 相关 举报
实验五交通灯控制电路实验Word文件下载.docx_第1页
第1页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第2页
第2页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第3页
第3页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第4页
第4页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第5页
第5页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第6页
第6页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第7页
第7页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第8页
第8页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第9页
第9页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第10页
第10页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第11页
第11页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第12页
第12页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第13页
第13页 / 共14页
实验五交通灯控制电路实验Word文件下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验五交通灯控制电路实验Word文件下载.docx

《实验五交通灯控制电路实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验五交通灯控制电路实验Word文件下载.docx(14页珍藏版)》请在冰点文库上搜索。

实验五交通灯控制电路实验Word文件下载.docx

系统时钟选择时钟模块的1KHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于5秒的时候,通车方向的黄灯以2Hz的频率闪烁。

系统中用S1按键进行复位。

四、实验步骤

1、打开QUARTUSII软件,新建一个工程。

2、建完工程之后,再新建一个VHDLFile,打开VHDL编辑器对话框。

3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,本次实验共分为四个进程源程序,每个进程程序分别实现一定的功能。

其具体的功能如下表17-2:

文件名称

完成功能

P1

实现分频产生1Hz计数脉冲和2Hz的黄灯闪烁脉冲

P2

十进制计数模块,控制显示灯点亮的时间

P3

控制灯的循环亮灭功能

P4

七段码管的扫描驱动与显示输出

所需实现的循环功能显示如下所示:

MGCR1分钟MYCR5秒钟MRCG20秒MRCY

5秒钟

4、编写完VHDL程序后,保存起来。

各程序源代码如下所示:

-------------------------------------

--Title:

源程序p1

--Author:

参考自网上

--Data:

2012-12-8

-----------------------------------------------------------------------------------------------------------

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

--------------------------------------------------------------------

ENTITYP1IS

PORT(CLK:

INSTD_LOGIC;

--时钟输入

CLK2HZ:

OUTSTD_LOGIC;

--输出2Hz闪烁时钟

CLK1HZ:

OUTSTD_LOGIC--输出1Hz计数时钟

);

ENDP1;

--------------------------------------------------------------------

ARCHITECTUREBEHAVEOFP1IS

SIGNALCLK_COUNT1:

STD_LOGIC_VECTOR(9DOWNTO0);

BEGIN

PROCESS(CLK)

IF(CLK'

EVENTANDCLK='

1'

)THEN

IF(CLK_COUNT1<

1000)THEN

CLK_COUNT1<

=CLK_COUNT1+1;

ELSE

="

0000000001"

;

ENDIF;

ENDPROCESS;

CLK1HZ<

=CLK_COUNT1(9);

CLK2HZ<

=CLK_COUNT1(8);

ENDBEHAVE;

源程序P2

ENTITYP2IS

PORT(CLK1HZ:

--输入计数1Hz脉冲

RST:

INSTD_LOGIC;

--复位时钟

SEC1,SEC10:

BUFFERINTEGERRANGE0TO9;

--十进制计数值

DIR_FLAG:

BUFFERSTD_LOGIC--方向标志

);

ENDP2;

ARCHITECTUREBEHAVEOFP2IS

SIGNALDIR_FLAG1:

STD_LOGIC;

PROCESS(CLK1HZ,RST)

IF(RST='

0'

SEC1<

=0;

SEC10<

=6;

DIR_FLAG<

='

DIR_FLAG1<

ELSIF(CLK1HZ'

EVENTANDCLK1HZ='

)THEN--实现sel1与sel10的十进制计数

IF(SEC1=0)THEN

=9;

IF(SEC10=0)THEN

IF(DIR_FLAG1='

)THEN

=1;

ELSE

=5;

=SEC10-1;

=SEC1-1;

IF(SEC1=0ANDSEC10=0)THEN

=NOTDIR_FLAG;

DIR_FLAG1<

=NOTDIR_FLAG1;

源程序P3

ENTITYP3IS

PORT(CLK2HZ:

ININTEGERRANGE0TO9;

--方向标志

--复位输入

MR,CR:

--红灯输出

MY,CY:

--黄灯输出

MG,CG:

OUTSTD_LOGIC--绿灯输出

ENDP3;

ARCHITECTUREBEHAVEOFP3IS

BEGIN

PROCESS(CLK2HZ,RST)

MR<

MG<

CR<

CG<

ELSE--正常运行

IF(SEC10>

0ORSEC1>

3)THEN

IF(DIR_FLAG='

)THEN--横向通行

PROCESS(CLK2HZ)--控制黄灯的闪烁

MY<

CY<

ELSIF(DIR_FLAG='

=CLK2HZ;

-------------------------------------

源程序P4

2012-12-8------------------------------------------------------------------------------------------------------------

ENTITYP4IS

PORT(

DISPLAY:

STD_LOGIC_VECTOR(6DOWNTO0);

--七段码管显示输出

--待显示十进制计数值

INSTD_LOGIC;

CLK:

--扫描时钟

SEG_SEL:

BUFFERSTD_LOGIC_VECTOR(2DOWNTO0)--七段码管扫描驱动

ENDP4;

ARCHITECTUREBEHAVEOFP4IS

SIGNALDISP_TEMP:

INTEGERRANGE0TO15;

SIGNALDISP_DECODE:

SIGNALDIRECTION:

PROCESS(DIR_FLAG)

)THEN--横向

DIRECTION<

=10;

ELSE--纵向

=11;

PROCESS(SEG_SEL)

CASE(SEG_SEL+1)IS

WHEN"

000"

=>

DISP_TEMP<

=DIRECTION;

001"

010"

=SEC10;

011"

=SEC1;

100"

101"

110"

111"

ENDCASE;

PROCESS(CLK)

)THEN--扫描累加

SEG_SEL<

=SEG_SEL+1;

DISPLAY<

=DISP_DECODE;

PROCESS(DISP_TEMP)--显示转换

CASEDISP_TEMPIS

WHEN0=>

DISP_DECODE<

0111111"

--'

WHEN1=>

0000110"

WHEN2=>

1011011"

2'

WHEN3=>

1001111"

3'

WHEN4=>

1100110"

4'

WHEN5=>

1101101"

5'

WHEN6=>

1111101"

6'

WHEN7=>

0000111"

7'

WHEN8=>

1111111"

8'

WHEN9=>

1101111"

9'

WHEN10=>

1001000"

WHEN11=>

0010100"

||'

WHENOTHERS=>

0000000"

--全灭

5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。

直到完全通过。

后将每个进程文件转化为图像文件,再新建一个bdf文件,按要求将各各图形文件连接起来。

 

各模块连接图如下所示:

6、对bdf文件进行编译仿真无误后,依照按键开关、数字信号源、数码管与FPGA的管脚连接表或参照附录进行管脚分配。

分配完成后,再进行全编译一次,以使管脚分配生效。

7、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。

观察实验结果是否与自己的编程思想一致。

五、实验结果与现象

当设计文件加载到目标器件后,将时钟设定为1KHz。

交通灯模块的红、绿、黄LED发光管会模拟实际中的交通信号灯的变化。

初始状态为主干道,乡干道红灯全亮,后转换为主干道可行,乡干道禁行模式,此时,数码管上显示通行时间的倒计时为1分钟。

当倒计时到5秒时,黄灯开始闪烁。

频率为2hz。

到0秒时红绿灯开始转换,倒计时的时间变至25秒。

如此循环往复。

按下按键开关S1则从头开始显示和计数。

六、仿真波形分析

1、数码管计数过程在重复1分钟——20秒——1分钟这一计数过程,代表主干道亮绿灯乡干道亮红灯时间为1分钟,主干道亮红灯,乡干道亮绿灯时间为20秒。

2、重复过程

3、当RST=0时,数码管计数恢复初始值60,交通灯恢复初始状态全红。

结果如下所示:

7、实验心得与体会

本次实验中,在观察实验现象时出现了一个问题,那就是当按下复位按钮时,系统会复位到初始状态,即横向全亮红灯,纵向全亮绿灯,但是当持续按下复位按钮不动时,则出现全亮绿灯的情况,这在实际中是不合理的,经分析,可能是在设置复位功能出现了问题,即在复位时,仍然有状态传送给显示模块,整个的模块间仍按照未加复位时进行工作,鉴于此,我又在模块p2、p3模块中增加了一个状态标志,功能为当按下计数模块时,其余工作停止,只进行复位操作,但不按下时,则正常工作。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2