项目概述
本项目实现了一个完整的 FPGA 系统,用于通过 SPI 接口控制和读取 AS6501 TDC 芯片。系统包括 SPI 主控模块、控制模块、测试序列器、Block RAM 结果存储、UART 批量传输模块和 Python 数据分析工具,支持完整的测试与分析流程:
上电命令→配置寄存器写入/回读验证→Init 命令启动测量→中断驱动的连续测量(默认 MAX_MEASUREMENTS 次)→结果存入 Block RAM→按键触发 UART 批量传输到上位机→Python 解析数据并计算 Jitter
核心特性
- 批量测量模式: 连续采集
MAX_MEASUREMENTS次(默认 10000)后自动停止 - Block RAM 存储: 48 位×10000 条测量数据,使用 Vivado Block RAM 推断
- UART 批量传输:
BTN[1]按键触发,115200 baud,8 字节数据包格式 - 电平触发中断: 支持 AS6501 中断始终为低电平的模式(直接再次读取)
- Python Jitter 分析: 解析 UART 数据→计算时钟周期/TIE→生成 6 子图分析报告
硬件平台
- FPGA 芯片: XC7A35T-2FGG484I (Artix-7 系列)
- 时钟频率: 50MHz (引脚 Y18)
- 接口:
- SPI 接口 (12.5MHz 时钟频率)
- SCLK: E16
- MOSI: D14
- MISO: E13
- CS: F13
- AS6501 中断信号 (低电平有效)
INT_N: C13- REFCLK: A13 (Output 10Mhz)
- UART 接口 (115200 baud, 8N1)
- TX: G16
- RX: G15
- 4 个 LED: F19, E21, D20, C20 (共阳极,低电平点亮)
- 4 个按键: M13, K14, K13, L13 (低电平有效,按下时为低电平)
- 1 个复位按键: F20 (低电平有效)
- SPI 接口 (12.5MHz 时钟频率)
- IO 电压: 3.3V
- BRAM 预估: ~15-20 / 50 Block RAMs (用于 10000×48 位结果存储)
SPI 通信参数
- 频率: 12.5MHz
- 模式: CPOL=0, CPHA=1 (Mode 1)
- 数据传输: MSB 先行
- 时序要求: CS 拉高前,需要距离最后一个 SCLK 下降沿半个周期的时间
- AS6501 协议格式:
- 单字节命令:
`0x30`= Power ON 命令`0x18`= Init 命令
- 写配置寄存器:
[0x80 + 地址][数据](2 字节) - 读结果寄存器:
[0x60 + 地址]←[数据](1 字节发送,1 字节接收)
- 单字节命令:

