u/DarthOninoko

▲ 42 r/homebrewcomputer+1 crossposts

Update: my own OS running on my own home computer (AMD KV260)

Update to original post.

It's just incredible to see my own operating system running on my own home computer! In the background, our own chipset is running in the KV260's FPGA and driving the display at 1080p60.

Since USB input isn't yet supported on the board, a script controls the keyboard and mouse to test actions.

The screen flickering is caused by the transition between the operating system and the program, and it’s displayed at half speed.

The operating system itself is vector-based and lets you create your own applications in Lua or extend other apps with components.

I’m really looking forward to your feedback!

u/DarthOninoko — 5 days ago

Building a home computer on the Kria K26, with its own FPGA chipset at 1080p60

Hi there,

I'm new here, but I've been reading posts about FPGA design for a while, and they inspired me to start the project I'd like to show you today.

Kromi One - In its original form

I'm building Kromi One, a new home computer around the AMD Kria K26. Its chipset, Aura, runs in the PL and draws Full HD at 60 fps today on a KV260. I wanted to share how it's built and get your take.

Keeping old Amiga tradition, I gave some FPGA elements names.

Drawing (Klara):
Works on 64 × 64 tiles held on chip; a batch mode applies many commands to a tile and writes it once. Plain blits run at 16 px/clk, affine ones (any 2 × 3 matrix, bilinear filtering, texture wrap) at 4 px/clk. There's a programmable combiner in the spirit of the GameCube's TEV (LERP, compare, min, max, DOT3). One stage is built; the interface allows four. Ten full-screen blended layers plus a fill hold 60 Hz, about 1.4 Gpixel/s.

Display (Dora):
A base plane plus four planes composed during scan-out at 1 px/clk, then a 17³ 3D LUT (.cube grid, trilinear), then a ×1 to ×4 scaler chosen per frame: nearest, bilinear or AMD FSR 1 (EASU + RCAS), matched bit for bit against an integer reference. Planes cost the drawing engine about 2 %; one scene went from 21.3 ms with engine-drawn layers to 10.4 ms with planes.

Memory (no fancy name here 😄):
4 GB DDR4 shared with the A53s. The PL gets over 12 GB/s on long sequential transfers. The display has its own port, its own priority class and a 32 KiB buffer: zero underflows with 9 to 11 GB/s of PL load plus CPU copies.

A C reference renderer decides every byte. The QEMU model, the RTL simulation and the board must all match it exactly. The board latches a CRC-32 of every output frame, which is read back and compared with host-computed CRCs: 432,009 of 432,009 frames were exact in a two-hour run. Mutation tests make sure deliberately broken RTL gets caught.

Programs never touch registers. They submit 128-byte command records into rings, and the firmware validates each one in under a microsecond before the chipset sees it.

Next up is textured triangles (FuryGpu showed what the K26 can do there). I'd love to hear from anyone who has done perspective-correct texturing in fabric on the K26 or similar parts. What throughput did you get, and what would you do differently?

The full write-up, my very first blog post on a brand-new site, compares it with MiSTer, the MEGA65 and others: https://kromi.one/blog/remake-or-new-machine/

reddit.com
u/DarthOninoko — 7 days ago