FPGA智能传感系统(二)基于FPGA的交通灯设计(一)

简介: FPGA智能传感系统(二)基于FPGA的交通灯设计(一)

 在上一节FPGA智能传感系统(一)Verilog基础入门有介绍基本的语法知识。本节主要是实战交通灯设计。本设计的所有代码、课程任务书、源代码程序、对应PPT、实验结果的视频讲解都在这个基于Verilog语言的FPGA交通灯设计链接。

  https://download.csdn.net/download/weixin_39059031/12561731


设计目的及功能


设计目的


  采用Verilog编写程序,并在QUARTUS II工具Modelsim平台仿真,在一个十字交叉路口,每个路口都有红、绿、黄三盏灯。即北、东、南、西方向都有红绿黄三盏灯。红灯亮时表示禁止通行,绿灯亮是表示允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。系统状态转移如图1所示:

  四个方向之后某一个方向会为绿灯,其余方向为红灯。绿灯亮时,表示其它三个方向都能行驶至绿灯方向。每次绿灯亮27s,黄灯3s,然后转90s红灯。

  显示采用LED光柱或数码管倒计时的方式。具有复位功能。具有紧急情况下的按钮功能。每个路口都采用2个七段共阳数码管倒计时。


方案论证与选择


  通过分析可以知道,所要设计的十字路口交通灯控制电路要能够使北、东、南、西方向依次从27绿灯倒计时,再3s黄灯,再90s红灯。由于系统时钟是50Mhz,所以我们首先需要的就是分频模块产生1hz的频率。可以不采用状态机方式。直接以进程方式实现主支干道的交通灯效果。也可以采用状态机方式。每一种状态为一种效果,以切换状态的方式实现交通灯效果。

  通过分析可以知道,所要设计的十字路口交通灯控制电路要能够使北、东、南、西方向依次从27绿灯倒计时,再3s黄灯,再90s红灯。由于系统时钟是50Mhz,所以我们首先需要的就是分频模块产生1hz的频率。可以不采用状态机方式。直接以进程方式实现主支干道的交通灯效果。也可以采用状态机方式。每一种状态为一种效果,以切换状态的方式实现交通灯效果。

  本次设计较复杂,如果不采用状态机的方式实现起来会非常繁琐,所以在功能中采用状态机的方式实现。主要包含8种状态,以状态1到状态8表示表示。

  • 状态1:北方向绿灯27s,其余红灯,此时led输出为010_100_100_100。
  • 状态2:北方向黄灯3s, 其余红灯,此时led输出为001_100_100_100。
  • 状态3:东方向绿灯27s,其余红灯,此时led输出为100_010_100_100。
  • 状态4:东方向黄灯3s, 其余红灯,此时led输出为100_001_100_100。
  • 状态5:南方向绿灯27s,其余红灯,此时led输出为100_100_010_100。
  • 状态6:南方向黄灯3s, 其余红灯,此时led输出为100_100_001_100。
  • 状态7:西方向绿灯27s,其余红灯,此时led输出为100_100_100_010。
  • 状态8:西方向黄灯3s,其余红灯,此时led输出为100_100_100_001。


基本原理


  通过分析可以知道,系统设计要求交通控制电路能够从北方向顺时针转,每个方向都有27s的绿灯,3s的黄灯,之后就是90s的红灯。对于其中任何一个方向,其信号的点亮顺序为绿灯亮27s,绿灯熄灭之后黄灯闪烁亮3s,黄灯闪烁亮3s之后红灯亮,如此循环下去。因此设计系统流程框架如下图2所示:

  如上图所示,先由系统50Mhz产生1hz的分频信号,用于状态转移和计时,同时系统时钟分频产生黄灯闪烁的分频信号。依据状态和黄灯闪烁信号产生LED控制信号。

  系统时钟和当前状态去决定控制数码管倒计时,当倒计时时间确定之后就可以产生各个方向的个位和十位信号,依据系统时钟产生位选信号对数码管进行显示,再通过段选信号去显示结果。

  所设计的八个状态如下所示:

状态1:北方向绿灯27s,其余红灯,此时led输出为010_100_100_100。

  此时北方向的倒计时n_time从27s开始,东方向倒计时e_time从30s开始,南方向的倒计时s_time从60s开始,西方向倒计时w_time从90s开始。

  当北方时间n_time递减到1时,之后被赋值为3s黄灯(0s直接跳变为3s),东方时间e_time也被赋值为3s红灯,南方时间s_time被赋值为33s红灯,西方时间w_time为63s红灯。

