基于FPGA交通灯计时显示实验的设计

2018-11-15 01:33柯春艳安思胡春华
电脑知识与技术 2018年20期
关键词:交通灯倒计时数码管

柯春艳 安思 胡春华

摘要:为改善硬件类课程实践环节教学效果,加强学生探索精神,设计基于FPGA的交通灯计时显示实验,给出了具体的设计方案。该实验以交通灯计时显示实例为载体,使学生掌握数码管动态和静态显示的原理和VHDL实现。该实验能够通过整合相似知识点增强学生运用知识解决问题的能力,提升实验教学效果。

关键词:FPGA;交通灯;74HC595;EDA实验

中图分类号:TP273 文献标识码:A 文章编号:1009-3044(2018)20-0133-02

Design of Time Display Experiment of Traffic Light Based on FPGA

KE Chun-yan, AN Si, HU Chun-hua

(Xinjiang Agricultural University, Urumqi 830000, China)

Abstract: In order to improve the teaching effect of the experiment link of the hardware class and strengthen the students' exploration spirit, this paper designs the time display experiment of traffic light based on FPGA, and gives the concrete design scheme. The experiment takes the example of traffic light timing display, enabling students to grasp the principle of digital tube dynamic display and static display and its VHDL implementation. This experiment can enhance students' ability of using knowledge to solve problems by integrating similar knowledge points, and enhance the effect of experimental teaching.

Key words: FPGA; traffic light; 74HC595; EDA experiment

1 引言

《可编程逻辑器件与应用技术》是电子信息工程专业的专业课程。随着半导体和计算机技术的不断发展,电子工程设计逐步实现了自动化,即电子设计自动化(简称EDA)。本课程的任务主要是使学生了解现代电子线路设计自动化的基本流程,了解CPLD和FPGA等可编程逻辑器件的硬件结构、原理和特性;熟悉和掌握EDA设计方法、设计语言、开发软件和设计实例。通过学习,提高学生应用计算机和设计软件对电子电路进行自动化设计和分析的能力,为今后的学习和就业奠定基础。本门课程最大的特点是实践性强,因而课程实践环节的设计就显得尤为重要。科学合理的设置实验课程内容能够在有限的实验课课时中帮助学生巩固所学理论知识,强化对知识的应用能力。

数码管扫描显示是EDA和单片机等应用类课程中重要的知识点之一,数码管扫描方式有动态扫描和静态扫描两种,调研已有的实验设计内容后,发现多数实验课程大纲中针对静态扫描和动态扫描分别设置了不同的实验项目,为增强知识点的连贯性,帮助学生更好的理解、掌握和运用相似知识内容,本文给出了基于Altera公司CycloneII系列EP2C35F672C8 FPGA器件的交通灯计时扫描实验方案,在实验中通过两种扫描方法实現数码管计时显示。

2 实验总体设计方案

交通灯控制器用于自动控制十字路口的交通灯和计时器,指挥各种车辆和行人安全通过,其工作原理是:在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。其中,红灯亮表示该道路禁止通行,红灯时间是30秒;黄灯亮表示停车,黄灯时间是5秒;绿灯亮表示可以通行,绿灯时间是25秒;倒计时显示器用来显示允许通行或禁止通行的时间。设计中水平方向的倒计时显示采用静态数码管,垂直方向的倒计时显示采用动态数码管。基于Altera公司CycloneII系列EP2C35F672C8FPGA器件的交通灯计时扫描显示实验主要由交通灯模块、静态数码管显示模块和动态数码管显示模块三个部分组成。

3 硬件设计

3.1 动态显示电路

系统设计2位动态数码管显示垂直方向的信号灯剩余时间。其中每个数码管的8个段码a、b、c、d、e、f、g、h(h是小数点),都分别连到SEG0~SEG7,2个数码管分别由选通信号端口DIG1和DIG2来选择,只有被选通的数码管显示数据。

系统数码管为共阳极,若将某一个数码管的选通信号置为低电平“0”,另一个选通信号为高电平“1”,选通为低电平对应的数码管显示数据,而另一个数码管为关闭状态。如果希望2个数码管显示数据,就必须使2个选通信号DIG1和DIG2分别被单独选通,选通某一个数码管的同时,在段信号输入口输入要显示的数据。在轮流点亮数码管的扫描过程中,虽然每次只选通点亮一个数码管,但每位数码管的点亮时间极为短暂,由于视觉暂留现象人们可以看到稳定的显示数据。

3.2 静态显示电路

系统设计2位静态数码管显示水平方向的信号灯剩余时间。静态数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止,各位数码管相互独立,公共端恒定接GND(共阴极)或+5V(共阳极)。每个数码管的八个位段分别与一个八位I/O端口相连,I/O端口只要有字型码输出,数码管就显示给定字符,并保持不变,直到I/O口输出新的段码。

