3
\$\begingroup\$

I would like to learn the basics of integrated circuits and microprocessors. To get an idea of my level of ignorance, here are some question I have: 1. How many "layers" does a microprocessor have? 2, 3, hundreds, thousands? I assume it has to be more than one, since if "wires" cross I assume one must jump to the layer below (or above) for a while and then jump back? 2. I remember reading that distributing the "clock" is a big issue for the power usage and design of a chip. Must all parts of a chip run on the same clock? Can a "communication channel" be self-synchronizing, like I imagine say a USB/ethernet connection is. 3. Is there software where you can design an integrated circuit, simulate it and see if it works?

Anyone know of a good book? My background in math and computer science is very good, my background in electronics is weak.

\$\endgroup\$
7
\$\begingroup\$

You probably already know that a person can be an expert at using a chainsaw, without knowing much about designing a custom chainsaw, and vice versa. It's the same with chips.


  • 1. How many "layers" does a microprocessor have?

There is only one layer of transistors. Most transistors are fabbed in a process that uses 3 layers of metal for interconnect. The year 2000 AMD Athlon Thunderbird has 6 interconnect layers, and more recent AMD and Intel processors use a few more layers.

  • 2. I remember reading that distributing the "clock" is a big issue for the power usage and design of a chip. Must all parts of a chip run on the same clock?

Nearly all CPUs, and most digital ICs in general, are designed using tools that "enforce synchronous design practices", using a single global clock.

However, a global clock is technically not necessary. There are some globally asynchronous locally synchronous (GALS) chips. A few "clockless CPU" chips have been built, which have no clock at all.

  • 2a. Can a "communication channel" be self-synchronizing, like I imagine say a USB/ethernet connection is.

Yes. A few systems (such as clockless CPUs) use completely delay insensitive circuit techniques to stay synchronized, so either end can run at any conceivable rate, down to practically zero.

Many long-distance communication protocols -- USB, Ethernet, CANbus, FireWire, DMX512, ATSC, DVB, etc. -- assume that both ends are running at pretty close to the same rate, and compensate for small differences in rate by using self-clocking signals to compensate for bit-slip, frame desynchronization, etc.

Communication between two ICs on one PCB, or between two sections of one IC, typically uses a dedicated "clock wire" and a "frame wire" running from one to the other to keep everything synchronized.

  • 3. Is there software where you can design an integrated circuit, simulate it and see if it works?

Yes. I'm making a list that includes digital circuit simulators

Those are all digital gate-level design software. There's a whole other category of transistor-level design software such as "Magic and IRSIM", which is used for full-custom analog and digital IC design.

\$\endgroup\$
7
\$\begingroup\$

Check out https://code.google.com/p/elementary-microprocessor/. It's a basic microprocessor I designed for educational purposes simulated in a Java program so it should work on any platform. Read the introduction and it has links to other designs that are even more basic in case the Elementary Microprocessor is more difficult than you are ready to take on. It doesn't go into the physical design, just the logical design but the documentation is in plain English, avoids technical terms and defines them when used, and doesn't assume the reader has ever taken a class on the subject. Good luck!

Also, it comes with some pretty bad Perl scripts that serve as an assembler to help you write programs that do work when imported into the simulator program. You can email me for any questions at all. -Rory

\$\endgroup\$
  • \$\begingroup\$ Thank you, the EM looks pretty nice. Alas, I don't see your email address at this stackexchange or at harkopen. \$\endgroup\$ – davidcary Dec 7 '11 at 3:50
  • \$\begingroup\$ It's elementarymicroprocessor@gmail.com I made sure that it's now on the harkopen project page. \$\endgroup\$ – Rory O'Hare Dec 11 '11 at 7:51
1
\$\begingroup\$

You may want to take a look at some of the answers to this question here:

microcontroller / cpu design book?

The book The Elements of Computing Systems: Building a Modern Computer from First Principles is a great place to start.

\$\endgroup\$
1
\$\begingroup\$

There are some truly fundamentals, binary arithmetic, Boolean algebra, and logic switches. Binary digits are either 1 or 0 and a group can represent a number where the value of each position is 2 to the nth where n is the position index of the digit so the value of the group/word is the sum of the position values that are 1. Analogous to the decimal system where the digits are 0 to 9.

Boolean algebra deals with true/false conditions which are also binary values so in digital circuits a signal represented by a voltage of 0 or not zero can also represent binary values. A simple row of on/off switches wired to light bulbs can therefore display a value where an "on" switch and light correspond to the binary value of that position in the row.

Logic/Boolean functions use multiple switches where series connected switches do the "and" function because both must be on to light the bulb. Connect them in parallel for the "or" then either switch 1 or switch 2 will light the bulb.

About all that is needed from the engineering aspect is that transistors can act as on off switches(switching circuits) and can be connected in parallel or series.

In practice, only a few transistors can be connected directly together so a network of functions are connected to generate complex functions. Each function becomes a logic level and has a finite time to resolve. The sum of delays for each level in the path is the path delay. The path with the longest delay becomes a critical performance factor.(critical path) There may be confusion over the levels(timing) of a design and the levels of metal used to physically connect the transistors.

The critical path delay limits the max clock frequency since the clock period must be longer than the critical path.

Use of a clock/synchronous design is a solution to problems caused by race conditions. As signals propagate thru a path, the output may change more than once before being resolved since all possible paths do not have the same delay. "glitch" is the common term.

A counter consist of a group of storage elements that are inputs to an adder/incrementer which is input to these elements. The counter should change by 1 increment when an input control signal arrives. A set of 2 input ands can gate the adder to the counter. If the counter is made up of latches which are simply cross-coupled gates, the duration of the control signal may be long enough that more than one increment occurs. Instead of latches, D flip-flops are used because they can change only once per clock edge no matter what the period. Another couple of things now apply: The input value must be stable for the setup time before the clock edge and for the hold time afterward.

Many FFs can change on any given edge so all the clocks must occur very near the same time else an input may change during this window.

\$\endgroup\$
1
\$\begingroup\$

2. I remember reading that distributing the "clock" is a big issue for the power usage and design of a chip. Must all parts of a chip run on the same clock? Can a "communication channel" be self-synchronizing, like I imagine say a USB/ethernet connection is.

There are often multiple different "clock domains" at different frequencies, sometimes variable or capable of being stopped entirely. You can do clock recovery from data streams in all sorts of ways, especially with clever encoding - the humble barcode is an example of this.

Asynchronous logic design triggers the next phase of a computation when the previous completes. It's never really been commercialized as it requires a very different design methodology.

I used to work for a startup whose product was automated clock tree layout software. It is certainly a complex problem.

3. Is there software where you can design an integrated circuit, simulate it and see if it works?

Yes, there's quite a few for different purposes at different levels of abstraction. Cadence and Synopsys are the big names; Modelsim has a very useful free edition for logic simulation. SPICE is used for determining the properties of a gate at silicon level.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.