I'm using a usb-6351 daq card generate tunable frequency square wave. I wanted to generate square waves in the range of 10-1000Hz. I'm using the 100kHz time base and toggle mode of the counter to generate the square wave. It seems that it will work fine 1kHz and above, but at lower frequency, it is much less accurate. Is it reasonable?
You should see more "quantization error" as your pulse train *increases* rather than as it *decreases*.
Why are you using the 100 kHz timebase? That seems like an artificial constraint. The default behavior for the device will be to use the fastest timebase capable of producing your output frequency, leading to smaller potential for quantization error in your desired output frequency.
All devices I'm aware of can produce 10 Hz pulse trains with the fastest onboard timebase which will probably be 100 MHz, 80 MHz, or 20 MHz (for *very* old devices).