状态2:北方向黄灯3s,其余红灯,此时led输出为001_100_100_100。

  到达状态2的时候,北方向倒计时n_time被重新赋值为2s,东方倒计时e_time也被重新赋值为2s,南方倒计时s_time被赋值为32s,西方倒计时被赋值为62s。

  当北方时间倒计时到1s之后北方时间被赋值为90s(0s直接被赋值到90s)红灯,东方时间e_time被赋值为27s绿灯,南方时间s_time被赋值为为30s红灯,西方时间被赋值为60s红灯。

状态3:东方向绿灯27s,其余红灯,此时led输出为100_010_100_100。

  到达状态3时,东方时间被赋值为27s绿灯递减,南方时间s_time被赋值为30s红灯递减,西方时间被赋值为60s红灯递减,北方时间被赋值为90s红灯递减。

  当东方时间e_time递减到1时,之后被赋值为3s黄灯(0s直接跳变为3s),南方时间s_time也被赋值为3s红灯,西方时间w_time被赋值为33s红灯,北方时间n_time为63s红灯。

状态4:东方向黄灯3s,其余红灯,此时led输出为100_001_100_100。

  到达状态4的时候,东方向倒计时e_time被重新赋值为2s,南方倒计时e_time也被重新赋值为2s,西方倒计时w_time被赋值为32s,北方倒计时被赋值为62s。

  当东方时间倒计时到1s之后东方时间被赋值为90s(0s直接被赋值到90s)红灯,南方时间s_time被赋值为27s绿灯,西方时间w_time被赋值为为30s红灯,北方时间被赋值为60s红灯。

状态5:南方向绿灯27s,其余红灯,此时led输出为100_100_010_100。

  到达状态5时,南方时间被赋值为27s绿灯递减,西方时间w_time被赋值为30s红灯递减,北方时间被赋值为60s红灯递减,东方时间被赋值为90s红灯递减。

  当南方时间s_time递减到1时,之后被赋值为3s黄灯(0s直接跳变为3s),西方时间w_time也被赋值为3s红灯,北方时间n_time被赋值为33s红灯,东方时间e_time为63s红灯。

状态6:南方向黄灯3s,其余红灯,此时led输出为100_100_001_100。

  到达状态6的时候,南方向倒计时s_time被重新赋值为2s,西方倒计时e_time也被重新赋值为2s,北方倒计时w_time被赋值为32s,东方倒计时被赋值为62s。

  当南方时间倒计时到1s之后南方时间被赋值为90s(0s直接被赋值到90s)红灯,西方时间w_time被赋值为27s绿灯,北方时间n_time被赋值为为30s红灯,东方时间被赋值为60s红灯。

状态7:西方向绿灯27s,其余红灯,此时led输出为100_100_100_010。

  到达状态7时,西方时间被赋值为27s绿灯递减,北方时间n_time被赋值为30s红灯递减,东方时间被赋值为60s红灯递减,南方时间被赋值为90s红灯递减。

  当西方时间w_time递减到1时,之后被赋值为3s黄灯(0s直接跳变为3s),北方时间n_time也被赋值为3s红灯,东方时间e_time被赋值为33s红灯,南方时间e_time为63s红灯。

状态8:西方向黄灯3s,其余红灯,此时led输出为100_100_100_001。

  到达状态8的时候,西方向倒计时w_time被重新赋值为2s,北方倒计时n_time也被重新赋值为2s,东方倒计时e_time被赋值为32s,南方倒计时被赋值为62s。

  当西方时间倒计时到1s之后西方时间被赋值为90s(0s直接被赋值到90s)红灯,北方时间n_time被赋值为27s绿灯,东方时间e_time被赋值为为30s红灯,南方时间被赋值为60s红灯。


方案的实现与调试


  根据设计要求和系统所要求得功能,进行了前期调研,查阅相关书籍和文献,确定本设计需要的所有器件以及模块,制定设计方案,现确定主要完成以下任务:

1、系统时钟的设计

  本设计需要提供一个50Mhz的系统时钟。

2、控制电路的设计

  本设计中需要复位功能及遇有紧急情况可人为将两个方向都置为红灯功能,通过按钮,按照控制要求,控制key键相应输入的高低电平,继而通过程序的运行达到控制的目的。

3、数码管显示模块的设计

  本设计中需要将三种灯(红、黄、绿)的点亮时间通过数码管显示出来,由于各方向的灯的倒计时时间不相同,需要用8个数码管对各个方向进行显示。

4、LED灯显示模块设计

  本设计中需要控制东西、南北两个方向的信号灯,一共12个灯,由于各个方向显示不相同,即需要控制4组信号灯。

