基于ARM和CPLD的无线内窥系统设计

发布者:岭南布衣最新更新时间:2016-11-12 来源: ofweek关键字:ARM  CPLD  无线内窥系统 手机看文章 扫描二维码
随时随地手机看文章
  当前,医用无线内窥镜已有产品问世。以色列GI公司早在2001年5月即推出其M2A无线内窥镜产品,并获得美国FDA认证。GI公司生产的胶囊型内窥镜长为26 mm,直径为11mm,重3.5g;采用微功耗CMOS图像传感器,可观察视角为14O°,可看清0.lmm左右的物体,采集速度为2帧/s。日本RF公司也于2001年底研制出NORIKA3胶囊型内窥镜系统。该产品采用超小型CCD摄像头,含有8个镜头,可观察视角为360°,图像帧率可达30帧/s。“NORIKA3”利用位于药丸内的转子线圈与产生磁场的体外定子线圈形成马达结构来实现药丸系统姿态控制。RF公司在其网站上发布了产品的设计模型。此外,Gong和Park等人电独立发表论文,描述了各自关于无线内窥镜的设计。

  目前国内尚无独立制造该产品的能力,而国外的产品价格昂贵,因此,研发具有自主知识产权的无线内窥镜产品具有重要意义。本文介绍无线内窥系统的系统结构,图像压缩标准JPEG-LS在ARM7平台上的实现,以及实现过程中所采用的调试方法、优化方法。

  1 系统组成与工作原理

  1.1 内窥系统组成结构

  如图1所示,无线内窥镜系统主要由主机和从机(无线内窥镜)组成。从机由摄像头采集原始图像,经过压缩处理,通过无线方式把压缩后的图像数据传输给主机;主机通过USB连接蓝牙适配器接收压缩图像,并转发给PC上的管理软件,管理软件将图像解压缩并显示出来。

基于ARM和CPLD的无线内窥系统设计

图1 内窥系统结构框图

  1.2 无线内窥镜组成结构

  如图2所示,无线内窥镜采用CPLD芯片EPM7256-144,实现30万像素CMOS摄像头OV7660的图像采集控制,以及数据和地址总线的切换。利用Atmel公司的ARM7芯片AT91R40008,实现JPEG-LS无损图像压缩与蓝牙无线数据传输,实现温度、压力采集以及可控光源和系统控制。CPLD和ARM7之间的图像数据交换通过8位数据总线实现,ARM7和CPLD之间的握手控制则通过I/O口线实现。由于图像数据量较大,按640×480分辨率、8位图像的格式计算达几十万字节,故本系统外部扩展了2片上作在乒乓方式的512KB的SRAM作数据缓存。

基于ARM和CPLD的无线内窥系统设计

图2 无线内窥镜硬件结构框图
 

  1.3 系统工作原理

  内窥系统可以实现图像的连续采集以及温度、湿度、照明亮度等的控制。其中图像采集是系统的核心,其工作流程如下:

  ①默认情况下,系统工作在休眠状态。

  ②工作人员通过PC管理软件发送命令开始采集图像,软件通过USB接口把命令发送给蓝牙适配器,然后发送给无线内窥镜。

  ③内窥镜接收到图像采集命令后,ARM控制CPLD开始采集图像数据。

  ④CPLD把采集到的一帧图像数据写入一块SRAM中,把ARM的总线切换到该SRAM上,并通知ARM进行压缩;同时CPLD往另一块SRAM中继续采集下一帧图像,便于提高系统的吞吐率。

  ⑤ARM通过蓝牙模块返回响应命令,并返回采集JPEG-LS图像的头信息。

  ⑥PC管理软件发送命令接收下一行压缩图像,ARM压缩该行原始图像,并发送压缩数据;如果出错,可以重新发送。重复本步骤可以获取整帧压缩图像。

  ⑦PC软件对压缩图像解码并显示,并提供其他附加功能,如图像处理、保存等。

  ⑧重复步骤②~⑦,获取下一帧压缩图像。

  由上述流程可以看出,JPEG-LS压缩以及无线信道传输决定整个系统的图像传输速率。无线传输采用蓝牙技术,其标称空中速率为1 Mbps,不易提高;因此,系统设计的核心是JPEG-LS的编码效率。

  2 ARM与摄像头接口设计

  系统采用美国Omni Vision公司(简称为“OV公司”)开发的CMOS彩色图像传感器芯片。该芯片将CMOS光感应核与外围支持电路集成在一起,具有可编程控制与视频模/数混合输出等功能。

  (1)SSCB配置

  为使芯片正常上作,需要通过SCCB总线来完成配置工作。SCCB总线是OV公司定义的一套串行总线标准,与I2C总线类似。配置时,主要是写OV7660的内部寄存器,使芯片输出格式正确的彩色图像数据。OV7660共有100个左右的寄存器可以配置,其数据手册并未提供可用的配置值。系统调试过程中,通过各种测试,测出以下一系列配置数据,可使OV7660输出颜色丰富的图像,如表l所列。

