Silicon ChipCircuit Surgery - April 2025 SILICON CHIP
  1. Contents
  2. Publisher's Letter: Equivalent Series Resistance testers are very useful
  3. Feature: Net Work by Alan Winstanley
  4. Feature: Max’s Cool Beans by Max the Magnificent
  5. Project: Calibrated MEMS Microphones by Phil Prosser
  6. Feature: The History of Electronics, part four by Dr David Maddison
  7. Subscriptions
  8. Feature: Circuit Surgery by Ian Bell
  9. Feature: The Fox Report by Barry Fox
  10. Project: ESR Test Tweezers by Tim Blythman
  11. Feature: Audio Out by Jake Rothman
  12. Feature: Techno Talk by Max the Magnificent
  13. Back Issues
  14. Project: Low-Noise Mains Fan Speed Controller, Mk2 by John Clarke
  15. Feature: Precision Electronics, part four by Andrew Levido
  16. PartShop
  17. Market Centre
  18. Advertising Index
  19. Back Issues

This is only a preview of the April 2025 issue of Practical Electronics.

You can view 0 of the 80 pages in the full issue.

Articles in this series:
  • Win a Microchip Explorer 8 Development Kit (April 2024)
  • Net Work (May 2024)
  • Net Work (June 2024)
  • Net Work (July 2024)
  • Net Work (August 2024)
  • Net Work (September 2024)
  • Net Work (October 2024)
  • Net Work (November 2024)
  • Net Work (December 2024)
  • Net Work (January 2025)
  • Net Work (February 2025)
  • Net Work (March 2025)
  • Net Work (April 2025)
Articles in this series:
  • Max’s Cool Beans (January 2025)
  • Max’s Cool Beans (February 2025)
  • Max’s Cool Beans (March 2025)
  • Max’s Cool Beans (April 2025)
  • Max’s Cool Beans (May 2025)
  • Max’s Cool Beans (June 2025)
Articles in this series:
  • The History of Electronics, Pt1 (October 2023)
  • The History of Electronics, Pt2 (November 2023)
  • The History of Electronics, Pt3 (December 2023)
  • The History of Electronics, part one (January 2025)
  • The History of Electronics, part two (February 2025)
  • The History of Electronics, part three (March 2025)
  • The History of Electronics, part four (April 2025)
  • The History of Electronics, part five (May 2025)
  • The History of Electronics, part six (June 2025)
Articles in this series:
  • Circuit Surgery (April 2024)
  • STEWART OF READING (April 2024)
  • Circuit Surgery (May 2024)
  • Circuit Surgery (June 2024)
  • Circuit Surgery (July 2024)
  • Circuit Surgery (August 2024)
  • Circuit Surgery (September 2024)
  • Circuit Surgery (October 2024)
  • Circuit Surgery (November 2024)
  • Circuit Surgery (December 2024)
  • Circuit Surgery (January 2025)
  • Circuit Surgery (February 2025)
  • Circuit Surgery (March 2025)
  • Circuit Surgery (April 2025)
  • Circuit Surgery (May 2025)
  • Circuit Surgery (June 2025)
Articles in this series:
  • The Fox Report (July 2024)
  • The Fox Report (September 2024)
  • The Fox Report (October 2024)
  • The Fox Report (November 2024)
  • The Fox Report (December 2024)
  • The Fox Report (January 2025)
  • The Fox Report (February 2025)
  • The Fox Report (March 2025)
  • The Fox Report (April 2025)
  • The Fox Report (May 2025)
Articles in this series:
  • Audio Out (January 2024)
  • Audio Out (February 2024)
  • AUDIO OUT (April 2024)
  • Audio Out (May 2024)
  • Audio Out (June 2024)
  • Audio Out (July 2024)
  • Audio Out (August 2024)
  • Audio Out (September 2024)
  • Audio Out (October 2024)
  • Audio Out (March 2025)
  • Audio Out (April 2025)
  • Audio Out (May 2025)
  • Audio Out (June 2025)
