Tiny Tapout is an interesting project, leveraging the power of cloud computing and collaborative purchasing to make the mysterious art of IC design more accessible for hardware hackers. [Yeo Kheng Meng] is one such hacker, and they have produced their very first custom IC for use with their retrocomputing efforts. As they lament, they left it a little late for the shuttle run submission deadline, so they came up with a very simple project with the equivalent behaviour of the Covox Speech Thing, which is just a basic R-2R ladder DAC hanging from a PC parallel port.
The plan was to capture an 8-bit input bus and compare it against a free-running counter. If the input value is larger than the counter, the output goes high; otherwise, it goes low. This produces a PWM waveform representing the input value. Following the digital output with an RC low-pass filter will generate an analogue representation. It’s all very simple stuff. A few details to contend with are specific to Tiny Tapout, such as taking note of the enable and global resets. These are passed down from the chip-level wrapper to indicate when your design has control of the physical IOs and is selected for operation. [Yeo] noticed that the GitHub post-synthesis simulation failed due to not taking note of the reset condition and initialising those pesky flip-flops.
After throwing the design down onto a Mimas A7 Artix 7 FPGA board for a quick test, data sent from a parallel port-connected PC popped out as a PWM waveform as expected, and some test audio could be played. Whilst it may be true that you don’t have to prototype on an FPGA, and some would argue that it’s a lot of extra effort for many cases, without a good quality graphical simulation and robust testbench, you’re practically working blind. And that’s not how working chips get made.
If you want to read into Tiny Tapeout some more, then we’ve a quick guide for that. Or, perhaps hear it direct from the team instead?
PC Parallel Port! Do you know if this card can be used for JTAG? I have old JTAG software that still require parallel port, but I see it requires an old 4.4 LTS Linux kernel:
https://www.startech.com/en-eu/cards-adapters/ec1pecps
“Linux 2.4.x to 4.11.x LTS Versions only”
I’ve downloaded the driver for that card and it’s a patch that only adds some PCI IDs to the standard Linux parport driver. It should be easy enough to do the same on any recent kernel, really.
I imagine me making a project like this and showing it to my mother:
Me: Look mom, see what I made!
Mom: Cool, what is it?
Me: It’s a DAC!
Mom: a DAC?!?
Me: yes, it’s the covox speech thing, a fancy name for something that combines 8 digital lines into one analog line, it’s very technical, but basically it works because of CPU intensive software on a computer that hardly has a MHz to spare, but it worked and was very profitable back then, so everybody was happy I guess.
Mom: wow, cool.
Me: this entire contraption takes a lot of work, costs a lot of money, I get only one of it, I have to wait a verrrrrrrry long time before I see the thing I designed (nervously waiting, hoping that I didn’t make a mistake), but it replaces 17 resistors.
Mom: Wow 17, that’s a lot. But… ehmmm, why didn’t you use resistors then? Don’t they make them any more. Resistors are those small passive cheap little thingies aren’t they? And aren’t they making these in chipform, like 4 resistors in a single 1206-like package?
Me: ehhhh
My mom never understood me, she tries. But now I come to think of it, it’s no only my mom…
And aren’t they making these in chipform, like 4 resistors in a single 1206-like package?
Things my mom never said to me.