基于ARM和CPLD的无线内窥系统设计

  (2)图像数据访问

  AT91R40008不带摄像头接口,因此系统增加了一块CPLD实现CMOS摄像头的时序,如图3所示。ARM只须访问SRAM就可以访问图像数据。CPLD确保ARM的总线每次都只挂接一块有完整图像的SRAM。

基于ARM和CPLD的无线内窥系统设计

图3 ARM与CPLD接口设计

  3 ARM与蓝牙接口设计

  蓝牙是无线数据和语音传输的开放式标准。它将各种通信设备、计算机及其终端设备、各种数字系统,甚至家用电器,采用无线方式连接起来。为了优化系统设计,我们采用性价比高的CSR BC2实现蓝牙无线串口。CSRBC2是一款高度整合的模块级蓝牙芯片,主要包括:基带控制器、2.4~2.5GHz的数字智能无线电和程序数据存储器。通过该模块,系统可以提供无线标准UART接口,支持多种波特率(如9.6 kbps、19.2 kbps、38.4 kbps、57.6kbps、115.2 1kbps、230.4 kbps、460.8 kbps、92l.6 kbps)。本系统经过测试发现,当速率为460.8 kbps时,蓝牙芯片能够正常工作;而在921.6kbps时,会有很高的误码率。蓝牙模块接口电路如图4所示。

基于ARM和CPLD的无线内窥系统设计

图4 JPEG-LS图像编码

  系统采集的原始图像相关性大、数据量大,需要进行图像压缩。医学图像要求将图像质量放在首位,因此必须采用无损压缩算法。本系统采用静态图像无损压缩技术JPEG-LS,它是目前无损压缩算法中性能较好的一种算法。JPEG-LS是ISO/ITU组织提出的最新的连续静态图像近无损压缩标准。该标准采用LOCO-I(Low Complexity Lossless Compression for Images)核心算法,建立简单的上下文模型,在低复杂度的情况下实现了高压缩率;同时,算法对图像逐行进行压缩,降低了系统对图像缓冲区的要求。

  4.1 JPEG-LS工作原理简介

  如图5所示,JPEG-LS的编码过程主要包括预测、上下文建模和熵编码。核心算法LOCO-I采用邻域非线性预测和Golomb熵编码。

基于ARM和CPLD的无线内窥系统设计

图5 JPEG-LS编码流程

  上下文建模是JPEG-LS编码的基础,使用的建模方法是基于对上下文的认识。上下文首先根据图5中a、b、c、d处像素值决定对x处像素足采用常规模式编码还是采用游程模式编码。当从上下文估计的连续像素在近似无失真编码要求的容限内几乎完全相同时,选择游程模式;否则,选择常规模式。

  常规模式下首先完成预测。预测器对位于a、b、c等3个邻近像素的重建组值Ra、Rb、Rc进行综合,形成x像素的预测值Px,即:

