Hola,
Como indica Fernando, por el precio que tiene, está genial. La única razón para no comprar una es la falta de tiempo. Creo que si compraras los componentes sólo, te saldría más caro. Por 15€ tienes una FPGA mayor que la mayoría de la familia ICE40, 32 Mbits de flash, dos puertos ethernet y la SDRAM a 200MHz. Además de los level shifters, que puedes ignorarlos tranquilamente. En comparación, la BlackIce-MX cuesta 3-4 veces más, tiene una FPGA más pequeña, la mitad de SDRAM a 143MHz, y 4Mbit de flash. Lo que tiene la BlackIce-MX es un ARM en la propia placa. Pero, ¿necesitas un uC en la placa si ya sabes lo que es un STM32F103 o un Arduino Mini? No lo creo.
La referencia al Arduino Mini no es trivial. A efectos prácticos, la forma de utilizar los puertos ISP, ICSP, JTAG, etc. es la misma. No es idéntica porque cada fabricante/proyecto utiliza un protocolo diferente y normalmente propietario; y porque a veces estás programando un uC, otras una FPGA y otras un uC dentro de una FPGA. Pero, en todos ellos lo que necesitas es un uC (o FPGA) auxiliar, con una programación concreta para hacer de puente entre el USB y el dispositivo que vayas a programar. Echa un ojo a
https://electronics.stackexchange.com/questions/412029/jtag-swd-edbg-icsp-isp-terms. Dependiendo del fabricante y las características que quieras, el cable auxiliar 'oficial' puede costar 50-100€, o puedes usar soluciones open source como las 'blue pill', openocd, st-link, etc. Por lo tanto, para usar la
Colorlight-5A-75B, lo único que necesitas es conectar 4 cables (JTAG), y la alimentación.
Nota: no quiero decir que la BlackIce-MX no valga lo que cuesta. La he puesto como ejemplo porque tiene un público objetivo muy diferente. La BlackIce-MX ofrece una solución lista para usar, compacta, con conectores que coinciden con una serie de placas auxiliares. Si lo que quieres es conectar muchos periféricos externos sin complicarte, es más adecuada. Sin embargo, si lo que quieres es centrarte en el interior de la FPGA y en el diseño HDL, la Colorlight es una opción muy a tener en cuenta.
Observación: la comunicación serie a través de JTAG suele ser muy lenta. Puede ser interesante usar otros dos pines y conectarlos a un conversor USB-TTL. Estos también cuestan 1-2€, y son precisamente los que se usan para programar los Arduino Mini (a falta de otro Arduino que haga la tarea). Hay varios chips que se usan: FT232RL, PL2303, CH340... Cualquiera de ellos te sirve, ya que el componente a utilizar en la FPGA es una UART. Esto te permite conectar dos USB a la placa: uno para programación y otro para comunicación. Observarás que esto es un patrón común en muchas placas de desarrollo, especialmente de Digilent/AVNET/Xilinx; además de mencionarse en muchas referencias sobre la Colorlight.
Nota: si buscas 'ST-LINK' en Aliexpress, verás que la IceSugar es básicamente ST-
LINK
+ Fomu, además de mucho trabajo en pensar el tema de los conectores/jumpers.
Ahora bien, para probar diseños SoC basados en RISC-V no necesitas una ECP5. Con la UP5K que tienes en la IceSugar debería bastarte. La Fomu (
https://tomu.im/fomu.html) tiene una UP5K también, y el diseño de referencia es un SoC basado en RISC-V capaz de ejecutar Micropython. El SoC de la Fomu está escrito en SpinalHDL:
https://github.com/SpinalHDL/VexRiscv. Se trata de una familia de diseños que obtuvo el primer premio en el concurso de SoftCPUs de RISC-V en 2018:
https://riscv.org/announcements/2018/10/risc-v-contest/. Es cierto que en el diseño de la Fomu se utiliza también LiteX, pero eso es debido a las limitaciones de tamaño. Al ser una placa tan pequeña, el puerto USB está conectado directamente a la FPGA. Por lo tanto, el SoC debe tener el stack USB suficiente para hacer de bootloader: ser capaz de comunicarse con el PC y recibir los bitstream.
En tu caso, ya sea en la IceSugar o en la Colorlight, no necesitas el stack USB dentro de la FPGA. En la primera ya tienes un uC en la placa que cumple esa función (por eso está, principalmente, en reemplazo del FTDI). En la segunda, ya vas a usar la placa externa, sea para JTAG y/o UART. Por lo tanto, puedes utilizar VexRiscv directamente, sin necesidad de LiteX. Es lo que te recomiendo para empezar: genera el SoC que quieras (tal cual), exportalo a HDL y utilizalo como una caja negra con una UART sólo. SpinalHDL permite exportar los diseños a Verilog o a VHDL, por lo que puedes usar el lenguaje HDL que prefieras. Puedes encontrar múltiples referencias a SpinalHDL en este grupo.
Lo interesante de no incluir el USB en la FPGA es que seguro que te queda sitio para, por ejemplo utilizar el plugin icerok de icestudio y otras soluciones que sólo requieren la UART. No necesitas conectar nada más que el JTAG y la UART, y con eso ya puedes usar scripts en Bash/Python para interactuar con el sistema.
Si después de generar el SoC, añadir tus periféricos, etc. quieres seguir aprendiendo sobre arquitectura de sistemas, el siguiente paso sería
https://github.com/litex-hub/linux-on-litex-vexriscv, que es la versión de VexRiscv capaz de ejecutar Linux. Pero para eso puede que sí necesites una placa del siguiente segmento (60-120€), con más RAM. Actualmente, el desarrollo de herramientas libres se están realizando principalmente sobre las Artix-7 de Xilinx. Puedes ver el proyecto SymbiFlow que se mencionó recientemente.
Un saludo, y ánimo (suerte no necesitas)