VOGONS


First post, by rasteri

User metadata
Rank Member
Rank
Member

For various reasons I want to be able to stick a logic analyzer on the ISA bus, and watch (at a minimum) 8bits data + 8 bits address + IOW/IOR (18 signals). Unfortunately the logic analyzers that have more than 16 channels are a bit out of my price range and/or don't have fast enough I/O.

I spoke with reenigne who designed an awesomely simple device ( https://www.reenigne.org/blog/isa-bus-sniffer/ ) but it's aimed at lower-level analysis for emulator development and can't analyze all channels at once.

However, Cypress (now infineon) make a superspeed USB3 controller chip called the FX3, which has 32 channels and is available on a dev board for a reasonable price (£$€ 50). There is an FX3 firmware to turn it into a logic analyzer (https://github.com/zeldin/fx3lafw), as well as a fork of libsigrok with support for it ( https://github.com/zougloub/libsigrok-1/tree/ … fw-for-upstream ).

I built a little adapter board using some 74LVC245 buffers to shift everything down to 3.3v (only 24 channels for now because I ran out of buffer chips)

Currently I'm analyzing a PC/104 board as it's easier to probe. To test I wrote a Qbasic program to send incrementing values to port 80, and everything seems to be coming through very nicely.

In the future I may design a PCB to let the analyzer connect directly into an ISA slot but this will be more than enough for the testing I need to do at the moment.

IMG_20230106_155230.jpg
Filename
IMG_20230106_155230.jpg
File size
1.72 MiB
Views
1054 views
File license
Public domain
IMG_20230106_155138787.jpg
Filename
IMG_20230106_155138787.jpg
File size
765.63 KiB
Views
1054 views
File license
Public domain
IMG_20230106_155053180.jpg
Filename
IMG_20230106_155053180.jpg
File size
843.69 KiB
Views
1054 views
File license
Public domain
Screenshot from 2023-01-06 15-22-59.png
Filename
Screenshot from 2023-01-06 15-22-59.png
File size
156.3 KiB
Views
1054 views
File license
Public domain

Reply 1 of 6, by Deunan

User metadata
Rank Oldbie
Rank
Oldbie

I use FPGA dev kits for the same task, there are pros and cons. Let's start with cons - you'd need level shifters for all signals since current FPGAs support only up to 3V3 I/O at best (and some might not even go that high anymore). Need to install multi-GB software package (current versions might be even dozen or more) and enable talk-back feature, which is a bit like always-online requirement in games, to have the necessary functions unlocked for free. Well unless you want to spend pretty penny on a pro license for the software. Also, depending on the FPGA and dev board in question, I/O pins routed to usable connectors and internal memory blocks might be limited.
Now the pros - it works, and is fast. Any modern FPGA will pretty much be limited by the speed of the level shifters, not it's own ability to sample (50MHz sampling can be done with just loose wires, provided they are short). You can set any kind of trigger or even write your own trigger logic, and some signal processing if you need it. FPGA can be connected to MCU with USB (or dedicated I/O like what FTDI makes) to transfer data to a PC. A bigger FPGA can run a soft-core system or even have HW ARM cores and 1Gb+ Ethernet PHY on the PCB. With even more level shifters you can not only listen but also talk back to the system, anything from simple injection of wait cycles to emulating a complete expansion card.

So, if you want to build yourself a configurable LA and the MCU no longer cuts it, investigate FPGA kits. Pick something with modern FPGAs that has a lot of I/O routed to usable connectors and obviously doesn't cost as much as a small car.

Reply 2 of 6, by rasz_pl

User metadata
Rank l33t
Rank
l33t

Compared to FX3 almost all FPGA kits (sans the ones with FX3) suck due to BW limitations. Why bother with triggering when you can slurp _all_ of the bus pins and process locally on the pc with something like python script.

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 3 of 6, by Jo22

User metadata
Rank l33t++
Rank
l33t++
rasteri wrote on 2023-01-06, 16:05:

Currently I'm analyzing a PC/104 board as it's easier to probe. To test I wrote a Qbasic program to send incrementing values to port 80, and everything seems to be coming through very nicely.

Ew. QBasic. Better get the real thing - Quick Basic 4.5x! 🙂

Or Power Basic, PDS 7.1, VBDOS..

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 4 of 6, by rasteri

User metadata
Rank Member
Rank
Member

Yeah I much prefer the brute force approach - funnel everything into the PC with gigabytes of memory and a nice big screen 😀

I (or rather reenigne) had the idea to expand the number of signals by using multiplexers or D latches, we have loads of bandwidth to spare so maybe trading some clock speed for more channels would let us monitor all ISA signals. Not something I need for this project but perhaps in future.

Reply 5 of 6, by RussD

User metadata
Rank Newbie
Rank
Newbie

A quick hack for getting at the signals, get some 0.100" header and a credit card. Cut the credit card in half lengthwise. Put the headers on the outside edge of the isa slot and shove the two halves of the credit card into the center.

[attachment=o]PXL_20220725_082042451 (1).jpg[/attachment]

Attachments

Reply 6 of 6, by rasteri

User metadata
Rank Member
Rank
Member
RussD wrote on 2023-01-09, 16:52:

A quick hack for getting at the signals, get some 0.100" header and a credit card. Cut the credit card in half lengthwise. Put the headers on the outside edge of the isa slot and shove the two halves of the credit card into the center.

[attachment=o]PXL_20220725_082042451 (1).jpg[/attachment]

Jank-tastic, I love it 😀