基于ARM和CPLD的无线内窥系统设计

  预测误差是x像索的实际值和预测值的差分。通过一个与上下文有关的项对预测误差进行修正,以补偿预测中的系统偏移。如果采用近无损编码,则要对预测误差进行量化,所允许的最大误差用一个“NEAR”参数表示。对已修正的预测误差进行Golomb编码。Golomb编码相当于几何分布下的Huffman编码。它依赖于上下文,而前面编码的预测误差也是以相同的上下文为基础。

  为进一步提高数据压缩效率,JPEG-LS引入了游程模式。此时编码过程直接跳过预测和误差编码程序:编码器从x处开始对像素值和a处像素重建值相同的一系列连续像素进行计数,即统计游程的长度。当遇到一个具有不同值的像素或当前行的行尾时,游程终止。该游程长度经过一个专门的性能更好、更适用的Golomb编码扩展程序来编码。

  4.2 JPEG-LS的移植问题

  本系统使用HP实验室提供的开源JPEG-LS开发包。完整的JPEG-LS开发包支持多种颜色模型,如多平面压缩、逐行或者逐点等压缩方式。本系统考虑到ARM系统资源的限制,只裁减了其中的逐行单文件压缩方式。原始开发包运行在Linux或者Windows平台上,移植过程最主要的工作包括3点。

  ①裁减不必要的功能,如原始开发包中对多图像编码的支持。

  ②针对系统设计移植后的接口,如本模块移植后,只提供以下几个接口:

  jls_global_init,全局初始化函数,计算查询表等,只需要启动时调用一次;

  jls_image_init,每帧图像开始压缩时都要调用一次的初始化;

  jls_encode_one_line,压缩一行图像。

  ③对原开发包中使用的动态内存分配需要移植,解决的方案有2个:

  开发一个简单的内存管理模块;

  手动分配内存。

  考虑到源码包中使用的动态内存不多,系统采用第2种方案。在移植过程中,建议先在PC上分配好一大块内存,然后,给开发包中需要分配的地方手动分配。在PC上调试通过之后,就可以直接在ARM上面使用了。

  5 调试及优化方法

  5.1调试方法

  嵌入式系统的调试是一个很繁琐而复杂的过程。在调试之前划分好模块,可以大大提高调试效率;另外为了调试,还需要添加一些计划项目之外的调试工具。

  本系统的调试工作分为3个部分。

  (1)蓝牙无线链路层调试

  蓝牙无线链路层的调试可以直接借助PC上很多现有的串口工具来实现。

  (2)CMOS摄像头调试

  CMOS摄像头的调试有两个部分:SCCB配置时序、RGB图像数据时序。

  一般的处理器都不带SCCB接口,因此要用处理器的口线模拟SCCB时序。此时的调试一般都是通过示波器观察模拟的时序,看足否符合芯片手册上的要求。为了验证是否正确,一般可先读一个指定的寄存器(这些寄存器都有出厂默认值);然后写一个数据,读取出来验证是否吻合。

  RGB图像数据时序由CPLD产生,此时的调试需要ARM来配合。本系统在调试时,在PC上编写了一个简单的串口接收程序,ARM把SRAM中的图像数据通过串口发送给该PC,PC上的程序把这些原始的RGB数据插值并显示出来,从而可以得知CPLD的时序是否正确。当然,调试时序时,示波器仍然是必不可少的工具。

  (3)JPEG-LS算法调试

  JPEG-LS算法的调试分为两个步骤:PC上的算法验证和目标板上的调试。

  PC上的算法验证使用VC6.O模拟目标板上的运行环境,测试目标板上的各个功能接口。本部分的验证代码可供下载。

  目标板上调试时,还是要借助串口,把压缩的图像和原始图像通过串口发送至PC。Pc上的JPEG-LS解码程序解码压缩图像,然后与原始图像对比,从而找出算法中的错误。

  5.2 优化方法

  为提高图像传输的帧率,本系统主要采用了2种优化方法。

  (1)硬件优化

  硬件优化主要是在CPLD采集数据时,使用双缓冲,使得连续采集下一帧图像和传输上一帧图像可以并行,从而提高系统的吞吐率。

  (2)软件优化

  软件优化的作用在本系统的调试过程中效果明显;本系统的第一个版本,图像采集速率仅为3 s/帧;通过软件优化后,达到了最终的O.3 s/帧。其优化如下:

  ①循环外移,避免在循环中重复运算;

  ②频繁使用的变量申明为寄存器变量;

  ③把所有的JPEG-LS编码函数代码拷贝到RAM中执行。

  默认情况下,所有的代码都存放在Flash中。ARM运行时,从Flash中读取指令并且执行。众所周知,Flash的访问速度相对RAM而言,相差一个数量级,因此,如果把关键代码放在RAM中,执行速率将会大大提高。而AT9lR40008内部自带512 KB的RAM,足够本系统使用,因此,这个方法可行。

  解决的方法有两个,一是写一个启动程序,在启动时,把系统所有的代码都拷贝到RAM中,这样系统速度会提高。然而,该方法实现起来较麻烦,且如果程序扩展,可能会超过RAM的512 KB限制。因此,本系统采用另外一个简单方法。采用IAR Embedded Workbench开发环境,通过阅读其编译器手册发现,在函数之前添加一个__ramfunc伪指令,那么链接器在生成启动代码时,会将该函数拷贝到RAM中,从而提高运行效率。其使用例子如下:

  ramfunc void encode_oneline(vcrid)

  通过使用该方法,系统的运行效率提高了约l0倍。

  结语

  本系统以ARM为核心,实现了JPEG-LS无损图像压缩算法,并日结合CPLD实现了CMOS摄像头的时序控制。通过蓝牙传输,实现了数字化的无线内窥系统。

  本系统具有良好的扩充性,可以使得系统更加微型化。首先,如果采用CSR公司更新的BC3系列芯片,则将融合ARM核以及蓝牙功能,可以更加减小内窥镜的体积。最重要的是,如果发展自主产权的内窥镜芯片,那么以现有的SOPC技术,可以将ARM核、CPLD逻辑门以及蓝牙通信功能集成在一起,形成无线内窥镜的集成解决方案,从而使其产业化成为可能。

  本系统在实现过程中,完成了一系列的调试工具,积累了调试以及优化经验。我国现有的医疗设备开发技术相对比较落后,在此分享,希望对同类型的产品设计以及芯片生产能有一些参考价值。

