图像采集是安全和监控视频链中最关键的部分,这是因为对于从视频流提取有效信息的图像信号处理能力是与获取的图像质量密切相关的,或许看似深奥,其实本质上是传感器质量和传感器输出处理质量的组合。安全监控系统的发展趋势是图像处理功能向网络边缘迁移-即移到摄像机里面, 靠近传感器。
灵活性和效率是产品开发周期中的最高目标。本文探讨了在FPGA内针对CMOS图像传感器的微控制器和信号处理单元的整合。就其性质而言,FPGA和微控制器相当灵活,但问题是使用这些器件是否会形成一个有效率的设计?
一般而言,一个简单的规则是用FPGA取代标准的微控制器不能够产生一个节约成本的替代方案。只有不能通过在微控制器内集成外设来满足设计的边界条件情况下,FPGA的解决方案才变得更加具有吸引力,例如PWM通道的数量,计数器/定时器或I/O端口的数量。
同样,DSP算法转移至FPGA可显著提升数据吞吐量和控制功能的执行速度。然而,可能会有一些灵活性方面的损失。不过,通常DSP开发人员可以利用FPGA的优势,因为这些功能可以用VHDL或Verilog HDL来描述并直接用硬件实现。即使一些模块是预制的IP模块,这个任务仍然是集成这些模块到一个完整的设计之中。
Helion是一家致力于利用FPGA和DSP从事图像信号处理领域开发的公司。他们的核心知识在于驱动和接口至CMOS图像传感器,动态扩展和进行信号预处理到TFT的领域。使用Helion系统意味着决定图像质量的很多功能可以直接在摄像机中实现。根据系统要求,这些解决方案基于DSP,FPGA或两者兼而有之。
Helion已经选择了莱迪思半导体公司的低成本系列FPGA技术。LatticeXP2和MachXO是非易失器件,单芯片解决方案特别适用于紧凑的摄像机设计。由于LatticeXP2包括RAM块和DSP模块,可实现最佳图像处理计算。如果只需要一个简单的传感器和控制功能,MachXO是最节省成本的解决方案。莱迪思还有SRAM FPGA系列,LatticeECP2、ECP2M和ECP3。这些器件中还包括DSP块,以及1.5MBit至 5.3MBit内部存储器的“M”类型。
Helion的大多数项目也使用了32位微控制器-LatticeMico32,它是免费提供的,采用开发环境为开放源代码许可证模式。这种软核的主要特点是使关键控制路径的时间更少,通过FPGA的数据是直接通过独立的布线资源。
用Mico System-Builder (MSB)软件构建该项目的特殊Mico32配置,装配各种可用元件,包括用户的特定IP模块。对于这些IP模块和用户特殊的外设的互连,Mico32 使用按照Wishbone规范操作的总线接口。 MSB自动互连设计的内部元件,当所需的IP块都在MSB内时,无需编写VHDL或Verilog HDL就能完成FPGA设计。
图1 Mico System-Builder屏幕
一个简单的例子可以说明基于Mico32方法的优势。对于图片位置的控制,通过I2C总线用外部微处理器给FPGA中的显示控制器规定路线。总共有256个控制和参数寄存器。为了避免电视干扰出现,通过I2C写的参数必须在消隐期间处理。数据集输入一致且可以被激活时,该处理器释放控制寄存器。进一步通过寄存器,处理器获得当前显示控制器的行数。
这些功能可以在FPGA设计内直接解决。针对 IC2寄存器组的监控,设计人员需要IC2从器件(slave)、I/O端口、状态机,并复制这些参数,针对访问IC2从器件(slave)的内部存储器接口,提供仲裁。对于用VHDL或VerilogHDL开发FPGA所花费的时间相对比较多,代码的可重用性受限于HDL编码控制器。
另一种Helion Mico32解决方案利用已经由莱迪思MSB提供的元件:I2C从器件(slave)、GPIO、存储器、DMA和用户特殊的元件,诸如端口监控到启动存储器传输。MSB提供了针对 “共享总线”或” Slave Side-Arbitration “配置器件的功能,这意味着以正确的形式自动产生仲裁。针对在MSB中组合这些元件,使用这种方法在几分钟之内就可产生FPGA代码。 于是针对Mico32,可以编写C代码,用所提供的调试手段进行检查。所有的元件都很容易重复使用。
用这个例子,更多为数据路径而准备的IP模块可以组合在MSB中,例如,色彩流水线或图像传感器接口。对于图像传输,Slave Side-Arbitration是最佳的,因为MSB产生自己的Wishbone总线。用这种方法,数据流不是限于通过微控制器和仲裁逻辑,在一个实体中所有元件均是自动连接的,即对片上系统设计的理想情况。MSB中更复杂的设计说明了这个观点,系统的描述大大超过在第一个例子中用VHDL或VerilogHDL的要求。
图2 Mico32调试屏幕
基于MSB提供的简捷和节省时间的处理方式, Helion整合了图像传感器驱动电路的大部分和以其自己的元件形式的数据预处理,这些元件可作为IP核。 并以模块化的方式和MSB中验证的功能设想和实现系统。图3为一个实例的框图。
图3系统实例
除了MSB,对于整个系统开发环境,还需要莱迪思的ispLEVER FPGA设计软件。由MSB产生的Verilog HDL代码用ispLEVER进行综合和实现。该工具中包含了Reveal逻辑分析仪,调试μC的代码后,用户选择对数据进行故障分析或实时控制路径进行检查。Reveal提供了大量的触发和跟踪选项。完整的图像处理不是完全逼真的,对μC的源代码级调试不能包括FPGA中的所有事件或数据序列。然而使用触发信号和逻辑组合的方式, Reveal可以实时记录时序并将结果传送至主机。例如,如果设计人员考虑设置Mico32位的端口位作为Reveal的触发,并将此与控制的特定条件和数据信号相结合,就可能用μC软件很快地切换逻辑分析仪,这也适用于调试器。
总结
MICO System Builder能够分担通常所做的工作。FPGA设计人员指定自己的IP模块并集成这些组元件至MSB。该软件开发者将项目中的元件连接在一起,针对Mico32开发C/C++程序。通过灵巧的划分与分配数据流到自己的总线结构,实现高的数据吞吐量。在开发阶段除了灵活性之外,微控制器带来了FPGA高效率的优点。另一方面在许多情况下,控制的效率和预处理允许跟随信号链后进一步进行DSP处理,或选择更小更节省成本的DSP。