尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Guía visual 3D para entender un RISC-V RV32I segmentado de 5 etapas con debug unit UART
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 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.