关键字:ARM  CPLD  无线内窥系统 引用地址:基于ARM和CPLD的无线内窥系统设计

上一篇:智能电力负荷控制与监测系统设计
下一篇:一种智能家居远程监控系统的解决方案

推荐阅读最新更新时间:2024-03-16 15:20

安谋中国管理团队内网刊发联名信,阐述Allen解职风波
安谋中国管理团队在公司内网刊发联名信,以下是该封联名信的内容。 星辰山海不负韶华 凝芯聚力砥砺前行 大家好,这是安谋中国管理团队的联名信。 作为公司管理团队,我们绝大部分都是与Allen共事十年以上、彼此深入了解的同事,我们对于近期媒体报道中对Allen的莫须有的指控感到非常震惊和气愤。Allen是有着过硬技术背景的专业人士,是产业界有口皆碑的企业领军人物。从2004年加入Arm,到2007年开始领导中国团队,再到今天作为安谋中国合资公司的创始董事长,带领我们大家一起奋斗至今。这十多年来,他为Arm技术和生态在中国的引入和发展、为芯片IP市场需求付出了极大的心血。这样一位在Arm体系任职16年的行业老兵,对产业有着真挚
[物联网]
安谋中国管理团队内网刊发联名信,阐述Allen解职风波
基于DSP与CPLD的多通道数据采集系统的设计
用于实时控制系统的嵌入式系统经常需要对模拟量进行测量,通常的方法是以MCU为主产生采集控制时序控制模数转换器,并通过中断或查询的方式读取转换后的结果。由MCU产生采集控制时序将占用较多的系统软硬件资源。而在一般复杂的多路信号测控系统中,MCU需要进行数据存储,通讯,数据处理等多项工作,如果再需要其频繁地产生模数转换控制器的控制时序,将会影响系统的性能,严重时将会成为系统的瓶颈。本文采用CPLD产生A/D转换器的控制时序,使得CPLD主要实现A/D时序控制的功能,DSP主要实现闭环控制算法的功能。 1 系统总体结构 系统以DSP和CPLD为核心,模拟信号从模拟多路开关CD4067接人,利用CPLD进行使能其输入。使
[嵌入式]
百度实现ARM架构服务器全球首次商用
2013年2月26日,北京讯 ——全球整合式芯片解决方案的领导厂商美满电子科技(Marvell,NASDAQ: MRVL)今天宣布,中国搜索引擎巨头百度在全球首次商用的ARM架构服务器中,采用了Marvell公司的 ARM芯片组。作为世界范围内首家商用ARM服务器的公司,百度引领并开启了具有更低能耗和更高性能的全新“绿色数据中心”的新时代。这些全新的ARM架构服务器目前正在被用于支持名为“百度云”的个人云存储应用服务—yun.baidu.com。随着云服务和云应用,以及网站托管和社交站点所带来的“高存储-轻计算”任务的快速增长,当前的数据中心对服务器提出了全新的要求。为了满足这些新需求,Marvell推出了一个易于整合的一站式
[单片机]
百度实现<font color='red'>ARM</font>架构服务器全球首次商用
基于UDP协议的ARM与X86平台之间的通讯方案
  随着人工智能的应用,ARM产品已经遍布到各个领域:工业控制、无线通讯领域、消费类电子产品、成像和安全产品,包括现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用,因此,ARM与其它平台之间通讯就显得尤为重要。   1.UDP协议本质   UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽
