Hi,
frequency sampling must be at least twice of the max frequency.
True. But mind that you must not use "fundamental" frequency, but the frequency of the highest overtone.
Sine is simple: no overtones, just use fundamental frequency.
All others have overtones up to unlimited frequency. You see the problem?
So you have to decide what distortion or deformation you can accept.
The most difficult regarding the overtones is a square wave. On the other side it needs no true "reconstruction". So outputting without filters may give the best results.
With sawtooth or triangle you need a reconstruction filter to avoid those small steps caused by the DAC. Here you have to make a compromise. Try 20 times the fundamental frequency. But you will see the small jitter in amplitude.
*****
An example to show the mystery....
Sampling frequency 200kHz. Output 1kHz sawtooth with 50% amplitude.
This gives 200 samples per period and 128 steps in amplitude. The digital data output will be something like this:
0, 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 8, 8, ...
Most of the values come twice in row, but others only once ( here 3 and 7).
So it is almost impossible for a reconstruction filter to "interpolate" a unique slope..
******
A relatively cheap solution with good quality an low part count is: using audio DACs.
They are cheap, have high resolution and most of them have built in oversampling technique with almost ideal digital reconstruction filter ( up to the given frequency limit) and they need only a simple analog filter.
Maybe go for a 192kHZ sample rate one if you are interested in.
But i find this is a good (and useful) way to learn about FPGA programming and signal processing.
Good luck