Bits and Things+Introduction

Our goal will be to create an online encyclopedia of resources for digital systems design.  We will also create a practical hands on course for the emerging generation of makers where they will learn all about state of the art systems.  This knowledge and the related skills are highly marketable, but what we really want is the joy of knowing how things work and being able to invent new things or just make personal customizations to express ourselves.

Many of  the resources you will need are already well covered by other authors. I highly recommend studying all the material in Elements of Computer System as well as taking the course Nand2Tetris. Either just studying the open materials up to taking the official course or implementing the home schooled (link to resources here, or do this ourselves on this site). Much of this course is available for free, so please use it to supplement what you find here. You can also find resources that take you down into analog devices and physics to understand how gates are constructed in different technologies. The approach of covering all the layers of system abstraction/implementation is part of my goal here, so if you find some material here confusing for whatever reason, please use these and other resources you find to give youself a solid foundation before beginning to find your own path.

This material is intended to get you into building and experimenting with current technologies and to be used as a guide for finding and exploring your particular interests which may be off the beaten path. This site is intended to be more invitation to explore the edge of your knowledge and even the edge of what is possible. None of it is that complicated, but there is a lot of it and this is only the beginning. It will lead directly into in-depth material to get you quickly into the foundational technologies of Linux and the command shell. This will prepare you to dig into projects like Raspberry PI and Beagle Bone as well and the much simpler Arduino based projects. There are already large maker communities around these projects and you will find many resources on other sites for building projects and learning the ropes. We will also show you resources to prototype with more commercially supported projects.

We might prototype with Android based hardware, or build an SoC based on industry standard desktop and laptop architectures. Until recently, that is Intel or ISA compatible AMD processors, but the RISCV project has come along very quickly to where SoCs are already being built and available to use in our projects. The RISCV community is another resource for people wanting to learn hardware and systems and get experience contributing real work to the community's projects.

With these resources, any group of technically savvy people can collaborate to first learn how it all works, and then start designing and building systems of the 21st century. The real bottleneck from where we are to where we need to be is what Fuller called Universal Design Science and this material is designed to provide the background needed to build the control systems for these designs. The rest of the necessary background is basic maker knowledge. Makers know how to build things and as a community they know all of the current building technology as well as the foundational traditional technologies that they are based on.

We are not going to reinvent any wheels here, wherever possible we will build on and link to other projects and resources. We participate in the commons of knowledge and learning about signals and systems as we are rebuilding our world in more healthful and wealthful ways. In this open course you will be invited to learn by doing on both projects that we suggest or ones that you and your community design. We will also build a hub here for such projects to share resources and collaborate. You are invited to make this material your own and fix and expand it to be more clear and complete. Projects closely related to the chapters can be discussed at the end of each chapter.

I. Abstraction: Computers as Mathematical Machines

  A. Formal Systems: Games and Modelling

  B. Signs and Systems: Semiotics and Representation

II. Mechanism: from Babbage to Modern Computer Networks

  A. Representation: from Positions of Wheels to a Binary Signal

    1.  Boolean mathematics and logic circuits.

      a. NAND/NOR and random logic

      b. General N to M and Programable Logic Block

    2.  Latches and Memory

    3.  From State Machines to Turing

  B. Programs and Data

    1. Von Neuman architecture: Programs as Data

       a.  Modern 16/32/64 bit architectures

    2. Programming Languages

       a. Machine Language: Just the bits

       b. Assembler Languages: Human readable machine language

       c. C:  The high level assembler

       d. Everything else is also language interpretation

   C. Data as Logic: the FPGA revolution

     1. Full circle:  System on a Chip with programable custom logic.

   D. From Components to Systems and Networked Systems

     1. Processing Units, Multiple Cores

     2. Memory Hierarchy: Processor caches, RAM and Storage

     3. Networks and I/O:  Other systems and the world outside