发信人: champaign (原野), 信区: ECE
标 题: DSP应用的结构和发展方向
发信站: 紫 丁 香 (Thu Jan 20 22:28:33 2000), 转信
电子技术应用
APPLICATION OF ELECTRONIC TECHNIQUE
1999年 第3期 No.3 1999
-------------------------------------------------------------------------------
DSP应用的结构和发展方向
许 伟
摘 要:简要概述了DSP与单片机的关系,然后详细介绍了DSP应用软件结构,并对D
SP应用的未来趋势——DSP和RTOS的结合进行了初步分析。
关键词:DSP 实时操作系统 循环调度
1 DSP、MCU、MPU的关系
微控制器MCU通俗的称呼是单片机,它与微处理器MPU是微机技术的两大分支。MPU的
发展动力是人类对无止境的海量数值运算的需求,速度越来越快。MCU的发展是为了满足
被控制对象的要求,向高可靠性、低功耗、低成本发展。一般MCU的引脚数在60以下,MC
t
U以8位机为主、32位机为
辅。有趋势提高MCU的运算功能,将DSP集成到MCU中,比如32位的MC68356集成了Motorol
a的DSP56002。
微控制器MCU一直存在两种基本结构:哈佛(Harvard)结构和冯诺伊曼(von
Meumann)结构,还可进一步讲是对应成复杂指令集计算机CISC和精简指令计算机RISC。冯
诺伊曼结构具有单一总线PRAM或DRAM都映射到同一地址空间,总线宽度与CPU类型匹配。
哈佛结构具有独立的程序总线和数据总线,CISC的指令一般是微码miccode,每条指令由
CPU解码为许多基本指令
,基于CISC的微控制器一般很复杂,都采用冯诺伊曼结构,所需要的程序存储器比RISC产
品少。微码在CPU产生而限制了CISC器件的带宽,其指令集也比RISC器件大。
68000的MPU是准32位的MPU,内部32位,外部总线是16位。苹果机就是用68000系列,
它的运行分成系统态和用户态,其设计是面向分时多任务或实时操作系统的,68000的总
线后来变成VME总线标准。到68020就是全32位了。
1991年IEEE1149.1即JTAG的公布满足了IC制造商的措施需求,也给ASIC、MCU、MPU、
DSP、PLD、FPGA等的用户带来方便。一般十万门以上的IC都有JTAG接口,1993年IEEE114
9.5对JTAG作了修正(5线接口)。IC的测试分成晶片级、IC封装级、电路板与系统极,JTA
G完成了前两者的测试。
适于68000系列的32位机的开发工具ICD32是一段扁平电缆,一端接IC的JTAG的5线接口,
一端通过25芯头(里面有GAL)接PC机并口。
传统上,微控制器MCU与微处理器MPU是两大分支,而DSP是MCU的一种特殊变形。但是
从实质讲,MPU多半是CISC,除了DSP之外的MCU也是CISC。而DSP是RISC。所以比较时更适
从实质讲,MPU多半是CISC,除了DSP之外的MCU也是CISC。而DSP是RISC。所以比较时更适
合DSP与MPU相比,MPU适宜于相同管理这样的应用中,以条件判断为主的应用,以软件管
合DSP与MPU相比,MPU适宜于相同管理这样的应用中,以条件判断为主的应用,以软件管nt
理的操作系统为核心的
产品,MPU的设计侧重于不妨碍程序的流程,以保证操作系统支持功能及转移预测功能等
。而DSP侧重于保证数据的顺利通行,结构尽量简单。
2 DSP应用的结构
DSP应用不同于主流的嵌入式系统应用,在那些应用中,你可以依赖一个通用的多优
先级核心(Kernel)的服务。而在DSP领域,该核心与DSP模块可能是两回事,尽管核心都应
该提供CPU资源、中断处理、通信机制等。所以,一个有丰富细节的核心和操作系统通常
是不加以考虑的,因为它
加在紧凑的DSP上实在勉强。开发者常常自已设计系统软件框架,作为目标代码的一部分
一起运行。开发者甚至没有意识到自已编写了一个小型操作系统。
可见,这样的核心/操作系统随着应用的不同是多种多样的。也需要有各种核心,支
持从简单到复杂的应用。至于是自已写核心或者从别的专业公司获得帮助,那是需要在效
率、紧凑、灵活、扩展性、安全等因素进行折衷考虑的。
2.1 核心的种类
一般来说,框架从简单到复杂分成:单任务和一个中断服务程序(ISR)、多个互相通
信的任务、多个分时循环的线程、多优先级的结构。
.单任务和中断服务流程ISR(基本核心结构)
单任务处理一个数据缓冲区,数据由一个ISR从特定的硬件取得(如AD器件)。系统首
先需要初始化,使能中断,建立外设的正确状态。ISR的编程则应该保护现场,ISR的错误
是调试很难检查的。通常一次ISR控制一个数据,而主任务需要一个数据缓冲区。解决办
法是双缓冲结构。主程序
于相同管理这样的应用中,以条件判断为主的应用,以软件管nt
的常见流程是:等待ISR填满缓冲区;处理缓冲区数据,释放已经处理完的缓冲区。为了
保证实时性,系统至少是双缓冲,因此主程序处理一个缓冲区时,ISR正在向另一个缓冲
区送数。这种情况下,不需要特别的同步机制,缓冲区的满就是同步机制,整个系统除了
主任务外就无所事事了,
主任务则占用一切DSP资源。故此模式效率非常高。
.通用的任务
系统有一个核心,它可以管理多任务,允许向系统列表加任务来扩展系统,占用如何扩展
则与应用有关。首先以一个自动应答机来说明这种扩展,ISR是一个,而多个任务串行执
行:音调检查、语音识别、话音压缩等。第一个任务控制CPU的缓冲区,执行完后主动彻
底放弃控制,移交下一个
任务。这种安排使得任务切换开销很小,因为你完全知道切换时,哪些状态需要保存而哪
些不需要。这种方式的毛病就是任何一个任务失控,整个系统就崩溃了,因为核心没有办
法取得对CPU的控制。
.多个执行线程以循环(round-robin)模式切换
对前一种结构的改进是使用一种更安全的任务安排,使各个任务的依赖关系弱化。这
需要一个基于时间段的任务切换器,在当前任务用完了规定时间片后将控制权移交下一个
任务。在循环结构中,各个任务是平等的机会。这样CPU不会在为一个坏的任务而瘫痪,
当然,安全的代价是你
当然,安全的代价是你
无法准确知道任务切换在什么时候发生,于是某个线程进入时的现场保护必须保护该线程
要使用的所有寄存器,并且在退出线程时全部恢复。
.循环(round-robin)线程与协作序列的组合
n)线程与协作序列的组合中,以条件判断为主的应用,以软件管nt
当处理一个较复杂但每个通路的处理是相同的时候,如语音信箱,无线基站,PXB等
。可以将多个通路按照通用的多任务方式处理,而每个任务内以循环线程组成,每个任务
是安全的,也就保证了整个系统的安全的。
.通用的解决:多优先组结构
这是灵活性最强的方式,广泛应用于浮点和定点DSP系统。多优先级可以认为是循环
方式的一种增强版,在资源可用时,高优先级的线程会被执行。多优先级核心应该小心使
用,因为很难确定实时执行序列,特别是如果还允许动态改变优先级的话,调试更加困难
。而且核心本身占用的C
PU资源对定点DSP而言是相当大的开销。
除了这些缺点,本结构是某些应用的理想选择。比如,系统中的任务有的是时间苛刻
的(高优先级),有些是可以后台运行的(低优先级),比如在蜂房电话中,DSP要迅速及时
处理带内信号信令,对用户的按键则可以较慢地响应。随着DSP和MCU的功能上进一步集成
,这种应用会越来越多
。
2.2 其他性能综述
.现场保护
任务切换中的现场保护(上下文保护)是影响性能的一个重要因素,它与中断响应时延
是矛盾的,在任务列表被访问和管理期间,中断通常需要禁止。所以,任务机制越复杂,
中断需要的时延越大。注意,在DSP领域,实时中断常处理几十kHz的信号,对中断响应需
要的时延是很敏感的。
.实时与非实时
.实时与非实时obin)线程与协作序列的组合中,以条件判断为主的应用,以软件管nt
对于基于核心的系统进行调试,将系统作为一个整体来调试需要满足两个基本要求:
需要系统全速运行时可以观察和管理系统;需要知道每次观察时影响的上下文。为达到此
要求系统必须增加额外开销。
DSP设计者并非处处需要实时调试工具,模块的很多部分可以单步调试。但是,大部
分问题(bug)都是整个系统全速运行时暴露出来的。Go-DSP的调试工具Code Composer的优
越是在系统全速运行时仍然可以观察和修改状态。实时调试是需要代价的,需要有Debug
Agent伴随应用代码,占用了CPU部分资源,当然在最终产品上,Debug Agent是完全去掉
的。
3 实时操作系统RTOS与DSP应用的结合
3.1 用于嵌入式微处理器的传统的实时多任务操作系统
目前的趋势是一个微处理器MCU从单一任务结构变成多任务的结构,初期软件设计是
在应用中增加一个任务调用循环作为主程序,随着软件规模上升和对实时性要求的提高,
RTOS作为一种软件开发平台,成为嵌入式系统领域的主流。
RTOS是一段MCU启动后首先执行的背景程序,贯穿系统运行的始终。RTOS的引入会增
加系统的代码存储器占用和运行时间。RTOS主要的性能指标是存储器占用、最小任务切换
加系统的代码存储器占用和运行时间。RTOS主要的性能指标是存储器占用、最小任务切换
时间、最大中断延时。这三个指标与RTOS自身的设计、微处理器的设计、C语言编译器的
性能有关。
3.2 实时操作系统RTOS与DSP结合
DSP软件开发越来越复杂,开发者会发现自已在两个矛盾的方向努力,一方面,设计
者必须对底层代码优化以满足实时应用,同时由于系统越来越复杂,需要高层次的设计手
段,包括使用库和第三方软件包。
对DSP应用提供RTOS支持,是DSP的性能和功能日益增加的必然结果。DSP正在从高速
数学引擎转变为包含主流控制器具有的特性的芯片,因此需要DSP设计人员集中精力解决
应用问题,而不是重复实施系统级功能。
DSP系统一般是两个极端,简单的单片DSP设计,用于Modem或峰房电话等。另一种是
高性能的多处理器DSP系统,用于大批输入流的实时处理。对于高档多处理器DSP系统设计
,有四个可能影响性能的主要因素:通过系统的数据流(流水线或星形);主系统总线(VM
E或PCI总线);RTOS的性
能,多DSP系统中,RTOS在每个DSP上运行于嵌入式模式,RTOS提供所需要的数据流和处理
性能,同时又允许主处理器继续在其固有模式(Win 95/NT/Solaris)中操纵整个系统;处
理来自A/D阵列的输入流的接口设计,最好方法是使A/D转换子系统与系统其余部分有效隔
离。
选择RTOS的关键考虑因素:
.保证其可靠性足以应付DSP负载。
.支持与NT或Unix主系统的互操作性。
。度胧 操作核心要足够小,� 应于有限的DSP存储空间。
.有面向DSP的高级指令集,便于迅速编程。
.必要时可以对低级程序码手动优化。
嵌入式RTOS的主要功能是为DSP之间的实时协调与通信提供一个标准化的环境,包括
中断处理和存储区分配等,以及和主机OS握手的所有功能。RTOS运行于DSP之上,所以必
须很小,还应该能进行分布操作和DSP任务的并行编程。RTOS的结构应该使程序员很容易
把单DSP任务变成分裂模式
把单DSP任务变成分裂模式 足实时应用,同时由于系统� 来越复杂,需要高层次的设计手t
,即能运行于多个DSP。RTOS应该能支持顺畅地把任务分摊。面向DSP的嵌入式RTOS的主要
功能是:多任务;动态进程;同步消息传递;信号机;时钟管理;等等。总之,目标是最
小的运行开销和最大的硬件控制能力。
作为Eonic公司的Virtuoso,可以用于浮点和定点DSP。用于TI
C4x和ADSP1060的版本的差别是有特殊的通信端口,便于多处理器系统的硬件开发。通过
提供透明的多处理,使软件开发也容易。Virtuoso对于单DSP的应用也提供了很多优越性
,从一开始开发,你就有一个完全的多任务环境,这就意味着你可以将应用分成几个小的
任务,更便于编程。有一
套完整的工具用于任务间通信,任务同步,管理存储区和定时器,中断管理。提供了一个
ISR1层支持嵌套中断。而TI缺省的ISR0层的中断服务中是不允许被中断的。如果系统中有
突发性的中断发生,就有可能丢中断。Virtuoso的ISR1层提供了可嵌套的中断机制,且响
应速度与ISR0相当。多
任务机制使设计人员能够充分发挥DSP的能力,因为可以使DSP是100%的忙碌,否则DSP可
能为了等待某个事件发生而处于空闲。特别是采用TMS320C6201,不使用RTOS是无法充分
发挥其性能的。Virtuoso的另一个优点是可移植性,编写的C代码可以使用到Virtuoso支
的另一个优点是可移植性,编写的C代码可以使用到Virtuoso支
持的任何DSP。
用于DSP的RTOS对加快开发进度、提供高级功能调用和标准的I/O库是非常有用的。许
多RTOS支持多任务并包含DSP库,使用它有助于可移植性和可维护性。另一方面,RTOS要
占用处理器的开销,耗费本来可用于信号处理的DSP周期。如果是对于单处理器,支持多
任务的开销可能会很可观
。另外,成本也是要考虑的因素。
作者单位:深圳中兴通讯有限公司(518004)
参考文献
[1]Virtuoso--the RTOS for DSP.Eonic公司,1998
[2]Embed rpocessor programming.Electronic Design, 1997(10)
[3]中兴新通讯.1998(3)
收稿日期:1998-07-30
--
感情是一个难以驯服的野马
理智却是一个严厉的马夫
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.228.139]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.595毫秒