FPGA-Based DSP Options


#21

@axoman Maybe this will melt your brain more:

I've been working on integrating Axoloti and FPAAs for the past year or so. I'm planning to ship an expansion board and complete firmware and object library. The idea is to support pretty much exactly what you've described: to be able to have an Axoloti patch that compiles down to some arbitrary analog signal processing that happens on the expansion board. This will allow you to run whatever analog designs you want like classic filters etc. and to control everything with the usual Axoloti interface and libraries. Hopefully the community will then share many such analog designs just like we currently share digital objects.

There's a lot of challenging engineering necessary to make that all work smoothly and currently I'm working by myself in my spare time, so I don't have a specific timetable for when it will be available. I'm involved directly with a company that produces FPAA chips as much of the software for the project is actually applicable to many other applications. I'll keep the community posted on my progress.


#22

@urklang

Yes please keep us updated on that. Sounds awesome!


#23

Very nice, and that "reconfigurable" part of it isn't something I even thought about, despite the benefits of FPGA technology. Axoloti can do that as well, just in a different way, cause you can save various sketches to an SD card, and select between them using the hardware buttons once Axoloti is in standalone mode, therefore allowing you to completely reconfigure Axoloti on the fly.

No maybe about it, consider it melted mate :stuck_out_tongue_winking_eye: :sunglasses:

That sounds completely awesome, and it's especially comforting to know that it's being designd by someone who works for an FPAA manufacturer. I'd like to second what Jaffa said, please keep us updated on it, just be careful I don't rip your freaking arm off when you finally bring it to market :grin:

Of course, what this means in real terms is that once we have the FPAA board, between that and the Axoloti, we'd have a complete Analogue/Digital development system driven completely by a visual building-block interface. Now more than ever, I wish Johannes would release a completely unpopulated version of Axoloti, cause that way it could be connected to your PFAA board using whatever connection design the designer chooses (assuming that your board is unpopulated). If it's going to be populated, then please release an unpopulated version as well, cause being prepopulated with connectors, power jacks, storage mechanisms, leds, switches etc, dramatically lessens the boards viability for bulk commercial purchsers. Some commercial users might accept prepopulation, but the majority won't. It's like with Arduino, they got it right because although the boards are prepopulated, it is extremely easy to "breadboard" an Arduino core and add to it only the parts you need, so you can test a custom board before production.

Try breadboarding an Axoloti core that would work with minimal components :grimacing:

If your board design is prepopulated, it should be easy enough to have some boards made using the same FPAA that you use by following its schematic, so it could be done that way, but again, I think the key for sucess with any product is it's viability in a commercial environment, not just a consumer accessible one, because ultimately, commercial users buy in bulk, and that's not something to take lightly. I doubt the schematic for your board would be too complicated due to being an add-on, but I wish there was a Fritzing-format schematic for both Axoloti and your board when released, cause that would completely work as a professional development system. It means we'd be able to incorporate both the Axoloti and the FPAA into the same board of any design, once the users designs had been worked-out using an actual Axoloti board and your actual FPAA board. In a nutshell, breadboarding a custom PCB is the only alternative if the board isn't available in unpopulated form.

Other than the on-board SD card-holder, USB socket, LED, and Switch, the Teensy 3.6 is s good example of a commercially-viable development board:

It's not completely viable, but from a commercial standpoint it is far more viable than Axoloti, because there is far too much prepopulation on the Axoloti, and very little on the Teensy. There should be a version of Axoloti with the core and all necessary interconnection components, but that is all, absolutely nothing else, not even an LED unless it can be disabled.

So I'm seriously looking forward to your product, but please release it in unpopulated form, or at least relase two versions where one is unpopulated :heart_eyes:


#24

@urklang

Sounds like you have som experience with programming FPGA's:

How hard is it to program these, compared to what we are doing on Axoloti now? It sounds very low level, which I could imagine is a bit hard to get started on.

I understand its completely different languages used, VDHL and Verilog. Which I never even heard of before :slight_smile:

Wow, this FPGA organ is really impressive:)


#25

My sense is that FPGA programming is not at the right abstraction level for users wanting to write extensions. I don't see regular users programming effectively in terms of logic gates. This is basically what you get working in hardware description languages (VHDL, verilog, etc.); you're writing a description of digital logic circuits. There would need to be a higher level library that compiled down to something useful on the FPGA. There are probably higher level libraries like this out there that help with DSP applications. But then we're sort of back to where we started. A C style library for doing DSP programming. I'm a bit skeptical that this would end up being more efficient or effective somehow just because we were running everything on an FPGA. I don't know the details off the top of my head, but my gut feeling is that it wouldn't buy us much. Ultimately in the digital domain all we're trying to do is execute all the math we want to do fast enough and then send everything out to the DAC.

FPAAs are fundamentally different. You are programming in terms of pretty high-level analog modules like oscillators, filters, comparators and gain stages, etc.


#26

I've heard many stories how many seasoned programmers cannot even get through the basics of FPGA, not saying don't learn it, but its a different concept.
FPGA's have been around since the 1980's, but it is only more recent years, and the advancement of many chip technologies that options have become available for hobby programmers. Comparing systems from the 1980's to now, if I have researched correctly, they have more logic gates, blocks and clock domains, added with more cores for parallel logic.
A way of just using lots more "or, nor, and, xand, xor" etc.. to acieve the required outcome.
One thing to remember, FPGA is not sequential programming, its not like in the Axo object where you put your code line by line, knowing it gets executed line by line.
FPGA's don't work this way.
:grin:


#27

With a FPGA you need digital electronics skills along with programming skills (to program cores) and DSP skills (to design audio algorithms).

