just 'blink an LED'.
Technically speaking, blinking a LED with an FPGA is not trivial. My very first VHDL code was just a wire inside the FPGA, between an input and an output pin.
I still remember the thrill when I pushed the button connected at one pin, and the LED at the other pin light up. It felt so WOW!
By no means is it trivial, I remember the same experience, blinking an LED, about 15 years ago. I've written a ton of VHDL since then.
So many things have to go right to blink an LED on an FPGA that it truly is an accomplishment. The tools have to work, the code needs to work, the device programmer has to interface on both ends, the board has to work and the constraints file needs to be correct; all this stuff just to blink an LED. Something that takes no effort and about 10 lines of code for an Arduino.
Right after that blinking LED project comes a Z80 core that simply must have a Compact Flash drive and run CP/M 2.2. Here, the CPU core is available and known to work. It's only the CF interface to the FPGA and writing BIOS code that is at issue. That, and getting the boot code on the CF in the first place. I don't remember how I did it but these days I would use the Linux 'dd' command. Once the system boots there is the issue of getting Kermit on the CF and then it's off to the races copying files from a machine with dual 8" floppies.
Then take the same Z80 core and implement a functionally identical PacMan arcade game. That was fun!
Next up: Build a functionally identical emulation of a complete IBM 1130 minicomputer and all the peripherals. Number 1 design rule: The system must run all of the factory software, unchanged.
I have a handle on the VHDL stuff but I want to find something that utilizes the fabric along with the dual core ARMs and, probably, Linux. I know exactly nothing about the internals of Linux. Now would be a good time to learn.
I'm pretty sure I am interested in the digital side of the sandbox.