I had spent several years using FPGAs for DSP. Several MIDI synthesizers written in Verilog came out of that. Xilinx was my preference. Back in those days, I used what would be considered a "small" FPGA (500,000 equivalent gates) and got a minimum of 8 voices of polyphony, so with today's much larger and faster FPGAs, the sky is the limit.
An FPGA is a logic device. That is, it's internal bits and pieces amount to a collection of logic blocks that you can connect as you like. Also included are fast multiplier blocks (the more the better). So it is good to have a complete understanding of how all of the basic logic functions work from AND/OR/XOR/Invert to flipflops to adders and multipliers. I never had much use for C to FPGA since it will only do what the compiler is "trained" to do. There are times when an intimate knowledge of logic can provide a unique solution that the compiler might not. A good deal of what is in a synthesizer amounts to a state machine or several state machines which can be written in C or an HDL. To my way of thinking, if you want to use C, then a microprocessor might serve better (realistically, less messing around) given the project can fit within the memory and clock speed of the chosen device. Ultimately, I eventually came back around to ARM chips (and yes, C). This world is less expensive and requires less support circuitry than an FPGA. The ARM contains the program in internal Flash while the FPGA needs an external Flash RAM and a CPLD that can shovel the data into the FPGA at power on. My opinion here is that FPGAs are very powerful tools, but these days might be considered overkill for a 32 voice polysynth unless you've coded up a large collection of some truly unique features. FPGAs also have a rather steep learning curve (and that is not meant to discourage you). If the project you plan is huge, an FPGA could easily be appropriate. But for what I was doing (32 to 64 voice polysynths), they were just more work and expense than I felt was justified. Given you already know the C language, have you looked at ARMs such as STM32H7 series for doing DSP work? They do have FPU hardware inside that works on both float and double types as well as having DSP instructions (such as multiply and accumulate). Again, this post is not to dissuade you from learning FPGA, it is to encourage you to look at your project's size and scope and make a good decision about the hardware to use. -- ScottG music-dsp@music.columbia.edu wrote: >P.S. On the topic of using FPGA's to implement lookup tables, I >discovered the following Hacakday article. Fortunately it simply in my >email inbox, about an hour or two, ago: > >https://hackaday.com/2020/01/10/using-lookup-tables-to-make-the-impossible-possible/ > >If you thought Theo's message was interesting then I recommend doing a >deep dive into this article too. For me it is (also) wonderfully >illuminating. > > >On 10/01/2020 11:48, Andrew Luke Nesbit wrote: >> On 10/01/2020 10:18, Theo Verelst wrote: >>> Hi all >> >> Hi Theo, >> >>> Maybe it's not everybody's cup of tea, but I recall some here are >>> (like me) interested in music applications of FPGA based signal >>> processing. >> Lately I have been researching exactly this topic. It's one of the >> primary areas of DSP research that I am considering directing my career >> towards and making a significant investment of resources in learning.site >> >> There is a lot of meaningful context in all of this. I'm looking >> forward to deploying my new website that should explain it. >> >> I have a strong backgroumd in music and audio signal processing. Not >> with FPGA however. >> >>> I made a video showing a real time "Silicon Compile" and test program >>> run on a Zynq board using Xilinx's Vivado HLS to create an FPGA bit >>> file >> I am overwhelmed by where to start in FPGA. This includes finding a >> hardware recommendation for a beginnerdevelopment kit. >> >> Nevertheless I have yet to look up a vendor of this FPGA development kit >> and toolchain and then to find out what prices. >> >>> that initializes a 64k short integer fixed point sine lookup table >>> (-pi/2 .. pi/2) which can be used like a C function with argument >>> passing by a simple test program running on ARM processors. >> This is great! It's simple, useful, and can be visualized with known >> expected results. It seems like a perfect starting project. >> >>> The main point is the power the C compilation can provide the FPGA >>> with, and to see the use of the latest 2019.2 tools at work with the >>> board, >> Might I rephrase this as the following? >> >> -  It's an exercise in selecting an appropriate FPGA development kit. >> This kit would be a good investment and sufficienly repurposeable for >> future DSP projects. >> >> -  Setting up the toolchain; learning a workflow; and acquainting >> oneself with the ecosystems of: >> >>    -  FPGA-based DSP; >> >>    -  the Xilinx and FPGA support communities; >> >>    -  edge computing; and... >> >> circling back to the beginning... >> >> perhaps even providing a basic introduction to FPGA for somebody (like >> me?). >> >> In this last case what would be an appropriate "Step 1. Introduction to >> FPGA"? >> >> I guess that Xilinx's own documentation for new users of FPGA technology >> would be a good place to start. >> >> If anybody has recommendations for additional books, blogs, forums, etc, >> please let me know. Thank you!! >> >> In summary: Is Xilinx a good company to invest time into learning its >> ecosystem? This obviously includes spending money on dev kits with the >> aim of FPGA-basd DSP. For examples, is Xilinx's support good? Is the >> community ecosystem healthy? >> >> Kind regards, >> >> Andrew > >-- >OpenPGP key: EB28 0338 28B7 19DA DAB0 B193 D21D 996E 883B E5B9 >_______________________________________________ >dupswapdrop: music-dsp mailing list >music-dsp@music.columbia.edu >https://lists.columbia.edu/mailman/listinfo/music-dsp -- ScottG ________________________________________________________________________ -- Scott Gravenhorst -- http://scott.joviansynth.com/ -- When the going gets tough, the tough use the command line. -- Matt 21:22
_______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp