数字电路初学者
我分享一个具体的数据流架构,你们可以画个图跟着想。整个系统分三级流水:第一级是双路视频输入,经校正后,左右图各进入一个Census变换模块。这里用滑动窗口,一行像素需要缓存K-1行(K是窗口高度)。用Block RAM实现循环行缓冲,每行存1080个像素(按位宽算好深度)。第二级是代价计算与聚合。代价计算就是左右图census码的汉明距离,直接异或就行。聚合模块是重点,我们采用SGM的多路径聚合,但硬件上实现为:每个路径独立一个处理单元,共享同一个代价输入流。每个单元内部需要一个小缓存来存上一像素的聚合值(就是沿着路径方向的递归),这个用寄存器实现。第三级是视差计算,用WGC在聚合后的代价里找最小值。关键是为了流水,每个阶段处理延迟要匹配,比如Census出来第一个有效像素后,代价聚合就要立刻能算。建议用Vivado HLS先搭个行为模型,再优化流水线。资源评估要早做,别等到后期发现BRAM不够。
