Skip to content

SILICON-LAB/FPGA_LED_MATRIX

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FPGA LED点阵控制项目

1. 项目概述

本项目是一个基于FPGA的LED点阵显示和控制系统。它使用树莓派(Raspberry Pi)作为上位机(主控制器),通过SPI通信协议向FPGA发送指令和数据,以驱动一个8x8的RGB LED点阵显示各种图案、动画和效果。

项目还包含一个简单的UART接收模块,用于基础的通信测试。

2. 系统功能与架构

主要功能 (SPI控制)

  1. 上位机控制

    • 树莓派上运行一个Rust程序 (Rasberry/spi.rs),作为SPI总线的主机。
    • 该程序提供了一个命令行界面,用户可以选择不同的显示模式,如单点亮、图片显示、动画播放等。
  2. SPI通信

    • 树莓派根据用户选择的模式,将指令和像素数据通过SPI总线发送给FPGA。
  3. FPGA处理

    • FPGA内部的 SPI_slave_wrapper.sv 模块作为SPI从机,接收数据并将其存入一个4KB大小的内部存储器(BRAM)中。
    • 一个状态机从存储器中读取数据,解析为[指令, 行地址, 列数据]的格式。
    • 解析后的指令被传递给 LED_Matrix.sv 模块。
  4. LED驱动

    • LED_Matrix.sv 模块根据收到的指令,通过高速的逐行扫描方式,驱动LED点阵的物理引脚,从而在视觉上形成稳定、清晰的图像或动画。

次要功能 (UART测试)

  • 项目包含一个简单的UART接收模块 (uart_rx.sv) 和一个对应的Python测试脚本 (Rasberry/uart.py)。
  • 树莓派可以通过UART发送一个特定字节 (0xFF),FPGA接收到后会点亮一个测试LED,用于验证FPGA与上位机之间的基本硬件连接。此功能与主要的LED显示逻辑是独立的。

3. 使用到的技术

  • FPGA端
    • 语言:SystemVerilog
    • 硬件:FPGA开发板、8x8 RGB LED点阵
  • 上位机端
    • 硬件:树莓派
    • 语言
      • Rust (使用 rppal 库进行SPI控制)
      • Python (使用 pyserial 库进行UART测试)
  • 通信协议
    • SPI (主要控制)
    • UART (用于测试)
  • 约束与实现
    • 使用Xilinx Design Constraints (.xdc) 文件进行引脚和时序约束。

4. 项目结构说明

fpga/
├── bitstream/         # 存放生成的用于配置FPGA的比特流文件 (.bit)
├── constraints/       # 存放Xilinx约束文件 (.xdc)
├── LED_Matrix/        # LED点阵的核心驱动逻辑和测试文件
├── Rasberry/          # 树莓派上运行的上位机软件 (Rust和Python)
├── Simulation/        # 仿真波形等文件
├── SPI/               # SPI从机接口、顶层封装和测试文件
├── UART/              # UART接收模块
└── 说明文档/          # 其他相关文档

Generated by Gemini

Releases

No releases published

Packages

No packages published

Languages

  • SystemVerilog 54.6%
  • Rust 21.9%
  • Tcl 13.4%
  • Python 5.1%
  • Verilog 4.5%
  • Shell 0.5%