EDN首页   博客首页

0

关于投票
几个DSP高手的经验介绍(转贴)
. 我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始2402407A都作过产品,对540228125471在产品方案规划制定和论证时也研究过。由于方向所限对6X8X系列没有接触。
我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。

其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-—系统功能划分—— 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51196、还是DSP都是这样。
下面分别谈谈我对硬件和软件设计的感受
硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。DSP的选型要根据系统功能而定,2000是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X不错但太贵,而且开发技术不成熟。54XX更像一个协处理器,其实高端产品5471就很好,功能完*,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD
软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和编译原理方面的知识,特别是使用C。对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C现在发现用C构建程序的主体框架(操作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB——C——ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。其实在实际中往往PID甚至PIPD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。
最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是50006000系列都有市场前景,关键是要做深做透
获取知识的方法、处理项目的能力是相通的,具体的说就是不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做DSP的有的毕业拿3000,有的50008000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途。

. 与其说是钻在里面,毕业设计是搞240,在老师的压力做出了一点东西,这期间主要是对DSP的各种基础知识的熟悉与理解,对DSP的真正深入是在公司工作以后。当初进公司,因为正有一个项目需要用5410要我接手。说实话,在学校期间我5000的书都没有看过一眼,可没办法,只能靠自己了。不过好的是我2000DSP的基础很好。接过项目后,我第一个星期就全部看的是5000的指令,DSP的结构倒没怎么看,因为项目硬件已成型,主要是算法。这样,花了一个星期熟悉指令与项目相关的程序,第二个星期也就开始编程了。半个月以后我对5410也就用很熟了的,当然主要还是讲在算法方面。这个项目太概做了四个月吧,系统程序是我编写的,主要有如64位加减乘除乘方开方、及时域方面的一些算法。现在又做一个控制系统,用2407开发的,硬件主要有直交变频,并把2407的所有外设资源全部用到了。现在我可以这样自夸一句吧:TI2000系列与5000系列的我都熟悉,要我去以此做个系统,没问题。上面是把我搞DSP的经历简单说了一下的吧,在这里我想对正在学及想学DSP的难兄们说一句的是,DSP并不是很难。当然,这个前提是你的基础要好,我单片机,接口都还行,当初就是从单片机改成DSP的。有了单片机的基础再去学2000第列的DSP(下面的DSP单指2000系列,另有说明为止),你就可以把DSP看成一个super microcontroller了。相比之下,DSP除了比单片机多了更丰的外设接口(SPI,SCICANPWMCAPQEP等等),他就是一块单片机,只不过在单片机来说你要另加芯片的工作,DSP全部把它做在一块芯片去了,我现在看DSP也真就这么简单。前面有人提到DSP主要是做算法,这句话有一定的片面性: TI有很多系列的DSP,现在主流的DSP主要为2000系列、3000系列、4000系列、5000系列、6000系列。除了20005000系列是定点DSP外,其余的均为浮点系列。 TI2000系列主要长处是在用于控制系统,因为它的资源非常丰富,前面提到,在控制系统中用到的一些外设2000系列均在片内集成了。 TI5000系列主要长处是用于数字信号的算法处理,这里所讲算法处理主要是指在数字信号处理时的一些算法,如FIRIIRFFT等等。5000系列的DSP的速度比2000快,2407最快只能到40M2800系列除外,5410DSP可以达到160M,如现在我们主要用来做数字信号方面的处理以及简单的静态图像处理等这样一些在资源需要处于中等的一些算法。 TI6000系列主要是用在实时图像处理,这个就更则重于算法处理。一般的硬件很少自制,我们是用TIDSK板再加上自主板相结合。

. 使用C/C++语言编写基于DSP程序的注意事项 1 不影响执行速度的情况下,可以使用cc/c++语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师”优化处理,例如:进行绝对值运算,可以调用fabs()abs()函数,也可以使用if...else...判断语句来替代。 2 要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。 3 一定要非常重视中断向量表的问题,很多朋友对中断向量表的调用方式不清楚。其实中断向量表中的中断名是任意取定的,dsp是不认名字的,它只认地址!!中断向量表要重新定位。这一点很重要。 4 要明确dsp软件开发的第一步是对可用存储空间的分析,存储空间分配好坏关系到一个dsp程序员的水平。对于dsp,我们有两种名称的存储空间,一种是物理空间,另一种是映射空间。物理空间是dsp上可以存放数据和程序的实际空间(包括外部存储器),我们的数据和程序最终放到物理空间上,但我们并不能直接访问它们。我们要访问物理空间,必须借助于映射空间才行!!但是映射空间本身是个“虚”空间,是个不存在的空间。所以,往往是映射空间远远大于实际的物理空间,有些映射空间,如io映射空间,它本身还代表了一种接口。只有那些物理空间映射到的映射空间才是我们真正可访问(读或写)的存储空间。 5 尽可能地减少除法运算,而尽可能多地使用乘法和加法运算代替。 6 如果ti公司或第三方软件合作商提供了dsplib或其他的合法子程序库供调用,应尽可能地调用使用。这些子程序均使用用汇编写成,更为重要之处是通过了tms320算法标准测试。而且,常用的数字信号处理算法均有包括!! 7 尽可能地采用内联函数!!而不用一般的函数!!可以提高代码的集成度。 8 编程风格力求简炼!!尽可能用c语言而不用c++语言。我个人感到虽然c++终代码长了一些,好象对执行速度没有影响。 9 因为在c5000double型和float型均占有2个字,所以都可以使用,而且,可以直接将int型赋给float型或double型,但,尽可能地多使用int数据类型代替!这一点需要注意!! 10 程序最后至少要加上一个空行,编译器当这个空行为结尾提示符。 11 大胆使用位运算符,非常好用!! 1220036月份从ti的网站上下到了关于tms320c67x系列dsp的快速算法库,于是,tms320c5000c6000全系列的快速算法库都问世了,这些算法库均可供c/c++语言直接调用,优化程度100%,实际编程时尽可能地使用(下载时可以同时下载到说明文档和ascii源程序,可以根据自己需要作出修改,修改前最好做个备份

 
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(641) | 回复(1)

0

关于投票
DSP5402菜鸟初识DSP/BIOS
hotpower 发表于 2008-5-14 20:38 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: DSP5402菜鸟初识DSP/BIOS

点击看大图


点击看大图

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 原创
发表评论 阅读全文(576) | 回复(0)

0

关于投票
麻烦问问各位用54x/55x的一般给自己的dsp拴什么狗?

http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2832281

phoenixmy 发表于 2008-1-15 20:21 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: 麻烦问问各位用54x/55x的一般给自己的dsp拴什么狗?



最近拴狗没有拴好
一直不太正常

请教给位有拴狗经验的一般都用啥狗
具体连接是怎么样的?
时序上注意些啥?

phoenixmy 发表于 2008-1-20 00:20 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

6楼: 加看门狗后系统无法启动起来




用的是TPS3306

电路连接是经典连接

但是一加电后系统总是无法启动起来

不知道这是为啥

难道是看门狗应该在DSP上电后过一段时间再启动???

hitajian 发表于 2008-1-20 00:44 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

7楼: 查查你的系统从启动到第一次喂狗有多长时间.

我查了TPS3306的资料,它的喂狗间隔是0.8s.
查查你的系统从启动到第一次喂狗有多长时间.
因为启动的过程涉及到程序加载的方式,是串行,并行,还是HPI加载等等...
如果0.8s内还没有执行到喂狗操作,那么狗狗肯定会负责任的送出reset信号了.

phoenixmy 发表于 2008-1-20 00:49 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

8楼: 楼上说的对


我也在考虑这个问题
担心是串行加载过程中看门狗复位导致的系统无法运行
但是看3306的经典连接似乎就是那样

如果做上电延时处理的话,我还没有啥好的延时处理办法
不知道楼上是不是有啥好主意

hitajian 发表于 2008-1-20 01:19 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

9楼: 利用程序加载时候的信号脚

首先,我们确认问题
  a.把3306的WDI脚断开,根据其datasheet,WDI脚悬空后,watchdog功能会失效.
  b.用示波器量系统加载到第一次喂狗的时间

我在设计中对于DSP给出的喂狗信号, 一般都是会和其他信号做逻辑与后在送给watchdog.

比如对于串行加载,可利用串行加载中用到的某个信号脚,但要确保此信号在加载结束后没有做其他用途,加载结束后电平恒定.如 BDR.

可以加我MSN: hitajian@hotmail.com 进一步讨论.呵呵

phoenixmy 发表于 2008-1-20 01:32 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

10楼: 呵呵,先谢谢啦


周一做实验看看
我估计问题大概也是在这个地方
不过WDI不是要上拉高电平吗?

信号相与应该是正确的途径
我这边的喂狗信号就是单一的多缓冲串口输出信号
估计是系统还没有把程序加载上就开始复位导致无法正常加载
不过话说回来,0。8秒应该足够程序加载并且初始化完成的

还有一个现象就是如果不在WDI上加上拉电阻的话,情况会好很多
但是仍然会有偶尔死机(程序似乎没有运行)的情况发生
不知道这是为啥

感谢楼主帮助,明天加你
看来这大半夜的还是有很多热心人在线啊

hitajian 发表于 2008-1-20 01:52 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

11楼: ;)

3306的手册里有这样一句话:
"If the input is unconnected or tied with a high impedance driver, the watchdog is disabled and will be retriggered internally."
另外,从手册上看3306的WDI脚是不需要单独上拉的.

hotpower 发表于 2008-1-20 02:25 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

12楼: 把电路贴上来,我也觉得组合喂狗更好些

关于3306的WDI脚上拉电阻的问题,个人认为一定要加.

理由:

若无上拉电阻(高阻/三态),看门狗是被禁止的,只有WDI上有确定的电平后,
WDI才被使能,若电平不变且超过喂狗时限后,看门狗将输出复位信号.
若电平变化即在喂狗时限内喂狗后,看门狗定时器内部清零不输出复位信号.

那么,假若不加上拉电阻即不给看门狗电平信号,将会出现下面的情况:
如果上电,加载FLASH程序到RAM及PLL稳定时间即使超过0.8S也不会复位,
程序继续执行...当系统配置看门狗管脚后,看门狗被使能!!!
则程序必须保证0.8S内的喂狗周期.

假若此时掉电复位或看门狗异常复位,WDI都会再现高阻态,看门狗又被禁止!!!
假使装载失败等原因,看门狗将永远不复位,也就造成了程序死锁!!!

若加上拉电阻,由于装载FLASH程序可能会超过0.8S的喂狗时限,而此时看门狗管脚并未配置为IO,那么也造成了0.8S喂狗的周期复位信号,给人一种程序死锁的假象.

故严重同意9楼的"利用程序加载时候的信号脚"联合喂狗的方案!!!
我在LPCARM上就是采用类似的这种方法,使ISP状态无喂狗的情况下,利用ISP数据信号达到在ISP期间的喂狗脉冲的发生.

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(850) | 回复(0)

0

关于投票
求助: PCI2040+4片5402的电路图
先谢谢了~~~

可能是太简单了,网上实际原理图和驱动及应用程序很少.

最好有PCI2040的驱动程序.

HotPower@126.com


再次感谢.

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(834) | 回复(3)

0

关于投票
PCI总线协议V2_3

PCI总线协议.pdf

pdf

 

 

 

 

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(989) | 回复(1)

0

关于投票
基于DSP的PCI图像采集卡设计
基于DSP的PCI图像采集卡设计
白晓宁1,黄建军2,谢维信2

  (1.西安电子科技大学 陕西 西安 710071;2.深圳大学 广东 深圳 518060)

随着计算机电子技术的不断发展,图像采集系统在各个方面得到了越来越广泛的应用,同时也对图像采集系统提出了更高的要求,快速、灵活、方便及可控性成为图像采集系统发展的方向。本文设计的采集系统以通用的DSP芯片TMS320VC5402作为核心处理器、OV5017作为系统的图像传感器,而数据通过PCI桥电路发送给PC机,因此该系统结构简单,具有即插即用、传输速率高的特点,并且由于OV5017可通过编程实现对该芯片的控制,TMS320VC5402又可对图像做一些预处理工作,因此具有采集系统的灵活性、可控性,鉴于该系统采集过程中的灵活性、快速性和可控性,故可更好地应用于一些需要实时采集、控制的图像监控、多媒体应用等领域。

1 OV5017简介
  近年来发展较快的CMOS图像传感器,内部采用了相同的CMOS技术,因此可以将象素阵列与外围支持电路集成在同一块芯片上。CMOS图像传感器主要包括:一个图像传感器核心、单一时钟、所有的时序逻辑、可编程功能和A/D转换器。与CCD相比,CMOS图像传感器将整个图像系统集成在一块芯片上,具有性价比高、编程简单、功耗低的优点。
  美国OmniVision公司开发的OV5017将CMOS光感应核与外围支持电路集成在一起,具有可编程控制与视频A/D混合输出等功能,其输出的视频为黑白图像,与CCIR标准兼容,该芯片适用于图像识别领域。
基本参数为:
(1)内置8 b的A/D。
(2)帧频为50~0.5,曝光设置为1~1/100帧。  
(3)芯片图像尺寸为4.2 mm×3.2 mm,单个象素尺寸为11μm×11μm。
  (4)信噪比SNR>42 dB;自动增益控制为0~18 dB。
(5)帧频为50且f1.4时,最小照度为0.51 ux。
(6)帧频为50时,峰值功耗小于100 mW。
(7)5 V模拟供电和5/3.3 V数字供电。
  芯片内部有11个8 b寄存器,通过对地址线A[3…0]的设置来选择寄存器,通过读写数据线[7…0]来读取或设置寄存器。在对寄存器进行读/写时,应使片选CSB与输出使能OEB/写使能WEB有效。
  OV5017输出模拟视频信号,格式为逐行扫描,可以同步输出8 b的数字视频流D[7…0]。在输出数字HREF、垂直同步信号VSYNC,便于外部电路读取图像。

2 图像采集系统硬件设计
图像采集系统硬件结构图如图1所示。

在本系统中,OV5017作为系统的图像传感器,其内部将获取的图像采集量化,在TMS320C5402的控制下输出数字图像,经过DSP存入图像存储器。根据OV5017视频读取时序(如图2)可设计如下连接:OV5017的管脚A[3…0],D[7…0]与TMS320C5402的管脚A[3…0],D[7…0]直接相连,用DSP的R/W产生OV5017的读写使能信号;用DSP的IS产生OV5017的片选信号,即只在DSP的I/O空间读写;用OV5017的PCLK,VSYNC产生读数据的中断信号,HREF作为数据有效的判断信号与BIO连接,OV5017的时钟信号由DSP的一个串口发送时钟CLKX0分频产生。

TMS320VC5402的HINT与本身的INT2相连用于HPI方式引导,HPIENA,HDS2,HAS接高电平;HDS1接PCI2040的HDS;HBIL接PCI2040的HWIL;HAD[0…7]接PCI2040的HAD[0…7];RS接PCI2040的HRST0;HRDY接PCI2040的HRDY5X0;HCS接PCI2040的HCS0;HR/W接PCI2040的HR/W;HCNTL[0,1]接PCI2040的HCNTL[0,1]。基本电路图如图3所示。

点击看大图

3 图像采集系统软件设计
  由于DSP内部存储器容量不能存放一帧图像数据,故把DSP内部存储器分设出2个384×8=3 072存储空间,即每个存储空间可放1帧数据的8行,一个存储空间用于接收OV5017的图像数据,另一个存储空间用于向PC机发送图像数据,即1帧数据要被主机读取288/8=36次,主机每隔一段时间查询有关两段存储空间的2个标志字,标志字的最高位用于判断该存储空间数据是否有效,低15位用于判断该存储空间的数据属于1帧数据36部分的哪一部分。通过对2个存储空间的标志字的判断可得到该存储空间的数据的有效性和该数据在1帧数据中的位置,读取后置该存储空间的标志位为无效,直至DSP又在该存储空间存好数据,这时再改写该存储空间的标志位。
3.1 DSP采集数据软件设计
  DSP复位后,通过HPI口引导加载程序,然后初始化DSP,初始化两块存储空间的标志字使之无效且低15位都为0,当VSYSNC即帧同步中断到来时,选择一个标志字无效的存储空间作为当前接收数据的存储空间,并设置该标志字的低15位为0,接着根据PCLK中断和HREF值依次读入各象素值直至该帧数据的前8行,这时标志字的低15位加1,并改写该存储空间标志位为有效,选择另一个标志字无效的存储空间作为当前接收数据的存储空间,并且使该存储空间的标志字低15位等于上一存储空间的标志字的低15位,接着继续根据PCLK中断和HREF值依次读入各象素值直至读取到该帧8行数据,这时标志字的低15位继续加1并改写该存储空间标志位为有效,这样依次读入1帧数据,并且每读取8行数据就被主机查询接收。该系统的DSP采集数据软件是通过CCS开发工具开发完成的。
3.2 主机采集数据软件设计
主机程序启动后,先初始化分配1帧大小的内存,99然后不断查询DSP中2个存储空间的标志字,当2个标志字有1个为有效时,就读取该标志位对应的存储空间的图像数据,并根据标志字的后15位知道该存储空间存储的图像数据在该帧图像中的位置,读取完后设置该标志字为无效,表示该数据已被读取,以供DSP继续用来存放图像数据。当读取完1帧数据后就可对该帧图像进行后期处理,直接显示或存储。该系统的主机采集数据软件是通过VC++6.0开发工具开发完成的。
  在PC主机的软件设计工作中,首先通过DriverWorks开发一套针对该采集系统的驱动程序,然后根据上述流程编写应用程序,应用程序中对硬件的读写操作通过调用标准Win32 API函数DeviceIoControl来完成,下面就简单介绍一下关于DSP-PCI桥的驱动设计。
3.3 DSP-PCI桥的驱动设计
  由于主机的操作系统是Windows 2000,故选取了微软公司主推的驱动开发模型WDM(Windows Driver Model)来设计自己的驱动程序,开发工具为DriverStudio。WDM模型使用了如图4的层次结构,图中左边是一个设备对象堆栈,设备对象是系统为帮助软件管理硬件而创建的数据结构,一个物理硬件可以有多个这样的数据结构,其中PDO为物理设备对象;FDO为功能设备对象。

其中总线驱动程序负责列举设备,总线驱动程序每发现一个设备就创建一个对应的物理设备对象,一些总线驱动程序只是简单地控制对总线的访问权,功能驱动程序负责完成特定的功能,知道如何控制设备工作,他在驱动程序堆栈中位于总线驱动程序上面,功能驱动程序负责创建一个功能设备对象。
  一个完整的驱动程序包含许多例程,当操作系统遇到一个IRP时,他就调用这个驱动程序中的例程来执行该IRP的各种操作,通过DriverWorks的代码向导可生成专门为PCI设备定制的代码,PCI设备应用的各种例程都可通过向导生成,我们所做的工作是向各例程中添加代码。系统加载驱动时,在检测到硬件设备后,通过读写PCI配置寄存器中的内存基址寄存器(偏移10H)自动把PCI2040的CSR内存空间映射为Bar0(大小为4 k),通过读写PCI配置寄存器中的控制空间基址寄存器(偏移14H)自动把TMS320VC5402的HPI寄存器空间映射为Bar1(大小为32 k),共在驱动程序中映射为两段内存区。
  由于该采集系统对硬件的操作大部分请求都是读写数据,需要设备执行IOCTL操作,应用程序使用标准Win32 API函数DeviceIoControl来执行这样的操作。在驱动程序一方,这个DeviceIoControl 调用被转化成一个带有IRP_MJ_DEVICE_CONTROL功能码的IRP,驱动程序中共设置了4对共8个这样的IOCTL操作,都使用METHOD_BUFFERED方式。这时I/O管理器创建一个足够大的内核模式拷贝缓冲区,当派遣例程获得控制时,用户模式的输入数据被复制到这个拷贝缓冲区,在IRP完成之前,向拷贝缓冲区填入需要发往应用程序的输出数据。当IRP完成时,设置IoStatus.Information域等于放入拷贝缓冲区中的输出字节数,然后I/O管理器把数据复制到用户模式缓冲区并设置反馈变量。驱动程序对Bar0有2个IOCTL操作,通过对HPIRESET寄存器(地址为BAR0的14H)读写来对DSP复位,通过DSP的HPIC寄存器、HPIA寄存器、HPID自增寄存器、HPID非自增寄存器(由于只连了一片DSP0,故A14,A13都为0,而A12,A11分别对应HCNTL1和HCNTL0,故各寄存器地址分别为BAR1的0,1000H,800H,1800H)的读写设置HPIC的读写操作、HPID自增方式的读写操作、HPID非自增方式的读写操作共对于Bar1相关的6个IOCTL操作。在DriverWorks向导生成框架时,申请2个属于KmemoryRange类的对象分别对应Bar0和Bar1,然后在这8个IOCTL操作中添加相应的对于应用程序的接口操作,在这里用KmemoryRange类对象的inw和outw函数来实现对硬件的读写操作。
  最后在应用程序中打开设备,就可通过DeviceIoControl自如的读取图像数据了。

4 结 语
  该系统的优点首先是结构简单,这是因为OV5017内部集成了A/D器件,同时可输出3.3 V数字电平,省略了很多外围器件,同时DSP通过主机接口HPI口连接PCI桥电路与计算机进行传输数据,因此还具有采集速度快的优点,再次由于OV5017可通过编程实现对该芯片的控制,TMS320VC5402又可对图像做一些图像的预处理工作,因此具有采集系统的灵活性。总之该系统可更好地应用于一些需要实时采集、控制的图像监控、多媒体应用等领域,为进一步做图像处理的其他工作做好了良好的准备。


系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(776) | 回复(0)

0

关于投票
PCI总线接口芯片PCI 9052及其应用
点击看大图
PCI总线接口芯片PCI 9052及其应用
翁斌 中国电子科技集团公司电41所

引言

PCI(Peripheral Compornent Interconnect,即外围部件互连)总线是一种先进的高性能32/64位地址数据复用局部总线,该总线是以INTEL为首的多家集团设计的,PCI总线可以同时支持多组外围设备,且处理器和时钟频率无关,可以提供高达132MB/s的数据传送速率,PCI总线具有严格的规范,只要符合PCI规范的扩展卡,那么,插入任何PCI系统就能可靠地工作,是当今PC领域中流行的总线。

PCI总线协议非常复杂,目前实现PCI接口的有效方案分为两种:即使用可编程逻辑器件和使用专用总线接口的器件,可编程逻辑器件实现PCI接口比较灵活,可以利用的器件比较多,现在有许多生产可编程逻辑器件的厂商(如Xilinx的Logicore和Alerra的AMPP)都提供经过严格测试的PCI接口功能模块,用户只要进行组合设计即可,但这种方法难度较大,设计周期较长。而采用专用接口器件实现完整的PCI主控模块和目标模块的功能,则可将复杂的PCI总线接口转换为相对简单的用户接口,用户只要设计转换后的总线接口即可。但这种方法难度较大,设计周期较长,而采用专用接口器件实现完整的PCI主控模块和目标模块的功能,则可将复杂的PCI总线接口转换为相对简单的用户接口,用户只要设计转换后的总线接口即可。虽然这种方式不够灵活,但由于其对PCI协议的良好支持,以及提供给设计者的良好接口,都大大减少了设计开发的难度和周期,现有的PCI接口芯片主要有AMC公司的AMCCS59xx系列和PLX公司的PCI9805x系列。PLX公司的PCI9052就是一款较常用的总线接口芯片。

PCI9052芯片介绍

PCI9052是PLX技术公司继PCI9050之后推出的低成本、低功耗、高性能总线接口芯片,通过该芯片可以使多种局部总线快速转换到PCI总线上。

◇ 主要特点

(1)兼容PCI V2.1协议特性。PCI9052芯片与PCI协议V2.1版兼容,可支持低成本的从模式适配设备,也支持从ISA适配卡向PCI适配卡的转换。

(2)采用直接从(目标)模式传送数据。支持突发存储器映射和I/O映射方式,可从PCI总线到局部总线上存取数据。读写FIFO(先入先出)寄存器使得局部总线和PCI总线具有高性能的突发方式,PCI总线总是工作在突发方式,但是局部总线可以设置成突发方式或者连续单周期方式。

(3)带有中断发生器,可以从两个局部总线中断输入中生成一个PCI中断。

(4)PCI9052局部总线接口运行于TTL时钟,并可生成必要的内部时钟,局部TTL时钟与PCI时钟异步工作,并允许局部总线独立于PCI时钟工作,其缓冲PCI总线时钟(BCLKO)可与局部总线时钟(LCLK)相连。

(5)PCI9052局部总线配置可编程。支持复用或非复用的8/16/32bit局部总线,芯片有4字节使能(LBE [3:0]#)、26根地址线(LA[27:2])和32/16/8bit数据线(LAD[31:0])。

(6)支持先读模式、即预取数据可从PCI9052内部的FIFO寄存器读取,用以代替局部总线,但地址必须是前一条地址的后续地址,且应为32位宽度(下一地址=当前地址+4)。

(7)所有控制、地址和数据信号都可由PCI9052直接生成,用于驱动PCI和局部总线,而无需额外驱动电路。

(8)带有串行EEPROM接口,可用于加载配置信息,这对于装载一个特定的适配设备信息(网络节点号、厂商类型码和片选等)是很有用的。特别是将PCI9052转换为ISA接口模式时,串行EEPROM是必需的。

(9)提供了四个局部片选信号,其基地址和每一个片选的范围可由串行EEPROM配置,也可由主控制器在线编程。

(10)具有五个局部地址空间,基地址和每一个局部地址空间的范围可由串行EEPROM配置或由主控制器在线编程。

(11)支持Big Endian和Little Endian字节间的转换。当局部总线是16位宽度或8位宽度时,PCI9052同时支持Big Endian字节模式转换为字或字节宽度。

(12)为了匹配以前的接口读/写(RD#/WR#)信号,可以从时钟周期的开始延时(例如ISA总线接口)。

(13)附加的LRDYi#(local ready input)握手信号可用于产生各种等待状态,PCI9052内有等待状态发生器(读/写地址到数据、数据到数据和数据到地址之间)。

(14)局部总线预锁存计数器可以编程为(无预锁存)4、8、16或连续值(预锁存计数器关闭)模式,如果使用了连续地址(必须是32位),则预锁存数据可以作为缓冲数据来使用。

(15)PCI9052兼容PCI V2.1协议延时读的4种模式,即PCI读和写刷新模式、PCI读无刷新模式、PCI读无写模式和PCI写模式。

(16)带有一个可编程PCI读写重试延迟计时器,可以为PCI总线产生一个重试信号。

(17)带有ISA逻辑接口模式,支持PCI总线到ISA总线的单周期存储器(8位或16位)读写和I/O访问。

(18)支持PCI目标锁定机制,PCI主控设备可以通过锁定信号独占对PCI9052的访问。

(19)PCI总线传输速率达132MB/s。

◇ 结构组成

图1所示是由PCI总线接口芯片、局部总线接口和串行总线接口组成的接口电路。

点击看大图

◇ 器件功能

PCI9052作为总线目标接口芯片,可为非PCI设备与PCI总线提供数据通道,PCI9052的主要功能如下:

(1)初始化

上电时,PCI9052的内部寄存器将由PCI总线的RST信号复位成默认值,并在局部总线上输出LRESET信号,以检验串行EEPROM,如果安装了串行EEPROM且第一个16位字不全为1,则PCI9052用串行EEPROM中的值来配置片内寄存器,否则使用缺省值。

(2)复位

当PCI总线输入复位信号时,PCI总线全部输出呈高阻态,此时PCI9052整体复位并输出LRESET信号,PCI总线上的主控设备也可以通过软件设置杂项控制寄存器(CNTRL:50h)的第30位为1,来使PCI9052复位并输出LRESET信号,此时PCI和局部配置寄存器的值不变,PCI9052将一直保持复位状态,而且此时主设备只能访问配置寄存器,而不能访问局部总线。当CNTRL[30]=0时,系统将清除PCI9052的复位状态。

(3)串行EEPROM

复位后,PCI9052将检查串行EEPROM是否存在,一个有效的低电平START位表示串行EEPROM存在,START位为1表示串行EEPROM不存在,串行EEPROM的第一个字如不全为“1”,PCI9052便可用它进行配置,而如果串行EEPROM不存在或为空,PCI9052则采用缺省值配置,PCI9052总线上的主机可以对串行EEPROM进行读写,杂项控制寄存器(CNTRL:50h)的[29:24]位控制着PCI9052对串行EEPROM的位进行读写,将杂项控制寄存器位CNTRL[29]置1可以用串行EEPROM重新配置PCI9052。

(4)内部寄存器访问

PCI9052的内部寄存器为总线接口的设计与实现提供了最大的灵活性,这些寄存器可以分为两类:PCI配置寄存器和局部配置寄存器,两类都可以通过PCI总线或串行EEPROM来配置。

(5)直接数据传输模式

PCI总线上的主设备能直接访问局部总线上的从设备。PCI9052内部的配置寄存器可译码和映射这些要访问的局部地址空间,读写先入先出寄存器可支持PCI和局部总线之间的高性能突发传输方式。

(6)PCI中断(INTA)

通过局部中断输入(LINTil和LINTi2)或软件中断(CNTRL寄存器30位)可以产生一个PCI中断(INTA)通过PCI9052中断控制/状态寄存器可以禁止或使能某种中断,PCI9052中断控制/状态寄存器同时可提供各个中断的状态指示。

(7)局部中断(LINTi[2:1])

PCI9052提供有2个局部中断输入(LINTi[2:1],通过寄存器INT[2:1]),通过寄存器INTCSR;4Ch可将局部中断设置成沿触发或电平触发方式,局部中断能产生PCI中断。

(8)系统出错

如果PCI命令寄存器中的使能奇偶校验位,检测到一个地址奇偶校验出错时,PCI9052将产生一个SERR信号。

PCI9052的应用

PCI9052接口芯片作为通用PCI接口,其应用场合和范围是非常广泛的。随着PC机的发展,PCI扩展槽已成为PC机主板的基本配置,而带ISA扩展槽的PC机已经越来越少,ISA扩展槽在PC机中彻底地消失的日子即将到来,在作者所在公司设计生产的火灾报警控制系统中原有的ACTNET网络接口卡是基于ISA总线的插件,现在则要利用PCI9052芯片的ISA模式来对原来的板卡进行升级改造,以使原来的板卡在做少量改动的情况下可以插在PCI总线插槽中正常工作。

这种PCI插卡的借口示意图如图2所示,它主要由一片PCI9052、ARCNET网络控制器以及一些外围器件构成。

PCI9052的内部结构中包含了一个独立的ISA逻辑接口,用于为ISA总线到PCI总线提供一种简单的转换。它支持8位和16位数据宽度的ISA从设备,也可以是内存映射或I/O映射。同时可直接从先读模式来提高读取数据的吞吐量,一旦ISA接口模式被使能,PCI9052将只执行单个周期操作,应当特别注意的是,ISA接口模式下,串行EEPROM是必需的。

具体设计时,可以使用两种方法配置PCI9052以用于ISA接口模式:一是烧写串行EEPROM方法,即使用烧写器将数据写入串行EEPROM;二是热配置方法,也就是从PCI总线通过PCI9052芯片来烧写串行EEPROM。

配置注意事项

当为ISA接口模式进行配置时,必须注意以下几点:

(1)存取ISA接口引脚时,要参照PCI9052引脚的C/ISA模式引脚图来连线。

(2)空间0分配给ISA接口的内存存取。

(3)空间1分配给ISA接口的I/O存取。

(4)无论在空间0还是在空间1,ISA访问都是有效的。

(5)标准从周期能够用于访问空间2、空间3和串行EEPROM。

在设计电路板时,要严格遵循PCI规范,电源和地线要尽可能宽且电源滤波要良好,在芯片的每个电源引脚,最好接0.01-0.1μF的滤波电容,一般来说,PCI编码推荐做4层板,其实只要布线合理,做两层板也是可以的,在连线时,要注意PCI规范中提到的反射波信号,由于驱动信号的一半要靠反射波来提升,所以对信号线的长度要求为:64位卡的32位信号具备的最大连线长度是1500mil,64位扩展信号的附加信号的连线长度为2000mil,PCI的CLK长度2500mil±100mil,这些条件一定要严格遵守,尤其是CLK信号线长度的要保证在要求的范围内,否则,PCI插件工作将不正常,并会出一些怪现象,另外,PCI卡上最好在从槽上引的电源上多加几个电容,所有电源都必须退藕。用作上拉或下拉的电阻一般取值2.2KΩ即可。

还有一个要注意的是,PCI信号中prsnt1和prsnt2必须至少有一个接地,否则,系统肯定找不到卡,主板就是靠这两个信号来判断这个插槽上是否有卡,而其接法同PCI卡使用的功率有关,具体的含义如下(Open表示悬空,Ground表示接地):

prsnt1 prsnt2 含义

Open Open no card

Ground Open 25w

Oben Ground 15w

Ground Ground 7.5w

最后,由于PCI9052没有提供符合工业标准IEEE 1149.1边界扫描接口,PCI规范中涉及到的5个边界扫描信号中的TRST、TCK、TMS要悬空、TDI和TDO在板上要短接,以免扫描链被打断。

结束语

实践证明,PCI9052是一款优秀的PCI接口芯片,该芯片对基于ISA总线的接口向PCI的转换提供了极大的方便,设计者用它可避免直接面对复杂的PCI总线协议。因为,用PCI9052开发的产品,可减少外围器件,降低了开发难度,同时也缩短了开发周期,延长了产品的生命期。

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(989) | 回复(0)

0

关于投票
TMS320VC5402 HPI接口与PCI总线接口设计
TMS320VC5402 HPI接口与PCI总线接口设计
数字信号处理器DSP(Digital Signal Processor)是一种特别适合于进行数字信号处理的微处理器,凭借其运算速度快、功能强等特点,在各个领域的应用越来越广泛。但在很多场合下需要将DSP的各种外围设备同计算机连接,以实现数据传输。通常情况下可利用DSP的串口或I/O口来实现,但无论是接串口还是接I/O口都要占用DSP的硬件资源,同时数据的传输速度有时也不能满足系统的要求。为了解决这一问题,将DSP的HPI口通过PCl2040芯片桥接到PCI总线。本文以TMS320VC5402(简称VC5402)为例,介绍DSP的HPI口及其与PCl2040的接口设计。

1 HPI接口功能及特点

主机接口HPI(Host Pott Interface)是C54x DSP系列定点芯片内部具有的一种并行接口部件,主要用于与其他总线或CPU之间进行通信,其接口框图如图l所示。主机是HPI口的主控者,HPI口作为一个外设与主机连接,使主机的访问操作很方便。主机通过以下单元与HPI口通信:专用地址和数据寄存器、HPI控制寄存器以及外部数据和接口控制信号。HPI有两种工作方式:共用寻址方式(SAM)和仅主机寻址方式(HOM)。在SAM方式下,丰机和C54x都能寻址HPI存储器;在HOM方式下,仅能让主机寻址HPI存储器,C54x则处于复位状态,或者处在所有内部和外部时钟都停止工作的IDLE2空闲状态(最低功耗状态)。

VC5402是TI公司推出的一款性价比极高的16位定点处理器。它是C54x系列中应用比较广泛的一种芯片,有着丰富的接口资源,是一种集数据处理和通信功能于一体的高速微处理器。VC5402 HPI口是一个增强的8位主机接口,它通过HPI控制寄存器HPIC、地址寄存器HPIA和数据锁存器HPID来实现与主机之间的通信。主机通过外部引脚HCNTLO和HCNTL1选中不同的寄存器,则当前发送8位数据就到该寄存器。控制寄存器HPIC既可以被主机直接访问,又可以被DSP片上CPU访问。在使用上,由于主机接口总是传输8位字节,而HPIC是一个16位寄存器,所以主机向HPIC写数据时,需要发送2个相同的8位数据。地址寄存器HPIA,只能被主机直接访问。主机将HPIA寄存器视为一个地址指针,借助于HPIA主机可以访问VC5402全部的片上存储器。另外HPIA具有自动增长的功能,在自动增寻址模式下,一次数据读会使HPIA在数据读操作后增加1,而一个数据写操作会使HPIA操作前预先增加l。这样如果使能了该功能,则只须设定一次HPIA即可实现连续数据块的写入和读出。数据寄存器HPLD,只能被主机访问。如果当前进行的是读操作,则HPID中存放的是要从HPI存储器中读出的数据;如果当前进行的是写操作,则存放的是将要写到HPI存储器的数据。

2 VC5402的HPI口与PCl2040的接口设计

2.1 PCI总线及其实现方法

PCI局部总线是32或64位数据总线,32位PCI总线在读写传送中支持132Mb/s的峰值传送速率,64位PCI传送支持 264Mb/s峰值传送速率。对于64位66MHz的PCI总线,传送速率可达528Mb/s。PCI总线协议规范复杂而庞大,因此需要借助总线接口来实现。实现PCI总线协议一般有两种方法:一是用FPGA设计实现,但PCI协议比较复杂,因此难度较大;二是采用PCI总线控制芯片,如AMCC公司的S5933和PLX公司的PCI9052等通用的PCI接口芯片。TI公司专门推出了针对PCI总线和DSP接口的芯片PCI2040,它不但实现了PCI总线控制的功能,而且提供了和DSP芯片的无缝接口,因而大大降低了系统设计的复杂度,缩短了开发时间。

2.2 P012040与DSP接口设计

PCI2040足TI公司设计的专门用来实现C5000/C6000系列DSP和PCI总线进行接口的专用芯片,可以通过8位或16位HPI接口与C54x/C6xDSP实现无缝连接。PCI2040通过HPI接口与VC5402连接。PCI2040的HPI口为8/16位数据传输接口(8位还是16位,依据所挂接的DSP的类型)。主机作为传输的主设备,从机DSP不能发起传输。主设备PCI2040可以读/写DSP内存,DSP HPl口可以访问DSP所有的片上资源,PCI2040和VC5402之问的通信主要靠DSP的HPIA、HPIC、HPID三个寄存器完成。VC5402的HPI与PCI2040口的连接如图2所示。

点击看大图

PCI2040的数据总线HAD0~HAD7与VC5402 HPI口的数据总线HD0~HD7相连,用于主机和DSP传输数据。PCI2040芯片的HPI口的HCNTLl和HCNTL0引脚分别与DSP的HCNTLl和HCNTL0引脚相连,以实现其对HPI寄存器的访问。具体HPI寄存器的选择和访问模式的确定由DSP的HCNTLl和HCNTL0引脚的状态决定,表1给出了VC5402 HPI寄存器访问控制的情况。PCI2040带有独立的读/写选通信号HDS和HR/W,可以将PCI2040的HDS、HR/W引脚与VC5402的HDSl、HR/W引脚相连,实现主机对VC5402 HPI接口的读/写控制。当主机驱动HR/W为高时,读HPI;为低时,则写HPI。DSP HPI口的HPIEA、HDS2、HAS引脚通过10kΩ电阻拉高。

点击看大图

需要注意的是,VC5402的HPI接几是8位的,而DSP内部和PCI总线上的数据格式都是大于8位的,所以主机与DSP之间数据传输必须包含2个连续的字节。专用的HBIL引脚信号确定传输的是第一个字节还是第二个字节;HPI控制寄存器HPIC的BOB位决定第一个或第二个字节放置在16位字的高8位。

3 电路设计时应注意的问题

①VC5402电源采用3.3V和1.8V电源供电。其中:I/O采用3.3V;核电压采用1.8V供电;系统从PCI插槽取5V电压经 电压转换后,供DSP和其他芯片使用。

②VC5402的有些引脚必须接4.7kΩ的上拉电阻,没有用到的中断引脚也要接相同的上拉电阻。

③电源输入端跨接一个10~100μF的电解电容器,为每个集成屯路芯片配置一个0.01μF的陶瓷电容器。

结语

本文以VC5402和PCI2040为例.详细介绍了DSP的HPI接口和专用PCI接口芯片PCI2040的硬件接口。实践证明,利用PCI2040芯片实现C54x/C6x DSP的PCI总线可以大大减少相应的外围器件,增强系统的可靠性,同时降低系统开发的难度,缩短开发周期。

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(723) | 回复(0)

0

关于投票
基于DSP和PCI总线的通信数据采集系统
基于DSP和PCI总线的通信数据采集系统
作者:清华大学电子工程系(100084)阮 鹏  张 峥    来源:《电子技术应用》


    摘要:介绍一种基于DSP和PCI总线的移动通信数据采集系统。提出了一种双映射方式,成功地解决了DSP的主机通信接口(host port interface,简称HPI口)和PCI9052之间的通信连接。

    关键词:数字信号处理器 数据采集 PCI总线

随着移动通信突飞猛进的发展,移动通信的数据业务量急剧上升,监控大容量的移动数据业务成了电信运营商刻不容缓的需求。而移动通信数据的传输一般都是基于E1链路。因此从E1链路上采集通信数据成了移动数据业务监控最基础的一部分。

数字信号处理器能够高速地处理数据并具有强大的数字吞吐能力,在数据采集领域获得了广播的应用。而PCI总线也因为极高的数据传输效率、与处理器无关、能支持多个外设等独特性能,逐渐成为数据采集领域微机总线的主流。本文中的采集系统就是运用TI公司的TMS320C5410高速定点DSP和PLX公司的PCI9052 PCI总线接口芯片来搭建的。

1 系统功能概述

根据实际应用析需要,系统的主要功能有:

(1)可以同时采集处理一条E1链路上所有32个时际的数据;

(2)对数据进行链路层协议解包后,重新打包茂特定的格式,交给上层系统(PC机)保存或进一步处理。对链路数据状态和采集的统计信息进行监测,定时生成报表,交给上层系统实时显示;

(3)系统应具有尽量大的软件升级功能和灵活性,便于系统提高性能或者应用于其他通信业务数据的采集。

本系统的设计难点主要是如何实现DSP与PCI9052之间高效率的数据通信。如果PCI9052和数据采集芯片共用一条总线,势必会造成数据读写上的冲突,影响工作效率,因此在系统中PCI9052通过DSP上专门的高速主机通用接口(host port interface,以下简称HPI口)和DSP进行通信。但是HPI口总线是一个非常特殊的总线,它采用访问寄存器的方式来进行DSP内部数据的读写,HPI口单纯映射到PCI的I/O空间或者存储器空间,有不可避免的缺点。本文提出了一种双映射方法,成功地解决了这一问题,实现了DSP与PCI9052之间方便、高速的数据通信。

2 系统的硬件设计

整个硬件系统主要由DSP、PCI总线接口芯片和链路数据采集芯片组成。

本系统采用TI公司的TMS320C5410(以下简称C5410)DSP,该芯片的特点有[1][2]:

·处理能力可达到100MIPS;

·采用多总线技术,一条指令可以同时访问数据和程序空间,具有高度并行性;

·具有改进型的8位HPI接口,主机通过HPI口可以访问DSP系统的任何一个存储器单元,而且外部访问和DSP内部操作相互独立,互不干扰;

·软件可编程的等待状态发生器,可以灵活地用不同速度的器件组建系统。

PCI接口芯片采用PLX公司的PCI9052,它是一款面向低端应用的高性能、工作在目标模式下的PCI接口芯片。PCI9052的本地总线宽度可以通过编程配置成8位、16位和32位,字节顺序也可编程选择,它提供了4个本地地址片选和5个本地地址空间[3]。这些特征为用户搭建PCI板卡带来了极大的方便和灵活性。

数据采集芯片采用了PMC公司的PMC4351。它可以同时采集三个时隙上的数据,可以通过编程选择采集或输出T1、E1数据,支持HDLC协议,可以进行去除CRC标志、复帧标志等预处理,为每小时隙提供128字节的发送FIFO和接收FIFO,有很完善的处理器接口。为了能够同时采集一整条E1链路上的数据,本系统采用了11片PMC4351组成链路数据接口单元。各个芯片之间的接口利用CPLD来完成,它的可编程性为各个组成部分之间的控制和通信提供了相当大的灵活性,也省去了大量外部电路、保证了硬件的方便调试和稳定工作。

具体的硬件框图如图1所示。

3 DSP的HPI接口与PCI9052的连接

C5410上的增强型8位HPI口为上层系统提供了一个灵活访问DSP内部存储器的并行数据口。上层系统可以通过HPI口自由地读写DSP内部存储器中的任何一个单元。并且C5410为HPI口提供了专门的中断线,这样两个系统可以通过中断进行控制信息交互。HPI为上层系统的访问提供了四个端口,通过这四个端口上层系统可以读写HPI的地址寄存器(HPIA)和控制寄存器(HPIC);通过另外两个端口HPIDC和HPIDS来分别连续和单个读写C5410存储器中的数据。这四个端口由HCNTL0和HCNTL1来寻址,它们的地址分配如表1所示[2]。

表1 

HCNTL0 HCNTL1 描    述
0
0
1
1
0
1
0
1
HPIC
HPIDC
HPIA
HPIDS

本系统采取双映射方式来完成C5410与PCI9052的连接。第一个映射是将HPI口的四个寄存器分别映射到PCI空间的四个16位I/O口上。上层系统可以通过访问I/O端口的方式来访问这四个寄存器,而依照HPI口的工作流程就可以间接地访问C5410内部存储器。这四个寄存器和PCI9052本地I/O空间的对应关系如下:

HPIC——100H

HPIDC——104H

HPIA——108H

HPIDS——10CH

在这种映射方式下,上层系统可以通过PCI的I/O访问方式直接访问HPI口的四个寄存器,操作很直观。但是由于I/O访问无法进行突发传输,点击看大图大大限制了数据传输速度。

第二种映射方式是将HPIDC寄存器映射成PCI空间的一个长度为2000H的8位存储器块。上层系统对该地址空间内任一单元的读写操作都会被映射成对HPIDC的读写访问,因此从该空间内读取一个长度为2000H的存储器块就会被映射成对HPIDC的2000H次读取操作,效果等效于从DSP内部存储器中读取连续1000H个16位字。写入的情况也类似。由上述可以看出,实际上这种模式形成了一个PCI存储器空间和DSP内部存储空间之间一一对应的直接映射。

在这种情况下,数据在PCI总线上可以突传输,所以大大提高了数据读写速度。但是如果把四个寄存器都映射为这个模式,接口逻辑会变得非常复杂。

上述两种模式都有局限性,因此本系统同时采用了两种映射模式。利用I/O映射来访问控制、地址寄存器和单个数据口,而用存储器映射来访问连续数据口。

在这种配置方法下,PCI9052和HPI口之间的硬件连接,主要利用PCI9052的读写控制信号ADS#、LBE[3..0]#、LW/R#、LRDY#和部分地址信号LA[3..2]进行简单的时序和逻辑转换后来生成HPI口的读写控制信号HBIL、HDS1#、HCNTL0/1、HR/W#。由于HPI口的访问时钟是C5410的外部频率CLKOUT的5分频,所以PCI9052的本地时钟采用CLKOUT/5。

所有控制信号的接口逻辑和时序转换都是由CPLD来完成,具体的连接方式如图2所示。

4 系统的软件设计

数据的采集与预处理需要在C5410数据存储器中开辟三种存储块:一种是DATA BUFFER,它与PMC4351中各个时隙的FIFO一一对应,用于缓存每个时隙上采集到的消息数据;第二是DATA POOL(大小为1000H字),这是一个消息数据地,消息数据在DATA BUFFER中存满一整条消息后,就进行一些相应的预处理,加上一些TS包头后,形成一个新的消息包,存入到DATA POOL中;另外还要再开辟一个大小为1000H字节的存储块HPI RAM,用于上层系统通过HPI来访问,这样就将DSP的数据采集部分与上层系统通信部分相互隔离开来,互不干扰。在DATA POOL中存满数据后,就进行打包,形成一个大的数据包,交给HPI RAM,通过PCI总线交给上层系统,进行进一步处理。整体的数据流图如图3所示。

由于DSP芯片的中断引脚数目有限,而且中断工作方式容易造成各个时隙数据采集不均匀的情况,本系统采用了轮询的工作方式。

软件的具体流程如图4所示。

本文提出的双映射配置方法和DSP软件工作策略,成功地将C5410 DSP和PCI总线相互连接,接口具有逻辑简单、操作方便、效率高等优点。在C5410的CLOCKOUT配置成64MHz的前提下,两者之间数据传输速率理论峰值可达12.8Mbps,实际系统实现的平均速率达到了10Mbps。由于本系统采用的链路采集芯片的微处理器接口最高速率为2Mbps,限制了同时采集时隙的数目,从而限制了本系统的整体采集性能。因此采用更加高性能的采集芯片,可以充分发挥HPI口与PCI9052之间的高速数据连接,同时系统也可以升级到同时采集10条E1链路。

本文实现的数据采集系统工作良好,并已经在电信部门得到采用。本系统具有应用领域广、可升级能力强、使用方便等特点。该系统目前已经不仅仅用于采集移动通信数据,也开始应用于采集V5、七号信号等协议的数据,满足了系统功能设计的要求。


系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(693) | 回复(0)

0

关于投票
基于PCI总线的通用DSP信号处理系统的设计
基于PCI总线的通用DSP信号处理系统的设计
周永财,傅一平,李志能
(浙江大学信电系电子信息技术研究所,浙江 杭州 310027)
1 引言
1.1 DSP简介及基本特点
数字信号的处理离不开算法和实现手段。数字信号处理器(digital signal processor简称DSP)。是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器,是实现实时数字信号处理的有力工具。DSP目前广泛应用于模式识别,数字通信,信号处理,工业控制等领域。TI公司的TMS320C54X系列DSP有着以下的特点:采用先进的修正增强型哈佛结构,片内共有8条总线(1条程序存储器总线,3条数据存储器总线和4条地址总线);高度并行和带有专用硬件逻辑的CPU设计;高度专业化的指令系统;模块化结构设计;能降低功耗和提高抗辐射能力的新的静电设计方法。因此它能高速实时以及灵活地应用于图像处理、语言处理、频谱分析、数字滤波、实时控制 等各个领域。TMS320VC5402是54X系列中应用比较广泛的一种芯片,它有着丰富的接口资源,是一种集数据处理和通信功能于一体的高速微处理器。其操作速率为40~100MIPS。
1.2 PCI局部总线的性能和特点
PCI总线是一种不依附于某个具体处理器的局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权以加速数据传送。

2信号处理系统的功能构成
通用信号处理系统一般分为数据采集、数据处理和数据管理3个部分(图1)。采集部分可以采用通用的数据采集卡,数据管理部分则必须用 PC机才能完成。在信号处理系统中,最费时间,也即影响信号处理系统的实时性的瓶颈是数据的处理部分。数据的处理通常采用微机软件的方法, 但完全由PC机处理有个缺点,就是信号处理需要的运算主要是数字运算,因相对于通用CPU(GPP)来说,它是采用冯·诺依曼存储器结构,并不适用于数字信号的运算,不仅会造成处理速度慢,而且占用CPU时间过多,直接影响了PC机对数据的管理。因此,我们提出用另一种方法把信号处理部分从微机软件中分离出来,交给DSP处理,然后把DSP处理好的数据再传给PC机管理。该系统的功能构成如图1所示。这样不仅可以做到信号处理和数据管理并行进行,而且充分利用DSP对数字信号处理高速,并行的优势,提高了信号处理系统的实时性和稳定性。在对信号作连续的流水处理时,其性能优势更能得以体现,同时这也是一个廉价的产品,有着很高的性能价格比。

3 信号处理部分的硬件构成
信号处理部分接口电路的结构如图2所示。信号处理程序保存在主机中,在上电以后,自举加载到DSP中,并由固化在DSP的ROM中的 BOOTLOADER来完成。

主要的处理流程是:信号采集卡把模拟的信息转化为数字的信息,进入PC机;由PC机通过PCI接口把数字的信息传输到DSP,保存在SRAM中; DSP从SRAM中读取数据,对信号进行处理;然后,把处理后的数据再从PCI接口传回PC机,交给数据管理部分处理。
3.1 PCI接口
为了管理数据和寻址、接口控制、仲裁以及系统运行,PCI接口对单个目标设备需要至少47个引脚,对主控设备最少需要49个引脚。图3给出了按功能组划分的引脚,左边的为必需引脚,右边的为可选引脚。图中的信号的方向是对主控设备/ 目标设备的组合而言。总引脚数120条(包含电源、地、保留引脚等)。PCI的总线宽度有32位和64位。在本系统中,设备是32位,没有作64位扩展。


由于PCI总线时钟高达33MHz,信号线应按微波传输线对待,再加上接口逻辑本身的复杂性,设计难度很大。实现接口的办法:(1)用可编程逻辑器件EPLD或FPGA和用EPLD或FPGA实现。PCI接口的优点在于其灵活的可编程性。首先PCI接口可以依据插卡功能进行最优化,而不必实现所有的PCI功能,这样可以节约系统的逻辑资源;其次可以将PCI插卡上的其他用户逻辑与PCI接口逻辑集成在一个芯片上,实现紧凑的系统设计;再者当系统升级时,只需对可编程器件重新进行逻辑设计而无需更新PCB版图。(2)用专用PCI接口芯片实现。专用PCI接口芯片可以实现完整的PCI主控模块和目标模块接口功能,将复杂的PCI总线接口转换为相对简单的用户接口。厂商对PCI总线接口进行了严格的测试,用户只要设计转换后的总线接口即可。从某种意义上讲,PCI接口完成的是PCI总线和插卡上的从属处理器之间的消息传递。
由于以上原因,再考虑到系统开发的成本和周期,用专用接口芯片来实现PCI总线的接口较理想。接口芯片选用的是TI公司的PCI2040。PCI2040 是专门用来和54X或6X桥接的芯片,可以实现与TMS320VC5402的无缝接口 ;可以对端口进行访问读写。PCI2040提供了一个由PCI总线至插卡总线的直通通路(pass-thru)。PCI2040通过这些数据通路将复杂的PCI接口转换为相对简单的插卡总线接口。在本系统中,DSP中的资源映射到PC机的内存D9008000~D9008FFF和D9000000~ D9007FFF,中断请求为11。
PCI2040通过HPI接口与DSP通信,通信流程如下:PCI总线向PCI2040读写数据,PCI2040会根据这些命令在HPI口上发起相应的要求,这个通信过程可以通过编程首先初始化HPI控制寄存器HPIC以及主机地址寄存器HPIA,然后再从主机数据寄存器HPID中读/写数据来完成。具体的接口电路如图4所示:一块PCI2040最多可以挂接4片 DSP,以用于多DSP系统。


3.2 扩展空间
对信号处理系统来讲,DSP芯片所带的资源常常不能满足要求。这包括两个方面,一是程序空间,二是数据空间。对程序空间,可以选择不同的自举方式,充分利用PC机的资源。对数据空间有下面几种解决方法:(1)选择资源多的芯片,但这会引起成本的上升;(2)改进算法,边读取数据边处理;(3)用一个锁存器保存高位地址,自己扩展数据空间。这 里采用的方法是在用算法进行边读数据边处理的同时,用SRAM对数据空间进行了扩展。考虑到时序关系,以及TMS320VC5402只能与异步的存储器连接等因素。选用了TPS73HD318。它是 3.3V,1M×16大小的静态RAM,高低位字节可选,其读写速度达到12ns,能够与DSP的读写速度相匹配,无须另加接口时序。对于等待时间的产生,可以用软件的方法,对等待状态寄存器(SWWSR)进行设置。而产生的时延在调试时可以对DSP的时延寄存器进行设置, 以达到最大速度。硬件接口如图5所示。


4 DSP系统的自举
所谓自举(Bootload),就是在上电时从外部加载并执行用户的程序代码。加载的途径有:(1)从一个外部的EPROM或FLASH加载;(2)从主机通过HPI总线、并行I/O口、任何一个串行口、用户定义的地址热自举等方式加载。因为信号处理的程序一般都比较大,为了保证这个信号处理系统的通用性和可移植性,需把程序保存在主机中,用HPI总线自举。HPI是一个8位的并行口,PC机和'5402通过共享的片内存储器交换信息。选用HPI自举方式,需要把HINT和INT2引脚连在一起。复位时,Bootload使HINT置位,从而使 INT2置位。BootloaD读出中断标志寄存器(IFR)的bit2位后,即能从HPI口进行自举。与别的54X系列一个很重要的不同是:5402要检查数据存储器的OX7FH位以决定程序的入口地址,用户程序也要在复位完成后才能加载到HPI的RAM中。
5 驱动程序
因为PCI2040扩展了配置空间,所以,要通过 HPI口实现与DSP的通信,需要驱动程序。如果直接使用DDK来编写PCI设备的驱动程序,需要大量的Windows底层的知识,难度比较大。因此可以使用别的驱动程序的编写工具,如Vtools和 WinDrive。我们选用了WinDrive 。Jungo公司的WinDrive与其他驱动程序开发工具的最大不同是它可以在编程者不太了解Windows内核的情况下编写驱动程序。这样,可以把精力主要放在功能的实行上,同时用WinDrive写成的驱动程序只需作很少的修改就能很方便地适用于各种操作系统,如Win dows 9x, Window 2000,Windows NT以及Linux等。编写过程如下:(1)用WinDrive 的Drive Wiz ard 工具查找所要编写驱动程序的PCI卡,并用CREATING INF FILE 产生INF 文件,然后添加新硬件;(2)对PCI卡上的配置寄存器,I/O空间,内存范围,中断,片内寄存器进行设置;(3)生成源代码,对它进行功能添加,主要是实现对DSP 片内SRAM的访问。

 
本文摘自《半导体技术》
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(717) | 回复(0)
2Next >Total , Page /