518 KianV uLinux SoC

518 : KianV uLinux SoC

Design render

How it works

32-bit RISC-V IMA processor, capable of booting Linux. Features 16 MiB of external SPI flash memory, 16 MiB of external PSRAM (8 MiB per bank), a UART peripheral, and a SPI peripheral.

System Memory Map

The system memory map is as follows:

Address Size Purpose
0x10000000 0x14 UART Peripheral
0x10500000 0x14 SPI Peripheral
0x10600000 0x0c GPIO Peripheral
0x11100000 0x04 Reset / HALT control
0x20000000 16 MiB SPI Flash
0x80000000 16 MiB PSRAM

The system boots from the SPI flash memory. After reset, the CPU starts executing code from 0x20100000 (corresponding to the offset 0x100000 into the SPI flash memory), where the bootloader is expected to be.

UART Peripheral registers

Address Name Description
0x10000000 UART_DATA Write to transmit, read to receive
0x10000005 UART_LSR UART line status register
0x10000010 UART_DIV Clock divider for UART baud rate

SPI Peripheral registers

Address Name Description
0x10500000 SPI_CTRL0 SPI Peripheral Control
0x10500004 SPI_DATA0 SPI Data
0x10500010 SPI_DIV Clock divider for SPI peripheral

GPIO Peripheral registers

Address Name Description
0x10600000 GPIO_UO_EN Enable bits for uo_out pins
0x10600004 GPIO_UO_OUT Write to uo_out pins
0x10600008 GPIO_UI_IN Read from ui_in pins(read-only)

CPU control register

Address Name Description
0x11100000 CPU_RESET Write 0x7777 to reset the CPU, 0x5555 to halt the CPU.

How to test

Build the system image as described in the kianRiscV repo and load it into the SPI flash memory:

Flash offset File name Description
0x100000 bootloader.bin Bootloader
0x180000 kianv.dtb Device Tree Blob
0x200000 Image Linux kernel + rootfs

The system runs at 16 MHz.

External hardware

QSPI Pmod - can be purchased from the Tiny Tapeout store.

IO

#InputOutputBidirectional
0gpio[0]spi_cen0ce0 flash
1gpio[1]spi_sclk0sio0
2spi_sio1_so_miso0spi_sio0_si_mosi0sio1
3uart_rxgpio[3]sck
4gpio[4]uart_txsd2
5gpio[5]gpio[5]sd3
6gpio[6]gpio[6]cs1 psram
7gpio[7]gpio[7]cs2 psram

Chip location

Controller Mux Mux Mux Mux Mux Analog Mux Analog Mux Mux Mux Mux Analog Mux Mux Mux Analog Mux Mux Mux Mux tt_um_chip_rom (Chip ROM) tt_um_factory_test (Tiny Tapeout Factory Test) tt_um_tnt_gf_555 (tnt's recreation of a 555 on GF180mcu) tt_um_mcml_vco (MCML VCO) tt_um_tnt_gf_vco (Quadrature VCO) tt_um_oscillating_bones (Oscillating Bones) tt_um_MichaelBell_tinyQV (TinyQV Risc-V SoC) tt_um_essen (256x8 SRAM) tt_um_analog_factory_test (TT GF180mcuD Analog Factory Test) tt_um_cw_testbuffer (TT GF180mcuD Testbuffer) tt_um_fabulous_gf_0p3 (Tiny FABulous FPGA) tt_um_fabulous_gf_0p3_3v3 (Tiny FABulous FPGA (3.3V version)) tt_um_htfab_momcap (MoM capacitor) tt_um_gf_r2r_dac (GF R2R DAC) tt_um_AbAdA_2048 (Abad2048) tt_um_mattvenn_signal_generator (Simple Signal Generator) tt_um_74hct00 (74HCT00 Quad 2-Input NAND (3.3 V)) tt_um_algofoogle_gf_analog (algofoogle analog stuff) tt_um_LPCAS_TTGF0P3_TP1 (3.3V Folded Cascode OTA ) tt_um_kianV_rv32ima_uLinux_SoC (KianV uLinux SoC) tt_um_kiterai_current_dac (Analog 4 bit Current DAC) tt_um_urish_simon (Simon Says memory game) tt_um_waferspace_vga_screensaver (Wafer.space Logo VGA Screensaver) tt_um_urish_usb_cdc (USB CDC (Serial) Device) tt_um_a1k0n_nyancat (VGA Nyan Cat) tt_um_rahulbhagwat_gf180_bandgap_reference (GF BGR) tt_um_odgrip_polywave (PolyWave) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_combined (Philippine flag waving) tt_um_gojimmypi_ttgfa_UART_FSM_TRNG_Lab (Hardware Entropy Explorer: UART/SPI TRNG and PUF) tt_um_gojimmypi_ttgfa_UART_FSM_TRNG_Lab_analog (Hardware Entropy Explorer: UART/SPI TRNG and PUF (Analog)) tt_um_coldbrew (Until heat death do us part) Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available