I haven't used the Burst FFT architecture (I've been using streaming) but they should all behave about the same.
You say you have a sine input at 50Hz. The amplitude is 5. First of all, what is the bitwidth of your fft core input? If 8 bits, you should probably use a test signal that has peaks near 127 and -127. The core expects signed data (2's comp). Be careful to not let the input hit -128. While that is a valid value for 8bit 2's comp data, the core has an error when handling that extreme. This is in the errata.
The core's accuracy gets better when the input uses all or near all of its dynamic range.
When you generate your input samples, are your sample points at a frequency at least twice the Nyquist? (100 Hz for your case)
The scaling is 2^(-exp). You probably did this but it's not what you typed. So, if exponent is -5, you would scale by 2^(5).
For your Matlab sim, are you using the Matlab core model? If you use Matlab's real fft (FFTW from MIT), that is floating point software and those results will come close to the core's values but will differ significantly for low values of input into the core.
When I was working on the accuracy issues, I ran three sims. A pure Matlab sim using Matlab's software fft, a Matlab sim using the fft core model that the MegaWizard generates and a Verilog sim using the core's behavioral model (core.vo).
Let me know how you're doing.