NORWOOD, Mass. -- Analog Devices Inc. here claimed today to be the first to offer a commercially available C++ compiler for programming digital signal processor (DSP) systems.
C++ language support for ADI's VisualDSP development environment will make it easier for programmers not versed in DSP assembler language to work with the real-time processing advantages offered by DSPs, the company said. It will also speed the time to market for DSP-based systems such as wireless base stations and cell phones.
"We are taking a leadership position in DSP tools through applying the best programming techniques to address our customers' development needs," said Bob Conrad, vice president of the DSP Product Division at Analog Devices. "VisualDSP with C++ does just that."
DSPs traditionally have required assembly-language programming, which may be reaching practical limits of code size and performance as DSP applications become increasingly complex, according to Russ Rivin, manager of the Advanced Development Tools Group at Analog Devices. In addition, time to market is becoming a critical issue for systems using DSPs.
As a result, C is the high-level language of choice in place of DSP assembler. But C "wasn't structured for reuse, so it must be recompiled for each application," said Rivin. C++, which is an object-oriented extension to C, offers a logical alternative, but the compiler must be extremely efficient in order to take advantage of the DSP's programming advantages.
ADI's C++ compiler, fully integrated within the VisualDSP development environment, works across all of the company's DSP families: Sharc, TigerSharc, ADSP-218x and ADSP-219x DSPs. It will also work on the upcoming DSP being jointly developed by ADI with Intel Corp., which will be available later this year, according to Analog Devices.
ADI's VisualDSP with C++ supports the proposed Embedded C++ standard, which defines a subset of the full ISO/IEC C++ language standard. ADI's C++ compiler also supports templates and other features of the full standard that allow the developer to trade off program size for time to market. Predefined classes that support DSP extensions and hardware features are also provided.
"C++ hasn't been available in the mainstream for DSPs. This appears to be a first," said Will Strauss, president of Forward Concepts, a Tempe, Ariz.-based DSP market researcher.
Other DSP competitors such as Texas Instruments Inc. and Motorola Inc. have not offered C++ to their users, Strauss noted. And while DSP system designers may have created their own C++ environments over the years, these are completely ad hoc efforts that may not be supported or upgraded, Strauss pointed out.
"Companies are really trying to do DSP programming in high-level languages," said Forward Concepts' Strauss. "But the guy who wrote their compiler may not be around anymore."
In addition, C and C++ both are widely taught in engineering schools, while the industry is facing a shortage of qualified assembler programmers, he said.
"With increasing time-to-market demands, many new DSP applications are using a higher percentage of C programming language versus DSP assembler. Our implementation of C++ takes this a step further by providing easier access to specialized features in DSP architectures," said Geoff Millard, compiler manager for DSP tools at Analog Devices.
Key to making C++ practical for DSP programming was coming up with an efficient compiler. In February 1999, Analog Devices acquired Edinburgh Portable Compilers, a 15-year-old Scottish software company specializing in high-performance compiler technology and tools. EPC's long expertise provided the basis for ADI's compiler, particularly the aspect of encapsulation "Our C++ compiler provides a list of functions behind the scenes," explained Millard, who was CEO of Edinburgh Portable Compilers. "It recognizes the intrinsics to map to assembler."
"Customers have been wanting this," said Analog Devices' Rivin. Customers that prefer C to C++ "can work in that, too," he added. "Engineers can use DSPs without having to know DSP assembly language," said Russ Rivlin.
Analog Devices also hopes the C++ capability will open up DSPs to even more applications.
"By providing C++ support for DSPs to the DSP community and to the general C++ programming population, Analog Devices is delivering exactly the type of environment that DSP programmers have been looking for, and expanding the possibilities for DSPs in new and emerging systems," said Strauss of Forward Concepts. "The market really wants a higher-level language because of the time."
ADI is No. 4 in the DSP market, "but they are getting feisty in DSP and grew faster than the others last year," according to Strauss.
"In addition," added Millard. "with C++, developers realize a significant increase in time to market with the ability to efficiently work with complex signal processing data types, and take advantage of specialized DSP operations without having to understand the underlying DSP architecture."
"As memory sizes and program complexity increase, DSP software developers are beginning to run into issues that non-DSP C programmers ran into several years ago, most notably a lack of data encapsulation," Millard continued. "Because C++ is an extension to C, C++ has become the de facto programming language for many software projects in non-DSP applications. Analog Devices expects DSP applications will follow suit."
VisualDSP for the ADSP-2106x/2116x SHARC DSP family with C++, priced at $3,000, will be available in April, followed by C++ for the ADSP-TS001 TigerSHARC DSP family in May. C++ for the ADSP-218x and the ADSP-219x DSP fixed-point families will be available in October.