时间:2026-09-20 来源:FPGA_UCY 关于我们 0
![]()
最近几年,“FPGA+工业视觉”成了一个高频词。我身边不少做硬件的朋友都在问:这东西到底怎么入门?从哪开始?
这篇文章,我就带你走一遍完整的流程——从硬件选型到代码实现,从图像采集到边缘检测,把一个工业视觉检测系统拆开了讲。 不堆概念,只讲实操。
![]()
一、为什么用FPGA做工业视觉?
先回答一个最根本的问题:CPU、GPU都能做图像处理,为什么非得用FPGA?
工业产线的检测需求,和消费电子完全不同。
一条产线每秒流过几十个产品,每个产品要做尺寸测量、表面划痕识别、字符校验等多达20项视觉检查, 系统必须在50ms内完成所有分析并输出结果 。如果用嵌入式ARM平台,算法复杂度稍高就会卡顿;用GPU虽然算力强,但散热和功耗在工业现场往往是致命问题。
FPGA的优势在于 硬件并行 。
传统CPU是串行处理——一条指令一条指令地跑。而FPGA可以把图像处理流水线直接映射到硬件上,多个处理阶段同时进行。实测数据显示,在720P@30fps的视频流处理中,传统CPU单帧延迟普遍在50ms以上, 而FPGA可以把延迟压缩到5ms以内 。
这就是工业现场要的—— 低延迟、确定性、高可靠 。
二、硬件选型:开发板、摄像头、接口 2.1 FPGA开发板怎么选?
入门阶段,不必追求顶配。以下几个指标是选型的核心:
![]()
具体到型号,有几个方向可以考虑:
AMD/Xilinx平台 :Artix系列是入门经典。Artix UltraScale+ 15P搭配2GB DDR4,支持10/100以太网、HDMI和FMC扩展接口,能连接多个MIPI摄像头。XC7A200T也是常见选择。
国产FPGA平台 :这几年国产FPGA进步很快。安路SF1系列(SF1S60G,60K LUT)、紫光同创Logos-2系列(PG2L100H,100K LUT)都是不错的选择,集成了MIPI D-PHY硬核。配套的EDA工具(安路TD 6.2、紫光同创PDS 2025.1)也日趋成熟。
入门级 :如果预算有限,Tang Nano 9K这类低成本开发板也能跑通OV7670摄像头采集和LCD显示,适合先跑通流程再升级。
2.2 摄像头怎么选?
工业视觉的摄像头选型,有几个关键点:
分辨率与帧率 :130万像素(1280x1024)在全分辨率下达到60fps以上,平衡了清晰度和速度
快门类型 :工业检测必须选 全局快门 ,避免拍摄运动物体时的“果冻效应”
输出接口 :MIPI CSI-2是目前主流,支持每通道2.5-3.2Gb/s速率;并行接口(DVP)调试更直观,适合入门
常用传感器型号:OV5640(性价比高,资料多)、IMX264(索尼,工业级)、AR0234(安森美)。
2.3 接口方案
图像采集通过FMC接口连接摄像头模块,配置为720P@30fps或1080P@60fps输出。 建议采用双缓冲机制 消除采集与处理的时间冲突。
视频输出用HDMI接口连接工业显示器,需要实现RGB888到TMDS编码的转换,可以直接调用厂商提供的IP核。
三、系统架构:从采集到输出
一个完整的FPGA工业视觉检测系统,通常分为三个层次:
数据层 ——图像采集模块通过I2C配置摄像头寄存器(曝光时间、增益、输出格式),采用DMA传输模式将图像数据直接写入DDR,减少CPU干预。数据缓存采用环形缓冲区,分三个区域:采集区存原始图像、处理区存预处理后的图像、结果区存检测结果。
算法层 ——核心处理流水线。以边缘检测为例,流程是:灰度化 → 中值滤波(去噪)→ Sobel算子(边缘提取)→ 阈值化 → 结果输出。所有模块用硬件并行实现,流水线全速运转。
交互层 ——HDMI实时显示处理结果,GPIO输出控制信号(机械臂、报警装置),同时通过以太网或USB 3.0将数据上传至上位机。
整体数据流是这样的:摄像头采集 → FPGA接收(MIPI/并行)→ 图像预处理(去马赛克/灰度化)→ 算法处理(边缘检测/缺陷识别)→ 帧缓存(DDR双缓冲)→ 两路输出(HDMI显示 + 以太网/USB上传)。
四、FPGA设计实战:以边缘检测为例
理论说完了,来看代码。 边缘检测是工业视觉最基础的算法 ,也是入门FPGA图像处理的“Hello World”。
4.1 灰度化
摄像头输出的通常是RGB格式,而边缘检测只需要亮度信息。灰度化的硬件实现很简单:
verilog
// RGB888 → 灰度(近似公式:Gray = 0.299R + 0.587G + 0.114B)// 硬件中用移位和加法近似 assign gray = ( pixel_in