基于FPGA的倒计时交通信号灯系统(使用quartusII)

这篇具有很好参考价值的文章主要介绍了基于FPGA的倒计时交通信号灯系统(使用quartusII)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题外话

好久没更新,转眼大二下了,去年我的城市经历新冠疫情,我自己也沉迷于某csgo游戏开摆500小时,终于在上个月醒悟,正式开始fpga的学习,是跟这实验室的一位带工程师学习的,话不多说开始。

学习路线

主要看着B站开源骚客和小梅哥的视频,开源骚客的视频我看完了,最近在看小梅哥,其实我发现野火的电子文档写的也不错,然后还有特权同学的fpga教程,我没有怎么看数电,所以学起来感觉有点磕磕绊绊,比如D触发器,pwm,时钟那里。
首先fpga学习确实跟单片机不太一样,可以把fpga理解一块面包板,需要我们自己设定输入输出端口。fpga学习确实跟单片机不一样,时钟是时序逻辑的灵魂,我们要考虑好如何设计时钟,搞懂非阻塞赋值,并行执行思想。

方案设计

原件选择

开发板选择altera MAXII epm240t100c5n,其实这是一块cpld还不是fpga。
软件选择quartusII 13.1 这里注意看自己的器件库 我的芯片过于古老,软件不兼容,我还额外去intel官网下载了maxII的devices。
同时建议提前了解rgb和数码管原理。

设计方案

0、复位时 数码管包括小数点全部亮 同时也方便检测器件是否损坏
1、红灯10秒倒计时
2、然后黄灯3秒,
3、然后绿灯5秒
4、再黄灯3秒

设计思想

1、设计时钟一,用于选择10+3+3+21个状态
2、设计时钟二,用于数码管动态刷新一个周期
3、对四位数码管位选和段选的设计
4、对数码管共阴极共阳极的选择

代码

module	traffic(
		input			sclk					,
		input			s_rst_n					,
		
		output	reg		[3:0]	SEG				,
		output	reg		[7:0]	SMG				,	
		output	reg		beep					,
		output	reg		[ 2:0]	RGB
);
localparam		DELAY_1S			=			'd24_999_999;
localparam		DELAY_10MS			=			'd299_999;
reg		[4:0]			TIME_21					;
reg		[4:0]			TIME_4					;
reg		[25:0]			cnt_1s					;
reg		[18:0]			cnt_10ms				;
reg		[7:0]			SEG1					;
reg		[7:0]			SEG2					;
reg		[7:0]			SEG3					;
reg		[7:0]			SEG4					;

localparam		NULL				=			8'b0000_0000;
localparam		num0				=			8'b0011_1111;
localparam		num9				=           8'b0110_1111;
localparam		num8				=           8'b0111_1111;
localparam		num7				=           8'b0000_0111;
localparam		num6				=           8'b0111_1101;
localparam		num5				=           8'b0110_1101;
localparam		num4				=           8'b0110_0110;
localparam		num3				=           8'b0100_1111;
localparam		num2				=           8'b0101_1011;
localparam		num1				=           8'b0000_0110;

always @ (posedge sclk or negedge s_rst_n)	
begin
		if(s_rst_n == 1'b0)
				cnt_1s		<=			'd0;				
		else if (cnt_1s == DELAY_1S)				
				cnt_1s		<=			'd0;
		else  
				cnt_1s 	<=			cnt_1s + 1'b1;
end

always @ (posedge sclk or negedge s_rst_n)	
begin
		if(s_rst_n == 1'b0)
				cnt_10ms		<=			'd0;				
		else if (cnt_10ms == DELAY_10MS)				
				cnt_10ms		<=			'd0;
		else  
				cnt_10ms 	<=			cnt_10ms + 1'b1;
end

always @ (posedge sclk or negedge s_rst_n)	
begin
		if(s_rst_n == 1'd0)				
				TIME_21	<=			1'd1;
		else if (TIME_21 == 21 && cnt_1s == DELAY_1S)				
				TIME_21	<=			1'd1;				
		else  if (cnt_1s == DELAY_1S) 
				TIME_21  	<=			TIME_21 + 1'd1;
end

always @ (posedge sclk or negedge s_rst_n)	
begin
		if(s_rst_n == 1'd0)				
				TIME_4	<=			1'd0;
		else if (TIME_4 == 4 && cnt_10ms == DELAY_10MS)				
				TIME_4	<=			1'd1;				
		else  if (cnt_10ms == DELAY_10MS) 
				TIME_4  	<=			TIME_4 + 1'd1;
end

always @ (posedge sclk or negedge s_rst_n)	
begin
		if(s_rst_n == 1'd0)				
				SEG		<=			4'b0000;			
		else if (TIME_4 == 01)
				SEG		<=			4'b0111;
		else if (TIME_4 == 02)
				SEG		<=			4'b1011;
		else if (TIME_4 == 03)
				SEG		<=			4'b1101;
		else
				SEG		<=			4'b1110;
end

always @ (posedge sclk or negedge s_rst_n)	
begin
		if(s_rst_n == 1'd0)				
				SMG 	<=			8'b1111_1111;			
		else if (TIME_4 == 01)
				SMG 	<=			SEG4;		
		else if (TIME_4 == 02)
				SMG 	<=			SEG3;		
		else if (TIME_4 == 03)
				SMG 	<=			SEG2;		
		else
				SMG 	<=			SEG1;				
end


always@(*)
begin
		
			case	(TIME_21)
				01:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,num1,num0};
				02:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num9};	
				03:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num8};	
				04:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num7};	
				05:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num6};	
				06:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num5};	
				07:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num4};	
				08:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num3};	
				09:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num2};	
				10:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num1};	

				11:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num3};	
				12:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num2};	
				13:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num1};	

				14:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num5};	
				15:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num4};	
				16:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num3};	
				17:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num2};	
				18:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num1};	

				19:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num3};	
				20:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num2};	
				21:						{SEG1,SEG2,SEG3,SEG4}	<={NULL,NULL,NULL,num1};	

			endcase
		