[单片机]
Arm启动流程解析
谈到arm的启动流程不得不说的是bootloader,但是我这篇文章主要来谈谈arm启动流程的,所以bootloader只是跟大家简介一下就ok。这篇文章我会谈到以下内容: 1、bootloader简介以及其作用 2、2440、6410、210当下比较常见的3款处理器的启动流程进行简单分析,通过这三款处理器的分析希望大家掌握arm处理器的启动分析。 Ok我们进入主题 l Bootloader简介及其作用 在我看来bootloader的作用是初始化必要的硬件,引导内核启动。(当然这是主要作用,今天的重点不在bootloader,所以在我后面的博文会继续谈到的) l 启动流程分析 在分析启动流程的时候我们将会使用的文档是三星公司提供的芯
[单片机]
<font color='red'>Arm</font>启动流程解析
基于ARM系统硬盘接口的使用和文件管理系统
  在“计算机接口技术”教学中, 有关硬磁盘接口适配器这一章比较难学, 主要涉及到I?O 控制层对扇区读写和使用逻辑映射层对数据进行管理问题,内容比较抽象, 教师和学生只能凭想象去教与学。笔者在科研中, 通过对嵌入式微处理器与硬盘接口的开发应用, 加深了对这些内容的理解, 为拓展这部分教学内容的深度和广度奠定了基础, 并采用理论与实际结合的方式去讲授有关的内容, 受到了学生的欢迎。故撰此文与从事硬盘接口技术教学的老师们作一交流。   1 ARM 系统及IDE 接口综述   ARM (A dvanced RS IC M ach ines) 是一种低功耗、高性能的32 位处理器。本文介绍的系统是基于Sam sung 公司S3C44
[单片机]
基于<font color='red'>ARM</font><font color='red'>系统</font>硬盘接口的使用和文件管理<font color='red'>系统</font>
基于S3C6410的ARM11学习(五) 核心初始化之关闭看门狗
之前已经完成了设置中断向量表和设置处理器模式。下一步,就是要关闭看门狗。 看门狗,这个东西,在嵌入式系统里面是很常见的一个东西。这个是芯片预先做好的硬件,软件可以对硬件进行配置。说白了,这个东西就是一个定时器,定时器溢出的时候,如果设置开启看门狗的话,就会强制CPU复位。这样,好处就是防止程序跑飞。因为程序正常执行的时候,我们肯定是要对看门狗计数清零的,这样才能保证看门狗不会溢出,不会使CPU复位。 S3C6410的看门狗有两个功能: 作为常规定时器,并且可以产生中断 作为看门狗定时器,当计数器递减为0,产生复位信号。 下面是看门狗的框图
[单片机]
基于S3C6410的<font color='red'>ARM</font>11学习(五) 核心初始化之关闭看门狗
飞利浦90纳米ARM9微控制器提供高计算性能和低功耗
飞利浦电子公司日前宣布开始供应业界第一个ARM9核心的90纳米微控制器LPC3180。飞利浦这一全新的32位MCU不仅提供高效能和低功耗,也是唯一提供矢量浮点协处理器和整合的USB On-The-Go,以及在低至0.9V电压的超低功耗模式下运行能力的ARM9微控制器。飞利浦LPC3180的最高速度可达208MHz,是许多高精度应用的理想选择,例如销售点(POS)设备、医疗及工业装置、全球定位系统(GPS)和机器人等。 飞利浦半导体微控制器产品线产品创新总监Ata Khan表示:“藉由先进的90纳米工艺技术的优势,飞利浦能够开发具有高计算性能并针对低功耗运行最优化的最先进的ARM9 MCU。LPC3180推出之后,即使是低成本的电
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved