1、设计要求基于小脚丫FPGA开发板设计带数码管显示倒计时的交通灯系统,要求:
1)一个道路绿灯持续时间25S,红灯持续时间10S,黄灯持续时间3S;
2)另一道路绿灯持续时间10S,红灯持续时间25S,黄灯持续时间3S;
3)第一位数码管和第二位数码管显示倒计时;
2、硬件连接FPGA的系统时钟来自于小脚丫FPGA开发板配置的25MHz时钟晶振,连接FPGA的C1引脚。
本设计除了时钟和复位键以外没有其他的输入,故只用到一个按键K6硬件设计如图1所示,按键连接到FPGA的B1引脚。
图1、复位键硬件设计
设计中需要两个RGB的led进行交通灯显示的呈现,每一个RGB的LED都有三个引脚需要跟小脚丫连接在一起。两个LED跟小脚丫FPGA开发板之间的连接关系如图2所示,对应的管脚如下。
图2、RGB_LED硬件连接
设计中需要使用数码管进行倒计时的显示,小脚丫通过74HC595来控驱动和控制数码管。74HC595跟小脚丫FPGA开发板之间的连接关系如图3所示,对应的管脚如下。
图3、数码管驱动74HC595硬件连接
3、工作原理和状态转换
1)使用计数器做分频处理,得到周期为1秒的脉冲信号clk_1h;
2)使用一个6bit的BCD码表示倒计时时间的值,其中高2bit表示值的十位,低4bit表示值的个位;
3)用以下四个状态分别表示交通灯不同的显示;
S0: 大路绿灯亮,小路红灯亮,持续25S;
S1: 大路黄灯(蓝灯)亮,小路红灯持续3S;
S2: 大路红灯亮,小路绿灯亮,持续10S;
S3: 大路红灯亮,效率黄灯(蓝灯)亮,持续3S;
得到状态转换图如下:
图4、交通灯状态转换图
4、代码设计为了实现所需要的功能,我们将整个设计在顶层划分为五个不同的模块,如图5所示。
图5、交通灯程序框图
4.1clock_division模块Clock_division模块主要实现数字时钟的模式控制,程序代码截图如下:
4.2 Curren_state模块
这部分代码的作用是将次态赋值给当前态,这是三段式的标志性模块。该模块程序代码截图如下:
4.3 Output&count模块这部分代码可以说是整个代码的核心部分,交通灯的显示在这部分完成。此外,这一部分还负责进行倒计时,这部分的代码将即使数字分为个位和十位进行分别倒计时。此举有利用后面对74HC595驱动数码管的代码进行调用。其序代码截图如下:
4.4 CubeDisplay模块这部分代码用于74HC595的控制,以使得数码管能够按照计划进行倒计时显示。这部分代码截图如下:
5、系统运行图6、系统运行
视频地址:
优酷视频(基于小脚丫FPGA的倒计时交通灯):
https://v.youku.com/v_show/id_XMTU0NDI4NjQ1Mg==.html
6、资源报告资源数量比例说明
LUT4s24919%
寄存器1157%
存储器00%
IO管脚11
时钟频率25MHz
7、知识点时钟计数分频
三段式程序段的编写
串行/并行转换
74HC595控制
9、相关文件文件名称功能
Traffic_Light交通灯状态转换和灯显示,以及顶层模块功能
DLED_4Bit倒计时显示模块
2021-12-06 17:48:37
1009KB
电路方案
1