As part of my post on MCUs, I added a Lattice iCE40 FPGA to the mix. While I have done a little bit of work with FPGAs in the past, it has been purely on the use of development boards (e.g., Digilent Arty). I've now started to dig deeper into FPGA -- from the PCB on up. I will use this post to capture some of my initial journey with the iCE40. Check back for updates! If you have suggestions on anything here, please drop me a note. Thanks!
I'm starting out with a Lattice iCE40HX4K-TQ144.
I upgraded the board to 1MB of SRAM.
I have ordered a couple of ICE40HX8K-CT256 ICs. These use a 256-pin BGA package with a 0.8mm pitch. I am currently researching fanout and routing for this BGA package and JLCPCB capabilities related to BGA routing. Possibly helpful resources:
PCB Layout Recommendations for BGA Packages (Lattice Technical Note TN1074)
I've received some very help feedback on my FPGA PCB design and have started a "to do" list below. Look for these changes in future updates. Thank you to everyone who has supplied the great feedback. It helps me learn rapidly and results in a better final solution!
Next up, I am hoping to get some VGA output working. A couple of resources I plan to use:
Change the stackup by either re-ordering my six-layer stackup or switch to an eight-layer stackup. If money was no object, I'd go for the eight-layer stackup. Even the six-layer PCB is expensive. Right now, I'm leaning towards a six-layer stackup that is reordered, based on @asmi06's nice feedback.
Change the power management to use an LT3504. Thank you, @ModSlash!.
Add DDR RAM.
Add serial flash (multiple).
My Shopping List
This is just a spot for me to note parts I'll need to order to support my to do list. :)
PCB for -BG121
John's Basement YouTube Playlist: FPGA