静态数码管模块是由2位七段共阳极数码管组成,它由2个级联的74HC595位移缓存器驱动。74HC595作用是把8位串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片中,使用该芯片可以节约MCU的I/O口资源,芯片还具备一定的驱动能力,可以免掉三极管等放大电路。当74HC595的SEGRCLK为低电平时,在16个SEGSCLK时钟上升沿将16bit的数据一位一位的由SEGSI串行输入存入到2个74HC595的16位并行输出缓存器,当16bit数据输入完成后,SEGRCLK上产生一个高电平,将16bit串行输入的数据一次性并行输出到2位数码管的18个段码。

图1为静态数码管驱动电路,由图可见,使用74HC595芯片进行串并转换后,系统只占用FPGA的3个IO口即可驱动2位数码管,大大地节约了芯片资源。然而2片74HC595却会占用更多的电路板面积,实际应用中需要综合权衡芯片资源和电路板尺寸两个因素。

3.3 交通灯电路

交通灯模块由12个LED组成,有红、黄、绿三种信号灯。GREEN-V、YELLOW-V、RED-V、GREEN-H、YELLOW-H、RED-H与FPGA的6个IO口相连。

4 软件设计

系统顶层文件采用原理图设计方式,顶层原理图中包含三个VHDL描述的元件,分别是分频器frediv、交通灯traffic_light和数码显示器disp。

4.1状态机设计

数码管显示倒计时的同时,对应的交通灯按照设定的顺序亮灭,所以在交通灯程序中定义一个枚举类型的状态变量st, st状态有red、yellow和green,初始为red,复位时切换为red。

4.2 动态显示程序设计

动态显示程序中,首先由traffic_light_dyseg元件产生十位和个位的数码管8段码,然后将16位段码数据送往dispay_dynamic的输入端口seven_seg[15..0],dispay_dynamic中定义两个长度为8的信号,用来存放个位和十位8段码,并轮流流传递给seven_seg_out[7..0]。

为使倒计时数据显示稳定清晰,同时又避免频繁切换导致功耗徒增,个位和十位的段码输出频率应不小于50Hz。设计中将系统的50MHz频率进行50M和250K分频处理,得到1Hz的输出频率clk_traffic和200Hz的输出频率clk,在dispay_dynamic中设计2位二进制计数器,最终得到两个动态数码管的显示频率为50Hz,该频率可得到清晰稳定的显示效果。动态显示的原理图文件如图2所示。

4.3 静态显示程序设计

静态显示中traffic_light元件与动态显示的功能一样,用来产生十位和个位的数码管8段码。静态显示的disp元件内部设计了一个状态机,用来控制16bit段码的输出。状态机的初始态为idle,当端口clk输入上升沿时,shcp端口也输出上升沿,同时状态机切换到下一個状态,data_out端口输出下一位bit。16个clk上升沿后,16 bit全部输出存入74HC595位移缓存器,在第17个clk上升沿到来时,slcp输出一个高电平,存入74HC595的16位段码并行输出到两位静态数码管的段选信号端,从而驱动点亮数码管。

同样的,静态显示的分频器也得到1Hzd的clk_traffic和200Hz的clk两种频率。静态显示的原理图文件如图3所示。

5 结论

经过测试,基于FPGA的交通灯计数显示实验功能和时序正确,实验结果符合预期目标。本实验通过交通灯实例将数码管的动态显示原理和静态显示原理相结合,学生通过调整扫描频率能够深入直观地感受到两种扫描方式的异同,掌握数码管的使用的同时也通过实验理解了串并转换芯片的应用方法和优势,充分调动了学生的探索意识,有效提高了实验效果。

参考文献:

[1] 李新梅.EDA实现交通灯控制器的设计[J].电子世界,2014(12):445-446.

[2] 贾玉荣,王鹏,祁硕.基于数码管显示教学实验设计[J].实验技术与管理,2016,33(12):43-47.

[3] 郭耸,武俊鹏,付小晶.基于FPGA的交通灯控制器实验设计[J].计算机教育,2009(8):99-100.

[4] 翟殿棠,方敏,厉光伟.基于VHDL的交通灯控制器设计[J].现代电子技术,2007(3):187-188+191.

[5] 孙仁云,李本亮,罗永国.基于交通灯系统的单片机教学实验[J].实验科学与技术,2003(2):26-29.

猜你喜欢
交通灯倒计时数码管
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
基于单片机的交通灯控制系统设计
一直飘红的交通灯
基于单片机的LED模拟交通灯设计
基于protues仿真的交通灯即时控制的一种实现