5 ms·
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 softw
by agg23 3y ago
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.
- bmurphy1976 3y ago> 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!
- kovac 3y agoTotally. There's something therapeutic about being able to exercise our engineering brain cells. Main stream software development simply doesn't do that for me anymore. Hardware/embedded work is the only way I can get this feeling.
- musicale 3y agoAlthough operationally there's not much of a difference between a cycle-accurate FPGA implementation and a cycle-accurate software implementation (especially on a board that you can plug into a hardware CPU socket[1]) the FPGA implementation is interesting to me because it seems closer to the original gate-level implementation in hardware, and because it seems more tangible. Of course a custom silicon implementation (such as a recent HN comment about a tiny tapeout reimplementation of the PDP-8[1]) seems even more real and exciting, even if the cycle/signal timing is the same. Part of it may be that the custom silicon implementation is a self-contained reimplementation rather than an emulation based on pre-existing, complex components. [1] https://microcorelabs.wordpress.com https://microcorelabs.wordpress.com [2] https://news.ycombinator.com/item?id=38416886 https://news.ycombinator.com/item?id=38416886
- agg23 3y agoIn theory yes, but in practice there's many sources of latency introduced by a modern system with OS, and even an emulator running on bare metal has additional latency. Framebuffers and input are the main sources, and there's no real parallel in emulators, unless you're going to multithread on dedicated separate cores, dedicating one to input, one to video, one to CPU, etc. Now for the vast majority of users, this does not matter at all. As much as I like to think I can tell, it's probably placebo or the slightest feeling like something is not right. But I think it's a worthwhile reason to have a different method of replicating these old and eventually dying machines, and it's much more intellectually interesting as you say.
- musicale 3y agoI was intrigued by the microcorelabs examples since they seem to be drop-in replacements for the hardware and are capable of running timing-dependent games and demos. Basically equivalent to the hardware, with the same input and output signals and timing. Note the 68K emulator was implemented on an Arduino-compatible Teensy microcontroller board rather than a full-blown Linux PC - though it does support 8GB of RAM, much more than the Mac it was plugged into! If a device has the same input and output signal timing as the original hardware, then the implementation - be it custom silicon, FPGA, or software - is largely irrelevant to its functionality. Regarding parallelism, it doesn't really matter as long as the output signals settle in time to meet the clock boundary. I agree completely regarding the difficulty of getting input and display timing to work properly in a software emulator, especially running on a PC with a modern OS.
- a_t48 3y agoThanks for your work. It’s on my list sometime to look into porting an open source GBC core to the Pocket (and add a patch or three on top) - I want to play multiworld randomizers on it!
- terrycody 3y agoWill a PS1 handheld FPGA possible in the near future?
- captaincaveman 3y agoInterested in knowing how you got started, any prior knowledge/training, as that seems quite the hill to climb?
- petrohi 3y agoNot 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 https://a.co/d/imzGBK5 as well as freely available ARM edition https://dl.acm.org/doi/book/10.5555/2815529 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!
- misnome 3y agoFinding out the digital design parts seems like the easy half of the problem. The non-open-source-tooling (that is what you need for the dev boards I have played with) is what I've had a real struggle with - Vivado and Quartus are so horrendously complicated, that it seems easy to find a project failing at some late stage because you clicked a button wrong two days ago. Learning these, and the interplay between board specifics and the way any onboard CPU talks to the FPGA mesh and how you interface between the peripherals just seems like a massive explosion of complexity that you seem to have to know in order to know how to learn it. And every board seems to be a horrendous combination of seemingly opaque "IP" blobs. I've looked even for paid tutorial series, but everything seems to be assuming you've gotten past this stage, or aimed at the "here is how you build up pure stuff in VHDL/Verilog".
- sweetjuly 3y ago
- kjs3 3y agoJust avoid the 'FPGA reimplementation v actual hardware' religious wars and you'll be fine.