# Rapport - Martin Dørum (martindn) ## Subcircuits ### decode Denne kretsen tar de første 4 bits fra maskinkoden, og bestemmer hva CPUen skal gjøre. Den bestemmer om RAMen skal skrives eller leses, om registeret skal skrives til, om inputen til registeret skal være fra maskinkoden eller fra RAM, og om de laveste eller de høyeste bits fra maskinkoden skal endres. ### direct-input Med instruksjonene 1000 og 1001 skriver jeg til registeret. Hva jeg skriver blir bestemt av denne kretsen. Den tar 4 bits fra maskinkoden og 8 bits fra registeret, og har en input som bestemmer om den skal ta de 4 nederste bits fra registeret og de 4 øverste fra registeret, eller om den skal ta de 4 øverste bits fra registeret og de 4 nederste fra registeret. Denne inputen kommer fra decode-kretsen. I tillegg har den en 4 bit output som bare er de 4 bits fra maskinkoden direkte, som brukes som RAM-addresse i de instruksjonene hvor vi vil lese fra eller skrive til RAM. ### mux-8, mux-4 Disse kretsene tar to 4- eller 8-bit inputs, og har en `Control` input som bestemmer om input 0 eller input 1 skal gå igjennom. ## Kretsen Output fra program ROM går til `decode` og `direct-input`, som passer på at RAM og registeret får de verdiene de skal ha i hendhold til maskinkoden. Når clock-signalet går fra 0 til 1, skrus `decode` sine outputs på, og RAMen skrives hvis det er nødvendig, registeret sin clock input slår seg på hvis det er nødvendig, etc. Når clock-signalet går fra 1 til 0, vil alle outputs fra `decode` slås av igjen, registeret vil skrives hvis clock-signalet var på, og program counteren vil økes med 1. \pagebreak ## Logg av test1.raw | Maskinkode | Register | RAM[1] | Clock | |:----------:|:--------:|:------:|:-----:| | 85 | 00 | 00 | 0 | | 85 | 00 | 00 | 1 | | 97 | 05 | 00 | 0 | | 97 | 05 | 00 | 1 | | b1 | 75 | 00 | 0 | | b1 | 75 | 75 | 1 | | 81 | 75 | 75 | 0 | | 81 | 75 | 75 | 1 | | 94 | 71 | 75 | 0 | | 94 | 71 | 75 | 1 | | a1 | 41 | 75 | 0 | | a1 | 41 | 75 | 1 | | 00 | 75 | 75 | 0 | ## Logg av test2.raw | Maskinkode | Register | RAM[0] | RAM[1] | RAM[2] | RAM[3] | RAM[4] | Clock | |:----------:|:--------:|:------:|:------:|:------:|:------:|:------:|:-----:| | 8c | 00 | 00 | 00 | 00 | 00 | 00 | 0 | | 8c | 00 | 00 | 00 | 00 | 00 | 00 | 1 | | 9d | 0c | 00 | 00 | 00 | 00 | 00 | 0 | | 9d | 0c | 00 | 00 | 00 | 00 | 00 | 1 | | b0 | dc | 00 | 00 | 00 | 00 | 00 | 0 | | b0 | dc | dc | 00 | 00 | 00 | 00 | 1 | | b3 | dc | dc | 00 | 00 | 00 | 00 | 0 | | b3 | dc | dc | 00 | 00 | dc | 00 | 1 | | 81 | dc | dc | 00 | 00 | dc | 00 | 0 | | 81 | dc | dc | 00 | 00 | dc | 00 | 1 | | 91 | d1 | dc | 00 | 00 | dc | 00 | 0 | | 91 | d1 | dc | 00 | 00 | dc | 00 | 1 | | a0 | 11 | dc | 00 | 00 | dc | 00 | 0 | | a0 | 11 | dc | 00 | 00 | dc | 00 | 1 | | b4 | dc | dc | 00 | 00 | dc | 00 | 0 | | b4 | dc | dc | 00 | 00 | dc | dc | 1 | | 00 | dc | dc | 00 | 00 | dc | dc | 0 |