Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rubyで作る論理回路シミュレータの設計の話 - Kashiwa.rb #12

Rubyで作る論理回路シミュレータの設計の話 - Kashiwa.rb #12

Avatar for Koji NAKAMURA

Koji NAKAMURA

June 16, 2025
Tweet

More Decks by Koji NAKAMURA

Other Decks in Technology

Transcript

  1. 作ったもの: logicuit • logi(c cir)cuit -> logicuit • 電気回路シミュレータ •

    書籍「CPUの創りかた」を理解したくて作った • https://www.amazon.co.jp/dp/4839909865/
  2. 基本論理ゲートの一つを眺めてみる A B Y AND A B Y AND Bをon

    Bをoff • どこに電流が流れているかを 状態 として表現する? • 出力Yは入力A,Bの射影とも言えそう → 関数型の機運?
  3. こーゆーのもある: Dフリップフロップとクロック • 入力 D の値をクロック立ち上がり時に Q 出 力に保持する •

    1ビットの状態を記憶可能 • つまり CPU の「レジスタ」になるやつ • \(状態)/ CK
  4. 素朴なモデリング(1) • Ruby なので OOP を選択 • Signal クラス ◦

    電流が流れる単位の信号 ◦ #current: true | false ◦ #on / #off • Gates::And クラス ◦ has many Signal(s) A B Y AND
  5. 1Signal=1bit、4bit でまとめて部品を繋げたい イミディエイトデータ 0000 入力ポート 出力ポート データセレクタ Aレジスタ Bレジスタ 出力ポート

    プログラムカウンタ SELECT A SELECT B A B C3 C2 C1 C0 ALU LD0 LD1 LD2 LD3 書籍にある図を引用 概念的にも4bitでまとめて扱いたい
  6. EOF