Skip to content

About

Anlogic EG4S20 pure-hardware visual servoing and raster-scan closed-loop sorting system

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Anlogic FPGA XY Board · 纯硬件视觉伺服与光栅扫描闭环分拣

FPGA Tool Language License

一套运行在安路 EG4S20BG256 上的纯硬件视觉伺服与 XY 光栅扫描闭环分拣系统。OV5640 图像经 FPGA 片内完成采集、缓存、灰度/二值化/Sobel、连通域目标提取、任务调度与步进电机脉冲输出;HDMI 本地显示,千兆 UDP 把实时画面回传上位机,串口负责指令与状态交互。

本项目将原始 Anlogic TD 工程整理为可直接打开、可复现构建的开源仓库,保留原工程目录结构,补充了架构、硬件引脚、构建步骤、通信协议和上位机说明。

系统架构

主要特性

  • 纯硬件视觉链路:OV5640 DVP 8-bit → SDRAM 乒乓缓存 → RGB/灰度 → 3×3 中值/Sobel/二值化 → 行扫描连通域,最多同时维护 4 个目标。
  • 多目标光栅扫描:动态中位数选择下一目标,蛇形遍历所有工件,支持 PASS/FAIL 缺陷判定。
  • 两种运动模式:多目标定位/切割(Job FSM)与单目标动态追踪(Track FSM),通过串口指令互斥切换。
  • 双显示/传输通路:HDMI 本地实时显示;UDP 旁路把画面打包回传 PC,不额外占用 SDRAM 带宽。
  • 多时钟域设计:50 MHz 控制域、66.67 MHz 视频域、125 MHz 网络域;Toggle 三拍同步、异步 FIFO Gray 指针、异步复位同步释放。
  • 完整上位机:Python + Tkinter + OpenCV,UDP 视频显示、串口指令、PASS/FAIL 日志。

仓库结构

.
├─ src/                      # RTL 源码
│  ├─ top.v                  # 顶层:采集、缓存、视觉、任务、UDP、HDMI
│  ├─ simple_target_detector.v
│  ├─ hdmi_cam_crtl.v        # 图像模式与预处理
│  ├─ job_dispatcher.v       # 多目标任务状态机
│  ├─ track_dispatcher.v     # 动态追踪
│  ├─ step_motor_axis.v      # 步进电机脉冲/梯形加减速
│  ├─ ov5640/                # 摄像头配置与 DVP 采集
│  ├─ sdram_r/               # SDRAM 控制器
│  ├─ hdmi/                  # HDMI/VGA 显示与测试图案
│  └─ sdram/enc_file/        # 厂商加密 IP(仅用于构建)
├─ al_ip/                    # Anlogic IP Generator 生成文件(PLL/FIFO)
├─ docs/                     # 架构、构建、硬件、协议与配图
├─ host/                     # Python 上位机与依赖
├─ release/pic_sdram.bit     # 预构建比特流(可选)
├─ pic_sdram.al              # Anlogic TD 工程文件
├─ top.adc                   # 引脚约束
├─ top.sdc                   # 时序约束
├─ pll_gen.v / ODDR.v        # 时钟与 DDR 输出原语
└─ THIRD_PARTY_NOTICES.md    # 第三方/厂商 IP 说明

工程根目录保持 TD 原结构,直接打开 pic_sdram.al 即可;不要把 src/ 或 al_ip/ 移到其它目录,否则工程文件中的相对路径会失效。

硬件与连接

项目 配置
FPGA Anlogic EG4S20BG256
输入时钟 50 MHz
图像传感器 OV5640,DVP 8-bit,RGB565
本地显示 HDMI(TMDS),1024×768
网络 RGMII 千兆 PHY
执行机构 XY 两轴步进电机,PUL/DIR
人机接口 UART 115200、按键、蜂鸣器、激光使能
上位机 PC 固定 IP 192.168.240.2,UDP 监听 6003

完整引脚表见 docs/HARDWARE.md。top.adc 是引脚的唯一权威来源。

快速开始

1. 打开 FPGA 工程

  1. 安装 Anlogic TD 6.2.168116(或兼容版本)。
  2. 打开根目录 pic_sdram.al。
  3. 确认器件为 EG4S20BG256,综合、布局布线、生成比特流。
  4. 通过 JTAG 下载,或直接使用 release/pic_sdram.bit 验证。

更完整的工具版本、IP 重建与常见问题见 docs/BUILD.md。

2. 运行上位机

cd host
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python host.py

默认串口为 COM17、波特率 115200;如果实际串口号不同,请修改 host/host.py 中的 SERIAL_PORT。上位机默认按 640×480 RGB888 解析 UDP 视频,若修改 FPGA 输出分辨率,需要同步调整 IMG_WIDTH/IMG_HEIGHT。

3. 网络配置

  • PC:192.168.240.2 / 24
  • FPGA:192.168.240.1
  • 上位机监听:6003/UDP
  • FPGA 目标端口:6003(16'h1773)

串口指令

指令 功能 说明
123 多目标定位 进入 Job FSM,蛇形遍历目标
456 切割准备/定位 锁存坐标,进入切割流程
789 执行切割 沿闭合矩形轨迹输出激光使能
012 动态追踪 单目标平滑跟随,0 退出
0 软停 停止当前任务,进入等待

指令为 ASCII 字符串,无回车换行;详细状态机与回传说明见 docs/PROTOCOL.md。

文档

关键图

多时钟域与 CDC 视觉流水线与 UDP 旁路
任务状态机

许可证

本仓库中由项目作者编写的 RTL、Python 上位机、文档与图片采用 MIT License,见 LICENSE。

al_ip/、src/hdmi/enc_file/、src/sdram/enc_file/、TEMAC_CORE*.v 等厂商生成/加密 IP 的版权归原厂商所有,不在 MIT 授权范围内,仅为构建复现而保留。使用、修改或再分发前请遵守安路及相关 IP 提供方的许可条款。详见 THIRD_PARTY_NOTICES.md。

致谢

  • 安路科技 EG4 系列 FPGA 与 TD 工具链
  • OV5640 DVP 采集、SDRAM 控制器、HDMI TMDS 等参考设计的原作者
  • 所有为本项目提供测试、调试与建议的同学和老师

本项目为个人/团队作品,按“现状”提供,不保证在所有板卡、工具版本和外围硬件上直接可用。上电前请确认 IO 电平、电机电源与激光安全互锁。

About

Anlogic EG4S20 pure-hardware visual servoing and raster-scan closed-loop sorting system

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages