The microcontroller is responsible for user interface and sending commands to FPGA. The FPGA is responsible for generating the waveforms and making modulations. There is also an analog part (DACs for outputs and ADCs for modulations) and a power supply.
There are two modes of the generator operation: a normal DDS and a AWG-DDS. In the normal DDS mode a counter (phase accumulator) addresses directly an internal FPGA memory containing some waveform. In this mode it's easy to achieve frequency or phase modulation but it's not very good for arbitrary waves. The phase accumulator skips certain number of samples depending on selected frequency and overflows at different points - this can cause jitter and chaos in some of waveforms. In the AWG-DDS mode the phase accumulator overflow bit (additionally filtered by an external PLL) is used to clock a next counter which addresses the waveform memory. Here the memory is sampled starting from the first sample and either every sample is outputted to ADC or known (2^n) number of samples are skipped during each period (at higher frequency).
Flash memory connected to microcontroller stores wavefroms that are uploaded to FPGA RAM when selected. Flash memory connected to the FPGA is a memory used for internal modulation. Both flash memories can be uploaded from PC (through serial interface).