交通控制灯设计报告.docx
- 文档编号:7289638
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:17
- 大小:1,006.14KB
交通控制灯设计报告.docx
《交通控制灯设计报告.docx》由会员分享,可在线阅读,更多相关《交通控制灯设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
交通控制灯设计报告
【EDA实训项目设计报告】
(流水灯、十字路口交通灯)
班级:
12微电子
组长:
张哲铭
成员:
胡瀚、吴洋、苏程龙、刘冲
指导教师:
刘春玲
黑龙江信息技术职业学院·电子工程系
一、流水灯实验
简述:
发光二极管(LED)是一种最常用的输出指示器件,主要用来指示输出逻辑状态或电路工作状态。
应用:
街头广告和舞台装饰等场合。
工作原理:
1、利用FPGA系统电路控制8个LED进行4种工作模式的循环显示,这4种显示模式为:
(1)从左到右逐个点亮LED
(2)从右到左逐个点亮LED
(3)从两边到中间逐个点亮LED
(4)从中间到两边逐个点亮LED
2、8位LED硬件电路
原理图:
(低电平驱动的LED电路原理图)(流水灯的控制图)
3、流水灯控制电路分析
在复位信号rst作用下,进入s0状态,计数器清零,输出s0状态初值“01111111”;
在s0状态,计数器从0开始加计数,并使输出y从初值“01111111”进行循环右移,即可实现8个LED从左到右逐个点亮;当计数器计满循环状态后,结束s0状态,准备进入s1状态,同时计数器清零,给输出y赋s1状态初始值“11111110”;
在s1状态,计数器从0开始加计数,并使输出y从初值“11111110”进行循环左移,即可实现8个LED从右到左逐个点亮;当计数器计满循环状态后,结束s1状态,准备进入s2状态,同时计数器清零,给输出y赋s2状态初始值“01111110”;
在s2状态,计数器从0开始加计数,并使输出y从初值“01111110”开始,高四位从左到右进行循环右移,低四位从右到左进行循环左移,即可实现8个LED从两边到中间逐个点亮;当计数器计满循环状态后,结束s2状态,准备进入s3状态,同时计数器清零,给输出y赋s3状态初始值“11100111”;
在s3状态,计数器从0开始加计数,并使输出y从初值“11100111”开始,高四位从右到左进行循环左移,低四位从左到右进行循环右移,即可实现8个LED从中间到两边逐个点亮;当计数器计满循环状态后,结束s3状态,准备进入s0状态,同时计数器清零,给输出y赋s0状态初始值“01111111”;
树状图:
4、流水灯控制电路VHDL程序
(1)名称:
led_w.vhd。
(2)功能:
实现8位LED进行花样显示。
(3)端口说明:
(4)VHDL描述
1、流水灯控制电路VHDL设计
要求:
利用MAX+plusII软件建立工程,新建文件并输入流水灯控制电路VHDL程序,综合编译直至成功。
新建波形文件,设置仿真时长以及栅格大小,插入节点并编辑输入节点的波形,保存后仿真分析。
1.1、分频器电路设计
在数字逻辑电路中,分频器是一种基本电路,通常用来对某个频率进行分频,从而得到所需的频率信号。
引入分频电路的原因:
一些电路由于本身特性,导致高频率的时钟不适合电路工作。
例如,上次课我们所设计的流水灯控制程序中需要2Hz的频率信号,而一般PPGA外部时钟达几十兆赫,因此需要引入分频电路,将系统时钟分频后得到适合电路工作的频率信号。
本次课我们就重点讲解各种原理的分频设计。
1.2、偶数分频
占空比:
50%
方案:
使用一个计数器,对输入时钟进行模n(n为偶数)计数,即在前n/2个时钟内使输出为高(或低)电平,在后n/2个时钟内输出为低(或高)电平,即可实现对输入时钟的n分频。
例:
1)、8分频电路的VHDL描述:
2)、奇数分频
对占空比不做要求,其设计方法同偶数分频。
只要将例1中的类属参数值改为5即可。
占空比要求为50%。
设计思想:
分别对输入时钟的上升沿和下降沿进行模n(n为奇数)计数,计数值小于(n-1)/2时,使信号输出为高(或低)电平,在计数值为大于等于(n-1)/2时,使信号输出为低(或高)电平,从而得到两个占空比为(n-1)/2:
n的分频信号,然后将这两个信号相或即可实现对输入时钟的n(n为奇数)分频。
2、分频电路VHDL程序
要求:
利用MAX+plusII软件建立工程,新建文件并输入流水灯控制电路VHDL程序,综合编译直至成功。
新建波形文件,设置仿真时长以及栅格大小,插入节点并编辑输入节点的波形,保存后仿真分析。
2.1、分频电路VHDL程序
2.2、顶层模块原理图
3、流水灯控制电路调试
1、建立工程项目
2、输入文件并编译
(1)流水灯控制电路VHDL程序
(2)分频电路VHDL程序
(3)顶层模块原理图
3、仿真测试
4、下载调试
5、制作实训报告
流水灯控制硬件电路示意图
二、十字路口交通灯控制电路设计
1.任务要求
设计一个十字路口交通信号管理控制器。
对于每个路口,可实现直行、停止、左转指示,并显示当前状态剩余时间。
要求如下:
(1)十字路口行使控制要求如图所示,倒计时结束后自动切换到下一状态。
(2)分别用红、黄、绿3种颜色的LED表示禁行、停行、通行,即每个方向由直行红灯、直行绿灯、停行黄灯、左转红灯、左转绿灯共5个LED制式等构成,每个方向用两位数码管显示当前状态剩余时间。
(3)能实现系统复位功能,系统复位后,进入东西直行、南北禁行状态。
(4)对于直行状态,当直行倒计时进入最后3秒,直行绿灯开始闪烁。
(十字路口行驶控制要求)(十字路口信号灯组成示意图)
交通灯控制器设计分析
1.硬件电路结构
FPGA最小系统电路;
8位数码管显示电路;
20个LED指示电路。
2.FPGA内部电路
根据十字路口行驶控制要求,采用状态机描述该控制电路,状态分配及输出情况见下表。
表中低电平“0”表示点亮LED,高电平“1”表示熄灭LED。
系统复位后首先进入st0(东西直行,南北禁行)状态,并给两个方向的倒计时赋初值。
然后在每个状态下,一方面给十字路口输出信号灯赋值,另一方面进行倒计时,并根据行驶方向的倒计时时间,确定是否转到下一个状态。
若时间未到,继续倒计时;若时间到,则转到下一个状态,并给下一个状态赋倒计时初值。
该程序设计中,因倒计时数值要传送到数码管显示,所以其数据需要用8421BCD码表示。
4位二进制减1计数转换为BCD码减1计数的方法是:
当计数值在“0001~1001”(十进制数的1~9)之间时,进行正常的二进制减“1”计数;当计数值为“0000”时,则通过减“7”计数来调整。
本程序中只需对倒计时数值的个位进行调整,而十位数始终小于9不需要调整。
例:
“30”的8421BCD码为“00110000”,该值减1后应为“29”,对应的8421BCD码为“00101001”。
实际操作时,对于十进制数“30”,个位数为0不够减,因此向十位数借1,即30-1=20+(10-1)。
同理,对于二进制数,当后四位为“0000”时,向前四位借1,按8421BCD码计算即00110000-1=00101010-1=00101001。
但实际计算过程中严格按照二进制计算后四位借1后变成1111,需减7才能得到1001。
对直行绿灯在最后3s内闪烁的处理方法是:
当直行绿灯倒计时时间大于3s时,给直行绿灯控制端置“0”,使直行绿灯持续亮;当直行绿灯倒计时时间小于等于3s时,给直行绿灯控制端置一个频率为2Hz,占空比为50%的信号,使直行绿灯闪烁。
3.交通灯控制电路VHDL设计
(1)交通灯控制电路VHDL程序
名称:
traffic.vhd。
名称:
十字路口交通灯管理控制器。
端口说明:
程序:
1.)8位七段译码扫描显示电路设计
1、8位数码管动态显示硬件电路
LED数码管是一种最常用的数字显示输出器件。
之前我们学习过七段数码管工作原理与译码电路的设计,如果采用这种方法驱动多个数码管同时显示,那么有几个数码管就要配几个七段译码器,这种方法称为数码管的静态显示。
动态显示是多个数码管共用一个七段译码器电路,通过控制每个数码管的公共端轮流点亮各个数码管。
这样可以解决数码管的静态显示而造成的FPGA的I/O口和逻辑资源紧张等问题。
因此在实际应用中,驱动多个数码管的显示通常采用动态显示方式
例如:
要驱动8个数码管,则将每个数码管的7个段码a、b、c、d、e、f、g分别连接在一起,将每个数码管的共阳端(或共阴端)分别引出作为位选控制端,称为位码,某一时刻只允许一个位选控制端有效,对应的数码管显示数据,其余数码管均熄灭。
8位共阳数码管动态显示硬件电路原理图如下图所示,其中每个数码管的8个段a、b、c、d、e、f、g、h(h是小数点)都分别连在一起,引出SEG_a~SEG_g作为7个段码,SEG_h作为小数点;8个数码管分别由8个选通信号DIG1、DIG2、…、DIG8来选择,DIG1~DIG8作为8个位码。
如在某一时刻,DIG3为低电平,其余位选信号为高电平,这时仅DIG3对应的数码管显示来自段信号端的数据,而其他7个数码管呈现熄灭状态。
如果要求在8个数码管上分别显示相应的数据,就必须使得8个选通信号DIG1、DIG2、…、DIG8分别被单独选通,并与此同时,在段信号输入口上加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
当把多个数码管按一定顺序(从左至右或从右至左)逐个点亮,当点亮频率(即扫描频率)不大时,人们看到的是数码管一个一个地显示数字;而当点亮频率足够大时,由于人眼的视觉暂留效应,人们看到的数码管不再是一个一个地显示,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。
当用CPLD/FPGA器件驱动8个数码管动态显示时,人们只需要提供1个译码器电路的逻辑资源和15个输出引脚(7个段码端和8个位码端),从而大大节省了FPGA资源。
2.)8位动态扫描显示控制电路设计分析
根据动态显示电路原理,数码管是在位选信号的控制下逐个点亮的,因此需要一个位选扫描信号。
8个数码管可以通过一个3位计数器产生计数扫描控制信号,当计数器从000-111循环计数时,对应位选从11111110-01111111循环变化。
同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着位选信号的扫变,就能实现扫描显示的目的。
一般将单个数码管点亮频率控制在100Hz左右可得到较好的显示效果。
对于8位数码管,将计数频率选择在1kHz左右可以满足显示要求。
8位数码管扫描显示的VHDL程序可采用3个进程进行描述,其中进程P1是一个3位加法计数器,生成000~111共8个计数状态,该进程流程图如图所示。
进程P2是根据P1的8个状态对应产生8个数码管位码控制信号,并给对应的数码管各位传送译码输入数据,该进程流程如图所示。
进程P3是根据输入数据进行七段译码,并输出7位段码,该进程的设计在上学期已详细介绍,这里不再赘述。
数码管显示接口电路VHDL程序
名称:
scan_seg.vhd。
功能:
8位数码管动态显示电路。
端口说明:
VHDL描述;
3.)分频电路VHDL程序
名称:
freq_div.vhd。
功能:
将系统时钟24MHz分频得到1Hz的计时及状态转换时钟信号,2Hz的直行绿灯闪烁信号及1kHz的数码管动态显示扫描时钟信号。
端口说明:
分频电路VHDL程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 控制 设计 报告