FPGA交通燈設計報告(源碼+管腳約束+實物圖+設計報告)

基于FPGA的交通燈設計

摘要

本設計采用FPGA技術實現了一個智能交通燈控制系統。系統以Verilog HDL為設計語言,在FPGA平臺上實現了交通燈的自動控制、數碼管倒計時顯示、緊急情況處理等功能。通過合理的狀態機設計和模塊化編程,系統具有良好的實時性、可靠性和可擴展性,能夠有效管理十字路口的交通流量。

關鍵詞:FPGA;交通燈;Verilog HDL;狀態機;數碼管顯示

Abstract: This design implements an intelligent traffic light control system using FPGA technology. The system uses Verilog HDL as the design language and realizes automatic traffic light control, digital tube countdown display, emergency handling and other functions on the FPGA platform. Through reasonable state machine design and modular programming, the system has good real-time performance, reliability and scalability, and can effectively manage traffic flow at intersections.

Keywords: FPGA; Traffic Light; Verilog HDL; State Machine; Digital Display

  • FPGA交通燈設計-vivado2018.3工程
    工程代碼也可以私信獲取,本人工程基于vivado2018.3設計。

目錄

  1. 設計目標與要求
    • 1.1 設計目的
    • 1.2 功能要求
  2. 方案論證與選擇
    • 2.1 系統方案
    • 2.2 設計思路
  3. 系統設計
    • 3.1 系統總體框圖
    • 3.2 各模塊功能
    • 3.3 狀態轉換圖
    • 3.4 源程序
    • 3.5 管腳鎖定
    • 3.6 仿真波形
    • 3.7 元器件清單
  4. 測試驗證與實物展示
    • 4.1 測試驗證
    • 4.2 實物展示
  5. 總結與心得體會

1. 設計目標與要求

1.1 設計目的

隨著城市化進程的加快和汽車保有量的急劇增長,城市交通擁堵問題日益嚴重。智能交通燈控制系統作為城市交通管理的重要組成部分,對緩解交通壓力、提高道路通行效率具有重要意義。

FPGA(現場可編程門陣列)作為一種可重構的數字電路平臺,具有并行處理能力強、響應速度快、可靠性高等優點,非常適合用于實時性要求較高的交通控制系統。本設計基于FPGA平臺,采用Verilog HDL硬件描述語言,設計并實現了一套完整的智能交通燈控制系統。

1.2 功能要求

本交通燈控制系統需要實現以下功能要求:

基本功能要求:
  1. 交通燈控制:實現標準的四相位交通燈控制邏輯

    • 東西方向:綠燈16秒 → 黃燈4秒 → 紅燈20秒
    • 南北方向:紅燈20秒 → 綠燈16秒 → 黃燈4秒
    • 循環執行上述時序
  2. 數碼管顯示:提供實時的倒計時顯示功能

    • 通過8位數碼管顯示各方向剩余通行時間
    • 顯示格式:東西方向時間 | 南北方向時間
  3. 緊急處理:支持緊急情況處理

    • 當檢測到緊急按鍵時,立即切換到緊急狀態
    • 緊急狀態下,所有方向顯示紅燈20秒
    • 緊急狀態結束后,恢復正常循環
  4. 系統復位:支持異步復位功能

    • 確保系統能夠可靠啟動和重新初始化
性能要求:
  • 系統響應時間:≤1ms
  • 時間精度:±0.1秒
  • 工作溫度:-40℃~+85℃
  • 可靠性:MTBF≥10000小時

2. 方案論證與選擇

2.1 系統方案

方案一:基于單片機的控制方案

優點

  • 成本較低
  • 開發工具成熟
  • 程序設計相對簡單

缺點

  • 響應速度較慢
  • 實時性不夠好
  • 擴展性有限
  • 抗干擾能力較弱
方案二:基于FPGA的控制方案(本設計采用)

優點

  • 響應速度快,實時性好
  • 并行處理能力強
  • 可重構性好,便于升級
  • 抗干擾能力強
  • 可靠性高

