12bit PWM at 20 Khz, IC clock osc limitation

I am puzzled over what your problem you seem to perceive that you have.

I regularly use PWM at much higher frequencies without having to change the processor clock. All you have to do is to change the prescaler register driving the PWM.

void setPWMtimer(){
// Set timer1 for 8-bit fast PWM output to use as our analogue output
 TCCR1B = _BV(CS10); // Set prescaler to full 16MHz
 TCCR1A |= _BV(COM1A1); // Pin low when TCNT1=OCR1A
 TCCR1A |= _BV(WGM10); // Use 8-bit fast PWM mode
 TCCR1B |= _BV(WGM12); 
 OCR1AL = 0x80; // start PWM going at half maximum 
}