You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从PC向ZedBoard的FPGA设计发送串口数据并验证UART接收功能

基于pySerial实现PC与ZedBoard FPGA UART通信实测方案

1. 前期硬件与设计校验

  • 确认你的UART接收设计的引脚约束正确:仿真用到的UART_RX信号必须绑定到ZedBoard板载USB-UART对应引脚,或外接USB转TTL模块的RX引脚,注意电平匹配,ZedBoard IO默认是3.3V标准
  • 给ZedBoard上电,下载FPGA比特流,确认PC端能识别到对应的串口设备:Windows系统在设备管理器的端口列表查看COM号,Linux/macOS在/dev目录下查找ttyUSB*或tty.usbserial-*格式的设备,记下端口号
  • 确认你的UART设计参数:波特率、数据位长度、停止位、奇偶校验规则,后续pySerial配置必须和这些参数完全一致,否则会出现接收乱码或无响应问题

2. pySerial环境安装

通过pip直接安装官方包即可:
pip install pyserial

3. 测试发送代码示例

以下基础代码可直接使用,替换对应参数为你的实际配置即可:

import serial
import time

# 串口参数必须和你的FPGA UART设计完全匹配
ser = serial.Serial(
    port='COM3',  # 替换为你实际的串口端口号
    baudrate=115200,  # 替换为你的设计指定波特率
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)

if ser.is_open:
    print("串口打开成功")
    # 发送测试数据:如果要发送仿真时的二进制data_in_sim序列,直接转为bytes对象即可
    test_data = b"Test UART data"  # 替换为你需要发送的目标数据
    ser.write(test_data)
    print(f"已发送数据:{test_data}")
    
    # 若需要接收FPGA返回数据可添加以下逻辑
    time.sleep(0.1)
    recv_data = ser.read(ser.in_waiting)
    if recv_data:
        print(f"收到FPGA返回数据:{recv_data}")
    
    ser.close()
else:
    print("串口打开失败,请检查端口是否被占用、硬件连接是否正常")

4. 异常排查要点

  • 若FPGA无接收响应,优先用示波器抓UART_RX引脚波形,确认PC端有符合波特率要求的信号输出
  • 检查FPGA端波特率分频系数计算是否和实机使用的时钟频率匹配,仿真验证通过不代表实机时钟配置没有偏差
  • 发送二进制序列时直接传入bytes类型对象即可,和仿真激励的逻辑完全一致

内容的提问来源于stack exchange,提问作者abahadoran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:27:02