Skip to content

Instantly share code, notes, and snippets.

@sylefeb
sylefeb / ice-v.si
Created December 16, 2025 14:24
ice-v CPU fix
// SL 2020-06-12 @sylefeb
//
// Fun with RISC-V! RV32I cpu, see README.md
//
// https://github.com/sylefeb/Silice
// MIT license, see LICENSE_MIT in Silice repo root
$$if ICEV_FAST_SHIFT then
$$print("Ice-V configured for fast shift (barrel shifter)")
$$end
@sylefeb
sylefeb / config.c
Last active December 16, 2025 15:52
Hardware color framebuffer
// @sylefeb 2022-01-10
// MIT license, see LICENSE_MIT in Silice repo root
// https://github.com/sylefeb/Silice/
volatile int* const LEDS = (int*)0x10004; // 10000000000000100
volatile int* const OLED = (int*)0x10008; // 10000000000001000
volatile int* const OLED_RST = (int*)0x10010; // 10000000000010000
volatile int* const UART = (int*)0x10020; // 10000000000100000
volatile int* const SDCARD = (int*)0x10080; // 10000000010000000
volatile int* const BUTTONS = (int*)0x10100; // 10000000100000000
@sylefeb
sylefeb / display.c
Created December 3, 2025 14:14
Path for display.c
#include "tama_mini02_font.h"
#include "config.h"
#include "oled.h"
#include "display.h"
#include "std.h"
int cursor_x;
int cursor_y;
@sylefeb
sylefeb / PROJECT.md
Last active December 16, 2025 16:53
Projet wave player 2025-2026

Important

  • Rendu du projet et du materiel en présentiel le 11 Février 2026, hall de l'ecole (Telecom Nancy) entre 12h-13h30.
  • En cas d'impossibilité majeure sur cette date contactez moi au plus vite.
  • si le matériel n'est pas rendu, le projet sera considéré non rendu aussi.
  • Email: sylvain.lefebvre@inria.fr

Rendu

  • La carte ULX3S devra être configurée pour démarrer sur le projet (éventuellement après reset), ligne de commande pour configurer de manière non volatile: openFPGALoader -f -b ulx3s BUILD_<step>/build.bit
  • La SDcard contient tous les fichiers nécessaires et est sur la ULX3S -- rendue avec la carte -- prête à être testée.
  • ATTENTION: rendre aussi fichiers source hardware et firmware, lien github par email bienvenu (attention ne pas mettre fichiers audio sous copyright dans le git), au besoin zip dans email.
@sylefeb
sylefeb / sdcard.c
Created December 3, 2025 07:09
Patched sdcard code
/*
SL - 2020-01-24
SDCARD bit-banging from RV32I CPU
(revised for Ice-V from Fire-V implementation)
Useful Links
http://www.rjhcoding.com/avrc-sd-interface-1.php
http://www.dejazzer.com/ee379/lecture_notes/lec12_sd_card.pdf
http://chlazza.nfshost.com/sdcardinfo.html
@sylefeb
sylefeb / step3.si
Last active December 2, 2025 16:09
step3.si with sound generator
// SL 2022-01-10 @sylefeb
// https://github.com/sylefeb/Silice
// MIT license, see LICENSE_MIT in Silice repo root
// Pre-compilation script, embeds compiled code within a string
// Code has to be compiled into firmware/code.hex before
$$dofile('pre_include_compiled.lua')
// Setup memory size
// - addrW is the address bus width

create a udev rule file: sudo nano /etc/udev/rules.d/99-ftdi.rules

add the following line: ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666"

exit nano

enter this command in a shell: sudo udevadm control --reload-rules && sudo udevadm trigger

see also trabucayre/openFPGALoader#245

async function main()
{
const adapter = await navigator.gpu?.requestAdapter();
const device = await adapter?.requestDevice();
if (!device) {
fail('need a browser that supports WebGPU');
return;
}
const module = device.createShaderModule({
@sylefeb
sylefeb / reduce.js
Created April 9, 2024 13:47
Starting point for reduce
async function main()
{
const adapter = await navigator.gpu?.requestAdapter();
const device = await adapter?.requestDevice();
if (!device) {
fail('need a browser that supports WebGPU');
return;
}
const module = device.createShaderModule({
@sylefeb
sylefeb / class_4_gof.js
Created April 4, 2024 13:02
Iterations
async function main()
{
const adapter = await navigator.gpu?.requestAdapter();
const device = await adapter?.requestDevice();
if (!device) {
fail('need a browser that supports WebGPU');
return;
}
const module = device.createShaderModule({