Crossing the Divide From Software Dev To Hardware Dev
First time accepted submitter szczys writes "Quinn Dunki spent decades developing software before she fabricated her own 6502-based computer. Here she talks about crossing between software and hardware (or the other way around) and why this is easier today than it has been in the past."
just buy a Pi
tl;dr "Software is a bit like hardware but hardware is less virtual."
Am I missing some point here? Maybe this person has achieved something I don't know about that makes their message more relevant than I can see.
Geez, when I started programming all you had with stdclib. Now I have teams of people who know orders of magnitude more than I do doing my bidding. It's great!
Seriously, though, everything is easier these days. There's a ridiculous amount of stuff out there, if you have enough time to plow through it all.
Run the opposite direction!
Software is made up of worlds created by people hopped up on caffeine and suffering from too little sleep. Hardware follows physical laws, software follows no laws.
Hardware is created, finalized and shipped. Software is a never ending dreary of bug fixes, upgrades and incompatibility.
For your own sanity, stay away.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Designing something that runs close to the DC end of the spectrum like a 6502 requires far less engineering know how than pushing into the high speed domain beyond 100MHz. That doesn't invalidate the value of designing with "old" tech when if will suffice but it isn't a viable way to change career paths.
I am becoming gerund, destroyer of verbs.
If you don't know both, you are only using half your brain
hardware can be immensely satisfying, because you end up with something you can hold in your hand when you’re done.
That's what she said! Literally.
I was trained in college as a HW guy, did a few boards and ASICs, and now I'm a SW guy. Hardware is increasingly done in ASIC's / programmable gate arrays, and PLD's which are now written in programming languages like Verilog and VHDL. It's much like software, but massively parallel. With machines coming with more and more cores now, the differences are shrinking rapidly. The real difference is that it costs hundreds of $k to compile the final package in silicon. ;-)
Comment removed based on user account deletion
Is the lack of documentation hampering your development? You wouldn't have much of this high end technology if had companies not sunk development money into it and licensing to recoup their costs.
Only the State obtains its revenue by coercion. - Murray Rothbard
Without having a good understanding of hardware development you can not be a good Desktop or Embedded level developer.
Don't do an image search for Quinn Dunki Nude. You won't get what you expect.
I am an analog designer, and I don't even understand completely how to implement 1Ghz+ speed designs because all of the stuff I design is low frequency instrumentation. I have wire-wrapped an 8088 and programmed it in assembly and was the last microprocessor class at my university to do so. Now they add stuff to a microprocessor board which teaches you much less (but also takes less time than the 20+ hours per a week to wirewrap). I would recommend the experience to anybody with a computing background. It will teach you the fundamentals of computing. I would also encourage all software developers to also understanding how to program assembly. I've done a lot of different things in a lot of different areas (FPGA's, DSP, uProcs and analog design) , and there are so many gotchas along the way with any one of these areas, even by reading books and books to gain some working knowledge it still takes years of implementation to become proficient. I thought I was good at FPGA's until a senior engineer tore apart my design. One problem I have with software engineers is the "I can fix it anytime" mentality. Revisioning a board takes days at the least and costs 100's of dollars, it is not like pressing the run button in a software simulator. If your going to do a project, plan it out and then do it, don't fiddle with the software or hardware until it works.
I am a fan of the people who build their own computers from MSI components.
I discovered microprocessors around 1980, when I was 14 years old, but here in little Belgium I was never able to do something with that knowledge at that time, but my interest got me a bachelors degree in electronics, and a good (better) understanding on how software works. I was always interested in FPGA, but it is only since 2010-2012 that I got finally a possibility to do more than programming. I got my master degree in electronics, and on the way I learned VHDL (one of the reasons that I wanted to go for my master degree), and got an interesting school assignment about on the fly reconfigurable hardware and a thesis involving the Spartan-6 Atlys board.
Also, since 2004 I have been working on and off studying Common Lisp, and processor emulators.
Well, since September 2012 I have been designing a simple microprocessor, for which I first did the implementation of an assembler in Common Lisp, and a simulator, and start of this September I finally got around implementing the simple computer system in VHDL. I was surprised how easy it was, given that I only have about 1 to 2 hours a day in the evening to work on things. It is currently a 16-bit thing which uses 64kB of FPGA block RAM.
Thus, with software knowledge and VHDL, it should become even easier to build custom microprocessors.
And I am not even crossing this line. It has always interested me to go for both hard- and software, but due to circumstances I ended up more on the side of software.
Having the room for doing electronics properly is not that easy. One needs a place committed to it, which can not be used by other people in the family. For that reason, I like the concept of FPGA development boards. It lets me do what I want to, without needing to invest in dedicated space.
The Atlys board gives me all I need for growing in the future. The first part should be to make the system run using the on-board serial controller, so that I can control it through a terminal program, having access to a keyboard and a character terminal.
And I am not done with software, because one of my goals is to write a Lisp system for running on the system, and then start to optimize the ISA for better performance. Other things: go to a 32-bit implementation and start using the on-board 128 MB RAM memory.
I love hardware. Built a 6800 machine on solderless breadboards quite a few years back. Kind of a dumb thing to do durability wise, but it was quick and easy. That brings me to my point. Many new devices these days are only available as surface mount devices. Have you ever tried to solder one of those bad boys into a circuit? The Arduino and its ilk are great but shields and stuff are basically pre-built and component level design is becoming a lost art. Well, I suppose you could say that the advent of ICs turned discrete transistor design into a dying art to an extent. Of course, things that can be done today are magical compared to 20 years ago. Ch-ch-ch-changes.
Does anyone know of an inexpensive and easy way to work with surface mount devices? Prototyping SMT boards are available from Schmartboard and others but they sure aren't inexpensive.
I fail to see the difficulty, or the divide, since hardware is a question of petrifying some software to enhance the operation of certain algorithms.
I remember reading articles several years ago by Chuck Moore about what he was doing to control a silicon foundry to produce chips which would hard wire some algorithms in silicon while leaving the rest as software implementations in Forth.
TILs (Threaded Interpreted Languages) lend themselves very well to this.
The level of interpretation, and the repetition of interpiling, depends on what you define and cache as interpreted code. That is only one step away from petrifying it in silicon.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
I've taken the high tech way to designing hardware - FPGAs. So far I've built quite a few bits and bobs - 200MHz GPS referenced frequency counters, a 60 stage Mandelbrot pipeline (12B Ops per second @ 200MHz), SDRAM controllers, my own processors, video adapters, and implemented the DVI-D protocol. I've even worked out how to make a chip with 1Gb/s outputs work at 1.5Gb/s - yay! 1080p! Everything is in a HDL (Hardware Description Language) so can be used by others on their own projects. It isn't that expensive - dev boards start less than $100.
As Quinn points out it takes a very long time to get everything working correctly - you software guys don't know how lucky you have it!
I've put some of my projects on my wiki at http://hamsterworks.co.nz/mediawiki/index.php/FPGA_Projects if anybody wants to take a look.