FPGA or ASIC or some kind of microprocessor

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Generally, can someone explain to me the basic concept of using these for DSP development? I've done a bit of research on Google, but I want to make sure I understand what I'm reading up on it correctly.

the FPGA is a Field Programmable Gate Array that can be programmed to do a specific task. Does that mean that the microprocessor can do it's programmed task at it's full rate without having to leave processing time for other things? How does the information typically get out of the microprocessor and into the rest of the circuitry, is it some kind of ADAC? The other thing I want to know about is how the FPGA, or other type of microprocessor get programmed. that information I haven't been able to find yet. if you know of a good resource for me, just post it in the comments below. Thanks in advance!

Post

> Does that mean that the microprocessor can do it's programmed task at it's full rate without having to leave processing time for other things?

Yes. The microprocessor configures the DSP chip and delivers data to it. Microprocessor chip can do other tasks while DSP chip is processing the data.

> How does the information typically get out of the microprocessor and into the rest of the circuitry, is it some kind of ADAC?

Depends on the DSP chip.
Most common model is to use DMA (attached to memory bus via DMA controller) for data I/O and some serial bus (like HPI) to controll to the chip. So basically microprocessor does memcpy the audio data into specific memory area and tells the DSP chip "go process it" (or simply "start" and DSP will process a new bunch of data every clock cycle).

> The other thing I want to know about is how the FPGA, or other type of microprocessor get programmed
The FPGA, or the DSP chip you'r using?
The FPGA is programmed with some hardware description language. VHDL, Verilog or something like that.
You "programm" the DSP by configuring the processing stages (by sending commands on the HPI).

Post

In a typical embebed DSP system there are several basic building blocks. In one hand, you got the non-DSP specifyc part where generally theres is a micro-controller doing its stuff. Its called "controller" beacuse it controlls several non-real time things like user interface, memory bank, interruptions, etc.

On the other hand you got the DSP-specific part where gennerally you'll find some kind of processor. Here you'll find micro-processors, ASIC, FPGA, etc.. doing mostly receving data, processing it with lots of math processing, and dumping data to the outside world.

As its been said, DSP chips mostly gathers data trough DMA. DMA its a protocol to dump lots of data in a single shot. So the signal flow will be: ADC -> DMA buffer -> DSP -> DMA buffer 2 -> DAC. The micro-controller send signals and controls all these stages so they are in sync, and all keep working togehter like a team. In harmony :hug:
Obviously there are variations of the mentioned scheme.


ASIC and FPGAs can have both micro controller AND micro processor on its inside. You win space, but they are more expensive. In general, its cheaper to have a dedicated chips than to have a sinlge FPGA or ASIC chip. Unless you do VERY high volume production where the ASIC and FPGA price will fall down rapidly in contrast with the splitted version.

Most guitar pedals uses the splitted scheme. Boss pedales have ASIC too, but they are generally DSP ASIC, meaning that BOSS/Roland uses a custom made DSP chip that is also workin with a (maybe custom too) microcontroller .
Most live sound mixers uses FPGAs. FPGAs are super powerfull, they can take multiple parallel chanels processings with no complaint!

tranceemerson wrote:The other thing I want to know about is how the FPGA, or other type of microprocessor get programmed. that information I haven't been able to find yet. if you know of a good resource for me, just post it in the comments below. Thanks in advance!
You choose wich platform suits your needs (ASIC, FPGA, or "splitted version"), then select a target device (ie altera for fpga or TMS320C6713 for dsp), read the datasheet, learn their languajes if you dont know them (VHDL for fpga, C, C++ and little of asm for dsp) o hire someone to programm it for you.

Post

ASIC are fixed logic made from a mask, there is no way any amateur can create one. Even big companies avoid them as much as possible and simulate their future ASICs with... FPGAs.
As such, "ASIC" is basically just a coprocessor, FPGA is easier (albeit slower) because you can put any logic you want in the coprocessor.

DSPs are just usual processors with additional IS (instruction sets) that are now available on Intel/AMD CPUs. There is absolutely no need to go for a DSP except if you want to go embedded.

Post

Maybe one could add, that it is no prob to transform any FPGA code into a digital asic. This is a common thing when lot number exceed a certain limit. For instance we recently moved a DSP-System tested in an FPGA from a Kintex to an ASIC. Reason:

- needs 1A instead of 8A during operation at 300 MHz speed
- can run at 1200MHz and has less current demand though (5A)
- creates less overtemperature and thus is in SPEC of max 60degrees
- is cheaper starting from 300 devices (600 devices taking ASIC design into account)
- is more beam resistant against EMI
- is smaller
- cannot be copied

so ASICs are nothing mysterious anymore.
My current FPGA audio project:
http://www.96khz.org/htm/audiovisualizerrt.htm

Post

engineer wrote: - is cheaper starting from 300 devices (600 devices taking ASIC design into account)
Wow, what's the math behind this? :o

If I've read correctly from other sources, the tooling costs to create an ASIC can easily cost around $100k? After that it's cheap to create the chips.

Post

Another option that makes sense for people starting out is that the lastest generation of microcontrollers are fast enough for smaller DSP jobs - for instance the Teensy 3.6 board has a ~180mhz ARM with an FPU (probably enough for a polyphonic VA!).

Post

MadBrain wrote:Another option that makes sense for people starting out is that the lastest generation of microcontrollers are fast enough for smaller DSP jobs - for instance the Teensy 3.6 board has a ~180mhz ARM with an FPU (probably enough for a polyphonic VA!).
ARM MCUs also have SIMD instructions ("DSP instruction set" as they advertise it) and I think the latest ARM Cortex M7 MCUs also have 64 bit floating points. The new ones go up to 600 MHz and cost next to nothing :)

Here's one (or two) :
https://eu.mouser.com/datasheet/2/302/i ... 381468.pdf

These days the MCUs have equal amount of processing power to DSPs of the same price range. ARM MCUs are easier to program and have tons of free tools available for them. It makes sense to start with ARM MCUs.

Post

AFAIK the Kyra, released by Waldorf works with a Zynq. In fact this is an ARM CPU together with an FPGA in one housing. I do not know what the two parts of the chip actually do in detail, but I expect the DSP doing most of the dynamic and complex work since it is a real task to handle dynamic virtual data in FPGAs. You have to implement virtual FSMs in pipeline modes in order to do this and there is still no support for this by the compilers or code generators (and most probably never will be),
My current FPGA audio project:
http://www.96khz.org/htm/audiovisualizerrt.htm

Post

engineer wrote: Sat Dec 07, 2019 4:55 pm AFAIK the Kyra, released by Waldorf works with a Zynq. In fact this is an ARM CPU together with an FPGA in one housing. I do not know what the two parts of the chip actually do in detail, but I expect the DSP doing most of the dynamic and complex work since it is a real task to handle dynamic virtual data in FPGAs. You have to implement virtual FSMs in pipeline modes in order to do this and there is still no support for this by the compilers or code generators (and most probably never will be),
I don't see the problem. You program normal FSMs and make use of Records to store data in BlockRAMs. Since you can have as many memory busses as needed (there are no memory busses, but simply ports), you can design whatever you want :). The complexity is to split a task between FSMs.

I recently implemented a midi voice assignment module entirely as a multi-FSM design. You play a chord of 6 notes while using lets say all 128 voices and it will decide in less than 1 microsecond which voices to steal and creates all the triggers. Since the module does no other tasks, no interrupt or whatever will interrupt it.

Post Reply

Return to “DSP and Plugin Development”