As you state, the main interest is that even if some embedded cores have a sequential internal behaviour, the main interest and difficulty is that everything in a FPGA runs in parallel. You have to deal with synchronisations and build yourself such things as pipelines...

About FPAA... you cannot miniaturize capacitors in the range we use in the audio (nF uF). These are condemn to be external components. FPAA will be of limited use. So, don't expect a one chip Prophet V.

I think that the right way (low cost, efficient way, easily programmable) is an array of ARM processors.

But i don't think that @johannes plans to make Axolotis SPI-communicate-and-synchronize (which is complex and difficult for a "one man army") any time soon :disappointed: .


#28

How would it work in Scanalog though, surely the miniaturisation is no obstacle due to the ability to interconnect the built-in components. Wouldn't any such limits be overcome by simply programming the connections between resistors, capacitors etc, in series or parallel configuration depending on how much capacitance or resistance is required?

In analogue, you increase or decrease resistance or capacitance through their arrangement. Don't forget they're working with ready-made component blocks, so that probably means that if the capacitance or resistance you wanted is not physically possible with a single component, it would silently connect two or more in the required configuration in order to achieve the same task.

I'm hoping it must work something like that, otherwise that Scanalog project would not be much use at all.


#29

It seams from some documentation, the built in components are somewhat part of an attempt to mimic the real life components, not sure if all FPAA devices are the exact same, but one document describes use of a transistor, a single generic capacitor, and op-amp to achieve the required outcome, so would expect it could contain many multiples of this group within the FPAA itself. It doesn't state it as an accurate result, but a close enough result in terms of how it operates. Documentation also highlights very high dependancy on software like "Scanalog" to make good use of all this.


#30

The Anadigm FPAAs use switched capacitor technology. E.g. a switched capacitor filter uses the ratio of smaller capacitors (on the chip), so no large (external) capacitors are needed, at least for that. It's worth noting that with switched capacitor circuits, the sampling theorem applies and anti-aliasing filters must be applied accordingly. To this end the Anadigm chips have programmable 2nd order anti-aliasing/reconstruction filters on board.


#31

Wow, just like the good old MF10 filters !...

What is the switching frequency of the switched capacitors ?


#32

an Axoloti-style environment that makes the FPGA accessible would be revolutionary!

Arm/STM32 does seem to be recently established (axo, gecho, bastl, organelle, etc) as the production-worthy step-up from Arduino/Atmel, thoguh, and the boards are available and cheap and constantly being improved.


#33

I think it's max 4 MHz for the AN231E04 (the chip variant used in the Paradigm synth).

BTW, the AN2xxxxx family is called not FPAA, but dpASPs (dynamically programmed Analog Signal Processors), since they can be (re)configured at any time, not just on start up.


#34

With these high frequencies, aliasing won't be a problem.
It may be also possible do make DCO (analog osc synch'd by digital signals) à la Roland Jupiter/Juno.


#36

a new intro to FPGA. https://www.youtube.com/watch?v=BZUHr3J217c


#37

intro to VHDL (programming hardware) http://freerangefactory.org/pdf/df344hdh4h8kjfh3500ft2/free_range_vhdl.pdf


#38

So as it has been at least 6 months since I have thought about seeing if I would be interested in learning FPGA, I decided to use your links to see if it would change anything, the video is good, but boy does he talk a lot...

Anyhow, unfortunately the outcome is the same, when I look into what is involved with simulating signal paths and problem solving, added with the fact that a lot of coding can be done much simpler with a microcontroller, it does create an overwhelming sensation of a very steep learning curve, and as before becomes something maybe for a later date.

One example I looked at was a 4 in 1 out mux, for a beginner I guess the code would appear quite complex, but over time I could get familiar with it, but then when I saw the simulation and tried to compare it to the code, I thought WTF !, I just could match it up, I think due to it appearing to be very complex, and I may have just talked myself out if it, but still, not for me.

:stuck_out_tongue_winking_eye:


#39

This thread reminded me of an excellent project for those interested in the basics of logic design and low-level programming: http://www.nand2tetris.org/

The project has a corresponding book: https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686/ref=ed_oe_p

It basically walks you up the stack building up a basic computer architecture at the gate level, assembler and high-level language all from first principles. The toolchain is all custom to the project, but the concepts are very general. At the end you have a full computing system stack all emulated in software that you can write games for, somewhat like a Gameboy.


#40

Another option for developping hardware synth is to use DSPs

The DREAM company offers a range of multi DSP chips optimised for audio applications.
See for example : https://www.dream.fr/pdf/Serie5000/SAM_Datasheets/SAM5708B.pdf

The problem, as already stated, is to make them easily programmable so that a graphic editor can be used to design synths.


#41

As usual with this stuff, looking into one product leads to another, and another, and another. And yesterday I stumbled upon what is probably the most important development of all (for me anyway). It's a board (PyBoard) that runs the Python programming language (MicroPython), and does so "Bare-Metal", so it's incredibly fast. In other words, the MicroPython language is its bare-metal operating system, meaning you can start programming, or have it run, MicroPython with bare-metal performance the moment you switch it on. To give you an idea of just how easy it is to work with, check this page out:

http://docs.micropython.org/en/latest/pyboard/pyboard/general.html

Love it, and I think I'd be better-off concentrating on learning that than learning the FPGA thing, cause I'd also be learning Python. I should point-out though that I don't really want it for DSP, I want it mainly for controlling logic of products, and I honestly cannot see a limitation of a board such as this in being able to deliver. It being bare-metal, you can do DSP on it if you wish (it's incredibly fast), but like I said, that's not what I want it for, I would much rather use Axoloti for working with DSP.

Anyway, it's a very different thing, I know that, but I think I'll go for this instead of an FPGA board, might even pick-up the book as well cause that'll help learning Python as well as the board: