{"id":661,"date":"2009-02-13T09:28:57","date_gmt":"2009-02-13T14:28:57","guid":{"rendered":"https:\/\/www.circuitdesign.info\/blog\/?p=661"},"modified":"2025-01-14T17:45:24","modified_gmt":"2025-01-14T23:45:24","slug":"impulse-invariant-transform","status":"publish","type":"post","link":"https:\/\/www.circuitdesign.info\/blog\/2009\/02\/impulse-invariant-transform\/","title":{"rendered":"Impulse Invariant Transform"},"content":{"rendered":"<hr \/>\n<h2><a name=\"_introduction\"><\/a>Introduction<\/h2>\n<p>The impulse invariant transform (IIT) is a method of taking a continuous-time system H(s) and converting it to a discrete-time system. There are multiple ways of doing this, but the IIT does so with the constraint that the impulse response of the discrete-time system is a sampled version of the impulse response of the continuous-time system.<\/p>\n<p>Here\u2019s an illustration:<\/p>\n<p><a href=\"https:\/\/www.circuitdesign.info\/blog\/wp-content\/uploads\/2009\/02\/analogsystemdot.png\"> <img decoding=\"async\" src=\"https:\/\/www.circuitdesign.info\/blog\/wp-content\/uploads\/2009\/02\/analogsystemdot.png\" alt=\"\" width=\"320\" \/> <\/a><\/p>\n<p>\u2026gets converted to\u2026<\/p>\n<p><a href=\"https:\/\/www.circuitdesign.info\/blog\/wp-content\/uploads\/2009\/02\/digitalsystemdot.png\"> <img decoding=\"async\" src=\"https:\/\/www.circuitdesign.info\/blog\/wp-content\/uploads\/2009\/02\/digitalsystemdot.png\" alt=\"\" width=\"320\" \/><\/a><br \/>\n<!--more--><br \/>\n\u2026with the characteristic that the discrete-time impulse response is a sampled version of the continuous-time:<\/p>\n<p><a href=\"https:\/\/www.circuitdesign.info\/blog\/wp-content\/uploads\/2009\/02\/sampledimpulseresponse.png\"> <img decoding=\"async\" src=\"https:\/\/www.circuitdesign.info\/blog\/wp-content\/uploads\/2009\/02\/sampledimpulseresponse.png\" alt=\"\" width=\"320\" \/> <\/a><\/p>\n<hr \/>\n<h2><a name=\"_rational_systems\"><\/a>Rational Systems<\/h2>\n<p>This doesn\u2019t seem like a big deal\u2014nor very accurate. The illustration above implies that we\u2019re taking an IIR response from the continuous-time system and sampling as a discrete-time FIR.<\/p>\n<p>However, the IIT actually does something better: if H(s) is rational (composed of a numerator and denominator):<\/p>\n<p>$$H(s) = \\frac{N_c(s)}{D_c(s)}$$<\/p>\n<p>\u2026then the IIT lets us re-write this system as a discrete-time rational system:<\/p>\n<p>$$H[z] = \\frac{N_d[z]}{D_d[z]}$$<\/p>\n<p>\u2026of course, with the property that $h[n] = T_s \\times h(nT_s)$. $T_s$ is the sampling period (typically, during transformation from continous-time to discrete-time, the continuous-time impulse response is scaled by the sample period).<\/p>\n<hr \/>\n<h2><a name=\"_example\"><\/a>Example<\/h2>\n<p>Here\u2019s an example:<\/p>\n<p>$$H(s) = \\frac{s}{s^2 + 1}$$<\/p>\n<p>First, we break it down into its partial fraction expansion:<\/p>\n<p>$$H(s) = \\frac{s}{(s-j)(s+j)} = \\frac{a}{s-j} + \\frac{b}{s+j}$$<\/p>\n<p>Solving (taking limits of s to +j and -j):<\/p>\n<p>$$a = \\frac{1}{2}$$<br \/>\n$$b = \\frac{-1}{2}$$<\/p>\n<p>Now, the IIT prescribes how to take single-pole transfer functions and convert them to the z-domain.<\/p>\n<p>$$\\frac{a}{s-j} \\rightarrow \\frac{T_s a}{1-e^{+jT_s}z^{-1}}$$<br \/>\n$$\\frac{b}{s+j} \\rightarrow \\frac{T_s b}{1-e^{-jT_s}z^{-1}}$$<\/p>\n<p>\u2026which means that:<\/p>\n<p>$$H[z] = \\frac{T_s}{2(1-e^{+jT_s}z^{-1})} &#8211; \\frac{T_s}{2(1-e^{-jT_s}z^{-1})}$$<br \/>\n$$H[z] = \\frac{T_s cos(jT_s) z^{-1}}{1 &#8211; cos(jT_s)z^{-1} + z^{-2}}$$<\/p>\n<hr \/>\n<h2><a name=\"_application\"><\/a>Application<\/h2>\n<p>The impulse invariant transform is useful in <em>modelling<\/em> continuous-time sigma-delta, allowing one to analyze the mixed-mode continuous-time sigma-delta as a purely discrete-time system.<\/p>\n<p>Most notably, in considering the stability of continuous-time sigma-delta ADC&#8217;s, the transformation is useful in allowing one to replace the continuous-time noise-shaping filter with a discrete-time equivalent. One could then perform a closed-loop analytic analysis on the system. This is the procedure advocated in <a href=\"http:\/\/www.amazon.com\/gp\/product\/0780310454?ie=UTF8&amp;tag=obsecompthind-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0780310454\">Delta-Sigma Data Converters: Theory, Design, and Simulation<\/a><img loading=\"lazy\" decoding=\"async\" style=\"border: none !important; margin: 0px !important;\" src=\"http:\/\/www.assoc-amazon.com\/e\/ir?t=obsecompthind-20&amp;l=as2&amp;o=1&amp;a=0780310454\" alt=\"\" width=\"1\" height=\"1\" border=\"0\" \/>. However, the book only prescribes a rule-of-thumb, and in general, one must simulate the sigma-delta rigorously to gain confidence of stability.<\/p>\n<p>Arguably, this transformation was more useful in the past, when high-level mixed-mode simulators (Simulink) were not available. In that case, the only way to simulate the continous-time sigma-delta was to model at a discrete-time. Nowadays (in my experience) Simulink is fast enough that it&#8217;s easier to keep the mixed-mode nature of the system intact (i.e. not model it as a purely discrete-time system). However, I can imagine a case of either very long simulations or a regression analysis system where the cycle-accurate discrete-time model may become useful again.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The impulse invariant transform (IIT) is a method of taking a continuous-time system H(s) and converting it to a discrete-time system. There are multiple ways of doing this, but the IIT does so with the constraint that the impulse response of the discrete-time system is a sampled version of the impulse response of the [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[48,137,44,138],"class_list":["post-661","post","type-post","status-publish","format-standard","hentry","category-analog-pro","tag-continuous-time","tag-laplace","tag-sigma-delta","tag-z-transform"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/poCEy-aF","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/posts\/661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/comments?post=661"}],"version-history":[{"count":34,"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/posts\/661\/revisions"}],"predecessor-version":[{"id":1243,"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/posts\/661\/revisions\/1243"}],"wp:attachment":[{"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/media?parent=661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/categories?post=661"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.circuitdesign.info\/blog\/wp-json\/wp\/v2\/tags?post=661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}