This board solves most of my problems and I will be able to develop Verilog code with actual hardware and real life signals.
It was meant to be as universal as possible, but even though FPGA has 109 GPIO pins that sounded almost like infinite, I had to cut many features in the end.
RS-232 port, LVDS header, LED matrix and FPGA-driven power converters all had to go to make room for other things that cannot be recreated using FPGA devboards I already own. Heck, I had to pick a 8-bit SDRAM chip instead of 16-bit data bus.
This idea would still be nowhere without new excellent M1S and add-on design aides. The feature list below will speak for itself, many of them would not be possible without those extra 14 pins.
Here is a feature list:
- iCE40HX4K in TQFP144 package, about 4K LUTs, 2x PLL, 109 GPIO. The largest that isn't BGA -> possible on $7 PCBs
- 4-layer PCB with strict design rules -> cheap
- All components on top side -> can be hand-soldered
- FPGA configuration stored in EEPROM on board and programmed from SBC directly via SPI (flashrom)
- External 100MHz oscillator
- FT2232 chip supporting 8-bit wide, bidirectional FIFO with SBC, via USB, at High Speed (480Mbps)
- 256Mb SDRAM (Zentel A3V56S30GTP-60), 8-bit wide, clocked at 166MHz (if all goes well)
- "HDMI" connector
- VGA output (RGB565)
- Stereo jack output (shares resources with VGA)
- DC jack or screw terminal as alternative power input for M1S, with on-board 5V 3A Buck converter (tolerates input up to 23V
- Some M1S pins connected to FPGA (SDMMC1, UART0, SPDIF)
- General purpose IO: 2 buttons, 7 LEDs, 2 pins
Github repository: https://github.com/tomek-szczesny/m1s-fpga-playground
Some of the ideas what could be done with this board include:
- Developing I2C, SPI, UART libraries for FPGA
- Using FT2232 in any of its built-in modes of operation
- SDRAM support, that's a topic for PhD alone
- SPDIF decoder -> multibit DAC for analog audio
- Displaying static images through HDMI / VGA
- SPI display emulation on a real monitor
/dev/fbvia USB and displaying stuff through HDMI / VGA (or both!)
- Exploring the undocumented SDMMC interface on M1S GPIO header
- Hardware h264 encoder, maybe?
It should be said, I have no idea if any of this will actually work. The board is intended for testing ideas (= development) and isn't fit for any particular real life purpose as it is. However purpose-made boards may follow after working prototypes are achieved.
The FPGA has limited performance. Due to their nature there is no exact number given, because performance depends on internal layout of Verilog code. Some 100+MHz worked for me in the past. Internal PLL can run up to 275MHz.
I don't expect to reach Full HD resolution with that HDMI port, but interlaced Vu7C at 30fps may be possible. I'm guessing just because <100MHz. But hey, even working 640x480 would be a tremendous success that can be scaled up if needed.