集成工具提高嵌入式DSP系统设计与自动化程度
嵌入式DSP系统传统设计流程通常由概念到算法及算法到产品两个阶段构成,通常这两个阶段互相独立且由不同设计小组完成。
传统的设计流程里要用手工在两个阶段之间进行转换与衔接,这样容易出现错误而推迟产品的上市时间。本文介绍一种集成工具可以使设计与验证测试更加自动化,且具有更高效率,可减少产品缺陷。
过去几年以来,产品与系统在软件方面的功能不断增强,高强度实时要求越来越多。对设计工程师而言,为与竞争对手展开竞赛,争取更快将新产品投向市场,高效系统开发方法成为重中之重,对开发数字信号处理器算法的工程师而言尤为如此。此外,产品开发周期和生命周期不断缩短等因素,也促使工程师和设计经理对开发方法和软件工具进程进行全面重新评估。
产品漏洞会导致市场份额迅速下降,如果公司牺牲质量,那么其声誉会马上受到影响。产品工程师在实施由研发工程师设计的算法时,会遇到很多难题,其中之一就是将系统参数、测试向量以及其它数据从基于主机PC概念的开发工具用手工方式转向基于目标硬件的DSP代码开发工具。这种手工转化常常会造成错误,要在确认和测试中才能被发现,从而导致开发时间延长。市场调查显示,客户产品开发中常常有50%以上的时间是用于产品集成与测试。在这个阶段,省时的工具对产品功能可靠性、上市时间以及能否最终取得成功都有很大的影响。
在今天市场环境下,要将工程师的开发流程从概念发展至算法并最终推出产品,传统的产品开发流程已显得力不从心,新开发流程需要广泛的工具集成,保证数据以及其它信息能够动态共享以实现更高的工作效率。
传统DSP开发流程
嵌入式DSP系统传统设计流程通常包括两个主要阶段,即概念到算法阶段(由研发小组实施,其中包括算法开发与系统设计)以及算法到产品阶段(由产品开发小组实施,该阶段包括实际产品实现、目标编程和测试),如图1所示。
由于上面两个阶段常常是彼此独立的,并由不同的设计小组完成,而各小组的目标可能不一致,因此这种结构内部会有一些问题。此外,设计小组使用的工具还可能彼此不兼容,不能够整合在一起。
在多数情况下,研发工程师使用数字计算环境,可充分发挥算法开发、分析以及各种科学、数学或工程应用可视化功能。研发工程师常常以M或C代码创建算法,也可以为其算法创建测试向量(通常是文本或二进制格式的数据文件)。他们随后会在主机PC上运行算法进行模拟,以便分析并使算法响应可视化,目标是确保算法不仅能够独立于特定的平台进行工作,还能独立于任何物理存储器、速度或实时限制工作。当他们希望将设计转给产品开发小组时,他们将提交书面规范或实际的C或M代码,并请开发小组就具体的DSP目标实施算法。
在产品开发方面,大多数DSP工作小组都使用集成开发环境(IDE),小组的目标是使用书面的规范实施算法、测试算法,并在最终产品中进行确认,以保证其满足系统的实时、速度、功率及内存等限制条件。产品开发小组常常依靠手工方法从事上述任务,因为直接根据规范或算法测试向量进行产品测试通常没有便捷路径可循。在遇到复杂系统时,手动转换和确认会延缓产品开发,影响产品的成功。
产品工程师为防止出现前后脱节而采取一些手工方法包括:
1. 手工复制并粘贴M文件测试向量(如100个值的阵列)至IDE的C代码(或汇编)文件中。但是工程师必须注意,应复制所有数据不能遗漏,还必须添加正确的语法以保证兼容性(如逗号、方括号、圆括号等);
2. 使用典型IDE中的“载入数据”命令手工从PC硬盘向DSP存储器载入整个数据文件。工程师必须注意应以人工方式或通过脚本(需要编写并调试)对数据进行重新格式化,以保证文件格式和随后的语法能够匹配;
3. 可使用IDE的文件I/O功能(如fscanf()功能)以便以自动方式像上面第二种方法一样载入文件,但是有关文件格式与语法类型的问题仍然存在。传统文件I/O带来的另一大主要问题在于,工程师必须在DSP本身上面运行庞大而低效的C库,这将导致代码膨胀,不仅浪费内存,还会拖慢DSP的速度,使其丧失实时工作性能;
4. 利用外部硬件生成信号作为系统的输入(如音乐或正弦波),以观察系统是否能够实时响应。与前面所说测试向量和数据已经数字化的情况不同,这里的数据是模拟的,必须通过A/D转换器,这就会带来更多的错误和不一致性,因为它不再是纯粹的数字信号,导致内在的模拟失真。此外还会带来额外的变量,造成更多不确定性,也使寻找问题根源更加困难重重。集成工具提高效率与生产率
集成度更高的开发流程能以更动态的方式自动执行上述任务。
我们不妨给出
- 低功耗嵌入式实现的方方面面(04-30)
- 功率与控制的结合使LED照明方案灵活、简便(10-20)
- S3C2440A嵌入式手持终端电源管理系统设计(01-11)
- 几种实用的低电压冗余电源方案设计(01-26)
- 基于先验预知的动态电源管理技术(03-28)
- 基于CAN通信的电源监控系统的设计(04-06)