てきとうなさいと べぇたばん

コンピュータシステムの理論と実装 コンピュータそのもの

ComputerMax-external.tstを実行して無事終了。やったぜ!!

ハードウェアの頂、コンピュータ

CPUも作ったし、コンピュータを作成した。

最後のとりで、Memory

このコンピュータでは、16キロバイト + 8キロバイト(グラフィックメモリ) + 2バイトで構成されている。ということで、以下の様なHDLになった。

CHIP Memory {
    IN in[16], load, address[15];
    OUT out[16];

    PARTS:
    // Put your code here:
    DMux(in = load, sel = address[14], a = d0, b = d1);

    RAM16K(in = in, load = d0, address = address[0..13], out = w0);
    Screen(in = in, load = d1, address = address[0..12], out = w1);
    Keyboard(out = w2);
    And(a = address[14], b = address[13], out = ik);

    Mux16(a = w0, b = w1, sel = address[14], out = o1);
    Mux16(a = o1, b = w2, sel = ik, out = out);
}

先頭1ビットをRAM16Kに使うのか、Screenに使うのか判断。先頭2ビットが1だった場合、Keyboardを呼び出す。

とうとう出来た、CPU

あとは、作ったこれらとROM32Kを合わせればよろし。

CHIP Computer {

    IN reset;

    PARTS:
    // Put your code here:
    ROM32K(address = pc, out = address);
    CPU(inM = memory, instruction = address, reset = reset, writeM = load, outM = value, addressM = addressM, pc = pc);
    Memory(in = value, load = load, address = addressM, out = memory);
}