Skip to content

Turbo mode overhaul: 25MHz, expansion card DMA, bus safety#9

Open
tltx wants to merge 2 commits intojbilander:T8Q144-experimentalfrom
tltx:T8Q144-experimental
Open

Turbo mode overhaul: 25MHz, expansion card DMA, bus safety#9
tltx wants to merge 2 commits intojbilander:T8Q144-experimentalfrom
tltx:T8Q144-experimental

Conversation

@tltx
Copy link
Copy Markdown

@tltx tltx commented Apr 19, 2026

Complete rewrite of turbo mode timing and bus arbitration to support expansion cards (GVP HC+8 SCSI/RAM) alongside SF2000 fast RAM at 25MHz.

Key fixes:

  • Synchronize BGACK_n (2-stage C100M) to prevent AS tri-state glitches during DMA transitions that hung expansion cards
  • C100M oversampled DTACK counter (12-tick pause-on-noise) for expansion cards; C7M path with armed gate for legacy chipset
  • Safety countdown (280ns precharge + 120ns setup) between bus cycles to let DTACK RC pullup clear on loaded Zorro bus
  • Bidirectional DTACK_MB_n drive for DMA access to FPGA fast RAM
  • Eliminate all async resets (posedge AS_n) to fix metastability hangs
  • Reduce turbo clock 40MHz -> 25MHz (68SEC000 rated 20MHz)
  • SDC constraints for turbo_clk, CDC clock groups, autoconfig false paths
  • Bus arbiter CDC: synchronize BG_68SEC000_n (25MHz -> C7M crossing)
  • DMA address glitch filter in fastram prevents SRAM bus contention
  • INT2_n changed from output to input to avoid interrupt bus contention
  • IO drive strength increased to maximum on all bus-facing outputs

Tested stable: GVP SCSI boot, file copy, SysInfo drive test/stresstest, SF2000 4MB + GVP 4MB RAM coexistence, Frontier 3h30m+ from floppy.

Complete rewrite of turbo mode timing and bus arbitration to support
expansion cards (GVP HC+8 SCSI/RAM) alongside SF2000 fast RAM at 25MHz.

Key fixes:
- Synchronize BGACK_n (2-stage C100M) to prevent AS tri-state glitches
  during DMA transitions that hung expansion cards
- C100M oversampled DTACK counter (12-tick pause-on-noise) for expansion
  cards; C7M path with armed gate for legacy chipset
- Safety countdown (280ns precharge + 120ns setup) between bus cycles to
  let DTACK RC pullup clear on loaded Zorro bus
- Bidirectional DTACK_MB_n drive for DMA access to FPGA fast RAM
- Eliminate all async resets (posedge AS_n) to fix metastability hangs
- Reduce turbo clock 40MHz -> 25MHz (68SEC000 rated 20MHz)
- SDC constraints for turbo_clk, CDC clock groups, autoconfig false paths
- Bus arbiter CDC: synchronize BG_68SEC000_n (25MHz -> C7M crossing)
- DMA address glitch filter in fastram prevents SRAM bus contention
- INT2_n changed from output to input to avoid interrupt bus contention
- IO drive strength increased to maximum on all bus-facing outputs

Tested stable: GVP SCSI boot, file copy, SysInfo drive test/stresstest,
SF2000 4MB + GVP 4MB RAM coexistence, Frontier 3h30m+ from floppy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@tltx tltx force-pushed the T8Q144-experimental branch from f554b78 to 3394b7e Compare April 29, 2026 20:00
Switch turbo_clk source from PLL CLKOUT1 (100 MHz, /4 in fabric) to
the previously unused CLKOUT0 (80 MHz, /2 in fabric) for a 40 MHz CPU
clock. Scale CLKCPU-domain safety counters to preserve wall-clock
timing: PRECHARGE_TICKS 7→11 (~275 ns), SETUP_TICKS 3→5 (~125 ns).
Update SDC turbo_clk period 40.00 → 25.00 ns.

Tested: 5h 30min Frontier run without issues.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant