FILTERING OUT RINGING AND UNDERSHOOT OF SIGNALS
The Virtual 2315 Cartridge Facility (V2315CF) sits in between the internal 2310 disk drive and the IBM 1130 computer's logic gates, either relaying signals between the two end points or generating a signal in place of the one that the disk drive might produce. I found that in virtual mode (disk drive not turned on, the V2315CF simulating it entirely), certain signals exhibit an undershoot to under -3V and quite a bit of ringing, when the nominal voltage levels are +5V and 0.
The ringing caused the 1130 logic circuits to see the falling edge of the signal as multiple falling edges, thus confusing the logic and creating incorrect results. The path from the V2315CF to the logic gate of the 1130 is complex, with transitions between PCB traces, ribbon cables, more PCB traces, twisted wire cables, additional PCB traces, a pin on a backplane and then wiring in the logic card. There are many impedance transitions and places where signals can be distorted - made worse by a very fast falling edge because of the modern FPGA and logic gates in the V2315CF which switch so quickly.
SIGNAL SLEDGEHAMMER IMPLEMENTS SCHMITT TRIGGER FOR HYSTERESIS
I designed a circuit that will employ hysteresis, so that the output of the circuit changes from logic high (+3V) to logic low (0V) or back at different thresholds depending on the direction of the change. That is, the output won't switch to logic low until the incoming signal from the V2315CF drops below 0.85V and then it won't switch back to logic high until the incoming signal rises above 4V. Any ringing in between these levels is blocked from the output.
TESTING ONE CHANNEL WITH THE SECTOR MARKER SIGNAL
I initially only located and cut the wire that carries the signal causing me the most problems, -Sector Marker which produces a falling edge for 160 microseconds once every 5 milliseconds. This marks one eighth of a rotation of the disk platter, used by the logic circuit in the 1130 to determine where the four sectors begin on one rotation.
A peculiarity that leads to the incorrect operation of the 1130 logic is that the disk drive reports every one-eighth of a rotation but the 1130 implements only four sectors per rotation. Therefore, it has to ignore every other sector marker pulse. The ringing in the signal from the V2315CF was causing the logic to see two sector marker pulses rather than one, so it assumed it had already moved a full one-quarter rotation. The signal conditioner should ensure it counts correctly and sees only one falling edge for every -Sector Marker pulse.
WATCHING THE RESULT OF THE SIGNAL CONDITIONER
I put a scope on the input pin of the 1130 logic that receives the -Sector Marker pulses, to observe how the signal was shaped by my conditioner. I performed a write to a target sector, which previously had been aborting halfway through the sector due to the false edge count. The goal was to see it complete the sector write and the signal to look as close to perfect as possible on the scope.
 |
| Rising edge |
 |
| Falling edge |
The yellow trace at the topp is the output from the V2315CF main unit before it runs through all the cabling to get to the 1130 circuits. The purple trace is the signal received at the 1130 after the Signal Conditioner finishes with it. The blue trace is the output of the first inverter inside the 1130, showing that it also produces a single edge.
By comparison, here are the same three signals without the Signal Conditioner aka sledgehammer -
WILL ADD ADDITIONAL SIGNALS TO THE SLEDGEHAMMER
I picked four other signals that depend on falling edge detection in their operation in the 1130 logic, since they had the potential to trigger incorrect operation of the logic. Some won't malfunction even if they see multiple falling edges close together, such as the -Index Marker pulse that arrives once per rotation to reset the sector number counter to 0. Two edges on that signal wire still generate the same sector number in the counter.
The incoming clock generated by the V2315CF, -Write Clock Phase B, is used by the 1130 logic to output the pulses (-Write Clock and Data) that get written on the disk platter to record both clock pulses and data bits that have a value of 1. The design of the disk produces no pulse for a data bit if its value is 0, so the only way to determine whether we have a 0 data bit value is to depend on the timing signals coming from the disk drive (or V2315CF in this case).
When reading a sector from disk, the V2315CF generates the clock and data pulses that would be extracted by the disk drive, however the data actually comes from our mini 2315 cartridges and sits in RAM on the V2315CF. Therefore, the V2315CF generates the -Read Clock and -Read Data pulses that would be seen if the disk drive heads were actually reading data from a full sized 2315 cartridge inserted in the 2310 disk drive. Those two signals are given a channel each on the conditioner board.
A feedback signal from the disk drive mechanism, -Access Ready, is used by the 1130 logic to recognize when a step of the disk arm has been accepted and when it completes. The 1130 converts a request from the program to seek a number of cylinders into a chain of small steps, a single 1 cylinder step for an odd count preceeded by 2 cylinder steps to achieve the full count. False edges might cause the 1130 to believe a step has completed when it has not, throwing off the total movement.
I protect against false edges in the V2315CF where I watch over the arm movement, but the disk drive and the 1130 are fully in control of arm movement when we are in real mode (disk drive is operating with data coming from mini 2315 cartridge). The V2315CF has to shadow the arm movement so that it can present the data from the correct cylinder when a read or write is done - we change the RAM address based on the current arm location between cylinders 0 and 202.
The terminator resistors for all the signals passing through the V2315CF must be pulled up to 5V in order for the 4V threshold of the signal conditioner to recognize a logic high, even though the disk drive circuits generally use 3V as logic high. This is one on the terminator board of the V2315CF.
Another complexity of the V2315CF is my desire to support two modes - real and virtual. The intended use is real mode, where the 2310 disk drive inside the 1130 is spun up. The disk drive is passing along the real -Sector Marker and -Index Marker pulses, with the V2315CF just observing or shadowing them. The disk drive arm moves when the 1130 commands a seek to a different cylinder, with the V2315CF shadowing the end location.
Virtual mode allows operation with the disk drive left turned off. The -Sector Marker and other signals are all produced by the V2315CF itself. It responds to the seek requests and generates -Access Ready as well. Thus, -Sector Marker, -Index Marker, and -Access Ready can come from either the V2315CF or the 2310 disk drive depending on mode.
The signals like -Sector Marker and -Access Ready are passed along through an electronic analog switch on the 2310 Interface Board which merges the wires from the disk drive, 1130 and V2315CF. In real mode, the switch connects the disk drive output to the 1130 input, while the V2315CF leaves its output line undisturbed. In virtual mode, the switch is off and the V2315CF is pulling the line down to logic low to implement those signals.
I need the signal coming into the 1130 to work properly in both modes - real and virtual - with different electronics producing the signal in each mode. This made it impossible to select terminator resistors for an impedance that worked correctly in both modes - some choices worked for one mode but not the other.
When these signals are conditioned by the new board, it will be time to rerun all the function tests for the V2315CF, once in real mode and another time in virtual mode. That plus the correct completion of the IBM 2310 disk diagnostic program constitute an adequate test of the V2315CF.