ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:91.80KB ,
资源ID:6144268      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6144268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验五交通灯控制电路实验.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验五交通灯控制电路实验.docx

1、实验五交通灯控制电路实验 南昌大学实验报告学生姓名: 学号: 专业班级: 实验类型:验证 综合 设计 创新 实验日期: 12.14_ 实验成绩: 实验五 交通灯控制电路实验一、实验目的1、了解交通灯的燃灭规律。2、了解交通灯控制器的工作原理。3、熟悉 VHDL 语言编程,了解实际设计中的优化方案。二、实验原理 交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又 有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很 简单,而如果车子可以左右转弯的通行就比较复杂,本设计实验仅针对最简单的南北 和东西直行的情况。 要完成本实验,首先必须了解交通路灯的燃灭规律。本实验

2、需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的燃灭规律为:初始态是两个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。 在实验中使用 8 个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间分别设定为 1 分 钟 和 25s。在显示时间小于 5 秒的时候,通车方向的黄灯闪烁。三

3、、实验内容 本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和数码管模块。系统时钟选择时钟模块的1KHz时钟,黄灯闪烁时钟要求为 2Hz,七段码管的时间显示为 1Hz 脉冲,即每 1s中递减一次,在显示时间小于 5秒的时候,通车方向的黄灯以 2Hz 的频率闪烁。系统中用 S1 按键进行复位。四、实验步骤1、 打开 QUARTUSII 软件,新建一个工程。2、 建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框。3、按照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序,本次实验共分为四个进程源程序,每个进程程序分别实现一定的功

4、能。其具体的功能如下表 17-2:文件名称完成功能P1实现分频产生1Hz计数脉冲和2Hz的黄灯闪烁脉冲P2十进制计数模块,控制显示灯点亮的时间P3控制灯的循环亮灭功能P4七段码管的扫描驱动与显示输出所需实现的循环功能显示如下所示: MGCR 1分钟 MYCR 5秒钟 MRCG 20秒 MRCY 5秒钟 4、编写完 VHDL 程序后,保存起来。各程序源代码如下所示:- - Title:源程序p1 - Author:参考自网上 - Data: 2012-12-8 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.A

5、LL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- ENTITY P1 IS PORT( CLK : IN STD_LOGIC; -时钟输入 CLK2HZ : OUT STD_LOGIC; -输出2Hz闪烁时钟 CLK1HZ : OUT STD_LOGIC - 输出1Hz计数时钟 ); END P1;-ARCHITECTURE BEHAVE OF P1 IS SIGNAL CLK_COUNT1 : STD_LOGIC_VECTOR(9 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN IF(CL

6、K_COUNT11000) THEN CLK_COUNT1=CLK_COUNT1+1; ELSE CLK_COUNT1=0000000001; END IF; END IF; END PROCESS; CLK1HZ=CLK_COUNT1(9); CLK2HZ=CLK_COUNT1(8);END BEHAVE;- - Title:源程序P2 - Author:参考自网上 - Data: 2012-12-8 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGN

7、ED.ALL;- ENTITY P2 IS PORT( CLK1HZ : IN STD_LOGIC; - 输入计数1Hz脉冲 RST : IN STD_LOGIC ; - 复位时钟 SEC1,SEC10 : BUFFER INTEGER RANGE 0 TO 9; - 十进制计数值 DIR_FLAG : BUFFER STD_LOGIC - 方向标志); END P2;-ARCHITECTURE BEHAVE OF P2 IS SIGNAL DIR_FLAG1 : STD_LOGIC; BEGIN PROCESS(CLK1HZ,RST) BEGIN IF(RST=0) THEN SEC1=0;

8、 SEC10=6; DIR_FLAG=0;DIR_FLAG1=0; ELSIF(CLK1HZEVENT AND CLK1HZ=1) THEN - 实现sel1与sel10的十进制计数 IF(SEC1=0) THEN SEC1=9; IF(SEC10=0) THEN IF(DIR_FLAG1=0)THEN SEC10=1; ELSE SEC10=5; END IF; ELSE SEC10=SEC10-1; END IF; ELSE SEC1=SEC1-1; END IF; IF(SEC1=0 AND SEC10=0) THEN DIR_FLAG=NOT DIR_FLAG; DIR_FLAG1=N

9、OT DIR_FLAG1; END IF; END IF; END PROCESS;END BEHAVE;- - Title:源程序P3 - Author:参考自网上 - Data: 2012-12-8 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- ENTITY P3 IS PORT( CLK2HZ : IN STD_LOGIC; -时钟输入 SEC1,SEC10 : IN INTEGER RANGE 0 TO 9; DIR_FLA

10、G : IN STD_LOGIC; - 方向标志 RST : IN STD_LOGIC; -复位输入 MR,CR : OUT STD_LOGIC; -红灯输出 MY,CY : OUT STD_LOGIC; -黄灯输出 MG,CG : OUT STD_LOGIC -绿灯输出 ); END P3;-ARCHITECTURE BEHAVE OF P3 IS BEGIN PROCESS(CLK2HZ,RST) BEGIN IF(RST=0) THEN MR=1; MG=0; CR=1; CG0 OR SEC13) THEN IF(DIR_FLAG=0) THEN -横向通行 MR=0; MG=1; C