缺點

  • 成本相對較高
  • 開發難度較大
方案三:基于PLC的控制方案

優點

  • 可靠性高
  • 抗干擾能力強
  • 編程簡單

缺點

  • 成本高
  • 體積大
  • 響應速度一般

方案選擇:綜合考慮性能、成本和技術要求,本設計選擇基于FPGA的控制方案。

2.2 設計思路

本設計采用模塊化、層次化的設計思想:

  1. 頂層設計:采用自頂向下的設計方法,將系統分解為若干功能模塊
  2. 狀態機設計:使用有限狀態機實現交通燈控制邏輯
  3. 時序設計:合理設計時鐘域和時序約束
  4. 接口設計:標準化各模塊間的接口
  5. 驗證策略:采用仿真驗證和硬件測試相結合的方法

3.1 系統總體框圖

系統采用模塊化設計思想,主要包括以下模塊:

在這里插入圖片描述

系統總體框圖如上所示,主要包括:

  • 時鐘模塊:提供系統時鐘信號
  • 復位模塊:提供系統復位信號
  • 交通燈邏輯控制模塊:系統核心,實現狀態機控制
  • LED控制模塊:控制交通燈LED顯示
  • 數碼管顯示模塊:實現倒計時顯示
  • 按鍵輸入模塊:處理緊急按鍵輸入

3.2 各模塊功能

1. 頂層模塊(jtd_test)
  • 系統的頂層封裝模塊
  • 負責各子模塊的例化和信號連接
  • 處理輸入輸出信號的分配和數據格式轉換
2. 交通燈邏輯控制模塊(jtd_logic)
  • 系統的核心控制模塊
  • 實現交通燈狀態機邏輯
  • 處理時間計數和狀態轉換
  • 響應緊急按鍵輸入
  • 輸出當前狀態和倒計時信息
3. LED控制模塊(led_ctl)
  • 負責控制交通燈LED的顯示
  • 根據當前狀態輸出相應的LED控制信號
  • 支持12路LED輸出(東西南北各3路)
4. 數碼管顯示模塊(smg)
  • 實現8位數碼管的動態掃描顯示
  • 顯示東西和南北方向的倒計時
  • 支持位選和段選信號輸出

3.3 狀態轉換圖

在這里插入圖片描述

系統采用四狀態有限狀態機實現交通燈控制邏輯:

  1. IDLE狀態(5’b00001):東西綠燈,南北紅燈(16秒)
  2. STAGE_1狀態(5’b00010):東西黃燈,南北紅燈(4秒)
  3. STAGE_2狀態(5’b00100):東西紅燈,南北綠燈(16秒)
  4. STAGE_3狀態(5’b01000):東西紅燈,南北黃燈(4秒)
  5. EMERGENT_LED狀態(5’b10000):緊急狀態,所有方向紅燈(20秒)

狀態轉換條件

  • 正常狀態按時間順序循環轉換:IDLE → STAGE_1 → STAGE_2 → STAGE_3 → IDLE
  • 任何狀態下檢測到緊急按鍵都會跳轉到緊急狀態
  • 緊急狀態結束后返回IDLE狀態重新開始循環

3.4 源程序

系統源程序采用Verilog HDL語言編寫,主要包括以下文件:

