diff options
| author | Leonard Kugis <leonard@kug.is> | 2021-02-11 17:03:12 +0100 |
|---|---|---|
| committer | Leonard Kugis <leonard@kug.is> | 2021-02-11 17:03:12 +0100 |
| commit | 4476c439baba1b56bbd57c101718f97a48bd7596 (patch) | |
| tree | f213a191f6005cefc8ecd3229c22bf9eb49f2072 | |
| parent | 97a74b2f7123e755376ed0cfff0bdaf077a9c3a8 (diff) | |
| download | turboswap-4476c439baba1b56bbd57c101718f97a48bd7596.tar.gz | |
Added README
| -rw-r--r-- | README.md | 77 | ||||
| -rw-r--r-- | photo.jpg | bin | 0 -> 1188716 bytes |
2 files changed, 77 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..9557dd3 --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# TurboSwap + +**FPGA-based SDIO Interface Memory Expansion Module for Smartphones** + +TurboSwap is a flexible PCB module that connects to smartphones via the SDIO interface, providing memory expansion through switchable access to either external Micro-SD cards or high-speed PSRAM (LPDDR4X). At its core is a Lattice iCE40UP3K FPGA that routes SDIO commands dynamically between the two memory types based on memory map. + +Currently only XZ2C is supported. + + + +## Installation + +1. **Flex PCB Soldering**: + - Align the 14-pin Micro-SD edge connector with your smartphone's SDIO interface + - Use low-temperature solder (SAC305 recommended) to prevent damage to the flexible PCB substrate + - Apply gentle, even pressure during soldering to ensure proper pin alignment + - Connect the Micro-SD edge connector pins: CLK, CMD, DAT0-DAT3, VCC, VSS, WP, and reserved pins + +2. **Power Connection**: + - The module draws power directly from the smartphone's SDIO interface (3.3V VCC) + - Internal AP2112K LDO regulators generate stable 1.2V for the FPGA core + - No external power supply needed - operates entirely from SDIO bus power + +3. **Memory Configuration**: + - Insert Micro-SD card into the external card reader slot + - For PSRAM-only operation, ensure SD card is either removed or disabled via FPGA configuration + +## Structure + +### Hardware Architecture + +- **FPGA**: Lattice iCE40UP3K (SG48 package) - Memory routing controller +- **Memory Subsystem**: Kingston 32EM16-M4CTX29-8AD11 (32GB eMMC + 16Gb LPDDR4X) + - eMMC interface for block storage (like SD card) + - LPDDR4X interface for high-speed RAM-like operations +- **Connectors**: + - J1: Micro-SD Edge Connector (14-pin SDIO to smartphone) + - J2: µSD Card Reader (external storage expansion) + - J3: Debug/Programming Header (2×4 pins for FPGA configuration) +- **Power Management**: AP2112K LDO regulators for clean 3.3V→1.2V conversion +- **Signal Integrity**: 10kΩ pull-ups on SDIO data lines, 22Ω series termination on high-speed traces + +### FPGA Design (Verilog HDL) + +Core modules implementing memory routing: +- `turbo_top.v`: Main switching fabric and control logic +- `sdio_to_spi.v`: SDIO protocol to SPI command translation +- `memory_router.v`: Dynamic routing between eMMC and LPDDR4X interfaces +- `cache_controller.v`: 32KB direct-mapped cache with LRU replacement +- `clock_divider.v`: Clock domain crossing and timing optimization +- `fifo_buffer.v`: Dual-clock FIFOs for rate matching between interfaces + +## Performance + +### Memory Specifications + +| Component | Specification | Benefit | +|-----------|---------------|---------| +| **SD Card Interface** | SDIO High-Speed (50MHz), up to 25MB/s sequential | Traditional storage compatibility | +| **PSRAM Interface** | LPDDR4X @ 3200 Mbps, 32-bit bus | RAM-like performance on SDIO bus | +| **eMMC Storage** | 32GB NAND Flash, eMMC 5.1 compatible | Non-volatile storage for persistent data | +| **Hybrid Performance** | Mixed read/write optimization | Best of both worlds: speed + persistence | + +### Latency Comparison + +| Operation | TurboSwap (PSRAM) | SD Card Standard | Improvement | +|-----------|-------------------|------------------|-------------| +| **Random Read** | 35-96ns | 100µs - 1ms | 1000-30000× faster | +| **Sequential Read (4KB)** | ~12µs | ~100µs | 8× faster | +| **Random Write** | Cache write-back | 100µs - 10ms | Depends on cache policy | +| **Sequential Write** | Batched to SD | 15-20MB/s | Similar sustained throughput | +| **Access Granularity** | Byte-addressable | 512B blocks | Finer granularity | + +## License + +TurboSwap is open-source hardware released under the **CERN Open Hardware License Version 2 - Strongly Reciprocal (CERN-OHL-S)**. + diff --git a/photo.jpg b/photo.jpg Binary files differnew file mode 100644 index 0000000..e7201d7 --- /dev/null +++ b/photo.jpg |
