NexGen is a heterogeneous collection of computers, and embedded microprocessors. These possessors must all listen and talk together. To do this we must rely on some common language. This language is a protocol. There are different protocols for different jobs for instance we have: UDP, TCP, NTP, etc. And they have to be well defined, and understood by both parties. Protocols can be software or hardware based or a combination of both. The Wiki has lots of definitions of what a protocol is or is not so we will use a combination of their's. Our protocol should have the following features:

  • A protocol is a common means for unrelated objects communicate to with each other.
  • A protocol will define any data structures that it uses.
  • A protocol describes the syntax, semantics, of it's use. This is called it's API or Advanced/Application Programming Interface.
  • A protocol will have a formal description.
  • A protocol optional could be defined with Abstract Syntax Notation One (ASN.1). A pdf document of ASN.1 can be found here. pdfIcon.png
  • A protocol must be well understood.
  • Protocols may include signaling, authentication and error detection and correction capabilities.
  • One protocol may be the foundation for another, such as Tcp/Ip or Udp/Ip. Where Ip is really the underlying protocol.
  • A protocol must be a public document.


There is one of our protocols, for one of our CDU's, Computer Display Unit.CDU.jpg It is compriesed of several key components:

  • The Keyboard. We will use a Ps2 keyboard for the keys.
  • The Switches. There are four of them 2 rotary, and 2 thumb wheel switches. the thumb wheel switches are BCD encoded, so we will encode the rotary switches with a priority encoder 74LS148.
  • The Display. The display is comprised of 5 alphanumeric displays, plus 13 additional seven segment display, and two tri-color leds. After looking around and finding 16 segment drivers (hardware) not very common we specified two(2) MAX6955 with an I2C interfaces.

Plus lets not forget about several other parts:

  • Some intelligence for our CDU. So we thought we would use a Arduino. There small and cheap.
  • Our Host. This is a program that runs on one of our Linux boxes.
  • A Client. This is program that runs on the Arduino talking to our Switches, Display, and Keyboard.

Know remember that thing called a protocol? So the questions are:

  1. How does the Arduino communicate with the Host?
  2. How does the Host communicate with the Arduino?
  3. How does the Arduino communicate with the Display?
  4. How does the Arduino communicate with the Keyboard?
  5. And lastly how does the Arduino communicate with the Switches?
  6. Oh, yes how does the Host talk to simulator?
  7. And how does the Host listen to the simulator?


keep tuned in more to come

Cris ~