1. 頂層模塊(jtd_test.v)
module jtd_test(input               clk,        // 系統時鐘input               rst_n,      // 異步復位信號input               key,        // 緊急按鍵output      [7:0]   sm_bit,     // 數碼管位選output      [7:0]   sm_seg,     // 數碼管段選output      [11:0]  led         // LED控制信號
);// 內部信號定義
wire [4:0] c_state;
wire [5:0] time_second_cnt_dx, time_second_cnt_nb;
wire [3:0] ge1, shi1, ge0, shi0;// 例化交通燈邏輯控制模塊
jtd_logic u_jtd_logic(.clk(clk),.rst_n(rst_n),.key(key),.c_state(c_state),.time_second_cnt_dx(time_second_cnt_dx),.time_second_cnt_nb(time_second_cnt_nb)
);// 例化LED控制模塊
led_ctl u_led_ctl(.clk(clk),.rst_n(rst_n),.c_state(c_state),.led(led)
);// 數碼管顯示數據處理
assign ge1 = time_second_cnt_dx%10;  // 東西方向個位
assign shi1 = time_second_cnt_dx/10; // 東西方向十位
assign ge0 = time_second_cnt_nb%10;  // 南北方向個位
assign shi0 = time_second_cnt_nb/10; // 南北方向十位// 例化數碼管顯示模塊
smg u_smg(.clk(clk),.rst_n(rst_n),.ge1(ge1), .shi1(shi1),.ge0(ge0), .shi0(shi0),.sm_bit(sm_bit),.sm_seg(sm_seg)
);endmodule
2. 交通燈邏輯控制模塊(jtd_logic.v)

該模塊是系統的核心,實現了完整的狀態機控制邏輯。主要功能包括:

  • 按鍵檢測與消抖
  • 1秒時鐘生成
  • 狀態機控制
  • 時間計數管理

詳細代碼請參見附錄A。

3. LED控制模塊(led_ctl.v)
module led_ctl(input clk,input rst_n,input [4:0] c_state,output reg [11:0] led
);// 狀態參數定義
parameter   idle    = 5'b00001,stage_1 = 5'b00010,stage_2 = 5'b00100,stage_3 = 5'b01000,emergent_led = 5'b10000;// LED控制邏輯
always@(posedge clk or negedge rst_n)beginif(!rst_n)led <= 12'b0;else if(c_state == idle)led <= 12'b0111_1001_1110;  // 東西綠,南北紅else if(c_state == stage_1)led <= 12'b0111_0101_1101;  // 南北紅,東西黃else if(c_state == stage_2)led <= 12'b1100_1111_0011;  // 東西紅,南北綠else if(c_state == stage_3)led <= 12'b1010_1110_1011;  // 東西紅,南北黃else if(c_state == emergent_led)led <= 12'b0110_1101_1011;  // 東西紅,南北紅elseled <= led;
endendmodule
4. 數碼管顯示模塊(smg.v)

該模塊實現8位數碼管的動態掃描顯示,詳細代碼請參見附錄B。

3.5 管腳鎖定

系統的管腳分配通過約束文件(jtd_test.xdc)進行定義:

# 時鐘約束
create_clock -period 20.000 -name sys_clk [get_ports clk]
set_property PACKAGE_PIN Y18 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]# 復位信號約束
set_property PACKAGE_PIN F15 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]# 按鍵約束
set_property PACKAGE_PIN A20 [get_ports key]
set_property IOSTANDARD LVCMOS33 [get_ports key]# LED控制信號約束
set_property PACKAGE_PIN M14 [get_ports {led[0]}]
set_property PACKAGE_PIN M15 [get_ports {led[1]}]
# ... 其他LED引腳約束# 數碼管約束
set_property PACKAGE_PIN K2 [get_ports {sm_bit[0]}]
set_property PACKAGE_PIN J2 [get_ports {sm_bit[1]}]
# ... 其他數碼管引腳約束

3.6 仿真波形

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96803.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

技術論文分析分析論文《計算機病毒判定專家系統原理與設計》思考其在游戲中的應用

論文原文的引言主要有兩大部分的內容&#xff1a;介紹計算機病毒&#xff0c;明確本文使用的病毒分類方式&#xff1b;分析傳統計算機病毒檢測存在的弊端。對于計算機病毒的定義&#xff0c;文中給出的定義比較嚴謹&#xff0c;我自己查了一下現在百度百科的定義&#xff0c;兩…

《Unity項目實戰:動態加載引發的顯存危機全鏈路排查與重構實踐》

從動態光影那流光溢彩、仿佛賦予虛擬世界真實質感的絢麗效果—這得益于Unity引擎強大的HDRP管線對光照路徑的精準模擬,到物理引擎驅動的物體碰撞精準到毫厘的物理反饋—依托Unity Physics模塊對剛體動力學的毫秒級計算,再到能夠依據不同設備性能自動適配的畫質表現—通過Unit…

