Posts

Incompetent coders - the frustration of using Vivado to build FPGA designs

IDIOT SOFTWARE MUST BE RESTARTED CONSTANTLY TO SEE INPUT FILE CHANGES When I update a source file, often Vivado is somehow working from a cached copy and never notices the changes. It is highly frustrating to fix an issue, rerun a Linter or Synthesis and get the same old errors. The only solution is to shut Vivado down and restart. I remember hitting this many times in past years as I worked with the toolchain, but it has changed from sporadic to nearly constant failure to see the changed timestamp. I can't be the only person running the toolchain under Windows, yet this kind of bumbling misperformance has been a feature for years. 

Working on ways to manufacture SLT card sockets and SLT board receptacles

Image
IBM SLT SYSTEM USES .125" PITCH PIN SEPARATION IN A GRID ON THE BOARD The board is divided vertically and horizontally in 1/8" steps, with a hole drilled in the intersection of each horizontal and vertical step On the board (IBM's name for a backplane) a gold plated pin is inserted through the hole at specific locations to form the pattern of 2 rows of 12 pins each where an SLT card can be inserted.  Black dots are pins The SLT board is organized with each card slot consisting of 14 vertical steps 1-14 and five horizontal steps A-E. An SLT card has pins that fit into rows 2 to 13, in columns B and D. Thus the spacing is .125" between pins in a row and .25" between rows. I haven't found an IBM published diameter for the pin, so I will have to measure one at my workshop.  On the card, springy contacts are soldered onto the PCB and are pushed toward the board by the pins of the SLT board as the card is inserted. There is a molded black plastic housing around th...

Bizarre behavior detected in a Raspberry Pi Pico based design and partially understood

ORIENTATION OF THE PRODUCT CAN CAUSE THE PI TO FREEZE AT STARTUP This particular product with a Raspberry Pi Pico would not boot up when sitting flat on the table in its normal orientation, but if tilted or turned it would come right up. When I hooked up a USB serial connection to the debug header, it worked fine even flat on the table.  INVESTIGATION BY DESIGNER AS WELL AS ME I first assumed that I had introduced this problem in the product, but happened to describe it to the maker who was able to reproduce it reliably. I continued to try variations to determine whether it was pressure on a board or component that caused it. I also searched the web for any reports that might cause Pi Picos to fail to boot based on orientation, but found nothing.  The designer found signals introduced on a serial connection trace when sitting in the normal (failing) orientation but not injected when rotated or otherwise turned. Traces were routed from the UART0 on the Pico to a header, for use...

RK-05 emulator kit arriving today - basis of my new disk emulator

 ON THE DELIVERY TRUCK The kit from George Wiley is out for delivery today. All the surface mount components are already assembled thus the assembly of the kit is focused more on connecting boards and setting up the cabinet.  THINKING ABOUT TWO PASS PROJECT I will first assemble it as it was designed and make minor modifications to the code in order to use my Diablo 31 drive to archive various 2315 cartridges in my collection. The Diablo 31, like the RK-05, is derived from the IBM 2310 drive in the 1130 but has an improved but different interface to the controller.  Just as one small example, on the Diablo/RK-05 one can request the drive to move to a specific track and the drive itself manages the movement across as many tracks as are necessary. The 2310 however only moves one or two tracks relative to its current position, either forward or backwards. This is why the changes for the 2310 emulation are more substantial. I have attempted to test them completely in simulati...

Found promising approach to finish my 1130 disk drive emulator project

2310 DISK DRIVE EMULATOR PROJECT GOALS I designed FPGA logic to model the behavior of a 2310 disk drive, the internal disk of the IBM 1130. It uses a single 14" platter inside a disk shaped cartridge holder, inserted into the drive so that the 1130 can boot and access the cartridge. The drive has two heads, one for each side of the platter, which can move radially from near the outside to near the inside of the platter stopping at 203 locations called cylinders. The top or bottom of the platter at a cylinder is called a track.  The drive records a bit over 512K words (16 bit long) on the cartridge, with each of the tracks holding 4 sectors of 321 words. Thus a cylinder holds 2, 568 words. A sector is a quarter pie shaped slice of the disk platter. The data is recorded with four check bits after every word, using an encoding scheme that is kind of like Modified Frequency Modulation (MFM). Each bit cell of 1.39 us duration has a clock pulse in the first half and the second half is t...

Added mod to avoid reset of Arduino when USB serial connection is made

THE NORMAL BEHAVIOR OF ARDUINO IS TO RESET WHEN A USB CONNECTION OPENS The serial communications supported over USB includes the DTS/DTR signals. When a serial connection is instituted by an RS232 device (such as USB on a laptop), signals are toggled that the Arduino detects and issues a reset to itself.  This restarts the 'sketch' running in the Arduino so it is in a known good state, but also watches for a specific data stream at the beginning which is targeted at the bootloader. This is how the development environment uploads new code to the Arduino.  THIS LEAVES CONTROL SIGNALS IN UNDEFINED STATE FOR A SHORT PERIOD While the processor is reset and running under the bootloader code, the state of various input-output pins on the Arduino is not controlled by your sketch. They assume some default values until you code begins running to set the pins up correctly. For example, an output pin is by default in logic low state.  The 1130 makes wide use of inverted logic, where ...

Found correct mod for the Arduino Mega 2560 to avoid powering it from USB

Image
USB HANDLING CIRCUITS IN THE MICROPROCESSOR REQUIRE USB VCC TO RUN The reason my first attempt failed, simply removing the poly (resettable) fuse, is that the fuse is between the USB connector and the microchip which needs the USB VCC connected. I had to reinstall the fuse.  BETTER CHANGE IS TO REMOVE A MOSFET THAT ROUTES POWER The Arduino uses a power mosfet and a comparator to decide when the external power is adequate to run the board, disconnecting the USB VCC from the board. It does leave that wire connected to the USB circuitry in the chip, however. With the transistor removed, the USB power never gets to the board so it is always powered by the external (1130) power. This means the board powers up and down with the main system, whether or not a USB cable is connected to anything else. When the board is powered up, the cable is active as a serial connection, exactly what I wanted to happen.  In the picture below, the green circle shows the reinstalled polyfuse. The red c...