YOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
It's a minor thing, but I am giggling so hard right now. I just compiled one of Didier's Verilog sample programs, copied the netlist and some JSON to the Pocket's drive over USB-C, exited drive mode and selected the core, and… I just programmed an FPGA! I didn't write the code, but even just USING these things is supposed to be super hard! And all I had to do was copy files over USB and now it's running on a screen! CIRCUITS! And they're DRAWING things! That is so cool!!
Confession: After recording this video I spent like 10-15 minutes repeatedly re-reprogramming it unsuccessfully trying to make the bottom half of the text pink so I could say "look, bisexual colors!". Every attempt to make a pink just wound up with a different rusty brown. I eventually decided that my worth as a programmer does not hinge on my ability to eyeball what hex value will become pink after it's darkened an arbitrary amount. At any rate I think the current colors are *pretty* bisexual.
Incidentally if you look really close you'll find the Terasic JTAG "USB Blaster" has printed on it, in tiny letters, "Lead Free". I think this is supposed to make me reassured but really it's just making me worry what was going on here that I apparently *ought* to be worried about a JTAG connector *not* being lead free
Thanks to some absolutely heroic work by @whitequark it is as of last night now possible to make Analogue Pocket cores in Amaranth, which is the Python eDSL HDL I used to make this: https://cohost.org/mcc/post/2499788-my-first-fpga-project Basically you write a Python script that describes a circuit, and you get to just skip most of Verilog's unnecessary headaches. The chances of me making something cool for Pocket just went way up.
Here's Whitequark's template Amaranth core filling the screen with magenta:
Ok so this is very exciting!! I need to write a Cohost post to really explain this but. Check out this custom FPGA core I built! It's unpleasant to look at and unpleasant to listen to but it's important because:
- Its synchronized video animation and audio with all "business logic" in pure Amaranth (Python). (@whitequark did the video writing code, I did the color patterns and the audio.)
- The ugly color patterns (which my phone camera can't pick up even up close) test Pocket screen resolutions
The source is at https://github.com/mcclure/analogue-core-template-amaranth/tree/screen-test , but it won't help you much pending a better explanation.
For this screen test app, I wound up doing audio synthesis (the 16-note sequence of square waves playing C octave) at the bit level by generating the needed bits in real time as each bit was needed while writing those bits to a sound chip using the i2s serial protocol. This was a *fascinating* experience that I never, ever want to do again.
Okay, here's something a lot prettier looking (maybe not prettier sounding… depending on your tastes). After taking two whole weeks to make a "hello world", I made this little "rule 30" cellular automata scroller in about two hours (about 3/4 of which, inevitably, was debugging). This is running in pure gateware (fixed circuit in FPGA) on an Analogue Pocket. The original version was much higher res but I reduced it to take a video. Gonna try adding controls next…
Source: https://github.com/mcclure/analogue-core-template-amaranth/tree/cellular-toy/
Update: I have redone my nail polish and am now ready to resume taking demo photos with the Pocket #lookatmynails
@mcc that looks like an amazing figit toy, too
@Doephin I'm going to add sound