end                

	
always@(*)
begin

		if(s_rst_n == 1'b0)
				RGB 	<=			3'b000;
		else if (TIME_21>=1 &&TIME_21<=10)
				RGB 	<=			3'b110;				//红
		else if (TIME_21>=11 &&TIME_21<=13)
				RGB 	<=			3'b100;				//黄
		else if (TIME_21>=14 &&TIME_21<=18)
				RGB 	<=			3'b101;				//绿
		else if (TIME_21>=19 &&TIME_21<=21)
				RGB 	<=			3'b100;				//黄
				
end  

endmodule


实物展示

忘了录复位时白灯了,大家自己想象。
基于FPGA的倒计时交通信号灯系统(使用quartusII)

小结

搞电子要耐得住寂寞,要学习的很多,大家加油。欢迎大家互相交流学习方法路线心得,csdn不能及时回复,抱歉!文章来源地址https://www.toymoban.com/news/detail-500252.html

到了这里,关于基于FPGA的倒计时交通信号灯系统(使用quartusII)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA 课程综合实验——倒计时(简易计时器闹钟)基于STEP MAX10 FPGA

    组合使用STEP MAX10 FPGA核心板和STEP BaseBoard扩展底板,编写程序,完成一个倒计时定时 器的设计。 功能要求: 使用扩展底板上相邻的4位数码管显示计时时间,显示数值单位为“秒”。(2分) 定时器最大定时时间为99秒,时间显示分辨力为1/100秒。(2分) 倒计时结束时,扩展

    2024年02月03日
    浏览(48)
  • FPGA项目(10)——基于FPGA的倒计时显示电路的设计与仿真

            本次做的题目是:基于FPGA的倒计时显示电路设计,         题目要求如下:         详细要求如下:         本次设计的代码通过了仿真。(用的是quartus自带的仿真器)         这次设计分为两个模块,一个是倒计时的控制模块,另一个是数码管

    2024年02月11日
    浏览(31)
  • 【论文笔记】IntelliLight智能交通灯:一种基于强化学习的智能交通信号灯控制方法

    博客声明:本文仅为个人论文阅读笔记,大部分原文对照的中文为翻译而来,只对其中错误明显的部分作了修改。其他一些个人理解不到位或有误的地方也尽请见谅。 标题原文: IntelliLight:A Reinforcement Learning Approach for Intelligent Traffic Light Control 论文来源: Proceedings of the 24

    2024年04月12日
    浏览(57)
  • 【Arduino】arduino交通灯(红绿灯+倒计时)

    红绿灯+倒计时

    2024年02月13日
    浏览(31)
  • 基于51单片机的交通信号灯

    本设计学校的一次单片机实训。 利用51单片机控制各个路口红绿灯及时间显示。 1、题目要求 1、各个路口红绿灯亮灭的规则,暂不考虑左转方向; 2、倒计时的实现,利用单片机的定时器进行计数得到秒信号; 3、时间显示:东西南北四个方向的时间一致,当东西方向为60秒绿

    2024年01月24日
    浏览(49)
  • 基于单片机的交通信号灯控制

    目录 一、方案流程及技术规格书设计 二、系统硬件电路设计 三、系统软件设计 四、系统调试测试与分析 前言        伴随着越来越多的家用小轿车的出现,道路安全问题也越来越被人们重视,当今,红绿灯也被安装在各个路口,来规范人们的驾驶习惯,红灯停,绿灯行的

    2024年02月03日
    浏览(38)
  • 基于STM32的智能交通信号灯控制系统设计

    通过分析交通规则和交通灯的工作原理,给出智能交通信号灯控制系统的设计方法。基于STM32F103芯片开发满足需求的外围电路,并绘制电路原理图。基于MDK keil软件编写交通信号灯控制程序,利用LabVIEW搭建交通信号灯场景,LabVIEW可以控制红绿灯时长。分别完成硬件、软件调试

    2024年02月03日
    浏览(51)
  • 基于51单片机的交通信号灯设计

    简介 1.本系统采用STC89C51单片机以及单片机最小系统和74HC245电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过两位一体共阴极数码管显示,并能通过按键对定时进行设置,而且具有蜂鸣器提示。 2、本设计拟实现的性能指标如下: 设在十

    2024年02月04日
    浏览(37)
  • AI:05- - 基于深度学习的道路交通信号灯的检测与识别

    🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、

    2024年02月03日
    浏览(45)
  • 【EDA课程设计】FPGA交通信号灯的设计(含动画视频、超详细思路/步骤分析、完整代码与效果详解)

    ✨你好啊,我是 “ 怪 ” ,是一名在校大学生哦。 🌍主页链接:怪的个人博客主页 ☀️博文主更方向为: 课程学习知识、作业题解、期末备考。 随着专业的深入会越来越广哦…一起期待。 ❤️一个“不想让我曾没有做好的也成为你的遗憾”的博主。 💪很高兴与你相遇,

    2023年04月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包