智慧水庫綜合管理系統平臺御控物聯網解決方案

一、行業背景與痛點分析水庫作為防洪、灌溉、供水、發電及生態保護的核心基礎設施&#xff0c;其管理效率直接關系到區域水資源安全與可持續發展。然而&#xff0c;傳統水庫管理模式存在四大核心痛點&#xff1a;數據孤島嚴重&#xff1a;水位、雨量、水質、設備狀態等數據分散…

使用nvm安裝Node.js18以下報錯解決方案——The system cannot find the file specified.

使用 nvm 安裝 Node.js 18以下 報錯解決方案 在前端開發過程中&#xff0c;常常需要針對不同項目切換 Node.js 版本。nvm&#xff08;Node Version Manager&#xff09;是最常用的工具。但最近在嘗試安裝 Node.js 14 版本時&#xff0c;遇到了奇怪的錯誤。 問題描述 使用 nv…

在Excel和WPS表格中快速復制上一行內容

有的時候我們在Excel和WPS表格中想復制上一行對應單元格、連續區域或整行的內容&#xff0c;只需要在當前行拖動鼠標左鍵選中相關區域&#xff0c;然后按CtrlD鍵即可將上一行對應位置的內容復制過來——需要注意的是&#xff0c;如果當前行有數據&#xff0c;這些數據會直接被覆…

408學習之c語言(遞歸與函數)

今天主要學習了遞歸與函數的相關內容&#xff0c;下面將我今天所學知識與所寫代碼分享給大家 遞歸核心要點 遞歸三要素 基準條件&#xff08;明確終止條件&#xff09; 遞歸調用&#xff08;逐步分解問題&#xff09; 收斂性&#xff08;確保每次遞歸都向基準條件靠近&#xff…

swVBA自學筆記016、Solidworks API Help 幫助文檔的(三大版塊)

目錄1. Namespace (命名空間) 版塊2. Interface (接口) 版塊3. Members (接口成員) 版塊4、總結關系5、如果你感覺上面說的過于簡單&#xff0c;請往下看!6、示例鏈接→SOLIDWORKS API Help 20197、需要注意的是&#xff0c;帶“I”的對象表示&#xff1a;接口1. Namespace (命…

通俗易懂地講解JAVA的BIO、NIO、AIO

理解Java的I/O模型&#xff08;BIO、NIO、AIO&#xff09;對于構建高性能網絡應用至關重要 &#x1f9e0; 通俗理解&#xff1a;快遞站的故事 想象一個快遞站&#xff1a; ? BIO&#xff1a;就像快遞站為每一個包裹都安排一位專員。專員從接到包裹到處理完&#xff08;簽收、…

LabVIEW 泵輪檢測系統

在汽車行業&#xff0c;泵輪作為液力變矩器關鍵部件&#xff0c;其質量檢測極為重要。傳統手工檢測泵輪效率低且誤差大&#xff0c;為此構建基于 LabVIEW 與西門子硬件結合的泵輪檢測系統。 應用場景 聚焦汽車零部件生產車間&#xff0c;對泵輪總成進行出廠前檢測。在液力變矩…

2025年8月月賽 T2 T3

一. 七天假日 T2原思路&#xff1a;直接計算左右括號的數量&#xff0c;然后直接輸出他們的差改進思路&#xff1a; 用d值記錄截止到當前位置&#xff0c;還需要多少個右括號可以滿足非法要求cur&#xff1a;截止到當前位置&#xff0c;已經有多少個右括號sum是右括號位置的前綴…

數據結構----棧的順序存儲(順序棧)

棧的特點&#xff1a;先進后出棧的操作&#xff1a;用數組進行存儲&#xff08;1&#xff09;初始化&#xff1a;//棧 typedef struct {int *data;//指針模擬分配數組int top;//棧“頂”指針 }Stack; //初始化 Stack InitStack(){Stack s;//給數組分配空間s.data (int*)malloc…