11、R=1; CG=0; ELSE MR=1; MG=0; CR=0; CG=1; END IF; ELSE IF(DIR_FLAG=0) THEN -横向通行 MR=0; MG=0; CR=1; CG=0; ELSE MR=1; MG=0; CR=0; CG0 OR SEC13) THEN MY=0; CY=0; ELSIF(DIR_FLAG=0) THEN MY=CLK2HZ; CY=0; ELSE MY=0; CY=CLK2HZ; END IF; END PROCESS;END BEHAVE; - - Title:源程序P4 - Author:参考自网上 - Data: 2012-12-8

12、-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- ENTITY P4 IS PORT( DISPLAY : STD_LOGIC_VECTOR(6 DOWNTO 0); -七段码管显示输出 SEC1,SEC10 : IN INTEGER RANGE 0 TO 9; - 待显示十进制计数值 DIR_FLAG :IN STD_LOGIC; - 方向标志 CLK : IN STD_LOGIC; - 扫描时钟 SEG_SEL : BUFFER S

13、TD_LOGIC_VECTOR(2 DOWNTO 0) -七段码管扫描驱动 ); END P4;-ARCHITECTURE BEHAVE OF P4 IS SIGNAL DISP_TEMP : INTEGER RANGE 0 TO 15; SIGNAL DISP_DECODE : STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL DIRECTION : INTEGER RANGE 0 TO 15; BEGIN PROCESS(DIR_FLAG) BEGIN IF(DIR_FLAG=0) THEN -横向 DIRECTION=10; ELSE -纵向 DIRECTIOND

14、ISP_TEMPDISP_TEMPDISP_TEMPDISP_TEMPDISP_TEMPDISP_TEMPDISP_TEMPDISP_TEMP=SEC1; END CASE; END PROCESS; PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN -扫描累加 SEG_SEL=SEG_SEL+1; DISPLAYDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECODEDISP_DECOD

15、EDISP_DECODEDISP_DECODE=0000000; -全灭 END CASE; END PROCESS; END BEHAVE;5、 对自己编写的 VHDL 程序进行编译并仿真,对程序的错误进行修改。直到完全通过。后将每个进程文件转化为图像文件,再新建一个bdf文件,按要求将各各图形文件连接起来。各模块连接图如下所示:6、对bdf文件进行编译仿真无误后,依照按键开关、数字信号源、数码管与 FPGA的管脚连接表或参照附录进行管脚分配。分配完成后,再进行全编译一次,以使管脚分配生效。7、 用下载电缆通过 JTAG 口将对应的 sof 文件加载到 FPGA 中。观察实验结果是否与自己的

16、编程思想一致。五、实验结果与现象当设计文件加载到目标器件后,将时钟设定为 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