DUO COMPACT 2 Goals: > Make an OISC with a 24 bit address bus. Instruction: Write from direct absolute address to direct absolute address, then jump to direct absolute address. Registers: > Address (shiftable) > Bank (SRAM) Decade counter steps: 0. Do nothing for startup. 1. Latch counter. 2. Increment counter. 3. Perform operation. 4. Reset decade counter. Microcode signals: Memory OE Bank OE Memory WE Bank WE Address WE Reset microcode 4 bit memory offset Microcode format: (2 bit WE decoding address) (2 bit OE signals) (4 bit memory offset) Steps for setting up computer: 0. Disconnect oscillator. 1. Disable microcode OE. 2. Reset microcode counters. 3. Latch microcode counter. (At this point the computer will be at the beginning of microcode step 0.) 4. Read or write memory contents. 5. Fill address register with 0x00. 6. Enable microcode OE. 7. Connect oscillator. Microcode steps: (Address register should point to current instruction at beginning of cycle) 0. Critical for software installation: Memory -> bank (+0x00) 1. Memory -> bank (+0x04) 2. Memory -> bank (+0x05) 3. Memory -> bank (+0x06) 4. Memory -> bank (+0x08) 5. Memory -> bank (+0x09) 6. Memory -> bank (+0x0A) 7. Memory -> bank (+0x0C) 8. Memory -> bank (+0x0D) 9. Memory -> bank (+0x0E) 10. Bank -> address (+0x06) 11. Bank -> address (+0x05) 12. Bank -> address (+0x04) 13. Memory -> bank (+0x00) 14. Bank -> address (+0x0A) 15. Bank -> address (+0x09) 16. Bank -> address (+0x08) 17. Bank -> Memory (+0x00) 18. Bank -> address (+0x0E) 19. Bank -> address (+0x0D) 20. Bank -> address (+0x0C) 21. Reset microcode Required chips: (x4) 512 KB flash: SST39SF040-70-4C-PHE (32 pins) (x4 for memory) (x1) 512 KB SRAM: AS6C4008-55PCN (32 pins) (x1 for memory) (x3) 1 bit to 8 bit dmux inverting: SN74HC138N (16 pins) (x2 for memory, x1 for microcode) (x1) Small SRAM: CY62256NLL-70PXC (28 pins) (x1 for bank) (x4) 8 bit D type flip flop: SN74HC574N (20 pins) (x3 for address, x1 for display) (x2) 8 bit buffer: SN74HC541N (20 pins) (x1 for keypad, x1 for microcode output) (x1) Quad OR gates: SN74HC32N (14 pins) (x1 for address) (x1) 8 bit inverter: SN74HC540N (20 pins) (x1 for oscillator) (x1) Decade counter: CD74HC4017E (16 pins) (x1 for clock) (x1) 8 bit counter with internal register: SN74HC590AN (16 pins) (x1 for microcode) (x1) Small EEPROM: AT28C64B-15PU (28 pins) (x1 for microcode) Other parts: (x5) 32 pin IC socket: 4832-6000-CP (x2) 28 pin IC socket: 4828-6000-CP (x7) 20 pin IC socket: 4820-3000-CP (x5) 16 pin IC socket: 4816-3000-CP (x1) 14 pin IC socket: 4814-3000-CP (x1) 12 pin female header: 929974-01-12-RK (x2) 10K ohm resistor: 291-10K-RC (x3) Octal 10K ohm resistor: 4116R-1-103FLF (x1 for data bus, x1 for counter OE and microcode signals, x1 for keypad) (x21) 0.1 uF capacitor: K104K15X7RF5TL2 (x1) 16 x 2 character display: EA DOGM162W-A (x2) 2 pin female header: 960102-6202-AR (x2 for display) (x1) 20 pin female header: 960120-6202-AR (x1 for display) (x8 + 4) Good button: B3F-1000 (x8 for keypad, x4 for control) (x3) Switch: MHSS1104 (x1 for power, x1 for oscillator, x1 for microcode OE) (x1) Crystal oscillator: ABL-4.000MHZ-B2 (x2) 20 pF capacitor: 140-100N2-200J-RC (x1) 1M ohm resistor: 291-1M-RC (x1) Larger capacitor: UVR1H100MDD1TA (x1) USB port type B (round one): 292304-1 Total chip count: 4 + 1 + 3 + 1 + 4 + 2 + 1 + 1 + 1 + 1 + 1 20 Base size for boot.dc2: 208 bytes add24 tempData1 tempData2 tempData3 Clock period: 250 ns Number of clock periods per microcode operation: 4 Microcode operation duration: 1 us Number of microcode operations per instruction: 21 Instruction duration: 21 us Number of instructions for 20 sleep cycles: 2993 Number of instructions for 21 sleep cycles: 3142 Number of instructions for 1 sleep cycle: 149 Sleep cycle duration: 3129 us