善用嵌入式处理器元件 实现低成本监控应用
- 陈南宗
视讯分析技术,一向是产线自动控制/检测、视讯监控、医学影像应用...等应用现场经常出现的技术,因为以机器视觉来取代人眼,不但可以更精确发现细微差异,设备主动判断差异也可避免人力造成的倦怠与失误,对于需要实时、长时间监看的应用环境更是最佳方案,而建构机器视觉监控应用也可用嵌入式元件达到设计目标...
视讯监控系统,在相关机器视觉技术持续改善下,目前已全面进入高画质时代,但对于需要利用机器视觉进行监控、筛选状态的应用来说,高画质影像虽在机器视觉可判断的差异处显得更加细致,但记录影像的数据量可说是呈倍数成长,对于设备的运算处理能力,是一大设计考验。
面对这麽庞大的影像数据流量,还要同步、实时进行视讯分析/比对,自然对于硬件架构设计来说并不容易达成,即便要办到,想透过通用处理器来进行实时分析,可能要针对通用处理器的效能部分持续强化,但这对工业电脑应用而言,并不是较佳的解决方案,因为工业电脑应用要求的是稳定运行、更高的环境耐受能力,但核心应用的通用处理器若持续追求性能规格升级,也代表成本的提升,处理器可能造成的功耗、高效能可能衍生的设备高度散热需求,都会影响设备本身的运行稳定性,与工业电脑的设计核心目标背道而驰。
而因应机器视觉必备的影像主动监控、比对应用,多数的产品设计会采取避免造成一般通用型处理器运行负荷的设计形式,将影像视觉处理的工作分散到专用处理器甚至是FPGA(Field-programmable gate array)的整合ASIC设计,来分散核心处理器的运算负担,让核心处理器可以用较低规格就能达到稳定运行要求,而同时经由专用芯片的分工将繁复运行工作转专用功能设计来实现,一方面此方案可以达到分散运算负荷目的,另一方面还兼具成本优势,让设备成本得以降低。
但这类嵌入式系统的设计挑战,其实是须能准确预估相关应用服务的硬件性能与数据处理状况,整体系统效能可否因应作业目标并符合应用水准,以避免当系统碰到突发状况需触发相关提示程序时,却被处理程序或是系统运行效能所延误。确定设备效能,一方面要考量实际应用需求,同时还要注意突发状况必须预留的系统缓冲空间。
虽说这种分散运算负荷的作法,将设备的通用运算集中在核心处理器,而将负载较大之影像识别、分析演算项目,转移至嵌入式系统进行处理,可达到关键运算分流处理的优势,但实际在进行设备开发时,对嵌入式设计系统的运算能量需求规划,在初期开案时因为参考数据偏少,以至于难以评估影像分析嵌入式系统的硬件与运算能力需求,规格上的不确定性,将造成开发端无法评估设计范围。
开发初期若不进行系统能量评估,其实也可以朝另一个开发方向着手,例如,在建构嵌入式系统时,采用具备高度扩充性的设计架构,只要子系统具扩充性,在整个分析系统出现效能瓶颈时,即可以透过扩充设计来提升系统运行效能,例如嵌入式系统可运用现场可编程闸阵列(FPGA),元件架构本身内部建置Control Plane与Data Plane,满足整体运行性能与功能扩充的设计要求。
对开发者而言,可以利用对称或非对称多处理器方案,来达到性能的扩充。例如,在应用如系统架构管理性的运算任务、用户操作界面呈现的运算任务,将任务分别拆离交付给单个或多个运算核心,提高运行效率。其中Data Plane即为数据在系统中传递型态,例如,影音视讯的串流数据处理,开发人员可以善用多管线(Pipeline)的技术方案,来强化数据传输效能,至于在Control Plane方面可进行的处理,例如高速信号的处理、数据封包的处理等。
本文讨论的HD视讯监控、动态侦测应用,其中关键就是影像分析识别的问题,这可将串流视讯实时分拆至Control Plane与Data Plane同步进行分析处理,有效强化整体运算效能。若视讯串流画面分辨率达720p,影像画面的更新频率达60Hz,需要超过200MBit/s的处理速率,若采用高效平行处理的元件来建构系统,以FPGA专责处理视讯数据,再由FPGA内部分派处理器来执行管线管理,或运行嵌入式系统,透过硬/软混合的影像分析设计架构,即可实现高效能、低成本的影像数据处理解决方案。相同的,设计方案也可以导入特定的应用集成电路ASIC来建置,但实际上,为求高经济效益、高扩展性等,采用FPGA是相对较经济的作法。
在以前,系统设计人员多半透过外部独立处理器来控制系统,但随着处理时脉增快、数据量增多,透过外部控制很容易出现设计瓶颈,而FPGA目前大多已整合多项控制功能处理器,开发人员不用再找独立处理器方案来完备系统架构,而可就近利用现有方案来进行功能整合,不但可简化模块设计与线路控制,数据传递、处理与控制可在FPGA内完成绝大部分的工作项目,让内部数据的传递效能不会因控制需求而减缓,同时亦可减少芯片接脚数量。
采行FPGA的另一个好处是,芯片本身的接脚数量减少了,内部的处理延迟时间相对缩短,这代表系统可以释出更多处理器的可用周期,系统运算核心更有余裕去处理外部控制指令,因为在这类系统设计中,核心处理系统多半扮演对外沟通、传输、联系的角色,而当设备的负载明显被纾解,自然可应付一般性的设备运行作业,也会有更多空间处理临时或紧急任务,让系统的反应速度提升。