- 34
- 0
- 约1.34万字
- 约 9页
- 2016-10-19 发布于贵州
- 举报
综合课程设计—模拟交通灯实验报告
标
准
实
验
报
告
学生姓名:
指导教师:
一、实验室名称:
二、实验项目名称:综合课程设计1——模拟交通灯实验
三、实验原理:
1、交通信号灯基本转换原理
本实验所模拟的交通信号灯的转换原理如下图:
转移状态图
默认的初始状态为红灯状态,做 30 秒减计时。当时间从30 秒递减到0 秒后,红灯状态变为绿灯状态;重新30 秒减计时,递减到0 秒后,绿灯状态变为黄灯状态;做5 秒减计时,递减到0 秒后,黄灯状态变为红灯状态。如此循环进行转换。
2、自由按键电路
KEY1 对应P102,KEY2 对应P101。
3、八段数码管和动态显示原理
八段就是指数码管里有八个小LED 发光二极管,通过控制不同的LED 发光二极管的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型。共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮;共阳极就是将八个LED 的阳极连在一起。其原理图如下:
数码管电路原理图
其中引脚图的两个COM 端连在一起就是公共端。共阴极数码管要将其接地,共阳极数码管将其接+5V 电源。一个八段数码管用来表示一位,多个数码管并列在一起即可构成多位数字,它们的段选线(即a,b,c,d,e,f,g,dp)都连在一起,而各自的公共端为位选线。显示时,数据都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8 段即对应一个字节(Byte)的8 位,a 对应最低位,dp 对应最高位。所以如果想让数码管显示数字0,那么共阴极数码管的字符编码即0x3f;共阳极数码管的字符编码即0xc0。可以看出两个编码的各位正好相反。如下图所示:
8段数码管的共阴共阳差异
4、数码动态显示
数码管动态显示即轮流向各位数码管送出字符编码和相应的位选信号,利用发光二极管的余辉和人眼的视觉暂留作用,使人感觉好像各位的数码管都同时在显示。相比于静态显示,动态显示的亮度要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
5、FPGA硬件管脚的配置
在实现时首先要做的事是管脚的配置,根据程序的功能来配置管脚从而可以从实验板上观察到所需的状态。注意每一段的对应以及功能的设置。
四、实验目的:
1、进一步熟悉基于FPGA的硬件编程实现;
2、掌握如何实效编程;
3、熟悉程序基于ISE的仿真以及改错;
4、掌握编程数码显示的方法;
5、实现自主创新,编程实现自己的想法,并熟悉利用FPGA硬件实现编程;
实验内容:
编写 VHDL 代码、生成下载文件,下载设计到FPGA 实现如下功能:
模拟路口交通信号灯的红、黄、绿灯的变化过程,分别用三个LED 灯表示,并在数码管上动态显示当前状态剩余时间。要求红灯持续时间为30 秒,黄灯5 秒,绿灯30 秒。
六、实验器材(设备、元器件):
FPGA实验板一块、下载线一套、PC机一台
七、实验步骤:
1、打开桌面EDA文件夹中的ISE软件,并新建一个ADD_SUB工程;
2、在“Sources in Project”子窗口中右击,选择Add Source… ,添加VHDL设计文件,编写程序;
3、保存并进行语法检错,若有错误返回修改,直到没有错误提示为止;
4、连接好FPGA和下载线套装;
5、进行管脚配置,在“Sources in Project”子窗口中右击,选择Add Source… ,选择添加 .ucf 文件,打开所添加的 .ucf 文件在对应的地方输入管脚即可,或者是打开工程文件夹,找到ADD_SUB.ucf文件以文本文档方式打开,在里面编写形如:NET clk LOC = p18 ;(“”中的为信号名称,=后面的为对应管脚)的管脚配置参数,编写完成后保存。
6、把程序进行仿真并载入到FPGA实验板上观察现象是否与理论一致;
7、若不符合则,返回修改程序,直到现象符合。
八、实验数据及结果分析:
1、设计思路:
根据实验要求发现,实验中首先需要1s的时钟来对三种灯进行计时,所用FPGA实验板的时钟为40MHz,所以在程序一开始需要对其进行处理。采用米利状态机来进行设计,并在状态中设置转换时间递减,当时间到零时触发状态转换。对于时间的显示利用数码管,由于有两位设置状态来实现转换显示。在最前方再加以复位设置,便可完成。
2、实验程序:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL
原创力文档

文档评论(0)