This project builds a working homebrew Motorola 68000 computer with two PCI slots, using the design as a practical way to learn a bus that is far more complex than a CPU bus exposed on a connector. PCI uses multiplexed address and data lines, configuration space for automatic device discovery and resource assignment, burst transfers, and a transaction handshake. It can also support DMA, in which devices take control of the bus, though this computer’s PCI slots do not support bus mastering. The design draws on the author’s study of PCI specifications and a PCI architecture book, alongside experiments with salvaged FPGA cards.
To gain hands-on experience, the author reverse-engineered a proprietary PCI card with a 5V-tolerant Xilinx Spartan II FPGA, recreating its circuit in KiCad. VHDL turned the card into a basic PCI target: it responded to configuration reads and writes, requested a 64-byte memory region, supported reads and writes to internal RAM, and used a written byte to control an LED. A Linux test driver verified the card and blinked the LED. The completed computer runs a 68000 at 10 MHz, has 1 MB of SRAM and 4 KB of ROM, and uses an MC68681P for serial communication, timing, and I/O. A Spartan II FPGA bridges the processor to the 32-bit, 5V PCI slots, while an XC95144XL CPLD provides glue logic.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.