It’s also worth considering that you probably don’t actually need to run all of the generators separately.
For example, to get a 20kHz signal out, you only need a 40kHz sample rate. That’s super slow for an FPGA. To save on gate count, instead of running 300 generators at 40kHz, you’re probably better off running a single generator at 12MHz and time-division-multiplexing the calculations.
I ended up doing similar things with some of the synth stuff I built earlier. If you’re doing audio stuff, it’s really easy to chew through the gates on an FPGA like the BX (without DSP blocks) when you start doing things that require multipliers (eg. volume scaling, envelope generators, filters etc). The more that you’re able to re-use the same gates for different things at different points in time, the more you’ll be able to fit in your LUT budget.
I don’t suppose you’re able to provide any more detail about what you’re building (pure curiosity on my part )? THX deep-note perhaps?