I am trying to generate a triangular wave of frequency ~ 100 kHz and V(p-p) = 4.5 V.
Additionally, I also have a tight specification that the value of the peak of triangular wave generated in each cycle should be very precise.
It is aimed to achieve a 12-bit performance, by which I mean that the variation in the value of peak amplitude of triangle generated (say in 10-15 cycles), should not differ by more than ~1.09 mV. I got this number by dividing 4.5 V = 4500 mV by 4096 (i.e. 2^12).
I have tried using the conventional square wave generation followed by integrator circuits and simulated them in LTSpice. They do work and generate the 100 kHz and 4.5 V(p-p) triangle, but they have amplitudes variations of around 3-10 mV which gives a very poor performance. The best I could get was when 3 mV variation was observed which gave around 4500/3 = 1500 ~ 10.5 bits performance. The circuits that I have tried to simulate are shown below:
And also another requirement I have is to ensure that the square wave generated using comparator/schmitt triggers should have rise/fall times around 10-20 ns. So, I have tried using high-speed op-amps (AD8041 working on 160 MHz) and comparators but this gave rise to ripples in the square and triangular waves generated. These are shown below: