You are here:  Articles


 
 
 
INSIDE DSP ARTICLES  

Current Articles | Categories | Search

Inside DSP on Tools: Software Building Blocks for Signal Processing Applications
By , 6/15/2005

System developers are obtaining more and more of their signal processing software from outside sources, making off-the-shelf software building blocks a vitally important element of the software development process. Figure 1 summarizes the types of software building blocks available today for signal processing applications.
200506iDSP_middle_fig1.gif

Evolving software demands
Off-the-shelf software building blocks are increasingly popular for a number of reasons. Perhaps the most important reason is that both signal processing applications and the processors that run them are becoming more complicated. At the same time, engineering teams are shrinking at many companies. These factors make it more difficult for development groups to create all of the software for an application on their own.

In addition, as signal processing technology proliferates into a growing range of application areas, many development groups that lack specialized expertise in DSP software need to incorporate signal processing functionality into their products. In some cases—particularly when signal processing is a minor component of the product—it is better to buy the signal-processing technology than to hire or train signal processing specialists.

Increasing time-to-market and cost pressures are additional factors, particularly for the growing number of signal processing applications targeting consumer markets. These pressures push designers to use off-the-shelf components to reduce development time, cost, and risk.

Last but not least, many products are based on standards. It is typically difficult to implement these standards in ways that differentiate the product. This is particularly true for applications based on well-established standards. For example, highly optimized G.7xx voice codec implementations are available for a broad range of processors. It is hard to create a new codec implementation that has a significant advantage—such as smaller memory footprint—over these existing implementations. “Reinventing” such commoditized components is a poor use of limited engineering resources. Instead, companies increasingly focus their efforts on aspects of the product where there is room to gain an advantage. For example, a company might be able to devise a post-processing filter that makes the output of the G.7xx codec sound better.

Potential pitfalls
Off-the-shelf software building blocks can provide many benefits, but they also have many potential drawbacks. A key problem is that the software may not match the application needs. As a simple example of this, there are many types of filters. The filter functions included in a library of building blocks might not be the right kind of filter for your application.

Getting various software building blocks to work together can also present serious challenges. In some cases, the processor vendor provides a “framework” to ease integration, but even then integration requires more than just snapping components together. We discuss this topic further at the end of the article.

It can also be difficult to get accurate information about the quality and performance of the available software building blocks. This is a significant problem because much of this software comes from small companies with limited track records—which makes it hard to know what quality to expect. The issue of quality is particularly critical for newer application areasf and for applications where new standards have been introduced. Software for these applications is typically less mature and therefore more likely to be buggy or poorly optimized.

Customer support can also be a stumbling block. When a problem arises, the software vendor may be slow to respond or unable to resolve the issue. And when a problem crops up in integration, it may not be obvious which software component is to blame. To make matters worse, the small companies selling signal processing software sometimes are acquired, shift their business focus, or go out of business—and any of these moves can cause them to cease supporting their earlier products.

Challenges can also arise for companies attempting to develop their own reusable software components. This is particularly true for larger companies, where there are multiple development groups with little interaction. A key challenge for companies developing their own software components is finding the right balance between completing the current product quickly at minimum cost and investing enough time and effort to create widely reusable components.

Previous Page | Next Page
 
 
BF_Arrow_Webseminar
DSPDesignLine
  
HomeAbout Inside DSPArticlesSearch ArticlesArchivesResourcesContact UsSubscribe to Inside DSPAdvertise with Inside DSP
Copyright 2006-2008 by BDTI  |  Terms Of Use  |  Privacy Statement
  |