Articles in this series:
  • (November 2020)
  • Techno Talk (December 2020)
  • Techno Talk (January 2021)
  • Techno Talk (February 2021)
  • Techno Talk (March 2021)
  • Techno Talk (April 2021)
  • Techno Talk (May 2021)
  • Techno Talk (June 2021)
  • Techno Talk (July 2021)
  • Techno Talk (August 2021)
  • Techno Talk (September 2021)
  • Techno Talk (October 2021)
  • Techno Talk (November 2021)
  • Techno Talk (December 2021)
  • Communing with nature (January 2022)
  • Should we be worried? (February 2022)
  • How resilient is your lifeline? (March 2022)
  • Go eco, get ethical! (April 2022)
  • From nano to bio (May 2022)
  • Positivity follows the gloom (June 2022)
  • Mixed menu (July 2022)
  • Time for a total rethink? (August 2022)
  • What’s in a name? (September 2022)
  • Forget leaves on the line! (October 2022)
  • Giant Boost for Batteries (December 2022)
  • Raudive Voices Revisited (January 2023)
  • A thousand words (February 2023)
  • It’s handover time (March 2023)
  • AI, Robots, Horticulture and Agriculture (April 2023)
  • Prophecy can be perplexing (May 2023)
  • Technology comes in different shapes and sizes (June 2023)
  • AI and robots – what could possibly go wrong? (July 2023)
  • How long until we’re all out of work? (August 2023)
  • We both have truths, are mine the same as yours? (September 2023)
  • Holy Spheres, Batman! (October 2023)
  • Where’s my pneumatic car? (November 2023)
  • Good grief! (December 2023)
  • Cheeky chiplets (January 2024)
  • Cheeky chiplets (February 2024)
  • The Wibbly-Wobbly World of Quantum (March 2024)
  • Techno Talk - Wait! What? Really? (April 2024)
  • Techno Talk - One step closer to a dystopian abyss? (May 2024)
  • Techno Talk - Program that! (June 2024)
  • Techno Talk (July 2024)
  • Techno Talk - That makes so much sense! (August 2024)
  • Techno Talk - I don’t want to be a Norbert... (September 2024)
  • Techno Talk - Sticking the landing (October 2024)
  • Techno Talk (November 2024)
  • Techno Talk (December 2024)
  • Techno Talk (January 2025)
  • Techno Talk (February 2025)
  • Techno Talk (March 2025)
  • Techno Talk (April 2025)
  • Techno Talk (May 2025)
  • Techno Talk (June 2025)
Articles in this series:
  • Precision Electronics, Part 1 (November 2024)
  • Precision Electronics, Part 2 (December 2024)
  • Precision Electronics, part one (January 2025)
  • Precision Electronics, Part 3 (January 2025)
  • Precision Electronics, part two (February 2025)
  • Precision Electronics, Part 4 (February 2025)
  • Precision Electronics, Part 5 (March 2025)
  • Precision Electronics, part three (March 2025)
  • Precision Electronics, part four (April 2025)
  • Precision Electronics, Part 6 (April 2025)
  • Precision Electronics, Part 7: ADCs (May 2025)
  • Precision Electronics, part five (May 2025)
  • Precision Electronics, part six (June 2025)
