[sdiy] FIR or IIR Digital filters for the PIC

Csaba Zvekan czvekan at gmail.com
Thu Jun 5 20:40:06 CEST 2008


There is three Spartan 3 Starter Kit's . With I think different  
features. Which ones do you use for the FPGASYNTH ?


On Jun 5, 2008, at 7:00 PM, Scott Gravenhorst wrote:

> Csaba Zvekan <czvekan at gmail.com> wrote:
>> Highly interesting stuff, Scott.
>> I was looking at the dev. board (149$ not too bad)
>> http://www.xilinx.com/products/devkits/HW-SPAR3E-SK-US-G-image.htm
>> . It's looking sweet . But how much is the Verilog compiler?
>
> Free.  And it's quite comprehensive.  Called WebPACK ISE, it is a  
> full environmant
> package with editor, "compiler" and other useful tools.  It is big  
> though, over 1G, but
> it is downloadable for free.  A DVD can be ordered if you pay for  
> shipping of it.
>
> Also downloadable for free is an embedded 8 bit RISC microcontroller  
> called PicoBlaze.
> PicoBlaze supports embedded MIDI controllers.  It is programmed in  
> it's own native
> assembly language.  PicoBlaze will operate at 25 MIPS and is well  
> more than fast enough
> for a full featured MIDI controller.
>
>> I understand it's kind of like C ?
>
> The syntax (of Verilog) _looks_ like C.  There is also VHDL which  
> can do the same things,
> but has different syntax.  Verilog is used more in the USA and VHDL  
> is used more in
> Europe.  Modules written in VHDL and Verilog can also be mixed in  
> the same project.   But
> an HDL (Hardware Description Language) does not work like a  
> programming language
> compiler.  FPGA devices allow you to construct hardware designs that  
> include parallel
> operations.  For example, the FPGA I use contains 20 18x18 signed  
> hardware dedicated
> multipliers.  In a CPU, there is usually only one and to share it  
> means expending CPU
> clocks.  In an FPGA, all 20 can compute a product in the same clock  
> cycle.
>
>> But isn't FPGA a highly complicated matter?
>
> Not in my opinion.  I learned the language syntax from free web  
> tutorials and less than a
> year after I started, I produced my first working synth design  
> (GateMan-I).  It is not
> the same as programming, but IMO it's no more complex.  It _is_,  
> however, a different way
> of thinking because things don't have to work in a step by step  
> manner (although they can
> be designed to work that way).  HDL describes a design, a program  
> describes an
> algorithmic sequence.  Both can do the same work, but do so  
> differently and with
> different efficiencies.  I actually envision schematics in my head  
> now when I code in
> Verilog.  I work the same way I would work with a pile of digital  
> ICs, with RAMs, OR and
> AND gates, multiplexors, selectors, etc.  The HDL describes how  
> those bits connect
> together, how they are clocked and enabled.  I think of an FPGA as a  
> huge box of digital
> Lego.
>
>> Or has it been tamed in the meantime?
>
> Heh heh.  We wish...  Actually, IMO, the idea that HDL is somehow  
> more complex than
> programming is a myth.  I am a programmer, and I found learning HDL  
> to be about as
> difficult.  It's mainly just a difference in thinking or approach to  
> problem solving,
> i.e., step by step execution as opposed to envisioning a digital  
> design made up of things
> you choose.  In my view, the FPGA is an awesome DSP environment.   
> I've been doing this as
> a "hobby" only for about two years.  Also, an FPGA, even on a dev  
> board, allows
> connection to a host of external devices, for example, it can accept  
> and/or generate CVs
> from and to external sources enabling connection to existing synth  
> circuitry if desired.
> Currently, I use it as a self contained synth.
>
> There is support also, USENET newsgroups exist for FPGAs and for  
> both Verilog and VHDL.
> There is also the FPGA-Synth email list which tends to have low  
> traffic, but there are
> some very helpful and knowledgable people hanging out there.
>
> -- I am not a Xilinx employee, I just really like the product.
>
>> Csaba
>>
>>
>> On Jun 5, 2008, at 5:15 PM, Scott Gravenhorst wrote:
>>
>>> Csaba Zvekan <czvekan at gmail.com> wrote:
>>>> Hi group,
>>>>
>>>> Has anybody done some work on FIR and IIR digital filters with the
>>>> PIC
>>>> or dsPIC family that can be used for SDIY ?
>>>> I would look at some codes and designs .
>>>
>>> Not for a PIC, but for DSP inside an FPGA.
>>>
>>> I tried to use a single stage IIR filter as the main filter in the
>>> GateMan-I synth.
>>> While it works, it is sonically underwhelming.  It is, however, very
>>> easy to tune.
>>> This filter does not have what we call a corner frequency, at least
>>> not in the same
>>> way we describe analog filters like SVF or ladder.  It also doesn't
>>> have resonance.
>>> The single stage IIR leaves the corner frequency at zero Hz and the
>>> tuning parameter
>>> changes the rolloff slope.  Sonically, it's more like a simple tone
>>> control than what
>>> we like to use as an audio filter in music.
>>>
>>> Two places I found this IIR filter very useful and appropriate are
>>> the reflection
>>> filter in PolyDaWG/8, a Karplus-Strong tight string synth and as the
>>> main processing
>>> element to implement portamento in all 3 of the GateMan synths.
>>>
>>> The reason I mention a single stage IIR is that it's simplicity will
>>> be attractive to
>>> someone using a device like a PIC, but I warn that it is not a good
>>> choice for a
>>> filter used as we often do in modular type synths.
>>>
>>> An FIR can be quite simple too, but is not so easily tuned, fixed
>>> filters are fairly
>>> easy to implement.
>>>
>>> AVRsynth (google it) is probably a good place to look at digital
>>> filter code for
>>> microprocessors, I don't know what type of filter is used in that
>>> synth however.
>>>
>>> My favorite digital filter so far is the State Variable Filter.
>>> While it sounds
>>> great (IMO), it does have some rather intense computational and
>>> sample rate
>>> requirements.  I found it fairly simple to implement and it tunes
>>> quite easily.
>>>
>>> I'd give references to my Verilog code, but it isn't that easy to
>>> transmute into
>>> microprocessor type instructions.
>>>
>>> If you are interesed, here are links to the projects I've published:
>>>
>>> - http://www.fpga.synth.net/pmwiki/pmwiki.php?n=FPGASynth.GateManI
>>> - http://www.fpga.synth.net/pmwiki/pmwiki.php?n=FPGASynth.GateManII
>>> - http://www.fpga.synth.net/pmwiki/pmwiki.php?n=FPGASynth.DigitalWaveguide
>>> - http://www.fpga.synth.net/pmwiki/pmwiki.php? 
>>> n=FPGASynth.GateManPoly
>>>
>>> These projects are all implemented on a Xilinx Spartan-3E Starter
>>> Kit (a development
>>> board) with very minimal external hardware (the schematics for the
>>> external hardware
>>> are posted with the projects and is the same hardware for all of
>>> them).
>>>
>>> -- ScottG
>>>
>>> -----------------------------------------------------------------
>>>
>>> -- Scott Gravenhorst
>>> -- GateManPoly - FPGA Based Polyphonic MIDI LA/FM Synthesizer
>>> -- GateMan-III - FPGA Based Monophonic MIDI LA/FM Synthesizer
>>> -- PolyDaWG/8 - FPGA Based 8 Voice Polyphonic MIDI Synthesizer
>>> -- FatMan: home1.gte.net/res0658s/fatman/
>>> -- NonFatMan: home1.gte.net/res0658s/electronics/
>>> -- When the going gets tough, the tough use the command line.
>>>
>>> _______________________________________________
>>> Synth-diy mailing list
>>> Synth-diy at dropmix.xs4all.nl
>>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>>
>> **************
>> http://www.csabazvekan.com
>> music stuff
>> http://www.csaba.ch
>> electronic stuff
>> http://www.synthmaniac.com
>> synthesizer stuff (not fully set up yet)
>>
>>
>>
>>
>>
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at dropmix.xs4all.nl
>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>>
>
> -- ScottG
>
> -----------------------------------------------------------------
>
> -- Scott Gravenhorst
> -- GateManPoly - FPGA Based Polyphonic MIDI LA/FM Synthesizer
> -- GateMan-III - FPGA Based Monophonic MIDI LA/FM Synthesizer
> -- PolyDaWG/8 - FPGA Based 8 Voice Polyphonic MIDI Synthesizer
> -- FatMan: home1.gte.net/res0658s/fatman/
> -- NonFatMan: home1.gte.net/res0658s/electronics/
> -- When the going gets tough, the tough use the command line.
>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy

**************
http://www.csabazvekan.com
music stuff
http://www.csaba.ch
electronic stuff
http://www.synthmaniac.com
synthesizer stuff (not fully set up yet)








More information about the Synth-diy mailing list