单片机初学者
我们去年刚用FPGA做完这个,延迟压到8ms以内。核心就一句话:别让数据在片外DDR里来回倒腾。很多新手喜欢把整帧存进DDR再读出来处理,光存取就超10ms了。我们的做法是流水线直接处理流式数据。摄像头数据(比如OV7725的RGB565)进来,先用FIFO跨时钟域,然后立刻进色彩转换模块(转灰度或特定颜色阈值),这个模块和后面的二值化模块直接级联,中间只用行缓冲(Line Buffer),不用帧缓冲。行缓冲用Block RAM实现,深度就几行,延迟只有几微秒。边缘检测和中线拟合可以并行做:当二值化数据流出一部分时,边缘检测模块就开始工作;同时,中线拟合模块可以基于已检测的边缘点实时计算(比如用最小二乘法迭代)。关键是把算法拆成小块,每个模块处理几个像素就往后传,像流水线一样。注意控制每个模块的处理时钟周期数,保证吞吐量匹配摄像头像素时钟。资源方面,一个Artix-7 35T足够,重点优化Block RAM的使用,避免用太多逻辑资源做复杂运算。
