Diseño de un algoritmo para la emulación por software del protocolo IC2 para la recepción de datos - Flores-Barrantes, Iliak (Instituto Tecnológico de Costa Rica, 2025)
El presente proyecto desarrolla un algoritmo en lenguaje ensamblador RISC-V destinado a emular, por software, el funcionamiento de un receptor basado en el protocolo I2C dentro del microcontrolador Siwa. Dado que este dispositivo no cuenta con un módulo I2C por hardware y únicamente dispone de interfaces UART, SPI y pines GPIO, se implementó una solución que permite interpretar señales I2C mediante muestreo directo de los GPIO, siguiendo estrictamente las condiciones del estándar. Para validar la propuesta se diseñó un ambiente de simulación en SystemVerilog, incorporando un testbench modificado capaz de emular un transmisor I2C. Se evaluaron distintas frecuencias de operación, múltiples direcciones de dispositivo y diversos conjuntos de datos, confirmándose la correcta detección de las fases START, dirección, respuesta ACK y la lectura secuencial de bytes a 100 kHz. Asimismo, se identificaron limitaciones en frecuencias superiores a 400 kHz debido al retardo intrínseco asociado a la ejecución de instrucciones en el procesador. Los resultados demuestran que la emulación por software constituye una solución viable y eficiente para extender las capacidades del microcontrolador Siwa sin requerir módulos de hardware adicionales. El proyecto sienta las bases para futuras mejoras, entre ellas la optimización temporal, la verificación automatizada y la validación con dispositivos físicos.

This project presents the development of a RISC-V assembly algorithm designed to emulate, in software, an I2C reception module within the Siwa microcontroller. Since Siwa lacks a dedicated I2C hardware peripheral and relies solely on UART, SPI, and GPIO interfaces, the proposed solution enables accurate interpretation of I2C signals by directly sampling the GPIO lines in compliance with the protocol standard. ASystemVerilog simulation environment was implemented, including a modified testbench capable of emulating an I2C transmitter. Several operating frequencies, device addresses, and data sets were tested to validate the algorithm’s behavior. The system successfully detected START conditions, address decoding, ACK handling, and sequential byte reception at 100 kHz. The results confirm that software-based emulation is a feasible and cost–effective approach to expanding the communication capabilities of the Siwa microcontroller without additional hardware.This work provides a foundation for further improvements such as timing optimization, automated verification, and validation with physical I2C devices.
Proyecto de Graduación (Licenciatura en Ingeniería Electrónica) Instituto Tecnológico de Costa Rica, Escuela de Ingeniería Electrónica, 2025.
Keywords: Transmisión de datos; Lenguaje ensamblador -- RISC-V; Arquitectura -- RISC-V; Microprocesadores Siwa; Protocolo I2C; Verificación -- Automatización; Emulación -- Software de protocolo; Diseño -- Algoritmos; Data Transmission; Assembly language -- RISC-V; Architecture -- RISC-V; Siwa microprocessors; I2C protocol; Verification -- Automation; Emulation -- Protocol software; Design -- Algorithms; Research Subject Categories::TECHNOLOGY::Electrical engineering, electronics and photonics; Research Subject Categories::TECHNOLOGY::Information technology::Computer science::Software engineering