<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Inband Software</title>
	<atom:link href="http://inbandsoft.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://inbandsoft.com</link>
	<description>We develop custom DSP software for half the cost</description>
	<lastBuildDate>Mon, 01 Nov 2010 04:34:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Digital Biomedical Signal Processing</title>
		<link>http://inbandsoft.com/dsp-info/articles/digital-biomedical-signal-processing/</link>
		<comments>http://inbandsoft.com/dsp-info/articles/digital-biomedical-signal-processing/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 17:23:14 +0000</pubDate>
		<dc:creator>Pablo Deliyore</dc:creator>
				<category><![CDATA[Biomedical Signal Processing]]></category>
		<category><![CDATA[Digital Signal Processing]]></category>

		<guid isPermaLink="false">http://inbandsoft.com/?p=382</guid>
		<description><![CDATA[Digital Signal Processing (DSP) is an engineering discipline that enjoys many applications, including medicine. Biological signals are data registers that convey information about a biological process in a given period of time (i.e. a heartbeat).  The interpretation of these signals is of significant value for diagnosticians, clinicians and researchers.  DSP has been the basis on [...]]]></description>
			<content:encoded><![CDATA[<p>Digital Signal Processing (DSP) is an engineering discipline that enjoys many applications, including medicine. Biological signals are data registers that convey information about a biological process in a given period of time (i.e. a heartbeat).  The interpretation of these signals is of significant value for diagnosticians, clinicians and researchers.  DSP has been the basis on which many artificial intelligence and health-oriented technologies have found a way to establish a leading role in biomedical engineering’s evolution.<span id="more-382"></span></p>
<p>The human body is a living source of many kinds of signals. Nerve and muscle cells generate electrical signals like an EEG (Electro Encephalograph). Blood flow and breathing produce biomechanical signals that  provide information about respiratory and circulatory systems.  Acoustic signals from a heart valve or a breathing process are also very useful for determining the state of a patient.</p>
<p>When dealing with biomedical signals it is important to classify them as non-periodic (may have patterns, but never fully periodic) and finite signals (it is impossible to register a patient’s data for ever).  This means they must be studied as stochastic signals, with a seemingly aleatory behavior.  This forces biomedical engineers to make use of  advanced DSP theory and concepts in order to obtain the best frequency resolution and event recognition algorithms.</p>
<p>Bio-signals  in the human body are very electrically weak.  This makes them very susceptible to noise. Noise may come from the same electrical devices that are performing the signal acquisition and processing, and also from all the other signals that the human body is emitting.  Muscles, neurons and organs are simultaneously working, so previous knowledge of the signal under analysis  and it’s environment is mandatory.</p>
<p>Adequate hardware selection helps greatly to improve the quality of the signal.  Depending on the signal to be analyzed, the sampling frequency of the Digital Signal Processor must live up to the working frequency of the signal.  Sensor selection and sensitivity is important.  Flux sensors,  microphones, heat sensors, accelerometers and electrodes are commonly used in biomedical research and are available in the market.</p>
<p>It is also important to never underestimate solutions that an intelligent software design has to offer. DSP engineers, through software design, can greatly improve a signal’s quality as well, by using digital noise reduction methods and frequency domain algorithms to the point of even avoiding the need for invasive sensors.</p>
<p>DSP has proven to be so useful and reliable for monitoring patients that most biomedical devices today make good use of this technology to perform real-time and offline analysis of this information.  Patient monitors include automatic control systems based on the analysis of a real-time incoming signal acquired directly from the patient.</p>
<p>Researchers today are exploring new possibilities in the development of new technologies, for example EEG signals (produced by neural activity in the brain) are used for epileptic spikes detection algorithms and brain-machine interfaces for intelligent prosthetics control.  Also, advanced pattern recognition techniques are used for DNA sample analysis, biomedical image processing, and many more applications.</p>
<p>The ever growing and merging fields of science like medicine, biology and engineering, keep opening doors for many  innovations and solutions for today’s obstacles. DSP definitely embraces the possibilities that this merging of knowledge has to offer.</p>
<p><em>Inband Software can assist you with your biomedical signal processing project.  Our expert staff understands the unique challenges of processing biomedical signals, and can help you select sensors, processors, develop algorithms, and implement and optimize them for your specific hardware.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://inbandsoft.com/dsp-info/articles/digital-biomedical-signal-processing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DSP Software System Design</title>
		<link>http://inbandsoft.com/dsp-info/articles/dsp-software-system-design/</link>
		<comments>http://inbandsoft.com/dsp-info/articles/dsp-software-system-design/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 21:54:20 +0000</pubDate>
		<dc:creator>Javier Tapia</dc:creator>
				<category><![CDATA[DSP Software Development]]></category>
		<category><![CDATA[DSP Software Optimization]]></category>
		<category><![CDATA[Processor Selection]]></category>

		<guid isPermaLink="false">http://inbandsoft.com/?p=339</guid>
		<description><![CDATA[The development of DSP Software follows the regular cycle of any general purpose SW project: collecting application requirements, algorithm development, coding and testing.  However, in DSP designs, certain specific tasks need to be added to complement the design. The reasons for the extra tasks come from the need to run DSP applications in real-time, with low [...]]]></description>
			<content:encoded><![CDATA[<p>The development of DSP Software follows the regular cycle of any general purpose SW project: collecting application requirements, algorithm development, coding and testing.  However, in DSP designs, certain specific tasks need to be added to complement the design. The reasons for the extra tasks come from the need to run DSP applications in real-time, with low cost and low power consumption, among other reasons.<span id="more-339"></span></p>
<div id="attachment_340" class="wp-caption alignnone" style="width: 515px"><a href="http://inbandsoft.com/wordpress/wp-content/uploads/DSP-sw-chart.gif"><img class="size-full wp-image-340" src="http://inbandsoft.com/wordpress/wp-content/uploads/DSP-sw-chart.gif" alt="" width="505" height="383" /></a><p class="wp-caption-text">DSP Software System Design</p></div>
<h3>Requirements</h3>
<p>Any signal processing application is described by a set of equations, sequences of operations and data flow diagrams that describe inputs and outputs  (for instance, an mp3 audio decoder, with the compressed mp3 clip as input and the PCM data as output, and the decoding and reconstruction algorithms).</p>
<p>Along with the description of the algorithm, the system requirements need to be specified (following the same mp3 example:  sampling rate, memory usage, CPU usage in term of MHz, etc.).</p>
<h3>DSP Selection</h3>
<p>Using fixed-point DSPs instead of floating-point processors may impact the power consumption, cost and development time of the application.  Fixed-point DSPs in contrast with floating DSPs, have a more pronounced limitation in the way they represent data.  This limitation also works in favor of this type of processors as its internal hardware design is simpler than floating point equivalents and its power needs are a fraction of an equivalent full precision floating point.  For example, all current mobile multimedia phones use a type of fixed-point DSP, while floating point DSPs find their niche in applications where power consumption it is not an issue, for instance, MRI machines.</p>
<h3>Algorithm Development</h3>
<p>Once the system requirement and algorithm have been defined, the next step is to use high level algorithmic system simulation tools, such as MATLAB or Octave, to simulate and verify expectations.</p>
<h3>Fixed-point Development</h3>
<p>Development time is normally higher, as the algorithm will need to be translated from infinite precision to fixed point precision.  While floating point processors can handle the almost infinite precision of a float data type, fixed point DSPs only handle 8, 16, 24 and/or 32 bits, so any floating point operation needs to done with integer equivalents. In some specific cases, pseudo floating point arithmetic needs to be implemented. All this data representation limitation brings another application requirement, such as SNR tolerable errors. This SNR factor is the ratio between the floating point implementation output over the rounding noise error at the output, which is the difference between fixed and floating point algorithm implementation.</p>
<h3>Coding</h3>
<p>When the system simulation is completed, the next step normally is to have a system implementation on a high level language like C or C++.  At this level, current C/C++ compilers will create the appropriate code to have the code running on a software simulator or the final hardware if one is available.</p>
<h3>Optimization</h3>
<p>At this point is when performance may become an issue. Current C/C++ DSP compilers create very efficient assembly code. In the past, this was not the case and coding DSP assembly provided much better performance (5 to 2 times better) than C/C++ compiler-generated code. Creating assembly code is a very intensive and demanding job. Today, that margin of difference has been reduced (1.5 to 1.1 times better), so the main optimization work has been concentrated mainly on algorithm optimization, which is normally done in C/C++, and assembly coding of the more demanding data bottlenecks.</p>
<h3>Integration</h3>
<p>Having all the code in C/C++ offer flexibility as the same code can be ported to a different DSP just by compiling it; the drawback is that the performance highly depends on the compiler’s efficiency.  Having all the code in DSP assembly, may provide a very good performance for a specific DSP, but it requires a lot of development time and migrating to a different platform become a complicated process.  The trade-off approach is to use a combination of both; C/C++ code for most of the system and assembly code for the more demanding functions. Even inline assembly will help.</p>
<p><em>Let Inband Software assist in your DSP design project.  Our experienced DSP managers will guide you through the steps necessary for a successful DSP project.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://inbandsoft.com/dsp-info/articles/dsp-software-system-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Programming Software for DSPs</title>
		<link>http://inbandsoft.com/dsp-info/articles/programming-for-dsps/</link>
		<comments>http://inbandsoft.com/dsp-info/articles/programming-for-dsps/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 18:39:44 +0000</pubDate>
		<dc:creator>Inband Software DSP Experts</dc:creator>
				<category><![CDATA[DSP Software Development]]></category>
		<category><![CDATA[DSP Software Optimization]]></category>

		<guid isPermaLink="false">http://inbandsoft.com/?p=330</guid>
		<description><![CDATA[Digital Signal Processors (DSPs) are CPUs that have been designed  especially for the high computational requirements of digital signal  processing applications.  DSPs are commonly found on consumer  electronics like cameras, printers, modems and phones.  They are well  suited for applications that involve processing images, video, audio  signals, and in digital [...]]]></description>
			<content:encoded><![CDATA[<p>Digital Signal Processors (DSPs) are CPUs that have been designed  especially for the high computational requirements of digital signal  processing applications.  DSPs are commonly found on consumer  electronics like cameras, printers, modems and phones.  They are well  suited for applications that involve processing images, video, audio  signals, and in digital communications. They include a number of  architectural features that, when fully exploited, make it possible to  execute DSP applications several times faster than if they were running  on general purpose processors.<span id="more-330"></span></p>
<h2>DSP Architectural Features</h2>
<p>While  different DSP processors have varying instruction sets and other  features, most DSPs tend to share certain common characteristics:</p>
<h4>Custom  Instructions</h4>
<p>DSP processors include special instructions to handle common  signal-processing tasks.  For example, a Multiply-Accumulate (MAC)  instruction is popular for programming signal processing filters.  Multiplications with  saturation arithmetic can save on the burden of checking for overflow  conditions.</p>
<p>Most DSPs will also have SIMD (Single Instruction &#8211;  Multiple Data) instructions that can operate on multiple data elements  in parallel.  The way this works is that they divide the registers into  smaller segments suitable for the application. For example, video data  can be represented using 8 bits per color, so a single 32-bit register  can hold 4 pixel colors.  There are SIMD instructions to perform  parallel addition, subtraction, min, max, and various types of  multiplications on all four elements at once.  In this example, the  parallel operations would provide up to a 4-fold speedup.</p>
<p>The  actual instructions available on each processor vary from processor to  processor.  Some instructions can be as complex as one that performs the  sum of absolute differences of two vectors of numbers, which can  speed-up video encoding applications tremendously.</p>
<h4>Long  Registers</h4>
<p>The concept of parallel processing using SIMD instructions  is made even more powerful by using long registers.  Some DSPs  provide 64-bit and even 128-bit register sets.  These registers can be  used with SIMD instructions to provide up to 16-fold speedup of certain  applications.  The actual speedup obtained depends on the size of the  data elements, and on the parallelism available in the algorithm  itself.</p>
<h4>DMAs</h4>
<p>Signal processing applications need to move  large amounts of data through memory.  DSP processors will often include  advanced Direct Memory Access (DMA) hardware blocks that can offload  the movement of data from the CPU.</p>
<h4>On-chip Memory</h4>
<p>In order  to keep the CPU operating at peak speed, it should be possible to read  data from memory without any wait states.   External memory (DRAM) tends  to be much slower than the CPU frequencies, so DSPs will always include  some amount of fast on-chip memory.  The memory can be arranged either  as a data cache, or as software-controllable on-chip memory.</p>
<p>When  using a data cache, the first time a piece of data is accessed, the  processor will stall until it can be read from main memory.  But  subsequent accesses will be read from cache without any stalls.  Data  gets copied out of cache into main memory automatically when the cache  gets reused, or at the request of the program.</p>
<p>To utilize  software-controllable on-chip memory, the program will first need to  copy the data into on-chip memory (possibly with the DMA engine) before  it can be utilized.  Similarly, the results need to be copied back into  main memory using the DMA, or word-by-word copes.</p>
<h4>Multiple  Instructions per Cycle</h4>
<p>In addition to all of the complex  instructions available, some of the most powerful DSPs can issue  multiple instructions per cycle.  This can be done in one of two ways:  superscalar processors utilize special hardware to dispatch instructions  to one of several execution units, and coordinates the access to a  common set of registers.  The other way to issue multiple instructions  per cycle is to utilize Very Long Instruction Words (VLIW).  In this  case, the compiler is left in charge of deciding which instructions can  be issued at every cycle and coordinate when the results of each one are  available.   The instructions for each execution unit are combined into  one very large instruction per cycle, thus the name VLIW.</p>
<p>There  are superscalar DSPs in the market with up to four instructions issued  per cycle, and VLIW processors with up to eight issued instructions per  cycle.</p>
<h2>Programming Languages for DSPs</h2>
<p>Most DSPs are  programmed in special versions of C that have been extended with  &#8220;intrinsics,&#8221; which permit the programmer to request specific custom  instructions available in the processor.   In addition, the C language  needs to be extended to support longer registers for SIMD operations.    DSP vendors will almost always provide support for C++ programming, but  it is not very popular in the DSP software industry.</p>
<p>To fully  exploit the architectural features of DSPs and realize the speed  potential, the software needs to be optimized by hand.  Compilers are  not capable of generating the complex instructions available in DSPs  from regular unoptimized code.</p>
<p>Some DSP software programmers will resort  to assembly programming for DSPs.  While it cannot be denied that a  well-written assembly program cannot be beat by any C program, assembly  programs are extremely difficult to debug and maintain, especially on  VLIW architectures.  At Inband Software we do not favor  assembly-programming of DSPs; instead we recommend utilizing  optimization techniques in C to approach the performance that would be  possible in assembly.</p>
<h2>Optimizations</h2>
<p>Each software application is  different, and therefore benefits differently from various optimization  techniques.  But the following techniques are generally useful when programming for DSPs:</p>
<h4>Use Custom Instructions</h4>
<p>Using the complex  instructions available in the processor can replace many general  instructions.   One needs to pay attention to the latency of each  instruction to make sure that it is still faster to execute a single  complex instruction than multiple simple ones.</p>
<h4>Loop Unrolling</h4>
<p>This  technique is very helpful on VLIW processors.  It consists in reducing  the number of iterations by a factor of 2 or higher, and duplicating the  code inside a loop.  The result is that there are more instructions  inside the loop for the compiler to work with, which tends to produce  better instruction schedules.</p>
<h4>Software Pipelining</h4>
<p>In this  technique, the execution inside a loop is broken in half.  Half of the  first iteration is done outside the loop,  half of the last iteration is  done after the loop.  The loop then performs half of the processing for  one iteration, and half of the processing of the next iteration.   This  technique breaks the data dependencies inside the loop, and permits a  more compact schedule of instructions.</p>
<h2>Fixed-Point Programming</h2>
<p>Some  DSPs include a floating-point unit.  But many don&#8217;t, so programmers  need to utilize fixed-point representations to program arithmetic  algorithms with fractional data.   The basic idea is to assign a fixed  number of bits to the fractional portion of the quantity, and the rest  to the integer portion.  For example, the number 1.0 can be represented  with 4 fractional bits as binary 10000, and 0.5 would be 1000.  As long  as they share the same number of fractional bits, two numbers can be  added and subtracted using integer instructions.   Multiplications work  very similarly, but they produce twice the number of integer and  fractional bits, so the results may need to be shifted in order to  return to the desired number of fractional bits.</p>
<p>Optimizing software for  DSPs is a laborious process, but well worth the effort.  Properly  optimized, a DSP application will fit in a smaller and cheaper DSP  processor than it would require on a general purpose processor.   DSP  programming is a specialized skill that takes years to master.</p>
<p><em>Inband  Software can help optimize your applications on DSP processors.  Our  expert DSP programmers are intimately familiar with most DSP  architectures and can help you achieve the maximum potential of your DSP  processors.</em> ﻿</p>
]]></content:encoded>
			<wfw:commentRss>http://inbandsoft.com/dsp-info/articles/programming-for-dsps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Select a DSP Processor</title>
		<link>http://inbandsoft.com/dsp-info/articles/how-to-select-a-dsp-processor-3/</link>
		<comments>http://inbandsoft.com/dsp-info/articles/how-to-select-a-dsp-processor-3/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 01:51:54 +0000</pubDate>
		<dc:creator>Inband Software DSP Experts</dc:creator>
				<category><![CDATA[Processor Selection]]></category>

		<guid isPermaLink="false">http://inbandsoft.com/?p=325</guid>
		<description><![CDATA[This article will be useful if you have already decided that you need a DSP processor to handle your computationally-intensive signal processing application in real-time, but need some help selecting a DSP processor.  It will guide you through some of the characteristics of DSP processors that you can choose from to help you narrow-down [...]]]></description>
			<content:encoded><![CDATA[<p>This article will be useful if you have already decided that you need a DSP processor to handle your computationally-intensive signal processing application in real-time, but need some help selecting a DSP processor.  It will guide you through some of the characteristics of DSP processors that you can choose from to help you narrow-down the choice.<br />
<span id="more-325"></span>For this discussion it is assumed that you are interested in stand-alone DSP processor chips, and not on DSP cores that you will embed on your own ASIC.</p>
<h2>Floating-Point vs. Fixed-Point</h2>
<p>You will need to decide if you need floating-point support from the DSP processor or not.  If your application does not make use of floating-point variables, then you don’t need a floating-point unit.  If your application does use floats, you can still convert the algorithms to fixed-point arithmetic.  This is a time-consuming job, but allows you to save the cost of a floating-point unit on your DSP processor.  If you leave floating-point operations in your program and compile it for a processor with no floating-point unit, it will use emulation libraries that are extremely slow.</p>
<p>In general all algorithms can be implemented in fixed-point arithmetic, and fixed-point implementations run a bit faster than floating-point implementations of the same algorithm.  The advantage of floating-point is that it saves development time.  But having a floating-point unit will make your DSP processor bigger and more expensive.</p>
<p>Note that floating point units in DSP processors will provide support for single-precision floating-point operations only.  Double-precision operations will still use emulation libraries and will run very slowly.</p>
<h2>32-Bit  Vs. 16-Bit</h2>
<p>The vast majority of DSP processors today are 32-bit.   There are still some 16-bit DSP processors offered, which tend to be smaller, cheaper and consume less power than 32-bit processors.</p>
<p>To know if you need a 32-bit processor, you must first determine what the dynamic range of your data is.  Dynamic range is the difference between the lowest and the highest values that you need to represent in a variable, including fractional bits.   Voice applications usually work with 12-bit data, while CD-quality audio is 16-bits.  In addition to the basic data size, you will need some extra bits to hold sums (the sum of two 16-bit numbers requires 17 bits).  So practically speaking, 16-bit DSP processors are useful mostly for voice signal processing applications.</p>
<p>Even if your data fits comfortably inside of 16 bits, you might still prefer a 32-bit processor because of the optimization opportunities it provides.  You can store two 16-bit data elements on a single 32-bit variable, and perform operations on them in parallel.   If your application has 8-bit data (like video and image processing), you may be able to operate on 4 elements at a time on a 32-bit DSP.    When perform multiplications of 16-bit values, the intermediate result is a 32-bit value.  Manipulating intermediate multiplication results is done more efficiently on a 32-bit architecture than on a 16-bit one.</p>
<h2>Multi-Core</h2>
<p>A popular choice for embedded systems is to use a dual-core chip, where one of the cores is a DSP processor, and the other is a general-purpose processor.  This arrangement suits many applications that require a DSP processor for number-crunching, but also need to run a lot of general code, like a full operating system, or a web browser.  If your application will involve only a small amount of general-purpose code, then a single-core DSP might be good enough (you can run a simple UI and network interface inside the DSP).  But if you need to run a complex operating system like Linux, you should consider a dual-core system on chip.</p>
<p>Another reason for multiple cores on a chip is to increase the total performance.  Some applications are so computationally complex that a single DSP processor core is not enough.  There are DSP chips with 2 to 4 DSP cores in them.  Note that partitioning your application into multiple cores may require a substantial architecture effort.</p>
<h2>VLIW</h2>
<p>VLIW stands for Very-Large Instruction Word.  This is a type of computer architecture that can execute multiple instructions every cycle, and therefore can reduce the execution time of complex programs.  The number of parallel instructions issued on VLIW DSP processors varies from 4 to 8.  Theoretically, an 8-way VLIW processor can execute 8 times as many operations per second than a regular (scalar) processor, but in practice the amount of speedup is limited by the available parallelism in the program.  In average VLIW processors can execute 2 to 4 times faster than scalar DSPs, but manual optimization is required to fully exploit this feature.</p>
<h2>On-Chip Memory</h2>
<p>System memory (like DRAM) is much slower than the processor.  When a program needs to read data from memory, the whole CPU will stall until the memory read completes.  To alleviate this, processors utilize fast on-chip memory that can be read or stored in a single cycle.  You still may need to move data from main memory, but once it is on-chip, the program will run very efficiently.</p>
<p>On-chip memories can either be arranged as caches, or as user-programmable memories.  Cache memory will hold a copy of anything that is read from main memory, so subsequent accesses are done from the cache.  Stores to main memory get trapped by the cache, and only get copied back to main memory when the cache is running out of space.  On user-programmable on-chip memories, data needs to be explicitly moved in and out of them.  Once on-chip, data accesses can be done without any stalls.</p>
<p>Most applications will require some amount of on-chip memory to maintain the DSP processor running at full speed.  Figuring-out how much on-chip memory you need will require some careful analysis of your application and some benchmarking (simulation).</p>
<h2>Speed</h2>
<p>There is a wide range of CPU speeds for DSP processors, from about 100 MHz, to about 1 GHz.  Faster processors will tend to consume more power and dissipate more heat, so you will want to select a DSP processor that is just powerful enough for your application.</p>
<p>The best way to determine if your application will fit on a given DSP processor is to benchmark it.  This is the process of executing a set of programs that is representative of your application on a cycle-accurate simulator of your target platform.</p>
<h2>Cost</h2>
<p>DSP processor prices range from less than $10 to about $100.  A 32-bit processor will be more expensive than a 16-bit.  Having a floating-point unit will cost more.  Larger caches or on-chip memories will also be more expensive.  Adding VLIW or increasing the CPU speed will also add to the cost.</p>
<p>If your volumes are going to be high, you will want to carefully select the processor that just meets your needs.  This is not an easy task, as you won’t know how fast your application will execute until it’s fully ported and optimized.  However, it is still possible to estimate by using benchmarks.</p>
<p><em>Inband Software can help you select the right DSP processor for your application.  We can help you interpret third-party benchmark data, and run detailed benchmark simulations specific to your application, and then recommend one DSP processor that is just right for your needs.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://inbandsoft.com/dsp-info/articles/how-to-select-a-dsp-processor-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 Things You Can Do with DSP</title>
		<link>http://inbandsoft.com/dsp-info/articles/10-things-you-can-do-with-dsp/</link>
		<comments>http://inbandsoft.com/dsp-info/articles/10-things-you-can-do-with-dsp/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 05:25:57 +0000</pubDate>
		<dc:creator>Juan Carlos Rojas</dc:creator>
				<category><![CDATA[Digital Signal Processing]]></category>

		<guid isPermaLink="false">http://42claps.com/p/inband-software/?p=309</guid>
		<description><![CDATA[Digital Signal Processing is used in a large variety of applications from consumer electronics to medical devices, automotive and military equipment.   What all DSP applications have in common is that they operate on real-world &#8220;analog&#8221; signals that have been digitized into streams of numbers, then processed in their digital form by algorithms, and later [...]]]></description>
			<content:encoded><![CDATA[<p>Digital Signal Processing is used in a large variety of applications from consumer electronics to medical devices, automotive and military equipment.   What all DSP applications have in common is that they operate on real-world &#8220;analog&#8221; signals that have been digitized into streams of numbers, then processed in their digital form by algorithms, and later possibly converted back into transformed analog signals.</p>
<p>This article lists some of the most popular applications of Digital Signal Processing.</p>
<p><span id="more-309"></span></p>
<h2>1. Audio Compression / Decompression (Codec)</h2>
<p>The two types of audio signals most commonly processed by audio codecs are speech and music.</p>
<p>Compression of speech signals is used by all cellular telephone standards as well as Voice over IP, and even between switches in traditional telephony.  Speech signals are usually sampled 8,000 times per second, and each sample is represented by a 13-bit number.  Therefore an uncompressed speech signal would require 104,000 bits/second (104 kbps) of transmission bandwith.  Speech compression algorithms such as G.711, G.726 and G.729 can reduce the bandwidth to 64, 32 and 8 kbps respectively.  Higher compression means more distortion of the speech signal, although these algorithms are designed to preserve the most important characteristics of the audio so that the conversations are easily understandable by humans.</p>
<p>Compression of music is popular because it reduces the storage requirements of large music collections on portable devices.  Most music is sampled 44,100 times per second (44.1 kHz), with 16 bits per sample, following the Compact Disc standard.  There are two channels on stereo music, so uncompressed stereo music requires 1.413 Mbps of storage, and a 4-minute song requires 42 MB of storage.  Music compression standards such as MP3 and WMA can reduce that to 128 kbps and 64 kbps with only a small perceived loss of audio quality.</p>
<h2>2. Audio Equalization</h2>
<p>Audio equalization is one of the simplest and most common applications of DSP.  Most home and car audio systems allow the user to &#8220;equalize&#8221; the audio by adjusting the Bass &amp; Treble settings.  Some systems have many bands that can be individually adjusted.  It is intended to compensate for the attenuation that certain frequencies suffer because of limitations of the speakers and by the acoustic characteristics of the room.</p>
<p>Audio equalization is achieved by separating the audio signal into different frequency bands by applying different filters, applying different gains on each, and then mixing the signals back.  A Bass control would apply a low-pass filter to remove high-frequency information.  A Treble control would employ a high-pass filter to remove low frequency information.  Multi-band equalizers use multiple band-pass filters to separate frequency region of interest from all the others.</p>
<h2>3. Audio Noise Cancellation</h2>
<p>Noise cancelling headphones utilize DSP to reduce background noise on airplanes and other noisy environments.  They place ambient microphones in the outside portion of the headphones and then play a &#8220;negative&#8221; version of this noise through the headphone speakers in such a way that the noise gets cancelled when it reaches your ears.  The anti-noise signal can be mixed with a signal of interest (music, movie audio) so that what reaches your ears is mostly the signal of interest with a much lower noise level.</p>
<h2>4. Audio Echo Cancellation</h2>
<p>One of the most common uses of echo cancellers is on speaker-phones.  The speech from the far-end party is played out through the loudspeaker, which is then captured back by the microphone along with the speech from the near-end party.  Without an echo canceller, the far-end party would hear his own speech, which is a problem if the round-trip delay of the conversation is noticeable (like in cellular networks or VoIP).</p>
<p>The purpose of the echo canceller is to remove the echo from the far-end speech from the near-end speech signal.  The echo from the far-end speech, as captured by the near-end microphone is a transformed version of the far-end speech.  The transformation depends on the characteristics of the speaker, the microphone, and the room acoustics.</p>
<p>During periods when the near-end party is silent, the echo canceller can use the captured near-end signal to train a model of the channel response (the transformation that the speaker, room and microphone impose) using a history of the far-end speech sent out as a reference.  Once the model is trained, it can be used to predict and subtract the far-end echo from the near-end speech signal.</p>
<h2>5. Video Compression / Decompression</h2>
<p>Video signals require very large amounts of bandwidth.  A standard-definition TV signal in the United States is represented by 60 images every second, where each image contains 704&#215;240 pixels, and each pixel is represented by 8-bits for each of 3 colors.  Without compression, a standard-definition video signal would require 243 million bits/second (243 Mbps).  For a high-definition video signal, the amount of information is about six times as much.  In order to make it feasible to transmit video signals over cable or satellite networks, a standard-definition video signal needs to be compressed to about 2 Mbps, and high-definition to about 6 Mbps.</p>
<p>Compression is also needed to store videos on DVDs: a 2-hour movie on a 9.4 Gb DVD requires the video to be compressed at most at about 10 Mbps.  A 2-hour high-definition video needs to be compressed at a rate of about 30 Mbps in order to fit on a 25 GB Blue-ray disc.  Video compression standards like MPEG2, MPEG4 and H.264 can achieve the compression rates required for transmission and storage of video.</p>
<h2>6. Video Stabilization</h2>
<p>Many video cameras offer a video stabilization feature to reduce the shaking introduced by the user holding the camera.  In order to reduce the shaking, each image must be moved to up or down and left or right to counteract the camera motion.   The distance the image needs to be moved by is determined by finding the closest match to the current image in the previous image through correlation algorithms.  The image movement can be a fraction of a pixel. in which case the new image cannot be just moved, but it has to be interpolated in order to create a new image with effectively a fractional of a pixel of movement.</p>
<h2>7. Image Compression</h2>
<p>Digital picture cameras with resolutions of 10 mega-pixels are common nowdays.  An 10 mega-pixel image contains 10 million pixels, each of which is represented by 8 bits for each of three colors, for a total of 240 mega-bits, or 30 Mb.  This needs to be reduced to 2 Mb or less in order to store a sufficient amount of pictures on the camera&#8217;s flash card.  This 15:1 compression ratio can be achieved by image compression standards like JPEG, with very small compression artifacts.</p>
<h2>8. Face Finding</h2>
<p>Many digital picture cameras can automatically find the faces in the current view and use them to direct the lens auto-focus.  In order to find the faces, the camera first employs color filters to highlight pixels with colors similar to skin-tones.  Then they may look for clusters of such pixels that roughly form oval shapes.  These are the candidate faces detected.</p>
<h2>9. Image Resizing</h2>
<p>Images often get resized in order to view them in a window of a particular size, or as part of digital zooms in cameras.  Resizing images with high-quality is not a trivial task.  Poor-quality image resizing will result in undesirable edge effects, like jagged or blurred edges, or halo effects.</p>
<p>Changing the size of an image involves creating new pixels that represent a differently sized area of the original image.   This is done through interpolation, using information from the surrounding pixels in the original image.  The more neighboring pixels are used, the better the quality of the interpolated image.</p>
<h2>10. Data Modulation / Demodulation (Modem)</h2>
<p>Modems are used to transmit data over long distances through some physical media, like copper telephone wires in the case of DSL modems, through coaxial cables in the case of cable modems, or through the air for WiFi or cellular radios.</p>
<p>The amount of data that can be transmitted depends on the bandwidth of the medium, the amount of noise present, and the attenuation suffered by the signals traveling through the medium.  The attenuation increases with the distance between the modulator and the demodulator, so the available data capacity gets reduced with distance.  A DSL modem may connect at speeds as high as 100 Mbps on very short distances, but only at 1 Mbps on very long loops.</p>
]]></content:encoded>
			<wfw:commentRss>http://inbandsoft.com/dsp-info/articles/10-things-you-can-do-with-dsp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.335 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-23 00:01:28 -->