Circuit Surgery Regular clinic by Ian Bell Topics in digital signal processing – LTspice symbols and impulse responses W e are looking at various topics related to digital signal processing (DSP). DSP covers a wide range of electronics applications where signals are manipulated, analysed, generated, stored or displayed as digital data but originate from and/or are converted to real-world signals for interaction with humans or other parts of the physical world. Fig.1 shows the key elements of a generic DSP system with a signal path from an analog input via digital processing to an analog output. This does not necessarily represent every DSP system (not all have all the parts shown), but it serves as a reference for the various subsystems we will consider. Over the last couple of months, we have discussed windowed sinc digital filters (the processing part in Fig.1) and developed LTspice simulations of these. After initially implementing them fully using schematic drawings, we switched to text-based circuit descriptions due to the number of components (specifically behavioural sources) and signals required to realise a filter with reasonable performance. Although there are a large number of sources and signals, the structure is repetitive, so it is reasonably straightforward to automate their creation by writing code, or partly automate it using spreadsheets. Using text descriptions of the filter circuits facilitates defining them as LTspice subcircuits, which makes it easier to reuse them (multiple copies in the same simulation, or in a variety of different simulations). Reuse is further enhanced by creating symbols for the subcircuits, which means they can be placed on a schematic in the same way as the components provided in the download. This month, we will describe the Analog In Antialiasing filter Sample and hold process of creating and using symbols in detail. Although this is in the context of using our filter simulations, user creation of symbols in LTspice is more widely applicable; for example, when downloading third-party models of devices. Over the last couple of months, we have also discussed the concept of impulse response and its relevance to designing windowed sinc filters. This month, we also look at two methods that allow you to use LTspice to find the impulse responses of the filters to help confirm correct implementation. edit it, or switch between directive and comment modes. Using text to reference a subcircuit is straightforward, but some people may find the schematic more difficult to interpret without a symbol for the device. Fortunately, with a little bit of effort, we can create symbols for our own subcircuits and add these to schematics in the same way as standard LTspice components. Before we describe that, it is worth taking a quick look at text file handling in LTspice. Text or symbol? Although many users may only interact with LTspice via schematics and result plots in the graphical user interface (GUI), it can edit text files and has syntax colouring based on SPICE netlists (as seen in Fig.2). Commonly used files containing text circuit descriptions are netlists (.cir, .net or .sp), subcircuits (.sub) and libraries containing multiple subcircuits (.lib). If you make frequent use of these files in LTspice, it is useful to configure your operating system to associate LTspice with the relevant file extensions. These extensions are the standard ones LTspice will open and treat as a netlist. LTspice expects the first line of a netlist file to be a comment (text is coloured green). If you open a .lib or .sub file into LTspice directly from Windows Explorer and there is a .subckt statement on the first line, you may get an error message because it is treated as a comment and not parsed as a command. It is best to put a comment on the first line to avoid this problem. With the first line as a comment, you may still get a warning about a lack of analysis requests – LTspice is trying to interpret the file as a full simulation netlist, so this can ignored for a subcircuit or library file. If you open these files from LTspice then you will not get the errors or warnings. It will open a text file with any extension, but you have to change the file type dropdown Last month, we included the filter subcircuits into our LTspice simulation by adding the appropriate component statement as text on the schematic, for example: X_LP1 in out_lp_rec + lp_5k_48k_rec_25 sp={period} As discussed then, the input to the LTspice simulator is a text description of the circuit called a ‘netlist’. Netlists are automatically created from the schematic in the background to run a simulation. They can be seen using View → Netlist from the menu. LTspice can also open and run simulations from netlist text files – it does not need a schematic to work. Text is placed on a schematic using the t and .t buttons in the toolbar. Any text placed on the schematic as a “SPICE directive” (.t icon), which has a default colour of black, is copied directly into the netlist. Text which is placed on the schematic as a “Comment” (t icon), which has a default colour of blue, is copied with the prefix “* ”, which designates a comment line in the netlist. Comments are ignored by the simulator. Right-click the text on the schematic to Digital ADC Digital processing Analog DAC Fig.1: a generic digital signal processing (DSP) system structure. 30 Reconstruction filter Out Opening LTspice text files Practical Electronics | April | 2025 Fig.2: a subcircuit/library text file edited in LTspice. in the file open dialog to “netlist” or “all files” to see them listed. If the file opened is a valid netlist with a simulation command (analysis request), such as .ac. or .tran, it can be simulated. Making a symbol LTspice has a symbol editor that allows you to draw symbols graphically and configure them to facilitate their use with the schematic editor. There are three options for creating a symbol from a schematic or subcircuit definition. You can create a symbol from scratch, autogenerate one, or copy and edit one from the LTspice library. There are two scenarios for automatically generating a symbol. The first uses a schematic as input and is intended for use with hierarchical schematics, where schematics that are part of a larger design are included in a higher-level schematic as block symbols. As the filters we are discussing are defined by subcircuit netlists, that approach is not relevant here. The second approach uses subcircuit definitions, which is what we need. Its primary expected use is with downloaded third-party component models, but of course, it can also be applied to subcircuits created by users. To automatically generate a symbol from a subcircuit description, open the library/ subcircuit text file in LTspice and right click on the line containing the relevant .subckt statement. Select “Create Symbol” from the menu and confirm creation of the subcircuit in the message box (see Fig.3). The symbol will be generated and opened in the symbol editor, as shown in Fig.4. The filter lp_5k_48k_rec_25 sub­circuit uses a parameter (sp) to set the sample period; a value must be provided for this for a simulation using the subcircuit to work. Unfortunately, automatic symbol generation does not configure the symbol to allow a parameter to be passed to it individually. When the symbol is placed Fig.5: the LTspice symbol attribute editor dialog box. on a schematic, the value where the symbol is used. In the followcan be set globally by defining a paraming, <Attrib> refers to the value of the eter with the required name, for example: attribute with the name Attrib. .param sp=20.833u .lib <ModelFile> .param sp={period} <name> node1 node2 [...] + <SpiceModel> <Value> <Value2> This is not ideal because, if multiple + <SpiceLine> <SpiceLine2> instances of the symbol (or other components using the same parameter) are The prefix will be the first character used, they are all forced to use the same in the name; for subcircuits, this is “X”. value. There are other problems with the The problems and solutions with autoauto-generated symbol. These can all be generated symbols are as follows. resolved by editing the symbol’s attributes. In the symbol editor, go to Edit → • The symbol type is set to “Block”, Attributes → Edit Attributes. This opens which is intended for hierarchical schethe attribute editor, shown in Fig.5. The matics – it should be of type “Cell”. exact way the attribute data is used (and • The ModelFile parameter is set to the the symbol behaves in the schematic full path of the library file (as seen in editor) depends on how the attributes Fig.5). This is not ideal because, if the are specified, which can be confusing. library files are moved, the symbol will The most useful case for our purposstop working. Using just the file name es is where the “ModelFile” attribute is means LTspice will look in the same defined (the filename of the library/subfolder as the schematic for the subcircuit circuit file containing the subcircuit), definitions, wherever the schematic is. which is what is auto-generated. • Parameters can be specified in the With “ModelFile” defined, the symbol “Value2” attribute using the format is netlisted on two lines in the form shown Name=DefaultValue below, and has values (such as parameMultiple parameters can be specified ters) that can be edited on the schematic separated by spaces. After editing the Fig.4: an autogenerated symbol. Fig.3: the confirmation message box. Practical Electronics | April | 2025 31 Fig.6: attributes configured without “SpiceModel” defined. attributes to make these changes and adding the sample period (sp) parameter, the attribute editor is as shown in Fig.6. There is also a “Description” attribute; text placed here is displayed in the component tool in the schematic editor. By default, the “Value2” attribute (sp in our case) will not be displayed on the schematic when the symbol is placed. It can be made visible by going to the menu item Edit → Attributes → Attribute Window in the symbol editor, selecting “Value2” (see Fig.8), then placing the text Fig.7: attributes configured with “SpiceModel” defined. on the symbol (for example, see Fig.9). The text may be too small when initially placed on a symbol. If this happens, the font size can be changed by right-clicking on the text and selecting a different value in the dialog box that appears. Setting the subcircuit name to be in the “SpiceModel” attribute, rather than the “Value” attribute (see Fig.7) changes the behaviour of the symbol on the schematic – if there are multiple subcircuits in the “ModelFile”, they can selected after the symbol is placed (more on this later). If this is done, the parameters should be put in the “Value” rather than “Value2” attribute. Copying and editing symbols Fig.8: the LTspice Attribute to Add dialog. An alternative to auto-generating a symbol is to copy one from the library provided by LTspice and edit it. This is a quick way to obtain a symbol with a shape other than a box without having to draw it from scratch. In this case, the lowpass filter symbol for the 2ndOrdLowpass behavioural filter special function (2ndOrdLowpass.asy) is suitable. By default, the LTspice library is in C:\ users\username\AppData\Local\ LTspice\lib\ The symbols are in the s y m Fig.9: a symbol after adding the “Value” attribute. 32 folder at this location, and the filters are in the sym\SpecialFunctions folder of the library. Do not edit the symbol in the library; copy it to the folder containing your subcircuit library, change the file name to match the subcircuit name and edit this copy. To use this symbol for the filters, we need to change pin names to inp and outp, change the attributes to match the details of the subcircuit, and edit the information displayed on the schematic by the symbol. For example, the original 2ndOrdLowpass.asy symbol displays the parameters but not the model name. An example edited symbol is shown in Fig.10. When editing symbols, schematic files should be closed. LTspice should be restarted after new or updated symbols are ready. If symbols have been changed, they may need to be deleted and placed on the schematic again. Using your symbols To place your own symbol on the schematic, use the component tool in the usual way but change the “Top Directory” dropdown to select the folder with the Fig.10: the 2ndOrdLowpass symbol edited for use with our filter. Practical Electronics | April | 2025 current schematic in it. If there are symbols there (.asy files), they will be listed (see Fig.11). When selected, the symbol and description of the component should be displayed in the usual way. If the current folder in the dropdown is not correct, save the schematic, close and restart LTspice, and open the schematic again from LTspice. By default, the “Top Directory” dropdown provides the standard LTspice library location (in AppData as noted above), the current folder and the “user library” folder, which defaults to C:\ Users\username\Documents\LTspice The user library location can be changed and additional library locations can be added via the settings dialog at Tools →Settings → Search paths. If the symbols and associated library/subcircuit files are moved to the user library, they will be available to add to schematics created in any folder. Fig.11: the component selection dialog box. Example schematic & simulation Fig.12 shows a schematic with two digital filters added via symbols. This is similar to the examples discussed last month using text on the schematics. The two filters use the different symbols discussed above to help illustrate these, but for real use, it would make sense to use the same symbol style for a set of related filters. Note that the .lib or .inc commands are not required on the schematic as they were for the text-based version, because they are automatically included when the symbols are netlisted. In this example, U1 is the 5kHz low pass, with 25 coefficients, 48kHz sampling and rectangular window sinc filtering, as discussed in previous articles. The sp parameter is left as the default value. U2 is the variant of the same filter using the Blackman window (discussed last month). This filter has its sp parameter set to double the designed-for sample period. The filter will still operate but will have half the cutoff-frequency. This was done to illustrate independence of parameter setting. The simulation results in Fig.13 show the circuit operating as expected, with the cutoff frequency of U2 half of that for U1. As with standard LTspice components, right-clicking on the symbols of filters allows the values to be edited. In this example, the symbol used for U1 had its attributes configured as shown in Fig.6; U2 used the approach shown in Fig.7. This results in different behaviour from the right-click. For U1, where the symbol does not have a “SpiceModel” attribute defined, right-click enables parameter values to be edited (see Fig.14). The sp parameter can also be edited by right-clicking on the text on the schematic. Practical Electronics | April | 2025 Fig.12: an LTspice schematic using the symbols for filters. Fig.13: simulation results for the circuit in Fig.12 (a linear plot of the frequency response). Fig.14: the symbol parameter editor dialog box. 33 Fig.16: selecting models (subcircuit definitions for a symbol). Fig.15: another symbol parameter editor dialog box. For U2, where a “SpiceModel” attribute is defined, right-click enables attribute values to be edited via the dialog (see Fig.15). This approach also allows the model to be changed. Right-clicking on the “SpiceModel” value in the dialog provides a dropdown list to select from all the subcircuits in the file defined by the “ModelFile” attribute (see Fig.16). This means that only one symbol can be used for a set of related components. Obviously, all the subcircuits have to be compatible with the symbol, otherwise errors will occur. In this example, the WindowedFilters.lib file contains the four filters discussed last month. With the no “SpiceModel” symbol definition variant (as for U1 here), it is still possible to access the full attribute editor (similar to Fig.15) by holding the control key when right-clicking the symbol. However, this does not include the dropdown list of “SpiceModel” choices – the subcircuit associate with the symbol is fixed. Impulse response simulations In our discussions on the windowed sinc filter, we covered the important concept of impulse response. As a brief recap, for a digital filter, the impulse response is the output produced when the input to a circuit is equal to one for a single sample period and otherwise zero for all time. For the windowed sinc filter, the coefficients required to implement the filter are obtained from the impulse response. Fig.17: an LTspice schematic with two digital filters. 34 The required impulse response can be obtained from the Inverse Fourier Transform of the filter frequency response, and it is well known to be a sinc function in the case of ideal low-pass filters. As this sinc function is non-zero to infinity, the number of coefficients must be reduced for implementation. Simple truncation of the function (called a rectangular window) is feasible, but better results are obtained by multiplying the sinc function by smoother window functions, like the Hamming and Blackman types. This was discussed in detail over the past couple of months. Having obtained a working simulation of a windowed sinc filter in LTspice, it is worth asking if we can obtain the impulse response from the simulation. This is useful to help reinforce the concept of impulse response. It will also provide a check that the simulation is correctly set up because we know that the result should match the coefficients used to implement the filter. There are two ways that we can obtain the impulse response from the simulation. We can apply an Inverse Fourier Transform to the simulated frequency response (such as Fig.13), or we can run a transient simulation with an impulse input. We will look at these in turn. Fig.17 shows a schematic similar to Fig.12 but with consistent filter symbols, and both filters using their designed sampling rates. These are the 5kHz lowpass filters with 25 coefficients and a 48kHz sampling rate we discussed over the last couple of months (with rectangular and Blackman windows). We will find the impulse response of these two filters. Inverse Fourier Transform LTspice has a Fast Fourier Transform (FFT) that can be applied to the waveforms obtained from transient simulations to obtain a spectrum from the signals. What seems to be less well known is that LTspice can apply the waveform viewer FFT command to an AC simulation result to obtain the impulse function waveform. The right-click menu is still presented as View → FFT, but the dialog that opens to select the signals is titled “Impulse Response”, so this is clearly not accidental. However, this inverse FFT (IFFT) does not seem to be documented in the help. The frequency response results from simulating the circuit shown in Fig.18 should be familiar. Applying the FFT function to this produces results that initially do not look very useful because they extend over a large time range, with a peak of around 10kV at the start. The numerical results need to be scaled by dividing the sampling frequency (48kHz) to obtain the coefficient values. This can be achieved by right-clicking on the waveform names at the top of the plot and editing the expression to plot to apply the scaling, eg, from V(out_ lp_rec) to V(out_lp_rec)/48000. The time axis needs to be adjusted to just show the range over which the impulse function is non-zero. As there are 25 coefficients and the sampling period is 20.833μs, this is 24*20.833, which is close to 500μs. Fig.19 shows the impulse function results over this range with a time axis tick setting of 20.833μs to align with multiples of the sampling period. The data points (which should be the coefficient values) are shown via rightclicking and then selecting View → Mark Data Points. The shapes of the impulse function in Fig.19 look correct, but we can perform a precise comparison by exporting the results data using File → Export data as text. This will produce a large file, but we only need the first 25 results. The three columns of data (time and the two waveform values) can be copy-pasted into a spreadsheet. Practical Electronics | April | 2025 Fig.18: the AC simulation results for the circuit in Fig.17. Fig.20 shows the data for the rectangular windowed filter from Fig.19 plotted with the original coefficient data (see last month) confirming that the IFFT has produced the correct results. The difference from the expected values is below 0.03%. with a voltage source using a PULSE or PWL waveform configuration. Fig.21 shows the input signal source (V1) and analysis request from Fig.17 reconfigured for a transient simulation of the impulse response. The pulse waveform is configured to have an amplitude of 1V and a duration of 20.833μs, with a single occurrence (Ncycles = 1). This pulse occurs one sampling period after the simulation start, rather than straight away, as it is clearer to see the pulse on the plot and helps the simulation initialise with everything at zero. The results are shown in Fig.22. The output waveform has the stepped nature expected of a sampled-and-held signal. As this is representing a digital filter, each step on the waveform corresponds to a single numerical value in DSP hardware or software. LTspice simulations with abrupt steps can produce glitch artefacts (eg, the spike at Transient simulation We can also obtain an impulse response directly in the time domain using a transient simulation. We have to consider that our filter models do not behave exactly like a real digital filter in the time domain. This is because their outputs (and internal values) will be calculated at every time step used by LTspice, which will not be aligned to the sample period (the time step in SPICE simulations is adaptive and cannot be set to a fixed value). This is not a major problem if the input is sampled and held appropriately as we did for examples in Circuit Surgery, December 2024 & January 2025, which used a behavioural sample-and-hold component. For an impulse response simulation, we do not have to add a sampler because we just need one input pulse of 1V amplitude and a duration equal to the sample period. This is straightforward to achieve 0.25 Fig.19: the impulse response calculated by LTspice’s IFFT (green trace for the rectangular window, red trace for Blackman). 41.666μs) that do not relate to the digital filter operation. This problem is reduced by using a small maximum time step (1ns in this case) at the expense of a slower simulation. The output waveforms appear to have the correct shape and values. A check of one of the numerical values (using the waveform measurement cursors) confirmed a match to the coefficient to the eight digits given by the measurement. This is not unexpected, as the simulation uses idealised behavioural sources. The IFFT involves a significant amount of processing of data that was from a previous simulation, so it is not surprising that it is slightly less accurate. PE Fig.21: changes to the schematic in Fig.17 for a transient simulation. Amplitude 0.20 0.15 0.10 0.05 0.00 –0.05 –12 –10 –8 –6 –4 –2 0 2 Coefficients IFTT impulse response 4 6 8 10 12 Sample index Fig.20: LTspice IFFT results for the rectangular windowed filter. Practical Electronics | April | 2025 Fig.22: results from the transient simulation of impulse response. 35