shiping
An interview assistant and an exam assistant that uses AI to provide solution ideas in real time during 「面试」 or 「在线考试」.
AI translation
Visualizador 3D interactivo de un pipeline RISC-V RV32I de 5 etapas sobre una FPGA Nexys4 DDR.
Translation pending
EducationJavaScript · CSSGitHub @MateoBernardiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Guía visual 3D para entender un RISC-V RV32I segmentado de 5 etapas con debug unit UART
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Guía visual e interactiva para entender el procesador RISC-V RV32I de 5 etapas (IF, ID, EX, MEM, WB) y su unidad
de debug por UART, escritos en Verilog para una placa Nexys4 DDR (repo
MateoBernardi/arquitectura-de-computadoras, rama tp3-RISCV),
y para luego construir y verificar un RISC-V propio. Todo corre en el navegador: un simulador ciclo a ciclo escrito en
JavaScript reproduce el comportamiento del RTL y la escena (three.js) muestra cómo viajan los datos por cada cable.
src/sim/): stalls load-use (incluido el "stall falso" del RTL), forwarding EX/MEM y MEM/WB,
bypass WB→ID del regfile, flush por salto/jump, halt con ecall/ebreak. Se puede volver atrás ciclo a ciclo.top_riscv y riscv_pipeline.Esc suben un nivel; los submódulos se
atraviesan con clic. Hay FSMs con grafo, y un simulador de bytes para la UART.stall (load-use), A←EX/MEM, lee x5,x6, tomado → 0x2C...), con leyenda.top_riscv.v).L, S, R, P, X, D) a 19200 baudios.| Verificación | Registros |
|---|---|
| Inspector de un módulo (el riel de explicación pasa al lado libre) | Por dentro de la ALU |
|---|---|
| Zoom cercano (títulos decal + valores en vivo) | Alternativas de hardware |
|---|---|
| LEDs | Inicio |
|---|---|
| Lección | Construí tu propio RISC-V |
|---|---|
| Salto tomado, tema oscuro | Móvil (hoja inferior de explicación) |
|---|---|
| Debug: carga por UART (comando L) a mitad de camino | Vista general: "¿Qué es esta vista?" |
|---|---|
| Bloque CLK/RST y migas con la ruta real del RTL | Editor con resaltado de sintaxis |
|---|---|
Esc sube un nivel dentro de un módulo.?perf)Con ?perf en la URL aparece un panel con fps reales (cuadros renderizados), ms de CPU por cuadro, draw calls y triángulos. La escena
renderiza solo cuando algo cambia; las animaciones ambientales (cables activos, polvo, brillo de silicio) van a 30 fps. Las etiquetas
DOM no leen layout en el bucle (tamaños cacheados, nivel de detalle por zoom, solo se escribe lo que cambia). Draw calls / triángulos
antes → después: placa 239 / 37k → 104 / 26k; ALU 67 / 15.7k → 25 / 9.2k.
Requiere Node.js 18 o superior.
npm install
npm run dev # servidor de desarrollo en http://localhost:5173
npm test # tests del simulador (vitest)
npm run build # genera dist/
npm run preview # sirve dist/ para probarlo
npm run rtl-index # regenera src/content/rtl-index.json desde el RTL (RTL_ROOT=<ruta a sources_1/new>)
El build es estático (base: './' en vite.config.js), así que funciona en cualquier hosting y bajo subcarpetas.
npm run build, salida dist). No hace falta vercel.json.npm run build, publish dist) o arrastrar la carpeta dist/ a
app.netlify.com/drop..github/workflows/deploy.yml corre los tests, compila y publica en cada push a main.index.html entrada (parámetros ?debug / ?shot / ?script para depurar)
src/main.js integración: sim + contenido + escena + UI
src/sim/ simulador: pipeline, ensamblador, desensamblador, debug unit, programas
src/content/ texto didáctico: ISA, teoría de eventos, alternativas, bloques, ejemplos, lecciones, vistas internas por módulo
rtl-index.json: índice del RTL (módulos, señales, líneas) generado con `npm run rtl-index`;
los links a GitHub son permalinks al commit indexado (REPO.ref), nunca números de línea escritos a mano
src/scene/ escena three.js: placa, bloques, cables, paquetes, cámara
src/ui/ paneles: editor, controles, timeline, dock de ejecución, inspector, migas, pop-ups, lecciones, inicio, consola de debug
tests/ tests del simulador (vitest)
CONTRACT.md contrato entre módulos (ids de bloques y cables, forma de los snapshots)
docs/screenshots/ capturas
Las rutas son relativas a project_4.srcs/sources_1/new/ del proyecto Vivado.
Simulador (src/sim/) | RTL |
|---|---|
pipeline.js: PC, fetch, stopFetch | pc.v, pipeline/1_fetch/imem.v, pipeline/riscv_pipeline.v |
isa.js: decodeControl, immGen, aluCompute, branchTaken | pipeline/2_decode/control.v, immgen.v, pipeline/3_execute/alu.v, alu_ops.vh, branch_unit.v |
pipeline.js: regfile con bypass WB→ID | pipeline/2_decode/regfile.v |
pipeline.js: hazard / forward / flush | pipeline/flow/hazard_unit.v, forward_unit.v, flush_unit.v |
pipeline.js: dmem con byte lanes | pipeline/4_memory/dmem.v |
pipeline.js: registros de pipeline, dbgRead | pipeline/regs/pipe_reg.v, bus de debug de riscv_pipeline.v |
debugUnit.js: FSM, encodeLoad, decodeDump | debug/debug_unit_fsm.v, debug_unit_comb.v, debug_unit_regs.v y host/debug_protocol.py |
programs/pipeline_test.s | programa de prueba del proyecto (host/tests/pipeline_test.s) |
El modo "sin forwarding" del simulador es una alternativa didáctica, no existe en el RTL. Cuando el RTL y algún README no coinciden, el simulador sigue al RTL.
?view=sim|debug|lessons|examples|home, ?enter=alu_tp1 (entrar a una vista interna), ?focus=part:<id>|net:<id>, ?dock=cycles|regs|mem|verif, ?track=entender|construir, ?nobanner,
?view=sim, ?theme=dark, ?example=load-use, ?steps=4, ?explain, ?alt=hazard,
?blockclick=alu, ?script=step,step,click:alu,dbg:L,dbg:R,delay:2000,dbg:D y ?debug (muestra errores en pantalla).
Con ?shot el canvas WebGL se copia a una imagen para poder sacar capturas con Firefox headless.
Teoría de base: RISC-V from scratch (ecrionix.org).
Fuentes: Barlow, Barlow Semi Condensed y JetBrains Mono (@fontsource). Gráficos 3D: three.js.