As far as I can tell, there exists no waveform generator that is easy to use. By easy to use, I mean you have to be able to get a waveform from a completely fresh computer in the following three steps:
- plug it in to computer and oscilloscope
- pip install my_scope_lib
my_scope.send(np.sin(np.linspace(0, 2 * np.pi, 1000)))
That’s it. That’s all I should have to do. Yet every one requires some SCPI nonsense or has a weirdo interface or whatever. Like just send my data, it’s really not that hard.
Architecture.
Here would be a really simple way to do it:
And here it is, on my bench:
Using the rather excellent colorlight fpga module. Loads of credit to Tom’s blog post for documentation on this. I originally got this setup working with an ice40 from an Upduino board (with an extra FT232H), but the ice40 only wanted to synthesise up to about 40MHz and the FTDI clock is at 60MHz.
I also found this github repository which made getting the FT232H working much easier than it otherwise would have been.
Output waveform
This is what a linear ramp looks like coming from the PC. Note that the resistors that I used were rando 1% value ones:
Quite a bit of nonlinearity there but very good for a first try!