I'm building a synthesizer on an FPGA and I'm having trouble calculating sampling rates. Currently, I'm running a system clock at 98.3 MHz and I want to produce 16-bit audio at the output.
I've got a 4096-value lookup table for a sine-wave DDS module that produces 16-bit audio. This module increments a 32-bit phase by some amount at 98.3 MHz to achieve a desired frequency determined by
$$\text{increment} = \frac{f_\text{desired}}{98.3\,\text{MHz}\,/\,2^{32}}$$
Then I just take the top 12 bits of the phase to index into my lookup table. Is this correct? Now if I run a PWM at $$98.3\,\text{MHz}\,/\,2^{16} = 15\,\text{kHz}$$
I can generate essentially "1 bit" audio in my headphones and it works. This makes sense, since there are 2^(16) possible values that need to be encoded via PWM. Does this mean I can only produce up to 7.5 kHz sounds by Nyquist, or does not apply since this is at the output not sampling an input?
Further, I don't want to use PWM since 15 kHz is in the audible range and its frequency creates audible artifacts (though I could run PWM at some multiple like 30 kHz). Instead, I tried using PDM to produce "1 bit" audio at 15 kHz but just got noise. Is my understanding of the PDM/PWM frequency correct? When does Nyquist apply?