产品设计原理:在小尺寸DSP上实 2D条形码解码
L2/L3 和 L1 存储器,(b)仅有 L1 存储器。
采用 OmniVision CMOS VGA 传感器[3],我们逐行获得像素数据和控制信号、HREF(水平基准输出)、VSYNC(垂直同步输出)和 PCLK(像素时钟输出)。PPI-DMA 通道以 27 MHz 时钟速率将像素读入 L2 存储器。在这种情况下,DMA 设置很简单,因为我们在单次扫描中读取整个图像。
我们基本上遵循上面图 3 所示的流程图来从数据矩阵式条形码模块中提取数据位。如果在扫描的图像中存在任何方向,我们能够纠正方向和偏差,因为我们在 L2 存储器中有全部图像。
现在,我们假设图像被正确扫描,没有任何方向和偏差。首先,我们将数据矩阵式条形码定位图形的顶部几行和右边几列从 L2 移入 L1 存储器。在测量定位图形中模块的平均高度和宽度后,我们为定位图形所有顶部和右边模块的中点做标记,将中点像素位置的 x 和 y 坐标值存入存储器,留作以后使用。无 L2 或 L3 存储器无 L2/L3 存储器时,我们直接将图像读入 L1 存储器。由于 L1 存储器空间有限,我们一次
直接读取整个图像到 L1 存储器中。如上图 4(b)所示。
在这种情况下,进行条形码解码时我们要多次扫描图像。使用 PPI 延迟和 PPI 计数寄存器,定位图形模块像素的顶部几行和右边几列在一次扫描中被读入 L1 存储器。在这种情况下需要更多地 DMA 编程,因为我们需要从扫描器输出将所选的图像像素通过PPI-DMA 通道读入 L1 存储器。我们找到定位图形模块的大小及其中点位置坐标,并将其存储起来为将来使用。
在图像有细微方向或偏离时,我们读取多行像素来纠正方向或偏差。这里,我们逐行进行图像处理,因为我们没有完整的图像。从数据矩阵式条形码中提取数据位我们遵循下半部分流程图(如之前图 3 所示),从数据矩阵式条形码黑色和白色模块中提取位信息。
这里,我们假设数据矩阵包含有黑色和白色模块组成的单一数据区域。我们知道,有了定位图形模块的中点位置坐标,我们能很容易地获得所有模块中心点作为相交叉的水平线(与左侧定位图形垂直)。
它也通过定位图形右侧模块的中点位置和垂直线(与定位图形下边垂直并通过定位图形的上边模块的中点位置)。我们不能画出所有这些线来标识交叉点,因为我们在 L1 存储器中没有完整的图像。
然而,我们可以通过一次扫描一行的方式来获得交叉点(使用定位图形右侧模块中点的 y坐标作为行索引),将当前行列索引与定位图形上边模块中点 x 坐标进行比较。
如果两者相同,那么就是交叉点,否则我们继续扫描这一行。采用这一过程,我们扫描模块的交叉点,并找到该位置像素的值。
如果像素值大于 128(即浅色),我们将该位解码为 0,或者如果像素值小于 128,我们将该位解码为 1。采用同样的方式,我们能提取数据矩阵式条形码数据区域的所有位。
对于具有 L2 存储器的处理器,我们将与定位图形右侧模块中点 y 坐标对应的像素行从 L2移入 L1 存储器。当我们正在处理当前像素行时,使用 DMA 来移动下一像素行。但是,在使用无 L2 存储器的处理器时,我们必须进行实时数据提取。此时,PPI-DMA 将下一行数据填入 L1 存储器,我们必须完成对当前行的处理(进行基本的数据位提取)。
2D 解交织
据矩阵式条形码使用 2D 交织的数据位。从数据区域模块中提取数据位后,我们执行解交织来获得纠错码字的数据位。关于 2D 数据位交织的详细信息,请参见参考文献[2]。
我们用预计算查找表来进行解交织。由于数据矩阵式条形码支持不同尺寸的数据区域,因此解交错查找表的大小和表单元也不同。不可能在小尺寸处理器中保存所有尺寸的查找表。然而,如果在预先给定的应用中数据矩阵大小是已知的,我们只需要存储特定解交织查找表。解交织后,数据位按字节格式形成码字,输入 RS 解码器。
条形码纠错
新兴的 ECC-200 型数据矩阵式条形码使用 RS (N, K)码来纠正解交织位的错误和遗漏。RS (N, K)码可以纠正最多(N-K)/2 个错误或者最多(N-K)个遗漏(如果不存在错误)。在这个应用中使用的 Galois 域是 GF(28)。对于不同数据区域大小,数据矩阵式条形码使用不同的 RS 码字长度。例如,14x14 大小的数据区域条形码使用 RS(24, 12)码来纠错,16x16 大小的数据区域条形码使用 RS(32, 18)码。RS 解码器的复杂度取决于数据区域的大小。随着 RS 码字长度的增加,存储器需要存储的所有 RS 解码工作缓冲区也要增加。
为了高效地实施 RS 解码器,我们使用查找表来进行 Galois 域计算。对所有 RS 码字长度进行解码时使用相同的 Galoi
- 日立公司采用ADI的高性能Blackfin处理复杂算法及繁重I/O负载(01-16)
- Blackfin助您无线IP视频监控的应用(06-24)
- 基于Blackfin DSP的液晶接口设计(01-04)
- 基于ADSP-BF561的H.264视频编码器的实现(01-10)
- 基于ADSP-BF561处理器的视频编码器平台(01-16)
- ADI Blackfin?处理器架构概述 (07-12)