As a "micro-guy". I just have not yet gotten what you do with an FPGA.
I dont mean applications like DSP, ADA, etc. but as a dev, what are you doing? do you break what you want to do down into individual logic gates? or do you mostly end up putting together/using pre-built special purpose cores?
i am an experienced developer with many platforms and languages but the FPGA seems even removed from using an assembler, yet I just cant wrap my head around the concept.
Yes, all of the above.
You can do 'structural' designs where you wire pre-defined components together - much like a building a system's schematic. This is what I think most people with an electronics engineers background think that FPGAs are for - replacing lots of little chips.
You can do data-flow designs, where you set up a data stream that enters the FPGA, does stuff, and then exits the FPGA. (e.g. audio processing) - very much like a hardware based UNIX "filter" program. This is very DSP friendly - and this is what most computer S/W people think FPGAs are for.
You can do sequencing style designs (called Finite State Machines or FSM in the local jargon), where you build a state machine that does something special. This is what most embedded engineers think FPGAs are for - bitbashing high speed I/O and adding custom MCU peripherals and so on.
You can also be designing a very advanced state machine, which looks much like a CPU. This is what Computer Scientists think FPGAs are for - playing with computer architectures.
High-end H/W suppliers think of FPGAs as a low cost / rapid development replacement for ASICs, when volume and/or performance requirements are relatively low.
And then ASIC developers think FPGAs are a way to validate the logic behind their designs before they get put into real silicon.
You usually end up doing a whole lot of things at once (except of course the last two!).
So maybe a CMOS camera system has a small CPU that controls the camera's I2C interface a data stream to receive the pixels from the camera and process them. They can then be put into a frame memory using a pre-designed memory controller block. After that it could then be displayed using a video controller, which is just PWM system which seqences accessing memory and squirts the pixels out to the DAC.
Some bits you will build at the gate level, other bits you build at the block level. Usually the closer you are to the input pins on the FPGA the closer to gate level you need to work, or perhaps you are trying to make the most of an internal DSP block where using tricky features can make huge performance gains.
Much like using software libraries, doing things with high-value pre-defined blocks usually costs real money, as you need to license them from the original developers.