for SOC (system on chips); testing protocols and tools; networking and instrumentation procedures and protocols; and also a sound knowledge about the basics of analogue and digital designs. Try developing an idea about handshaking signals developed for communication channels, interface cables for various common interface standards such as RS-232-C, RS-485, RS-422 and RS-423. Know the processors to understand the processing. You need to have intimate knowledge of processor architectures—pipelining, VLIW/multi processing, memory systems and hardware-software interfaces. In fact, along with DSP programming you may need to participate in architecture specification.
As Mishra says, “A fresh graduate in the industry is expected to have basic knowledge of DSP architecture and a strong programming skills and simulation/testing fundamentals background. A good knowledge of algorithm development, system modeling and niche technology areas like communication is always an added advantage. Based on the individual potential, a fresher can take up roles in system modeling and simulation, DSP application design and coding and optimisation. The competency requirement for this field is to develop algorithms and applications based on DSPs (both real time and non-real time), good programming skills and understanding of DSP architectures. Most of the engineers available today have background in software engineering and they lack the combination of skills required to become a DSP engineer.”
Hold your feet tight
A DSP-based application development needs a mix of competitive skill sets that comprises system modeling, algorithm development, application coding, integration, testing and validation. Typically, a team comprises engineers with different experience levels with various skill sets. Today, there are additional technologies used for signal processing including DSPs, powerful general-purpose microprocessors, field-programmable gate arrays (FPGAs).
For a successful career in DSP-related applications, an engineer should have a sound understanding of the DSP architectures and coding skills (Matlab, Assembly, C programming and scripting). Apart from these basic skill sets an experienced DSP engineer needs to develop requisite knowledge and understanding of processors architecture like superscalar, VLES, VLIW, SIMD and concepts like branching, threading, context switching, multithreading etc. The need for real-time system design is increasing with newer technologies and applications coming in the market. This requires an understanding of real-time operating systems, memory management, BUS standards, etc. System integration and testing is another area in DSP, which requires a good understanding of the overall system design and validation needs. This requires test scripts writing and handling testing equipment like logic analysers, oscilloscopes, spectrum analysers, etc. A hands-on experience on DSPs from companies like TI, Analog Devices, Freescale, Infenion, etc, definitely helps in the long run.
Start with the design for DSP applications. Like any other design, a DSP design also goes through a number of stages and iteration before the final product is out. However, fundamentally, the process may be represented in three steps—algorithm development and design, software coding and hardware implementation.
In order to get started with DSP software development, you need a number of basic tools like basic text editor, assembler, linker, dubug environment, downloader and hex conversion utility. These allow the conversion of program to a form understandable to the DSP and then it is downloaded to the target device. You have to be aware of assembly-level programming and the C language, and even C++.
A DSP professional is expected to be well-versed with real-time programming, signal processing algorithms and time constraints. Further, you need to know how a DSP algorithm gets converted from a program written on paper to a working solution incorporating both hardware and software and other algorithmic issues like filter design and FFT design.
A complete package of tools like Matlab, system view, etc, may be useful as they allow an engineer to place functional blocks representing algorithmic operation into a block diagram of the system. Even they can be redefined according to a specific DSP requirement.
Delve a little deeper, you’ll find that most of the design time involved in developing a DSP-based product is spent in sorting out small issues like AC-coupling input, auto leveling output, or figuring out how to compute a square root. A DSP engineer should learn how to solve these petty problems by a careful choice of DSP algorithms related to logical operation, arithmetic operation, filtering and liner scaling algorithms.
To do this you must be able to understand digital filter design, spectral analysis, specialist applications like signal averaging, and automatic level control along with the general-purpose algorithms. Put an emphasis on numerical methods like fast fourier transform (FFT) and the relationship between time and frequency domain representation.
Basically, you are expected to understand the theory behind the working of these algorithms.