Putting A Teensy To Task As A Transputer Link
One downside of working with the old Inmos Transputer devices is the rarity and cost of the original silicon. Obviously, you can’t sidestep the acquisition of the processor—unless you emulate—but what about replacing the IMS C011/C012 link chip? You need this (expensive) part to interface the transputer to the programming host, but as [Erturk Kocalar] discovered, it’s perfectly possible to coax a Teensy to do that job for you just as well.
Transputers work by utilizing an array of bit serial interfaces to connect a network of devices, allowing for cooperative computation on tasks too large to fit on a single device. This protocol is, at its link level, a simple asynchronous bit serial affair, with 11-bit data messages, and a raw two-bit frame for the acknowledge. The C011 device at its heart is just a specialized UART—it takes 8-bit parallel data from the host, dealing with handshaking, and pushes it out to the first transputer in the chain at 5, 10 or 20 Mbps, but inverted and with two start bits and a single stop bit. In parallel, it performs the same task in the reverse direction.
[Erturk] realized that the Teensy UART has an inverted mode and, crucially, a 9-bit data mode. This allows the second start bit to be generated as bit 0 of the word, with the remaining eight bits forming the payload. Simple stuff. Additionally, the Teensy UART is capable of the maximum transputer bitrate of 20 Mbps, without breaking a sweat.
There is a slight issue, however, in that there is no way to send or receive the two-cycle acknowledgement frame directly. Since the protocol stop bit is a low, it is possible to implement this by simply sending a dummy data word with all 9 data bits low (since the acknowledge is a ‘1’, ‘0’ pattern). In one specific corner case, that of a direct memory PEEK
operation, the command is clocked into the transputer, which sends back a two-cycle ACK—almost immediately followed by the 11-cycle data packet with the result. But, since the Teensy UART is still busy ‘fake decoding’ the full 11-bit dummy ACK message, it will miss the data packet entirely.
It turns out that the easiest way to get around this is to speed up the link and run at the maximum 20 Mbps rate. That way, the Teensy will have fully received the overly-long ACK long before the transputer has completed the PEEK command and started to send over the result. Why you would voluntarily run the link slower escapes us, once you’d got the design dialled in and reliability was a given, anyway.
We like transputers, a cool technology that died too soon. Here’s a quick guide to these innovative devices. Some people are really into transputer hardware, like this person. Finally, with the genuine hardware finicky to work with, expensive and hard to find, you could play along with your trusty web browser, and tick it off your nerdy bucket list.
Post Comment