3

I'm trying to find some resources on designing motherboards, but there doesn't seem to be much out there. I'm also looking for information about interfacing with an Intel 80486. I mostly understand the datasheet of the Intel 80486, and I'm already familiar with x86 asm and the x86 architecture, but there isn't much out there (that I could find) in terms of a high level initialisation / execution overview. I'm also not sure whether a full-blown BIOS is a requirement, or whether I could cheat my way out of using one (i.e. replace it with an AVR microcontroller or similar).

My end goal is to build something that runs DSL. What I'm aiming for isn't a full extensible board with PCI/ISA slots and USB support, but rather a complete bare-bones board that will run the OS. I'd be going for the absolute minimum requirements - CPU, RAM, basic GPU, IDE controller, PS/2 interface.

I'm aware that this is a hugely ambitious project, and will probably end up taking me several years, but it's something I've got a lot of interest in.

Any good resources for this level of stuff? Surely the guys who design modern motherboards must learn it from somewhere!

Update:
I'm not trying to come across as conflictory here, but I just want to take a second to pre-empt the nay-sayers. I fully understand how complex and insane this project is. I get that I can't just breadboard this stuff up - it takes a lot of time and money to do it at all, let alone do it right. I know there are a multitude of issues that make this kind of circuitry difficult to deal with - high frequency, high current, low noise requirements, tight tollerance requirements, high pin/trace density, lack of datasheets, proprietary requirements, etc. I'm still dedicated/insane enough to give it a go. I'm not asking you to explain how to do it, I'm just asking for some links to websites or books that deal with this kind of thing. I'd be extremely grateful for any useful information I can get.

Polynomial
  • 10,691
  • 5
  • 49
  • 88
  • 3
    You may want to read this thread first... – stevenvh May 12 '12 at 08:53
  • 2
    @stevenvh I read that thread already, and it's pretty clear that the guy asking it was very naive and was never going to make any headway. I, on the other hand, am well aware that it's a monstrously difficult task, but I'd like to put in the work/hours to try it. I just need somewhere to start - hence this question. – Polynomial May 12 '12 at 08:58
  • What performance are you aiming at? Multi-GHz Pentium or 400MHz ARM, for instance? The OS doesn't mean anything. – Federico Russo May 12 '12 at 09:12
  • @FedericoRusso As I said in the question, I'm looking at using an old Intel 80486. The CPU clock is 16-100MHz, the FSB is 16-50MHz, so anything in that range would be fine. I'm trying to keep it as "simple" as possible. – Polynomial May 12 '12 at 09:15
  • 1
    @stevenvh - That other guy wanted to build a modern motherboard. This guy wants to do something with a 486. A 486 is waaaaay more approachable. They hark back to the days where motherboards were largely DIP. If he keeps the clock low (20 Mhz?), this should be definitely possible, if quite the challenge. – Connor Wolf May 12 '12 at 10:27
  • Thanks for the support, Fake. And coincidently, the last upvote on this question pushed my score to 386. – Polynomial May 12 '12 at 10:32
  • @Fake - I didn't want to suggest it's an impossible project, don't get me wrong. Just that it's not simple. Speed is crucial. Poly says in a reply to Federico that he's aiming at 16-100MHz, FSB 16-50MHz, and that should definitely be feasable (esp. the lower limit :-)). PCI at 100MHz already requires some care. – stevenvh May 12 '12 at 10:39
  • @stevenvh I'd probably start out at 16MHz and increase the clock later, when I've got a "working" model. – Polynomial May 12 '12 at 10:40
  • Sounds sensible. :-) Success! – stevenvh May 12 '12 at 10:42
  • 1
    WHy a 486? Why not an ARM CPU such as a low-end Freescale i.mx? Those are still available in QFP, and I imagine the documentation is vastly better. Not to mention the fact that some working designs are available on the net (at least schematics, probably layouts too). These can run linux just fine, for example. – Thorn May 12 '12 at 13:38
  • @Thorn I know the x86 architecture quite well, and it'd be pretty awesome to attempt to adapt the project to run Windows 95 at a later date. However, I do recognise the vastly superior quality of documentation and availability of more modern ARM processors, so I'm currently doing some research into both approaches. – Polynomial May 12 '12 at 13:45

1 Answers1

4

You basically have two options here:

  • A current-generation 486-based CPU
    • Upside:
      • Everything will likely be integrated into the main CPU - No southbridge, IO controllers, etc...
      • you can actually buy the ICs off the shelf.
    • Downside:
      • Devices may be BGA
      • few exposed busses
      • may want to run at a few hundred Mhz.
    • By "Currently Produced", I mean something like a AMD Geode, or similar device from VIA, etc... There is a pretty big market for small, low power, low speed x86 CPUs in embedded applications.
  • A old-stock or old-design 386/486 CPU
    • Upside:
      • Probably more educational
    • Downsides:
      • Requires a LOT of devices (e.g. Southbridge, a UART, etc...), all of which are additional ICs.
      • Note: the external devices will vary depending on which 386/486 you decide on. The early ones had few integrated peripherals. Later on, many of the peripherals got integrated into the CPU itself.

There are some midpoint-devices, like the 386EX, which is a 386 intended for embedded applications. It's old enough that it's available in TQFP-144 (released in 1994), yet it includes most of the necessary peripherals on-die.
Datasheet


Some resources, off the top of my head:

CoreBoot:

A FOSS BIOS alternative.

Interesting forum thread about building a IBM XT compatible computer.


Other stuff:

Dieter's Homepage
Some nutjob who build a discrete Transistor CPU!
He also has a bunch of other homemade CPU projects


Really, If I were you, I would go with an ARM device. You can get big ARM CPUs that have MMUs, and will run linux fine.

Alternatively, an 8088 or 8086 may be significantly more approachable. There is lots of information about people homebrewing 8088 computers out there.

Connor Wolf
  • 32,168
  • 6
  • 79
  • 138
  • 2
    Hah. I have 6,666 rep! I think that makes this the most evil post of them all! – Connor Wolf May 12 '12 at 11:10
  • Digikey lists a couple of 100MHz 486DX4s in SQFP package. – stevenvh May 12 '12 at 11:11
  • @stevenvh - No kidding? Huh. Must be for embedded applications. – Connor Wolf May 12 '12 at 11:11
  • "will almost certainly be BGA". Dixit Fake... – stevenvh May 12 '12 at 11:13
  • @stevenvh - I said almost. – Connor Wolf May 12 '12 at 11:17
  • Just wanted put Poly's mind at ease! :-) – stevenvh May 12 '12 at 11:19
  • @stevenvh - Furthermore, I was more distinguishing between old-design [34]86 CPUs, and modern [34]86 successor CPUs, like the AMD geode, or other devices which pack a [34]86 core, and most of the peripherals into a single package. – Connor Wolf May 12 '12 at 11:19
  • Aaaand, well, I did some more research, and my point seems largely invalid. Bah! – Connor Wolf May 12 '12 at 11:26
  • Very interesting and useful info in here. I'd considered 808x microprocessors first, but decided that they were too slow and unsupporting for what I needed - you can't really run a standard Linux OS on anything less than an 80386. The suggestion of using an ARM processor is interesting. I'd really like to stick with x86, since it's an architecture I know, but I can imagine there's a much greater wealth of information around the ARM processors. I'll have to dig around and make a decision as to which I should use. – Polynomial May 12 '12 at 13:16