Kind of expected to build Keyboard, Screen, and ROM32K

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Kind of expected to build Keyboard, Screen, and ROM32K

Aushin
I was really interested to see how those would all be done.  Is there a reason they were excluded?
Reply | Threaded
Open this post in threaded view
|

Re: Kind of expected to build Keyboard, Screen, and ROM32K

cadet1620
Administrator
The Screen, Keyboard and ROM are more complex than can be dealt with in an introductory course.  They all require more background in hardware.  This is basically the same reason the TECS starts with Boolean logic and not with diode and transistor circuits that implement NAND.

As an example, consider the screen buffer.  The hardware needs to access the buffer RAM and serialize the data into a video signal.  The video signal has very tight timing requirements to maintain a stable display so the controller needs to access the buffer RAM when it needs to, and must delay the CPU's access to the buffer RAM if the CPU is trying to access it in contention.  The circuitry for this controller is significantly more complex than the TECS CPU.

--Mark
Reply | Threaded
Open this post in threaded view
|

Re: Kind of expected to build Keyboard, Screen, and ROM32K

Aushin
Ah.  Well.  I'm kind of sad, then.  I also don't know what the word buffer means in this context.  I hope it's not in the five chapters I've already read because that would mean I missed it lol
Reply | Threaded
Open this post in threaded view
|

Re: Kind of expected to build Keyboard, Screen, and ROM32K

cadet1620
Administrator
Aushin wrote
Ah.  Well.  I'm kind of sad, then.  I also don't know what the word buffer means in this context.  I hope it's not in the five chapters I've already read because that would mean I missed it lol
Sorry about that.  "Screen buffer" is techie for the screen display memory.  There is a wealth of information on Wikipedia http://en.wikipedia.org/wiki/Screen_buffer.  Also look at "frame buffer" or "video buffer" which refer to the actual hardware.

--Mark
Reply | Threaded
Open this post in threaded view
|

Re: Kind of expected to build Keyboard, Screen, and ROM32K

romasi
Mark,
One of my most anticipated components of this course was understanding and creating the memory that holds the instruction for the CPU. At this point I still have trouble fully understanding how we migrate the ALU "codes" over to an instruction memory and create the mnemonics. Rather disappointed that it is missing from this course as it would have been one of the more interesting (and probably beneficial) part of the Hardware section. Additionally, it stops users from being able to define their own instruction set and assembly language which rather limits the ability to expand the features of the CPU (or is this controlled another way?).

Do you know of a good resource for those of us who would like to learn these topics?

Romasi
Reply | Threaded
Open this post in threaded view
|

Re: Kind of expected to build Keyboard, Screen, and ROM32K

cadet1620
Administrator
romasi wrote
One of my most anticipated components of this course was understanding and creating the memory that holds the instruction for the CPU. At this point I still have trouble fully understanding how we migrate the ALU "codes" over to an instruction memory and create the mnemonics. Rather disappointed that it is missing from this course as it would have been one of the more interesting (and probably beneficial) part of the Hardware section. Additionally, it stops users from being able to define their own instruction set and assembly language which rather limits the ability to expand the features of the CPU (or is this controlled another way?).

Do you know of a good resource for those of us who would like to learn these topics?
As stated earlier in this thread, these parts require more hardware knowledge. An EPROM is, at its heart, and analog circuit that involves semiconductor (quantum) physics in its design.

You can change the design of your ALU/CPU/Computer and run them in the Hardware Simulator. You will need to have written your Hack assembler (chapter 6) so that you can change it to generate your new binary code.  Warning: the Hardware simulator gets a bit weird if you have more than one ROM32K or RAM16K. (It can't properly lay out the UI frames for them.)

Another thing I recommend is to build a Hack computer in Logisim. You'll need to use Logisim's kbd and tty parts instead of the Hack versions. Mine looks like this:

Hack computer in Logisim
For some ideas for enhancements, see these posts:
    Ideas for a Slightly More Powerful CPU
    Hack II: Escaping the Harvard straitjacket
I've implemented both of these variants in Logisim.

--Mark