[HN Gopher] FPGAs and the renaissance of retro hardware
___________________________________________________________________
FPGAs and the renaissance of retro hardware
Author : surprisetalk
Score : 95 points
Date : 2023-11-27 12:45 UTC (10 hours ago)
(HTM) web link (brainbaking.com)
(TXT) w3m dump (brainbaking.com)
| agg23 wrote:
| Retrocomputing FPGA work is a fun diversion from normal software,
| enough that my brain was convinced they weren't related (had a
| bit of a mental block for software). Over the course of a year, I
| went from knowing basically nothing to releasing 3 different FPGA
| emulation cores of my own for multiple platforms, along with
| releasing something like 5 ports (which is not necessarily
| trivial, particularly for a beginner) of existing cores to the
| Analogue Pocket.
|
| It has been a very fun experience, and I've found it to be
| extremely addicting. It helps that there's a fairly tight-knit
| community very interested in furthering the development of FPGA
| hardware preservation, so people are very willing to donate,
| test, and contribute feedback, which is a great feeling for open
| source work.
| captaincaveman wrote:
| Interested in knowing how you got started, any prior
| knowledge/training, as that seems quite the hill to climb?
| petrohi wrote:
| Not the parent poster, but my experience may be relevant.
|
| My background is exclusively in software engineering and
| computer science. I started by reading "Digital Design and
| Computer Architecture". There's new RISC-V edition
| https://a.co/d/imzGBK5 as well as freely available ARM
| edition https://dl.acm.org/doi/book/10.5555/2815529. The book
| starts from Boolean logic and transistor technology and goes
| all the way to assembly programming with everything in
| between. Most importantly gives great introduction to HDLs.
| Next I played with a bunch of hardware projects specifically
| targeting inexpensive Arty-A7 board to get comfortable with
| FPGA tooling.
|
| I can attest to the parent saying that this is sufficiently
| different from software engineering I do at my day job and
| therefore feels a lot more like hobby. Especially if you also
| foray into wire-wrap prototyping, PCB design and assembly.
| Finding and fixing analog "bugs" is so much fun!
| agg23 wrote:
| I _technically_ had prior knowledge as a computer
| architecture class had us stick some premade pieces together
| to create a CPU we designed, but I personally wrote no
| Verilog, and it was a small subset of the class.
|
| I don't have much documentation for getting started with HDLs
| (Verilog, VHDL, etc), but I have tried to document my process
| as much as possible. I have primarily developed for the
| Analogue Pocket, so my documentation is themed towards that
| device, but there's IP (code modules) and wiki entries that
| would be useful for everyone:
| https://github.com/agg23/analogue-pocket-utils
|
| I had previously written a cycle accurate NES emulator, so I
| was familiar with hardware techniques, but not what they look
| like in circuits. The first core I wrote was a schematic
| accurate Pong implementation. This was both good and bad
| because it's very simple and has no CPU (and thus no code),
| but it also makes it very hard to tell what is going on. I
| went from there to doing a lot of ports (NES, SNES, PCE, and
| a few more), and after that I worked on my own cores
| (Tamagotchi, Game and Watch). Tamagotchi I took a very
| typical software approach where I wrote massive amounts of
| unit tests and wrote against those tests. While this is what
| real hardware developers do, I found it to be a huge waste of
| time when you're working by yourself on a small project.
|
| I, and a few others, are very willing to help people learn
| (though I'm still really a noob). If you want to play around
| in this space, let me know and I'll try to help you with what
| you need.
| agg23 wrote:
| On the note of my sibling comment, a common book in this
| space for learning is "Designing Video Game Hardware in
| Verilog", which is specifically retrocomputing related.
| 0xcafefood wrote:
| I second this book recommendation! I just started it
| exactly to get a foothold on FPGA programming. It's very
| accessible.
| lovelyviking wrote:
| with what FPGA hardware is better to start for first
| tries?
| Graziano_M wrote:
| The book actually has an accompanying emulator where you
| can run everything in browser!
| datameta wrote:
| My recommendation is the NAND2Tetris coursera course. You
| start with a single NAND gate and put together more complex
| gates building upon the previous abstraction. Part 1 covers
| things like creating Muxes, RAM, and an ALU in a stripped
| down HDL. Part 2 covers the software stack picking up after
| having created an assembler but I haven't taken it yet.
| Perhaps this is isn't tailor-made for jumping into FPGA
| fast but it helped fill in a lot of blanks for me coming
| from mostly software world.
| lovelyviking wrote:
| I really wish to play with those things because I was
| playing with hardware when I was a schoolboy and found it
| back then very entertaining.
|
| I've built my first computer with soldering all the parts
| and then started debugging it with oscilloscope to see
| signals from chips and analyse them to find the problem.
| And in doing so I have quickly realised that I am missing
| something. This something was 'How chips actually work'.
| Turned out it was called Digital electronics so I've
| decided to learn this on the way.
|
| My treasure and source of inspiration at school time was
| this book: Digital Electronics by Roger Tokheim. I was
| dragging it to school and back every day just like people
| cary notebooks these days. This was my bible back then.
| Boys in the school made fun of me for this. The book was
| amazing and I think it still is.
|
| I remember it all as very exciting time.
|
| Now FPGA seems like a nice opportunity to revisit all of
| this after many years of programming and developing a new
| point of view about many paradigms.
|
| May be you can direct me and others like me toward a good
| community and tips for shortening a learning curve.
| Possibly many things I am familiar with already and yet
| with FPGA I didn't find a good/easy way to start so far.
| Perhaps you can advice something about 'how' and 'were' to
| begin.
| agg23 wrote:
| This is retrocomputing specific, but this Discord server
| (https://discord.gg/3wv3gMhp) has quite a few of the big
| devs in the FPGA gaming space, and they're more than
| willing to answer questions. They're what really got me
| going after I built my Pong core.
|
| I have always been a big advocate of learning while
| doing, especially in software. Find something, preferably
| small, that you want to build (your Pong), and work on
| making it a reality. Maybe it's making Snake entirely in
| HDL. Maybe it's playing around with LiteX on your
| preferred development platform so you can build something
| cool with the RISC-V processor (I don't suggest this
| though, start with learning a normal HDL). Maybe it's
| simply looking through one of the existing retrocomputing
| cores, trying to figure out how stuff ticks.
|
| Until you get to the CPU design level, the general
| concepts you'll encounter will be fairly simple. I think
| it's enough to just play around with blinking lights,
| learning how parallel synchronous logic works, relative
| to how we think of software working.
| kjs3 wrote:
| Just avoid the 'FPGA reimplementation v actual hardware'
| religious wars and you'll be fine.
| bmurphy1976 wrote:
| > Retrocomputing FPGA work is a fun diversion from normal
| software, enough that my brain was convinced they weren't
| related (had a bit of a mental block for software).
|
| That's awesome! I feel this, I've had a software development
| mental block for a number of years now. I just don't find
| modern software all that interesting anymore. Lost in mountains
| of model mapping, layers of terrible abstraction, that never
| ending package update grind (shudders), bad APIs, closed won't
| fix works as designed bugs (sigh), truly insane complexity and
| so many many things that are simply outside of my control.
|
| It's my interest in related, but different areas that has kept
| me engaged recently: micro electronics, 3d printing, and home
| automation. They exercise enough of my decades of programming
| experience to get that fix, but the projects are small and
| focused on solving very concrete problems instead of moving a
| decimal point on some spreadsheet somewhere completely
| disconnected from me. It's great when you make something for a
| friend and you can see the joy in their eyes as they realize
| how much this thing you made helps them.
|
| Sounds like FPGAs are doing that for you and that makes me
| happy!
| bbayles wrote:
| I wanted to learn how to use Ghidra for reverse engineering
| binaries. The thing that allowed me to really improve with it was
| using it to analyze old video games that I played as a kid in the
| 1990s. Finding previously-unknown cheat codes, coming up with
| improvement patches, and figuring out how they work is very
| motivating!
|
| I'm happy that these retro hardware projects are working out;
| I've liked seeing people test out what I've found in Ghidra on
| real systems.
| FirmwareBurner wrote:
| _> I 've liked seeing people test out what I've found in Ghidra
| on real systems._
|
| Do you have any findings to share?
| bbayles wrote:
| I've been writing up my findings here:
| https://32bits.substack.com/
|
| So far I've focused on the Sega Saturn because it is
| notorious for having a difficult-to-understand assembly
| language (SH-2). That means there are lots of things to
| discover, because people haven't really looked yet!
| FirmwareBurner wrote:
| Noice
| ChuckMcM wrote:
| I agree strongly with the sentiment of this article, the author
| missed the fully open source programmable systems like the
| Lattice ECP5 and 40K FPGAs. There is something magical about
| using the LiteX "make me an SOC out of this board" system.
|
| As the ACM Digital has gone open access I can recommend this Jan
| Gray paper, "Hands-on Computer Architecture - Teaching Processor
| and Integrated Systems Design with FPGAs"[1] There are different
| opinions on whether or not understanding computer architecture
| makes you a better developer or not (I tend to think it does) but
| its a really amazing time to be able to explore these concepts
| without the need to be at a company or in an University setting.
|
| [1] https://dl.acm.org/doi/pdf/10.1145/1275240.1275262
| agg23 wrote:
| LiteX is very neat, but at the same time is a massive pain as
| soon as you move past building an example SoC. I've been
| spending a lot of time on this recently.
| eachro wrote:
| What can a hobbyist do with an FPGA? Ive mostly only heard about
| fpga's being used at HFT firms somehow.
| _moof wrote:
| Design and implement basically any digital circuit you can
| possibly imagine, within certain speed, thermal, and/or gate
| count constraints.
| 082349872349872 wrote:
| If you have a couple of years and a friend, it's possible to
| build an entire system, from designing the architecture through
| writing the apps to run on it: http://www.projectoberon.net
|
| (they provide Verilog on this website, but Wirth himself has an
| HDL of --of course-- his own design:
| https://people.inf.ethz.ch/wirth/Lola/index.html )
|
| NB. Risc5 != RiscV
| xattt wrote:
| I'm getting the sense that there was an FPGA "ground floor" at
| some point in the last 5-7 years, and trying to buy one now is
| pretty much a ripoff.
| ted_dunning wrote:
| That's odd. Whatever you could get 5-7 years ago is still
| available (except better) for pretty much the same or lower
| prices and with a lot more examples to start from.
|
| How is that world a ripoff?
| jxdxbx wrote:
| I can see how an FGPA can perfectly emulate the logic of an older
| chip--but the actual physical layout is different, right? Are
| there any timing issues that result from this?
| deepthaw wrote:
| Why is the MiSTer listed as "used to perfectly emulate and/or
| upscale analog signals?"
|
| MiSTer doesn't just concern itself with analog signals, it
| simulates the entire system and outputs the original analog
| signal or can upscale it for digital output on its own. This
| description could make somebody think it's just a scaler.
___________________________________________________________________
(page generated 2023-11-27 23:00 UTC)