<?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>Cortex-M &#8211; ASN Home</title>
	<atom:link href="https://www.advsolned.com/tag/cortex-m/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.advsolned.com</link>
	<description>ASN home site</description>
	<lastBuildDate>Tue, 07 Jan 2025 15:58:31 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>DSP vereenvoudigd met ASN Filter Designer</title>
		<link>https://www.advsolned.com/dsp-vereenvoudigd-met-asn-filter-designer/</link>
					<comments>https://www.advsolned.com/dsp-vereenvoudigd-met-asn-filter-designer/#respond</comments>
		
		<dc:creator><![CDATA[ASN consultancy team]]></dc:creator>
		<pubDate>Wed, 07 Oct 2020 14:56:25 +0000</pubDate>
				<category><![CDATA[Nederlands]]></category>
		<category><![CDATA[Cortex-M]]></category>
		<category><![CDATA[digitiale filters]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[filter design]]></category>
		<category><![CDATA[Matlab]]></category>
		<guid isPermaLink="false">https://www.advsolned.com/?p=14756</guid>

					<description><![CDATA[<p>Ontwerpen van digitale filters vereenvoudigd: gedetailleerde coachingstips, een verbeterde gebruikerservaring en stap-voor-stap instructies.</p>
<p>The post <a rel="nofollow" href="https://www.advsolned.com/dsp-vereenvoudigd-met-asn-filter-designer/">DSP vereenvoudigd met ASN Filter Designer</a> appeared first on <a rel="nofollow" href="https://www.advsolned.com">ASN Home</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">UI e<strong>xperience 2020 pack</strong></h2>



<p><strong>Na het downloaden van de ASN Filter Designer willen de meeste mensen gewoon met de tool spelen, om een gevoel te krijgen of het voor hen werkt. Maar hoe ga je aan de slag met de ASN Filter Designer? Op basis van goede gebruikersfeedback wordt ASNFD v4.4 nu geleverd met het UI experience 2020-pakket. Dit pakket bevat gedetailleerde coachingstips, een verbeterde gebruikerservaring en stap-voor-stap instructies om je op weg te helpen met je ontwerp.</strong></p>



<p><strong>Een snel overzicht van de ASN Filter Designer v4.4 vindt je hieronder, een geweldige tool voorDSP IIR/FIR digitaal filterdesign!</strong></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:25%"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<p><video src="https://www.advsolned.com/wp-content/uploads/2020/04/ASNFDv440.mp4" controls="">    Add block</video></p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:25%"></div>
</div>



<p>De ASN Filter Designer heeft een snelle, intuïtieve gebruikersinterface. Ontwerp interactief, valideer en implementeer jouw uw digitale filter binnen enkele minuten in plaats van uren. Het kan echter moeilijk zijn om een eerste begin te maken met DSP-filterontwerp, vooral wanneer je geen diepgaande kennis hebt van digitale signaalverwerking. De meeste mensen willen gewoon experimenteren met een tool om een gevoel te krijgen of het voor hen werkt (ja, natuurlijk zijn er tutorials en video&#8217;s). Maar waar begin je dan?</p>



<h2 class="wp-block-heading"><strong>Start onmiddellijk met experimenteren met het filterontwerp</strong></h2>



<p>Daarom hebben we het UI Experience 2020-pakket ontwikkeld. Op basis van de feedback van de gebruikers hebben we gedetailleerde tooltips en animaties van de belangrijkste functionaliteiten gemaakt. Binnen enkele minuten krijgt u een kickstart in functionaliteiten zoals chart zoom, panning en design markers.</p>



<figure class="wp-block-image"><img decoding="async" src="http://www.advsolned.com/wp-content/uploads/2020/03/methods_TP-3.png" alt="This image has an empty alt attribute; its file name is methods_TP-3.png"/></figure>



<h2 class="wp-block-heading">Coachingstips, verbeterde gebruikerservaring, stap-voor-stap instructies</h2>



<p>Gebaseerd op de feedback van de gebruiker bevat het UI Experience 2020-pakket:</p>



<ul class="wp-block-list"><li>Uitgebreide coachingtips</li><li>Gedetailleerde uitleg over ontwerpmethoden en soorten filters</li><li>Verbeterde gebruikerservaring:<ul><li>cursors</li><li>animaties</li><li>visuele effecten</li></ul></li><li>Links naar gedetailleerde werkende oplossingen, tutorials en stap-voor-stap instructies</li></ul>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image is-resized"><img fetchpriority="high" decoding="async" src="http://www.advsolned.com/wp-content/uploads/2020/03/Coaching-Tip3.png" alt="This image has an empty alt attribute; its file name is Coaching-Tip3.png" width="395" height="530"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image is-resized"><img decoding="async" src="http://www.advsolned.com/wp-content/uploads/2020/03/Information-FD3.png" alt="This image has an empty alt attribute; its file name is Information-FD3.png" width="414" height="525"/></figure>
</div>
</div>



<p>De feedback van de gebruikersgemeenschap is zeer positief! Door het verstrekken van gedetailleerde tooltips en animaties van de belangrijkste functionaliteit, is de eerste stap van het ontwerpen van een filter met jouw gewenste specificaties aanzienlijk vereenvoudigd.</p>



<p>Begin dus meteen met de ASN Filterontwerper en bespaar tot 75% op jouw ontwikkelingskosten!</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-3 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image"><a href="https://www.advsolned.com/asn-filter-designer-digitale-signaalbewerking/"><img decoding="async" src="http://www.advsolned.com/wp-content/uploads/2019/12/Softwareboxshadow-verkleind-495x400_verleind.jpg" alt="ASN Filter Designer box"/></a><figcaption>ASN Filter Designer box, the powerful DSP Filter Designer platform</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p style="text-align: left;"><a class="button" href="http://www.advsolned.com/request-form-asn-filter-designer-demo/">Download demo</a></p>
<a class="button" href="http://www.advsolned.com/pricing-and-licencing/#Best_licence_forme">Prijzen en Licenties</a>
</div>
</div>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button"
					aria-label="Like Button"
					data-ulike-id="14756"
					data-ulike-nonce="530170ae8c"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_14756"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div>
	<p>The post <a rel="nofollow" href="https://www.advsolned.com/dsp-vereenvoudigd-met-asn-filter-designer/">DSP vereenvoudigd met ASN Filter Designer</a> appeared first on <a rel="nofollow" href="https://www.advsolned.com">ASN Home</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.advsolned.com/dsp-vereenvoudigd-met-asn-filter-designer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.advsolned.com/wp-content/uploads/2020/04/ASNFDv440.mp4" length="1654257" type="video/mp4" />

			</item>
		<item>
		<title>Deploying legacy analog filters to Arm Cortex-M processor cores</title>
		<link>https://www.advsolned.com/deploying-legacy-analog-filters-to-arm-cortex-m-processors/</link>
					<comments>https://www.advsolned.com/deploying-legacy-analog-filters-to-arm-cortex-m-processors/#respond</comments>
		
		<dc:creator><![CDATA[Dr. Sanjeev Sarpal]]></dc:creator>
		<pubDate>Fri, 14 Sep 2018 12:51:34 +0000</pubDate>
				<category><![CDATA[ASN FilterScript]]></category>
		<category><![CDATA[analog filter]]></category>
		<category><![CDATA[BZT]]></category>
		<category><![CDATA[CMSIS-DSP]]></category>
		<category><![CDATA[Cortex-M]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[modeling]]></category>
		<guid isPermaLink="false">http://www.advsolned.com/?p=7792</guid>

					<description><![CDATA[<p>The ASN Filter Designer’s Arm automatic code generator automatically generates Arm CMSIS-DSP compliant C code suitable for direct implementation Cortex-M</p>
<p>The post <a rel="nofollow" href="https://www.advsolned.com/deploying-legacy-analog-filters-to-arm-cortex-m-processors/">Deploying legacy analog filters to Arm Cortex-M processor cores</a> appeared first on <a rel="nofollow" href="https://www.advsolned.com">ASN Home</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In recent years, major microcontroller IC vendors such as: ST, NXP, TI, ADI, Atmel/Microchip, Cypress, Maxim to name but a few have based their modern 32-bit microcontrollers on Arm’s Cortex-M processor cores. This exciting trend means that algorithms traditionally undertaken in expensive DSPs (digital signal processors) can now be integrated into a powerful low-cost and power efficient microcontroller packed full of a rich assortment of connectivity and peripheral options, which is ideal for many IoT applications.</p>



<p>For many IC vendors, the coupling of DSP functionality with the flexibility of a low power microcontroller, has allowed them to offer their customers a generation of so called <strong>32-bit enhanced microcontrollers</strong> suitable for a variety of practical applications. More importantly, this marriage of technologies has also allowed designers working on price critical IoT applications to implement complex algorithmic concepts, while at the same time keeping the overall product cost low and still achieving excellent low power performance.</p>



<h2 class="wp-block-heading">Upgrading legacy analog filters with the ASN Filter Designer</h2>



<p>Analog filters have been around since the beginning of electronics, ranging from simple inductor-capacitor networks to more advanced active filters with op-amps. As such, there is a rich collection of tried and tested legacy filter designs for a broad range of sensor measurement applications.</p>



<p>ASN’s FilterScript symbolic math scripting language offers designers the ability to take an existing analog filter transfer function and transform it to digital with just a few lines of code. The ASN Filter Designer’s Arm automatic code generator analyses the designed digital filter and then<strong> automatically generates Arm CMSIS-DSP compliant C code</strong> suitable for direct implementation on a Cortex-M based microcontroller.</p>



<h3 class="wp-block-heading"><strong>Arm CMSIS-DSP software framework</strong></h3>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-4 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.7%">
<p>The <a style="color: #0000ff;" href="https://arm-software.github.io/CMSIS_5/DSP/html/index.html">Arm CMSIS-DSP</a> (Cortex Microcontroller Software Interface Standard)&nbsp; software framework is a rich collection of over sixty DSP functions (including various mathematical functions, such as sine and cosine; IIR/FIR filtering functions, complex math functions, and data types) developed by Arm that have been optimised for their range of Cortex-M processor cores. </p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%"><div class="wp-block-image is-resized">
<figure class="alignright size-large"><img decoding="async" src="https://www.advsolned.com/wp-content/uploads/2018/02/cmsis.png" alt=""/></figure></div></div>
</div>



<p>The framework makes extensive use of highly optimised SIMD (single instruction, multiple data) instructions, that perform multiple identical operations in a single cycle instruction. The SIMD instructions (if supported by the core) coupled together with other optimisations allow engineers to produce highly optimised signal processing applications for Cortex-M based micro-controllers quickly and simply.</p>



<h2 class="wp-block-heading">Mathematically modelling an analog circuit</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="http://www.advsolned.com/wp-content/uploads/2018/09/preempcircuit.png"><img decoding="async" width="796" height="397" src="https://www.advsolned.com/wp-content/uploads/2020/04/preempcircuit.png" alt="" class="wp-image-12246" srcset="https://www.advsolned.com/wp-content/uploads/2020/04/preempcircuit.png 796w, https://www.advsolned.com/wp-content/uploads/2020/04/preempcircuit-300x150.png 300w, https://www.advsolned.com/wp-content/uploads/2020/04/preempcircuit-768x383.png 768w, https://www.advsolned.com/wp-content/uploads/2020/04/preempcircuit-705x352.png 705w, https://www.advsolned.com/wp-content/uploads/2020/04/preempcircuit-450x224.png 450w" sizes="(max-width: 796px) 100vw, 796px" /></a></figure></div>


<p>Consider the active pre-emphasis filter shown below. The pre-emphasis filter has found particular use in audio work, since it is necessary to amplify the higher frequencies of the speech spectrum, whilst leaving the lower frequencies unaffected. The R and C values shown are only indented for the example, more practical values will depend on the application. A powerful method of reproducing the magnitude and phases characteristics of the analog filter in a digital implementation, is to mathematically model the circuit. This circuit may be analysed using Kirchhoff’s law, since the sum of currents into the op-amp’s inverting input <strong>must be equal to zero for negative feedback to work correctly</strong> – this results in a transfer function with a negative gain.</p>



<p>Therefore, using Ohm&#8217;s law, i.e. \(I=\frac{V}{R}\),</p>


\(<br />
\displaystyle\frac{X(s)}{R_3}=-\frac{U(s)}{C_1||R_2 + R_1}<br />
\)



<p>After some algebraic manipulation, it can be seen that an expression for the circuit&#8217;s closed loop gain may be expressed as,</p>


\(<br />
\displaystyle\frac{X(s)}{U(s)}=-\frac{R_3}{R_1}\frac{\left(s+\frac{1}{R_2C_1}\right)}{\left(s+\frac{R_1+R_2}{R_1R_2C_1}\right)}<br />
\)



<p>substituting the values shown in the circuit diagram into the developed transfer function, yields</p>


\(<br />
\displaystyle H(s)=-10\left(\frac{s+1000}{s+11000}\right)<br />
\)



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><strong>What sampling rate do we need?<span class="" style="display:block;clear:both;height: 0px;padding-top: 10px;border-top-width:0px;border-bottom-width:0px;"></span></strong><br></h3>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:20%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="220" height="233" src="https://www.advsolned.com/wp-content/uploads/2020/04/SRpremp.png" alt="" class="wp-image-12249"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>Analysing the cut-off frequencies in \(H(s)\), we see that the upper frequency is at \(11000 rad/sec\) or \(1.75kHz\). Therefore, setting the sampling rate to \(16kHz\) should be adequate for modelling the filter in the digital domain.</p>



<p>The sampling rate options are avaliabe in the main filter design UI&nbsp; (shown on the left).</p>



<p></p>
</div>
</div>



<h3 class="wp-block-heading"><strong>ASN FilterScript</strong></h3>



<p>\(H(s)\) can be easily specified in FilterScript with the <code>analogtf</code> function, as follows:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; gutter: false; title: ; notranslate">
Nb={1,1000};
Na={1,11000};

Ha=analogtf(Nb,Na,-10,"symbolic");
</pre></div>


<p>Notice how the negative gain may also be entered directly into function’s argument. The <code>symbolic</code> keyword generates a symbolic transfer function representation in the command window.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="http://www.advsolned.com/wp-content/uploads/2018/09/analogpremp.png"><img loading="lazy" decoding="async" width="391" height="88" src="https://www.advsolned.com/wp-content/uploads/2020/04/analogpremp.png" alt="" class="wp-image-12250" srcset="https://www.advsolned.com/wp-content/uploads/2020/04/analogpremp.png 391w, https://www.advsolned.com/wp-content/uploads/2020/04/analogpremp-300x68.png 300w" sizes="auto, (max-width: 391px) 100vw, 391px" /></a></figure></div>


<p>Applying the Bilinear z-transformation via the <code>bilinear</code> command with no pre-warping, i.e.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; gutter: false; title: ; notranslate">
Hd=bilinear(Ha,0,"symbolic");
</pre></div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="http://www.advsolned.com/wp-content/uploads/2018/09/bztpremp.png"><img loading="lazy" decoding="async" width="402" height="99" src="https://www.advsolned.com/wp-content/uploads/2020/04/bztpremp.png" alt="" class="wp-image-12253" srcset="https://www.advsolned.com/wp-content/uploads/2020/04/bztpremp.png 402w, https://www.advsolned.com/wp-content/uploads/2020/04/bztpremp-300x74.png 300w" sizes="auto, (max-width: 402px) 100vw, 402px" /></a></figure></div>


<p><br>Notice how the <code>bilinear</code> command automatically scales numerator coefficients by -1, in order to account for the effect of the negative gain. The command also automatically assigns the analog filter to the reference spectrum object, which can be shown via the <code>ShowH2DM</code> keyword. The complete code is shown below:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
ClearH1;    // remove other filters from the cascade
ShowH2DM;   // show the analog reference spectrum 

Main()

Nb={1,1000};
Na={1,11000};

Ha=analogtf(Nb,Na,-10,"symbolic");
Hd=bilinear(Ha,0,"symbolic");

Num=getnum(Hd);
Den=getden(Hd);
Gain=getgain(Hd);
</pre></div>


<p>A comparison of the analog (shown in red) and discrete (shown in blue) magnitude spectra is shown below. Analysing the spectra, it can be seen that for a sampling rate of 16kHz the analog and digital filters are almost identical! This demonstrates the relative ease with which a designer can port their existing legacy analog designs into digital.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="656" height="663" src="https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace.png" alt="" class="wp-image-20889" srcset="https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace.png 656w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace-297x300.png 297w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace-80x80.png 80w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace-36x36.png 36w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace-120x120.png 120w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace-450x455.png 450w" sizes="auto, (max-width: 656px) 100vw, 656px" /></figure></div>


<h2 class="wp-block-heading">Automatic code generation to Arm Cortex-M processors</h2>



<p>As mentioned at the beginning of this article, the ASN filter designer’s automatic code generation engine facilitates the export of a designed filter to Cortex-M Arm based processor cores via the CMSIS-DSP software framework. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>The tool’s built-in analytics and help functions assist the designer in successfully configuring the design for deployment. Professional licence users may expedite the deployment by using the <strong>Arm deployment wizard</strong> that automates the steps described below.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="326" height="274" src="https://www.advsolned.com/wp-content/uploads/2018/09/Armwizard.png" alt="" class="wp-image-17853" srcset="https://www.advsolned.com/wp-content/uploads/2018/09/Armwizard.png 326w, https://www.advsolned.com/wp-content/uploads/2018/09/Armwizard-300x252.png 300w" sizes="auto, (max-width: 326px) 100vw, 326px" /></figure>
</div>
</div>



<h3 class="wp-block-heading"><span class="" style="display:block;clear:both;height: 0px;padding-top: 25px;border-top-width:0px;border-bottom-width:0px;"></span><strong>Steps required for Educational licence</strong> <strong>users</strong></h3>



<p>Before generating the code, the H2 filter (i.e. the filter designed in FilterScript) needs to be firstly re-optimised (transformed) to an H1 filter (main filter) structure for deployment. The <strong>options</strong> menu can be found under the <strong>P-Z</strong> tab in the main UI.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="http://www.advsolned.com/wp-content/uploads/2018/09/reopt_preemp.png"><img loading="lazy" decoding="async" width="359" height="127" src="https://www.advsolned.com/wp-content/uploads/2020/04/reopt_preemp-1.png" alt="" class="wp-image-12257" srcset="https://www.advsolned.com/wp-content/uploads/2020/04/reopt_preemp-1.png 359w, https://www.advsolned.com/wp-content/uploads/2020/04/reopt_preemp-1-300x106.png 300w" sizes="auto, (max-width: 359px) 100vw, 359px" /></a></figure></div>


<p><span class="" style="display:block;clear:both;height: 0px;padding-top: 5px;border-top-width:0px;border-bottom-width:0px;"></span>All floating point IIR filters designs must be based on <strong>Single Precision</strong> arithmetic and either a <strong>Direct Form I</strong> or <strong>Direct Form II Transposed</strong> filter structure. The <strong>Direct Form II Transposed</strong> structure is advocated for floating point implementation by virtue of its higher numerically accuracy.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.3%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="284" height="247" src="https://www.advsolned.com/wp-content/uploads/2020/04/preempQoptions-2.png" alt="" class="wp-image-12258"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p>Quantisation and filter structure settings can be found under the <strong>Q</strong> tab (as shown on the left). Setting <strong>Arithmetic</strong> to <strong>Single Precision</strong> and <strong>Structure</strong> to <strong>Direct Form II Transposed</strong> and clicking on the <strong>Apply</strong> button configures the IIR considered herein for the CMSIS-DSP software framework.</p>
</div>
</div>



<h3 class="wp-block-heading"></h3>


<span class="" style="display:block;clear:both;height: 0px;padding-top: 20px;border-top-width:0px;border-bottom-width:0px;"></span>



<p><strong>Arm CMSIS-DSP application C code</strong></p>



<p>Select the <strong>Arm CMSIS-DSP</strong> framework from the selection box in the filter summary window:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="170" height="183" src="https://www.advsolned.com/wp-content/uploads/2018/09/codegeneratoroptions.png" alt="" class="wp-image-17875"/></figure></div>


<p>The automatically generated C code based on the CMSIS-DSP framework for direct implementation on an Arm based Cortex-M processor is shown below:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="686" height="638" src="https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace_code.png" alt="" class="wp-image-20891" srcset="https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace_code.png 686w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace_code-300x279.png 300w, https://www.advsolned.com/wp-content/uploads/2018/09/analog_vs_digital_laplace_code-450x419.png 450w" sizes="auto, (max-width: 686px) 100vw, 686px" /></figure></div>


<p>As seen, the automatic code generator generates all initialisation code, scaling and data structures needed to implement the IIR via the CMSIS-DSP library. This code may be directly used in any Cortex-M based development project &#8211; a <a style="color: #0000ff;" href="https://www2.keil.com/mdk5/cmsis/asnfd">complete Keil MDK example</a> is available on Arm/Keil&#8217;s website. Notice that the tool’s code generator produces code for the Cortex-M4 core as default, please refer to the table below for the <code>#define</code> definition required for all supported cores.</p>



<figure class="wp-block-table"><table><tbody><tr><td><code>ARM_MATH_CM0</code></td><td>Cortex-M0 core.</td><td><code>ARM_MATH_CM4</code></td><td>Cortex-M4 core.</td></tr><tr><td><code>ARM_MATH_CM0PLUS</code></td><td>Cortex-M0+ core.</td><td><code>ARM_MATH_CM7</code></td><td>Cortex-M7 core.</td></tr><tr><td><code>ARM_MATH_CM3</code></td><td>Cortex-M3 core.</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td><code>ARM_MATH_ARMV8MBL</code></td><td>ARMv8M Baseline target (Cortex-M23 core).</td></tr><tr><td><code>ARM_MATH_ARMV8MML</code></td><td>ARMv8M Mainline target (Cortex-M33 core).</td></tr></tbody></table></figure>



<p>The main test loop code (not shown) centres around the <code>arm_biquad_cascade_df2T_f32()</code> function, which performs the filtering operation on a block of input data.</p>



<h2 class="wp-block-heading">What have we learned?</h2>



<p>The <strong>ASN Filter Designer provides engineers with everything they need</strong> in order to port legacy analog filter designs to a variety of Cortex-M processor cores.</p>



<p>The FilterScript symbolic math scripting language offers designers the ability to take an existing analog filter transfer function and transform it to digital (via the Bilinear z-transform or matched z-transform) with just a few lines of code.</p>



<p>The Arm automatic code generator analyses the designed digital filter and then <strong>automatically generates Arm CMSIS-DSP compliant C code</strong> suitable for direct implementation on a Cortex-M based microcontroller.</p>


<span class="" style="display:block;clear:both;height: 0px;padding-top: 15px;border-top-width:0px;border-bottom-width:0px;"></span>



<h3 class="wp-block-heading"><strong>Extra resources</strong></h3>



<ol class="wp-block-list">
<li>Step by step <a style="color: #0000ff;" href="https://youtu.be/ltikbqR9nK8">video tutorial</a> of designing an IIR and deploying it to Keil MDK uVision.</li>



<li>Implementing Biquad IIR filters with the ASN Filter Designer and the Arm CMSIS-DSP software framework <a style="color: #0000ff;" href="https://www.advsolned.com/wp-content/uploads/2018/05/Implementing-Biquad-IIR-filters-with-the-ASN-Filter-Designer-and-the-ARM-CMSIS-DSP-software-framework.pdf">(ASN-AN025)</a></li>



<li>Keil MDK uVision <a style="color: #0000ff;" href="http://www2.keil.com/mdk5/cmsis/asnfd">example IIR filter project</a></li>
</ol>


<span class="" style="display:block;clear:both;height: 0px;padding-top: 20px;border-top-width:0px;border-bottom-width:0px;"></span>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-large"><img decoding="async" src="https://www.advsolned.com/wp-content/uploads/2018/02/ASNFDbox.png" alt=""/></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center has-medium-font-size is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<div class="wp-block-buttons is-vertical is-layout-flex wp-container-core-buttons-is-layout-1 wp-block-buttons-is-layout-flex">
<div class="wp-block-button has-custom-width wp-block-button__width-75 is-style-outline is-style-outline--1"><a class="wp-block-button__link has-vivid-cyan-blue-background-color has-text-color has-background wp-element-button" href="https://www.advsolned.com/request-form-asn-filter-designer-demo/" style="color:#ffffff">Download Demo</a></div>
</div>



<div class="wp-block-buttons is-vertical is-layout-flex wp-container-core-buttons-is-layout-2 wp-block-buttons-is-layout-flex">
<div class="wp-block-button has-custom-width wp-block-button__width-75 is-style-outline is-style-outline--2"><a class="wp-block-button__link has-vivid-cyan-blue-background-color has-text-color has-background wp-element-button" href="https://www.advsolned.com/pricing-and-licencing/" style="color:#ffffff">Pricing and Licencing</a></div>
</div>
</div>
</div>


<p><span class="" style="display:block;clear:both;height: 0px;padding-top: 25px;border-top-width:0px;border-bottom-width:0px;"></span>
                
                    <!--begin code -->

                    
                    <div class="pp-multiple-authors-boxes-wrapper pp-multiple-authors-wrapper pp-multiple-authors-layout-boxed multiple-authors-target-shortcode box-post-id-19551 box-instance-id-1 ppma_boxes_19551"
                    data-post_id="19551"
                    data-instance_id="1"
                    data-additional_class="pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode"
                    data-original_class="pp-multiple-authors-boxes-wrapper pp-multiple-authors-wrapper box-post-id-19551 box-instance-id-1">
                                                                                    <h2 class="widget-title box-header-title">Author</h2>
                                                                            <span class="ppma-layout-prefix"></span>
                        <div class="ppma-author-category-wrap">
                                                                                                                                    <span class="ppma-category-group ppma-category-group-1 category-index-0">
                                                                                                                        <ul class="pp-multiple-authors-boxes-ul author-ul-0">
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                                                                                                                    <li class="pp-multiple-authors-boxes-li author_index_0 author_ssarpal has-avatar">
                                                                                                                                                                                    <div class="pp-author-boxes-avatar">
                                                                    <div class="avatar-image">
                                                                                                                                                                                                                <img alt='' src='https://www.advsolned.com/wp-content/uploads/2023/05/sanjeevsarpal.jpeg' srcset='https://www.advsolned.com/wp-content/uploads/2023/05/sanjeevsarpal.jpeg' class='multiple_authors_guest_author_avatar avatar' height='80' width='80'/>                                                                                                                                                                                                            </div>
                                                                                                                                    </div>
                                                            
                                                            <div class="pp-author-boxes-avatar-details">
                                                                <div class="pp-author-boxes-name multiple-authors-name"><a href="https://www.advsolned.com/author/ssarpal/" rel="author" title="Dr. Sanjeev Sarpal" class="author url fn">Dr. Sanjeev Sarpal</a></div>                                                                                                                                                                                                        <p class="pp-author-boxes-description multiple-authors-description author-description-0">
                                                                                                                                                    Sanjeev is a RTEI (Real-Time Edge Intelligence) visionary and expert in signals and systems with a track record of successfully developing over 26 commercial products. He is a Distinguished Arm Ambassador and advises top international blue chip companies on their AIoT/RTEI solutions and strategies for I5.0, telemedicine, smart healthcare, smart grids and smart buildings.                                                                                                                                                </p>
                                                                                                                                
                                                                                                                                    <span class="pp-author-boxes-meta multiple-authors-links">
                                                                        <a href="https://www.advsolned.com/author/ssarpal/" title="View all posts">
                                                                            <span>View all posts</span>
                                                                        </a>
                                                                    </span>
                                                                                                                                <a class="ppma-author-user_email-profile-data ppma-author-field-meta ppma-author-field-type-email" aria-label="Email" href="mailto:sanjeev.sarpal@advsolned.com"  target="_self"><span class="dashicons dashicons-email-alt"></span> </a>
                                                                                                                            </div>
                                                                                                                                                                                                                        </li>
                                                                                                                                                                                                                                    </ul>
                                                                            </span>
                                                                                                                        </div>
                        <span class="ppma-layout-suffix"></span>
                                            </div>
                    <!--end code -->
                    
                
                                <style>
                .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-author-boxes-avatar img { 
        width: 80px !important; 
        height: 80px !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-author-boxes-avatar img {
        border-radius: 50% !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-author-boxes-meta a {
        background-color: #655997 !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-author-boxes-meta a {
        color: #ffffff !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-author-boxes-meta a:hover {
        color: #ffffff !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_url-profile-data {
        background-color: #655997 !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_url-profile-data {
        border-radius: 100% !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_url-profile-data {
        color: #ffffff !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_url-profile-data:hover {
        color: #ffffff !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_email-profile-data {
        background-color: #655997 !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_email-profile-data {
        border-radius: 100% !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_email-profile-data {
        color: #ffffff !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .ppma-author-user_email-profile-data:hover {
        color: #ffffff !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-author-boxes-recent-posts-title {
        border-bottom-style: dotted !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-multiple-authors-boxes-li {
        border-style: solid !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-multiple-authors-boxes-li {
        color: #3c434a !important; 
    }

    .pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode .pp-multiple-authors-boxes-li {
        border-radius: px !important; 
    }

            </style>
        
        </p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button"
					aria-label="Like Button"
					data-ulike-id="7792"
					data-ulike-nonce="c0f29bd799"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_7792"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+3"></span>			</div></div>
	<p>The post <a rel="nofollow" href="https://www.advsolned.com/deploying-legacy-analog-filters-to-arm-cortex-m-processors/">Deploying legacy analog filters to Arm Cortex-M processor cores</a> appeared first on <a rel="nofollow" href="https://www.advsolned.com">ASN Home</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.advsolned.com/deploying-legacy-analog-filters-to-arm-cortex-m-processors/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ASP vs DSP &#8211; which one do I choose for my IoT application?</title>
		<link>https://www.advsolned.com/asp-vs-dsp-blog/</link>
					<comments>https://www.advsolned.com/asp-vs-dsp-blog/#respond</comments>
		
		<dc:creator><![CDATA[ASN consultancy team]]></dc:creator>
		<pubDate>Sun, 15 Jul 2018 17:12:02 +0000</pubDate>
				<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[analog filters]]></category>
		<category><![CDATA[Arm]]></category>
		<category><![CDATA[Cortex-M]]></category>
		<category><![CDATA[digital filters]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[filters]]></category>
		<guid isPermaLink="false">http://www.advsolned.com/?p=6327</guid>

					<description><![CDATA[<p>How to choose between analog signal processing (ASP) and digital signal processing (DSP). How too chose for ASP or DSP; analog filters or digital filters?</p>
<p>The post <a rel="nofollow" href="https://www.advsolned.com/asp-vs-dsp-blog/">ASP vs DSP &#8211; which one do I choose for my IoT application?</a> appeared first on <a rel="nofollow" href="https://www.advsolned.com">ASN Home</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div style='padding-bottom:10px; ' class='av-special-heading av-special-heading-h1     '><h1 class='av-special-heading-tag '  itemprop="headline"  >ASP vs DSP: which one do I choose for my IoT application?</h1><div class='special-heading-border'><div class='special-heading-inner-border' ></div></div></div>
<div style='height:20px' class='hr hr-invisible  '><span class='hr-inner ' ><span class='hr-inner-style'></span></span></div>
<div class="flex_column av_two_third  flex_column_div av-zero-column-padding first  " style='border-radius:0px; '><section class="av_textblock_section "  itemscope="itemscope" itemtype="https://schema.org/BlogPosting" itemprop="blogPost" ><div class='avia_textblock  '   itemprop="text" ><h2>The sensor measurement challenge</h2>
<p>Sensors come in all type of shapes and forms…There are sensors for audio, pressure, temperature, weight, strain, light, humidity…the list is almost endless. The challenge for most, is that many sensors used in these IoT measurement applications require filtering in order to improve the performance of the sensor’s measurement data in order to make it useful for analysis. In signal processing, there&#8217;s the choice between analog signal processing (ASP) and digital signal processing (DSP). How too chose for ASP or DSP; anolog filters or digital filters?</p>
<p>Before jumping into the disussion, let’s first have a look at what sensor data really is….</p>
</div></section></div>
<div class="flex_column av_one_third  flex_column_div av-zero-column-padding   " style='border-radius:0px; '><div class='avia-image-container  av-styling-    avia-align-center '  itemprop="ImageObject" itemscope="itemscope" itemtype="https://schema.org/ImageObject"  ><div class='avia-image-container-inner'><div class='avia-image-overlay-wrap'><img class='avia_image' src='https://www.advsolned.com/wp-content/uploads/2018/07/sensors-1.png' alt='sensors' title='sensors' height="199" width="186"  itemprop="thumbnailUrl"  /></div></div></div></div>
<section class="av_textblock_section "  itemscope="itemscope" itemtype="https://schema.org/BlogPosting" itemprop="blogPost" ><div class='avia_textblock  '   itemprop="text" ><p>All sensors produce measurement data. These measurement data contain two types of components:</p>
<ul>
<li><strong>Wanted components</strong>, i.e. information what we want to know</li>
<li><strong>Unwanted components</strong>, measurement noise, 50/60Hz powerline interference, glitches etc – what we don’t want to know</li>
</ul>
<p>Unwanted components <strong>degrade system performance</strong> and need to be removed.</p>
<p>So, the challenge for every designer is first to identify what aspects of the data we want to keep, i.e. ‘the wanted components’ and what we need to filter out, the so called ‘unwanted components’. After establishing what need to be filtered out, the challenge then which domain do we tackle this problem in, i.e. the analog domain or in the digital domain ? Each domain has its pros and cons, as we will now discuss for a practical classic sensor measurement challenge using a loadcell.</p>
<h2>Loadcell analog</h2>
<p>A classic sensor measurement challenge using a loadcell is shown below.</p>
<p><a href="http://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-6331 size-full" style="border: 1px solid #000000; margin-top: 20px; margin-bottom: 10px;" src="http://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell.png" alt="Analog Loadcell DC excitation DC component 50Hz noise 50 Hz notch filter low pass filter" width="1128" height="377" srcset="https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell.png 1128w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell-300x100.png 300w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell-768x257.png 768w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell-1030x344.png 1030w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell-705x236.png 705w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcell-450x150.png 450w" sizes="auto, (max-width: 1128px) 100vw, 1128px" /></a></p>
<p>Looking at the hardware setup, we see that have a loadcell excited by a DC excitation voltage, and the general idea is that the sensor’s differential bridge voltage is amplifier by the instrumentation amplifier (IA) when strain is applied.</p>
<p><em>For those of you unfamiliar with this type of technology, a loadcell is a strain measurement sensor that is comprised of 4 strain gauges, it’s also referred to as a <strong>Wheatstone bridge</strong>, hence the terminology bridge sensor.</em></p>
<p>Analysing the signals in the schematic, we see that the differential voltage is passed through 2 filters in order to remove powerline interference and reduce measurement noise.</p>
<h3><strong>What are the challenges?</strong></h3>
<p>The Instrumentation amplifier (IA) has high impedance inputs, which makes it easy to connect EMI (electromagnet interference) filters to the inputs. However, any mismatches with these filters will generally degrade the instrumentation amplifier’s common-mode rejection ratio, which is undesirable.</p>
<p>The instrumentation amplifier usually has a large gain (100 is quite typical), so any unwanted differential voltage on the inputs will be amplified. Looking at the filters, the notch depth of the powerline cancellation (50Hz/60Hz) filter will be dependent on component tolerances, and will vary over time and with temperature…This is problematic as we’ll discuss in the following section.</p>
<p>Finally, any analog filter or filters will require careful PCB layout and eat up precious board space, which is undesirable for many modern devices.</p>
<h2>Loadcell digital – is digital any better ?</h2>
<p><a href="http://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-6329 size-full" style="margin-top: 20px; margin-bottom: 10px; border: 1px solid #000000;" src="https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell.png" alt="Signal processing digital filters DC excitation, 24bit ADC DC component 50Hz noise 50Hz notch filter low pass filter" width="1114" height="404" srcset="https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell.png 1114w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell-300x109.png 300w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell-768x279.png 768w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell-1030x374.png 1030w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell-705x256.png 705w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcell-450x163.png 450w" sizes="auto, (max-width: 1114px) 100vw, 1114px" /></a></p>
<p>Replacing the instrumentation amplifier with a 24bit sigma-delta ADC (analog-to-digital converter), we simplify the circuitry – although many ADCs don’t tolerate high impedance at their inputs, which may be problematic for good RFI (radio frequency interference) filter design.</p>
<p>Nevertheless, some sigma-delta devices have an in-built 50/60Hz notch filter which simplifies the filtering requirement. Although these devices are more expensive, and the choice of sampling frequency is limited, they may be good enough for some applications.</p>
<h2>ASP vs DSP</h2>
<p>So, which domain is best for solving our measurement challenge, i.e. do we use analog signal processing (ASP) or digital signal processing (DSP)? In order to answer this objectively, we need to first breakdown the pros and cons of each domain.</p>
<h3><strong>Analog filters</strong></h3>
<p>Let&#8217;s first look at an implementation using ASP.</p>
<p><a href="http://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-6330 size-full" style="border: 1px solid #000000; margin-top: 10px; margin-bottom: 10px;" src="https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt.png" alt="Analog filter" width="1224" height="290" srcset="https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt.png 1224w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt-300x71.png 300w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt-768x182.png 768w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt-1030x244.png 1030w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt-705x167.png 705w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt-450x107.png 450w, https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt-1200x284.png 1200w" sizes="auto, (max-width: 1224px) 100vw, 1224px" /></a></p>
<p>The most obvious advantage is that analog filters have excellent resolution, as there are no ‘number of bits’ to consider. Analog filters have good EMC properties as there is no clock generating noise. There are no effects of aliasing, which is certainly true for the simpler op-amps, which don’t have any fancy chopping or auto-calibration circuitry built into them, and analog designs can be cheap which is great for cost sensitive applications.</p>
<h3><strong>Sounds great, but what’s the bad news?</strong></h3>
<p>Analog filters have several significant disadvantages that affect filter performance, such as component aging, temperature drift and component tolerance. Also, good performance requires good analog design skills and good PCB layout, which is hard to find in the contemporary skills market.</p>
<p><strong>One big minus point is that filter’s frequency response remains fixed</strong>, i.e. a Butterworth filter will always be a Butterworth filter – any changes the frequency response would require physically changing components on the PCB – not ideal!</p>
<h3><strong>Digital filters</strong></h3>
<p>Let&#8217;s now look at an implementation using DSP.</p>
<p><a href="http://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-6328 size-full" style="border: 1px solid #000000; margin-top: 20px; margin-bottom: 10px;" src="https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt.png" alt="Signal processing DSP digital filter ADC ALU DAC microcontroller" width="1172" height="230" srcset="https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt.png 1172w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt-300x59.png 300w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt-768x151.png 768w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt-1030x202.png 1030w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt-705x138.png 705w, https://www.advsolned.com/wp-content/uploads/2018/07/digital_loadcellfilt-450x88.png 450w" sizes="auto, (max-width: 1172px) 100vw, 1172px" /></a></p>
<p>The first impression is that a digital solution is more complicated, as seen above with the five building blocks. However, digital filters have high repeatability of characteristics, and as an example, let’s say that you want to manufacture 1000 measurement modules after optimising your filter design. With <strong>a digital solution you can be sure that the performance of your filter will be identical in all modules</strong>. This is certainly not the case with analog, as component tolerance, component aging and temperature drift mean that each module’s filter will have its own characteristics.</p>
<p>Digital filters are adaptive and flexible, we can design and implement a filter with any frequency response that we want, deploy it and then update the filter coefficients without changing anything on the PCB!</p>
<p>It’s also easy to design filters with <strong>linear phase and at very low sampling frequencies</strong> – two things that are tricky with analog.</p>
<h3><strong>Sounds great, but what’s the bad news?</strong></h3>
<p>The effect of aliasing and if designing in fixed point, finite word length issues must be taken into account, including the limitation of the ADC and DAC. As there is clock source, digital designs will <strong>produce more EMI than analog </strong>filters. This is potentially the biggest disadvantage of all digital designs if not addressed correctly, and where analog can shine.  For example, ADCs will produce more noise at higher sampling rates, which will affect the ADC&#8217;s  ENOB (effective number of bits) figure. Care should be taken to ensure that as much digital noise is minimised as possible.</p>
<h2>Conclusion</h2>
<p>When designing modern IoT sensor measurement applications, digital filters offer a greater degree of design flexibility and high repeatability of characteristics over their analog counterparts.</p>
<p>With the advent of modern processor technology and design tooling, it is estimated that about 80% of IoT smart sensor devices are currently deployed using digital devices, such as Arm’s Cortex-M family. The Arm Cortex-M4 is a very popular choice with hundreds of silicon vendors, as it offers DSP functionality traditionally found in more expensive DSPs. Implementation is further simplified by virtue of ASN&#8217;s strong partnership with Arm who together provide a rich offering of easy to use <a href="http://www.advsolned.com/ecosystem/"><span style="color: #3366ff;">filter design tooling</span></a> and a <span style="color: #3366ff;"><a style="color: #3366ff;" href="http://www2.keil.com/mdk5/cmsis/asnfd">free DSP software framework (CMSIS-DSP)</a></span>. These tools and well documented software framework allow you to get your IoT application up and running within minutes.</p>
</div></section>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button"
					aria-label="Like Button"
					data-ulike-id="6327"
					data-ulike-nonce="543e44c4b2"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_6327"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+3"></span>			</div></div>
	<p>The post <a rel="nofollow" href="https://www.advsolned.com/asp-vs-dsp-blog/">ASP vs DSP &#8211; which one do I choose for my IoT application?</a> appeared first on <a rel="nofollow" href="https://www.advsolned.com">ASN Home</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.advsolned.com/asp-vs-dsp-blog/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