React Hooks原理深度解析與高級應用模式

React Hooks原理深度解析與高級應用模式 引言 React Hooks自16.8版本引入以來&#xff0c;徹底改變了我們編寫React組件的方式。然而&#xff0c;很多開發者僅僅停留在使用層面&#xff0c;對Hooks的實現原理和高級應用模式了解不深。本文將深入探討Hooks的工作原理、自定義Hoo…

兼職網|基于SpringBoot和Vue的蝸牛兼職網(源碼+數據庫+文檔)

項目介紹 : SpringbootMavenMybatis PlusVue Element UIMysql 開發的前后端分離的蝸牛兼職網&#xff0c;項目分為管理端和用戶端和企業端。 項目演示: 基于SpringBoot和Vue的蝸牛兼職網 運行環境: 最好是java jdk 1.8&#xff0c;我們在這個平臺上運行的。其他版本理論上也可…

TDengine 聚合函數 LEASTSQUARES 用戶手冊

LEASTSQUARES 函數用戶手冊 函數定義 LEASTSQUARES(expr, start_val, step_val)功能說明 LEASTSQUARES() 函數對指定列的數據進行最小二乘法線性擬合&#xff0c;返回擬合直線的斜率&#xff08;slope&#xff09;和截距&#xff08;intercept&#xff09;。該函數基于線性回…

Redis最佳實踐——安全與穩定性保障之高可用架構詳解

全面詳解 Java 中 Redis 在電商應用的高可用架構設計一、高可用架構核心模型 1. 多層級高可用體系 #mermaid-svg-anJ3iQ0ymhr025Jn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-anJ3iQ0ymhr025Jn .error-icon{fil…

ABAP 屏幕在自定義容器寫多行文本框

文章目錄變量定義容器等邏輯屏幕效果變量定義 CONSTANTS: GC_TEXT_LINE_LENGTH TYPE I VALUE 72. TYPES: TEXT_TABLE_TYPE(GC_TEXT_LINE_LENGTH) TYPE C OCCURS 0. DATA: GV_SPLITTER TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. DATA: GV_CUSTOM_CONTAINER TYPE REF TO CL_…

昆山精密機械公司8個Solidworks共用一臺服務器

在當今高度信息化的制造業環境中&#xff0c;昆山精密機械公司面臨著如何高效利用SolidWorks這一核心設計工具的現實挑戰。隨著企業規模的擴大和設計團隊的分散&#xff0c;傳統的單機授權模式已無法滿足協同設計需求。通過引入云飛云共享云桌面解決方案&#xff0c;該公司成功…

【WebSocket?】入門之旅(三):WebSocket 的實戰應用

本篇文章將通過構建一個簡單的實時聊天應用&#xff0c;演示如何在前端和后端搭建 WebSocket 系統&#xff0c;完成實時消息傳輸。通過實戰&#xff0c;幫助你更好地理解 WebSocket 在實際項目中的應用。 目錄 搭建 WebSocket 服務器WebSocket 客戶端實現實時聊天應用示例常見…

CentOS 8-BClinux8.2更換為阿里云鏡像源:保姆級教程

還在為 CentOS 8 官方源訪問緩慢或不可用而煩惱嗎&#xff1f;更換為國內鏡像源&#xff0c;如阿里云&#xff0c;可以顯著提升軟件包下載速度和穩定性。本文將帶你一步步完成 CentOS 8 鏡像源的更換&#xff0c;讓你的系統管理更順暢。 準備工作 在進行任何系統配置更改之前…

MySQL中InnoDB索引使用與底層原理

MySQL Server端的緩存&#xff08;查詢緩存&#xff09;是MySQL Server層的特性&#xff0c;而InnoDB的緩存&#xff08;緩沖池&#xff09;是InnoDB存儲引擎層的特性。兩者是完全獨立的。下面我們來深入探討這兩者以及InnoDB索引的原理。1. MySQL Server層的緩存 - 查詢緩存 (…