相关文章
|
29天前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
1月前
|
存储 算法 数据处理
基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统在原有的8PSK调制解调基础上,新增了高斯信道与误码率统计模块,验证了不同SNR条件下的8PSK性能。VIVADO2019.2仿真结果显示,在SNR分别为30dB、15dB和10dB时,系统表现出不同的误码率和星座图分布。8PSK作为一种高效的相位调制技术,广泛应用于无线通信中。FPGA凭借其高度灵活性和并行处理能力,成为实现此类复杂算法的理想平台。系统RTL结构展示了各模块间的连接与协同工作。
49 16
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
### 简介 本项目采用VIVADO 2019.2进行了十六进制相位移键控(16PSK)算法仿真,结果显示,在SNR=30dB时效果为Tttttttttttttt12,在SNR=20dB时效果为Tttttttttttttt34。系统RTL结构如Tttttttttttttt555555所示。16PSK是一种高效的相位调制技术,能在每个符号时间内传输4比特信息,适用于高速数据传输。其工作原理包括将比特流映射到16个相位状态之一(Tttttttttttttt777777),并通过匹配滤波和决策进行解调。具体Verilog核心程序见完整代码。
32 1
|
2月前
|
算法 测试技术 开发工具
基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
该系统在原有的QPSK调制解调基础上,新增了高斯信道和误码率统计模块,验证了不同SNR条件下的QPSK误码性能。系统包括数据生成、QPSK调制与解调等模块,使用Vivado 2019.2进行仿真,展示了SNR分别为15dB、10dB、5dB和1dB时的误码情况。系统采用Verilog语言实现,具有高效、可靠的特点。
51 3
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于Vivado 2019.2实现了2ASK调制解调系统,新增高斯信道及误码率统计模块,验证了不同SNR条件下的ASK误码表现。2ASK通过改变载波振幅传输二进制信号,其调制解调过程包括系统设计、Verilog编码、仿真测试及FPGA实现,需考虑实时性与并行性,并利用FPGA资源优化非线性操作。
70 0
|
4月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
升级版FPGA MSK调制解调系统集成AWGN信道模型,支持在Vivado 2019.2中设置不同SNR仿真误码率。示例SNR值从0到15,结果展示解调质量随SNR提升。MATLAB仿真验证了MSK性能,图片显示了仿真结果。 ### 理论概要 研究聚焦于软件无线电中的MSK调制解调,利用Verilog实现。MSK是一种相位连续、恒包络的二进制调制技术,优点包括频谱效率高。系统采用无核设计,关键模块包括调制器、解调器和误码检测。复位、输入数据、中频信号等关键信号通过Verilog描述,并通过Chipscope在线观察。
101 6
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
|
3月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的BPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统基于Vivado2019.2,在原有BPSK调制解调基础上新增高斯信道及误码率统计模块,可测试不同SNR条件下的误码性能。仿真结果显示,在SNR=0dB时误码较高,随着SNR增至5dB,误码率降低。理论上,BPSK与2ASK信号形式相似,但基带信号不同。BPSK信号功率谱仅含连续谱,且其频谱特性与2ASK相近。系统采用Verilog实现,包括调制、加噪、解调及误码统计等功能,通过改变`i_SNR`值可调整SNR进行测试。
47 1
|
3月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统基于FSK调制解调,通过Vivado 2019.2仿真验证了不同信噪比(SNR)下的误码率表现。加入高斯信道与误码统计模块后,仿真结果显示:SNR=16dB时误码极少;随SNR下降至0dB,误码逐渐增多。FSK利用频率变化传输信息,因其易于实现且抗干扰性强,在中低速通信中有广泛应用。2FSK信号由连续谱与离散谱构成,相位连续与否影响功率谱密度衰减特性。Verilog代码实现了FSK调制、加性高斯白噪声信道及解调功能,并计算误码数量。
61 5
|
6月前
|
传感器 算法 机器人
在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)
针对实用化人形机器人的控制系统,以深入应用FPGA技术为指导思想做了一个框架设计,提供一个具象化的设计实例、参考技术方案,协助各研发团队及相关决策者了解这一技术思路的价值。 进而,笔者希望读者将这个框架设计与《在实用化人形机器人研发流程中深入应用FPGA技术的流程图》结合起来进行分析、思考,希望: 进一步降低将FPGA深入应用于人形机器人在纯粹技术维度上的门槛; 助力更多正在人形机器人领域参与竞争的团队 -- 及时做出实质性决策,及时将更多资源分配到深入应用FPGA技术这一竞争维度。
277 4
在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)
|
6月前
|
传感器 数据采集 人工智能
LabVIEW FPGA开发实时滑动摩擦系统
LabVIEW FPGA开发实时滑动摩擦系统
45 0

热门文章

最新文章