REQUEST TO RECEIVE PLOTTER COMMANDS OVER USB SERIAL LINK
A great suggestion came from a museum that will build one of my 5806223 substitute cards to include 1627 plotter support in their IBM 1130 system. If my card could output serial data through the USB connector of the FPGA daughter board, they could use that to produce an image on a monitor of what the plotter would be drawing, but without having to use plotter paper and pen ink.
When my card receives an XIO Write command to the plotter from software in the IBM 1130, it will grab the six bits of the request and send them as a stream of six ASCII characters, 1 or 0 depending on the state of each bit, followed by a carrier return and line feed. The serial link will run at 38400 baud which is more than fast enough to handle the rate at which the plotter can accept movement commands (an absolute maximum of just over 263 movements per second).
ADDED CODE TO PERFORM THIS IN THE DIGILIENT CMOD S7 FPGA
The logic to drive the serial port required a 100 MHz clock, which I generate from the onboard 12.5MHz clock of the FPGA. The logic now has two clock domains, thus I made use of an independent clock FIFO to pass the data from my original logic over to the faster data pump which will format and drive the characters out of the serial port.
As the main logic processes the XIO Write from the 1130, it grabs the six bits and pushes them into the FIFO after which it handles the physical plotter and status back to the 1130.
My data pump grabs any word pushed into the FIFO. For each of the six bits in turn, it will set up an ASCII 0 or 1 character and trigger the UART logic module. The UART outputs a start bit, the eight bits of the ASCII character and a stop bit all at 38,400 baud. The UART logic signals readiness for the next character, which advances my data pump to step through the six bits from the XIO Write. Once done outputting those six characters, it sends ASCII characters x0D and x0A, the carrier return and new line codes.
SIMULATION TO VERIFY THAT THE LOGIC CORRECTLY OUTPUTS A SERIAL STREAM
I modified my testbench to capture the UART transmit signal coming out of the UART logic and ran it with both/drum pen movements and pen raise/lower commands. It performed appropriately and confirmed that the output stream will complete before a single pen or drum movement will finish.
No comments:
Post a Comment