<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 科伟奇电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=384 </link><title>基于PCI总线的嵌入式实时DSP图像采集系统</title><author>稻草人</author><pubDate>2009/12/14 8:41:54</pubDate><description><![CDATA[摘要：以交通十字路口实时DSP图像采集系统为例，说明了基于PCI总线的DSP图像采集系统的优点，并详细阐明了系统的硬件结构和基于VxWorks操作平台的软件实现，最后介绍了系统实现的效果。 关键词：PCI总线 DSP VxWorks操作系统 图像采集系统 本文从实时性和大容量两方面介绍了在通用计算机上加入ＤＳＰ加速卡实现的图像采集系统。利用ＤＳＰ芯片的高速处理特性完成大部分的图像处理工作，上位机只完成辅助操作和存储系统。这种方法发挥了ＤＳＰ的高速性能又具有相当大的灵活性，而且开发工具比较完善。 实时性要求足够的传输速度，ＰＣＩ总线速度最高可达５２８ＭＢ／ｓ（６６ＭＨｚ、６４位）。这是其他总线无法比拟的速度，如ＩＳＡ总线速度只有５ＭＢ／ｓ。另外，系统中ＤＳＰ的可扩展存储空间高达１ＧＢ。这完全可以满足一般图像处理系统的需要。 １ 基于ＰＣＩ总线的ＤＳＰ图像采集系统 本系统主要用于路口违章车辆抓拍，包括闯红灯抓拍、超速行驶抓拍等。通过摄像头对车流进行监测，当有车辆在红灯期间越过停止线或在限速地段超速行驶，系统拍下车辆的行为并把数据传送到ＤＳＰ进行处理，然后经ＰＣＩ总线把处理后的数据上传到上位机。当然这套系统也可用于其他的监控系统，如楼宇监控等，其硬件系统基本一致，只是软件功能有所区别。 <img border="0" src="/info/images/aet/200312/4a.gif" alt="" /> 本系统采用ＴＩ公司Ｃ６０００系列ＤＳＰ中的ＴＭＳ３２０Ｃ６２１１作为系统的ＣＰＵ。图像数据通过摄像机采集并输出模拟图像信号。这些信号经视频解码芯片转换为数字信号；再经ＦＩＦＯ输入ＤＳＰ进行图像的增强、分割、特征提取和数据压缩等；然后输出信号经ＰＣＩ解码芯片转换为符合ＰＣＩ总线规范的标准信号，通过ＰＣＩ总线接口传到上位机。系统的控制逻辑由ＥＰＬＤ（Ｅｒａｓａｂｌｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄｅｖｉｃｅ）控制器实现。系统结构图如图１。 （１）视频解码芯片 系统中采集的图像信号采用Ｐｈｉｌｉｐｓ公司的ＳＡＡ７１１１Ａ完成Ａ／Ｄ转换。ＳＡＡ７１１１Ａ允许四路模拟视频输入，具有两个模拟处理通道，支持四路ＣＶＢＳ模拟信号或二路Ｙ／Ｃ模拟信号或二路ＣＶＢＳ信号和一路Ｙ／Ｃ信号。ＳＡＡ７１１１Ａ对摄像头输入的标准ＰＡＬ格式的模拟图像信号进行Ａ／Ｄ转换，然后输出符合ＣＣＩＲ６０１格式的４：2：2的１６位ＹＵＶ数据到ＦＩＦＯ。其中亮度信号Ｙ为８位、色度信号Ｃｒ和Ｃｂ合为８位数据。ＦＩＦＯ采用ＩＤＴ公司的ＩＤＴ７２Ｖ２１５ＬＢ芯片，ＦＩＦＯ的深度为５１２%26;#215;１８ｂｉｔ，支持ＳＴＡＮＤＡＲＤ（标准）和ＦＷＦＴ（Ｆｉｒｓｔ Ｗｏｒｄ Ｆａｌｌ－Ｔｈｒｏｕｇｈ，首字直接通过）两种工作模式。按照ＣＣＩＲ６０１格式，ＹＵＶ图像分辨率为７２０%26;#215;５７６象素，当按行输出时，ＳＡＡ７１１１Ａ输出数据流大小为：７２０%26;#215;１６＝１４４０ｂｉｔ。因为ＤＳＰ通过３２位的ＳＢＳＲＡＭ接口与ＦＩＦＯ通信，故ＹＵＶ数据写入ＦＩＦＯ时需要在ＦＩＦＯ之间实现乒乓切换。这时一行７２０%26;#215;１６ｂｉｔ的数据在两片ＦＩＦＯ中存储变为３６０%26;#215;３２ｂｉｔ。两片ＦＩＦＯ可以满足上述要求。ＦＩＦＯ的初始化及时序由ＥＰＬＤ实现。 <img border="0" src="/info/images/aet/200312/4b.gif" alt="" /> （２）ＤＳＰ图像处理模块 ＴＭＳ３２０Ｃ６２１１是ＴＩ公司发布的面向视频处理领域的新款高速数字处理芯片，适用于移动通信基站、图像监控、雷达系统等对速度要求高和高度智能化的应用领域。存储空间分两部分：运行过程的临时数据存在Ｗｉｎｂｏｎｄ公司的两片１２８Ｍｂｉｔ的Ｗ９８１２１６ＢＨ中；系统程序则固化在ＦＬＡＳＨ存储器中，该存储器选用ＡＭＤ公司生产的８Ｍｂｉｔ的ＡＭ２９ＬＶ８００Ｂ。Ｆｌａｓｈ存储器具有在线重写入功能。这对系统启动程序的修改和升级都带来了很大的方便。ＤＳＰ处理模块结构如图２所示。图２中的ＨＰＩ（Ｈｏｓｔ Ｐｏｒｔ Ｉｎｔｅｒｆａｃｅ）为主机口；ＥＭＩＦ（Ｅｘｔｅｒｎａｌ Ｍｅｍｏｒｙ Ｉｎｔｅｒｆａｃｅ）为外部存储器接口，兼容同步／异步传输方式。 ＴＭＳ３２０Ｃ６２１１ ＤＳＰ的高速性能主要体现在以下方面：①ＴＭＳ３２０Ｃ６２１１的存储空间最大可扩展到１ＧＢ，完全可以满足各种图像处理系统所需的内存空间，而且其最高时钟可达２００ＭＨｚ，峰值性能可达１６００ＭＩＰＳ（百万条指令／秒）、２４００ＭＯＰＳ（百万次操作／秒）。②并行处理结构。ＴＭＳ３２０Ｃ６２１１芯片内有８个并行处理单元，分为相同的两组，并行结构大大提高芯片的性能。③芯片体系采用ＶｅｌｏｃｉＴＩ结构。ＶｅｌｏｃｉＴＩ是一种高性能的甚长指令字（ＶＬＩＷ）结构，单指令字字长为３２ｂｉｔ，８个指令组成一个指令包，总字长为２５６ｂｉｔ。即每秒钟可以执行８条指令。ＶｅｌｏｃｉＴＩ结构大大提高了ＤＳＰ芯片的性能。④采用流水线操作实现高速度、高效率。ＴＭＳ３２０Ｃ６２１１只有在流水线充分发挥作用的情况下，才能达到最高的峰值性能。与其他系列ＤＳＰ相比，优势在于简化了流水线的控制以消除流水线互锁，并增加流水线的深度来消除传统流水线的取指、数据访问和乘法操作上的瓶颈。 本系统ＤＳＰ主要完成从ＦＩＦＯ读出数据的处理以及压缩等。数据处理由自行编写的算法实现，数据压缩算法采用ＪＰＥＧ（Ｊｏｉｎｔ Ｐｈｏｔｏｇｒａｐｈｉｃ Ｅｘｐｅｒｔ Ｇｒｏｕｐ）标准。当摄像头采集速度为每秒２５帧图像时，它留给ＤＳＰ处理的时间最多为每帧４０ｍｓ。如果考虑系统有一定的延时以及处理后图像的存储时间，那么ＤＳＰ处理一幅图像时间不能超过３０ｍｓ。按照Ｃ６２１１的处理速度，在３０ｍｓ内可以处理４８Ｍ（０．０３%26;#215;１６００ＭＩＰＳ）条指令。ＤＳＰ读出ＦＩＦＯ中的行数据并存入ＳＤＲＡＭ，一帧图像有５７６行，在最后一行时会收到系统的帧中断，这时ＳＤＲＡＭ中的图像数据总共有１４４０%26;#215;５７６＝８１０ＫＢ。让Ｃ６２１１用３６Ｍ条指令周期的时间处理８１０ＫＢ的数据显然绰绰有余。粗略的计算过程如下： 系统采用快速ＤＣＴ（离散余弦变换），每８%26;#215;８矩阵需要１１次乘法、２９次加法，因此一帧图像的ＦＤＣＴ，共需要（１１＋２９）%26;#215;７２０%26;#215;５７６%26;#215;２／６４＝５１８４００个指令周期；对于量化模块，每８%26;#215;８矩阵需要６４个量化指令周期，一帧需要６４%26;#215;７２０%26;#215;５７６%26;#215;２／６４＝８２９４４０个指令周期；对于编码部分，假设编码后非０元素占２５％，对每８%26;#215;８矩阵进行Ｚｉｇ－Ｚａｇ扫描、编码估计需要１２０个指令周期，则共需１２０%26;#215;７２０%26;#215;５７６%26;#215;２／６４＝１５５５２００个指令周期。按以上计算，在系统中进行ＪＰＥＧ编码大约需要２９０３０４０个指令周期，耗时１９．３５３６ｍｓ（ＴＭＳ３２０Ｃ６２１１工作在１５０ＭＨｚ时）。可以看出，实际需要的指令远小于３６Ｍ条，而时间也远小于３０ｍｓ，ＤＳＰ完全可以实时处理从ＦＩＦＯ传过来的数据。 （３）ＰＣＩ总线模块 ＰＣＩ总线规范吸引人的地方不仅是其高速度，更在于 <img border="0" src="/info/images/aet/200312/4c.gif" alt="" /> 它适应了现代Ｉ／Ｏ设备对系统的要求，对ＰＣＩ扩展卡及器件能进行全自动配置，并且只需很少的接口逻辑就可以实现并支持其他总线系统。 ＴＭＳ３２０Ｃ６２１１的ＨＰＩ口不支持ＰＣＩ总线的无缝接口。本系统采用ＴＩ公司的ＰＣＩ２０４０实现ＤＳＰ的ＨＰＩ与ＰＣＩ总线的连接。ＤＳＰ处理后的数据经ＨＰＩ口输出到ＰＣＩ２０４０进行解码，然后输出到ＰＣＩ总线上。其逻辑结构如图３所示。 ＰＣＩ２０４０是ＴＩ公司设计的专门用来完成Ｃ５０００系列和Ｃ６０００系列ＤＳＰ与ＰＣＩ总线进行接口的专用芯片。ＰＣＩ２０４０符合ＰＣＩ局部总线２．２规范，能够方便地实现ＰＣＩ总线与ＴＭＳ３２０Ｃ５４Ｘ或ＴＭＳ３２０Ｃ６Ｘ ＤＳＰ的ＨＰＩ接口的无缝连接。ＰＣＩ２０４０可以兼容３．３Ｖ和５Ｖ，以适应不同的ＰＣＩ总线电压。ＰＣＩ２０４０与Ｃ６２１１之间不需要信号的电平转换，也不需要额外的控制逻辑电路，接口电路十分简单。 在本系统中，ＰＣＩ２０４０上存在两种电压：５Ｖ和３．３Ｖ。其中３．３Ｖ是ＨＰＩ口电压，５Ｖ是ＰＣＩ总线电压。ＰＣＩ２０４０启动时需要对其ＰＣＩ总线寄存器和ＨＰＩ寄存器参数进行预加载。系统中ＰＣＩ解码模块包括一块配置ＲＯＭ&mdash;&mdash;ＡＴ２４Ｃ０８Ａ，属于ＥＥＰＲＯＭ型ＲＯＭ，便于对配置参数修改和升级。当系统启动时，存储在ＡＴ２４Ｃ０８Ａ的数据下载到ＰＣＩ２０４０的寄存器中并进行配置。 图３中ＨＩＮＴ[３:０]、ＨＣＳ[３:０]、ＨＲＤＹ[３:０]、ＨＲＳＴ[３:０]分别与四片ＤＳＰ中的相应信号相连。即ＰＣＩ２０４０可以同时与四片ＤＳＰ接口。 ２ 系统的软件设计 本软件系统包括两部分，即底层软件和系统软件。 底层软件主要是ＤＳＰ图像处理算法以及启动等运行程序。这些程序主要在ＣＣＳ环境下由Ｃ语言编写并进行汇编优化。ＣＣＳ即Ｃｏｄｅ Ｃｏｍｐｏｓｅｒ Ｓｔｕｄｉｏ，是ＴＩ公司发布的ＤＳＰ软件运行环境。 在系统软件方面，基于ＰＣＩ总线的图像处理系统面临的难点颇多，其中难度最大的是ＰＣＩ驱动问题。当然这对于不同的系统软件可能难度各异。若在Ｗｉｎｄｏｗｓ操作系统下，可以充分利用Ｗｉｎｄｏｗｓ的窗口特性：一方面，因为Ｗｉｎｄｏｗｓ技术成熟，软件编写相对比较简单；另一方面，在Ｗｉｎｄｏｗｓ平台下，ＰＣＩ驱动无需开发，可以直接利用Ｗｉｎｄｏｗｓ的ＰＣＩ驱动程序实现图像卡的驱动。但是Ｗｉｎｄｏｗｓ操作系统比较庞大，而且无法依照系统的需要进行自由裁减，不适合做成<a class="jt" href="http://www.eeworld.com.cn" rel="http://www.eeworld.com.cn/my/keyad/ad_content_01.html" target="_blank" jquery1260751262104="35"><font color="#0033cc">嵌入式</font></a>系统。这里主要阐述在ＶｘＷｏｒｋｓ操作系统下的软件设计方法。 相对于Ｗｉｎｄｏｗｓ操作系统，ＶｘＷｏｒｋｓ的优点表现在：①ＶｘＷｏｒｋｓ系统具有较好的可裁减性，可裁剪的组件超过８０个，用户可根据自己系统的功能目标通过交叉开发环境方便地配置；②ＶｘＷｏｒｋｓ支持应用程序的动态链接和动态下载，开发者省去了每次调试都将应用程序与操作系统内核进行链接和下载的步骤，缩短了编辑／调试周期；③ＶｘＷｏｒｋｓ具有较好的兼容性，它是最早兼容ＰＯＳＩＸ１００３．１ｂ标准的<a class="jt" href="http://www.eeworld.com.cn" rel="http://www.eeworld.com.cn/my/keyad/ad_content_01.html" target="_blank" jquery1260751262104="36"><font color="#0033cc">嵌入式</font></a>实时操作系统之一；④ＶｘＷｏｒｋｓ具有很高的可靠性和稳定性；⑤ＶｘＷｏｒｋｓ具有很好的实时性，实时性的强弱以完成规定功能和做出响应时间的长短来衡量。ＶｘＷｏｒｋｓ的多任务机制对任务的控制采用了优先级抢占（Ｐｒｅｅｍｐｔｉｖｅ Ｐｒｉｏｒｉｔｙ Ｓｃｈｅｄｕｌｉｎｇ）和轮转调度（Ｒｏｕｎｄ－Ｒｏｂｉｎ Ｓｃｈｅｄｕｌｉｎｇ）机制。这充分保证了可靠的实时性，使同样的硬件配置能满足更强的实时性要求，为应用的开发留下更大的余地。 为阐明如何在ＶｘＷｏｒｋｓ操作系统下实现ＰＣＩ总线的驱动，还需了解ＰＣＩ设备的配置空间。ＰＣＩ设备有三种物理存储空间：配置空间、存储器空间和Ｉ／Ｏ空间。配置空间是长度为２５６字节的一段连续空间，空间的定义如图４?眼１?演。在配置空间中只读空间有设备标识、供应商代码、修改版本、分类代码以及头标类型。其中供应商代码用来标识设备供应商的代码；设备标识用来标识某一特殊的设备；修改版本标识设备的版本号；分类代码用来标识设备的种类；而头标类型用来标识头类型以及是否为多功能设备。除供应商代码之外，其他字段的值由供应商分配。 基地址寄存器最重要的功能是分配ＰＣＩ设备的系统地址空间。在基地址寄存器中ｂｉｔ０（最低位）用来标识存储器空间还是Ｉ／Ｏ地址空间，基地址寄存器映射到存储器空间时ｂｉｔ０为&ldquo;０&rdquo;，映射到Ｉ／Ｏ地址空间时ｂｉｔ０为&ldquo;１&rdquo;。 <img border="0" src="/info/images/aet/200312/4d.gif" alt="" /> ＰＣＩ设备的驱动过程主要包括下面几个步骤： 首先，ＰＣＩ设备的查找。在<a class="jt" href="http://www.eeworld.com.cn" rel="http://www.eeworld.com.cn/my/keyad/ad_content_01.html" target="_blank" jquery1260751262104="37"><font color="#0033cc">嵌入式</font></a>操作系统中一般提供相应的ＡＰＩ函数查找。在ＶｘＷｏｒｋｓ操作系统中通过函数ｐｃｉＦｉｎｄＤｅｖｉｃｅ(ＰＣＩ＿ＶＥＮＤＯＲ＿ＩＤ,ＰＣＩ＿ＤＥＶＩＣＥ,ｉｎｄｅｘ, ＆ｐｃｉＢｕｓ, ＆ｐｃｉＤｅｖｉｃｅ，＆ｐｃｉＦｕｎｃ_可以找到供应商代码为ＰＣＩ＿ＶＥＮＤＯＲ＿ＩＤ、设备标识为ＰＣＩ＿ＤＥＶＩＣＥ的第ｎ（ｉｎｄｅｘ＋１）个设备，并且返回总线号、设备号以及功能号，分别保存于＆ｐｃｉＢｕｓ、＆ｐｃｉＤｅｖｉｃｅ、＆ｐｃｉＦｕｎｃ中。 其次，ＰＣＩ设备的配置。通过操作系统提供的ＡＰＩ函数访问ＰＣＩ设备的配置空间，配置ＰＣＩ设备基址寄存器的配置、中断配置、ＲＯＭ基地址寄存器的配置等，这样可以得到ＰＣＩ的存储器空间和Ｉ／Ｏ地址空间映射、设备的中断号等。在ＶｘＷｏｒｋｓ操作系统中访问ＰＣＩ设备配置空间的ＡＰＩ函数有ｐｃｉＣｏｎｆｉｇＯｕｔＬｏｎｇ、ｐｃｉＣｏｎｆｉｇＩｎＬｏｎｇ等，它们分别完成对ＰＣＩ设备配置空间的读写操作。 然后，根据ＰＣＩ设备的配置参数，对不同的设备编写初始化程序、中断服务程序以及对ＰＣＩ设备存储空间的访问程序。 很显然，用ＶｘＷｏｒｋｓ操作系统实现虽然有一定的难度，但是系统具有很大的灵活性，系统比较小、适应性强，并且可以在工业控制计算机上运行。 图像采集系统的关键在于如何对大容量的信息进行暂存、压缩和传输等问题进行处理。本系统很好地解决了这三个难题。在图像信息暂存方面充分利用了ＤＳＰ存储空间的可扩展性，保证了系统可暂存的信息量足够大；信息压缩是ＤＳＰ最擅长做的事情，可以在很短的时间内完成大量的信息压缩工作；ＰＣＩ总线的引入保证了信息在足够的带宽下进行快速传输。采用<a class="jt" href="http://www.eeworld.com.cn" rel="http://www.eeworld.com.cn/my/keyad/ad_content_01.html" target="_blank" jquery1260751262104="38"><font color="#0033cc">嵌入式</font></a>ＶｘＷｏｒｋｓ操作系统实现使得系统具有良好的灵活性和适应性，并大大降低了系统的成本。
<script type="text/javascript">
function ImgZoom(Id)//重新设置图片大小 防止撑破表格
{
var w = $(Id).width;
var m = 650;
if(w < m){return;}
else{
var h = $(Id).height;
$(Id).height = parseInt(h*m/w);
$(Id).width = m;
}
}
window.onload = function()
{
var Imgs = $("content").getElementsByTagName("img");
var i=0;
for(;i<Imgs.length;i++)
{
ImgZoom(Imgs[i]);
}
}
       </script>]]></description></item></channel></rss>