【電子工作】CPUをトランジスタで作ろう!

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ธ.ค. 2024

ความคิดเห็น • 42

  • @yama9919
    @yama9919 5 ปีที่แล้ว +1

    今までぼんやりとしか分かっていなかった事が、わかるようになったけど、どんどんわからないことが増えていく...
    詳しい説明ありがとうございます。
    今後も楽しみにしています。

  • @koarahana7583
    @koarahana7583 5 ปีที่แล้ว +2

    素人から見ると引き算が無かったりスタックが無かったり
    プログラムを組む上で色々制限ありそうな気がするけど
    問題にはならないんでしょうね、次回も楽しみにしています。

    • @tukinami
      @tukinami 5 ปีที่แล้ว +2

      減算は2の補数を加算する事で行います。

    • @koarahana7583
      @koarahana7583 5 ปีที่แล้ว +1

      @@tukinami
      なるほど、はじめから加減算の用意されたCPUを使っていたから、その考えは無かったです、コメントありがとうございました。

  • @haka8782
    @haka8782 5 ปีที่แล้ว +4

    結構分かりやすくて有難い

    • @tech-th4ix
      @tech-th4ix 5 ปีที่แล้ว +1

      圧倒的それな感

  • @science-cw3rs
    @science-cw3rs 5 ปีที่แล้ว +1

    待ってましたー!!!

  • @tech-th4ix
    @tech-th4ix 5 ปีที่แล้ว +2

    待ってましたー

  • @igaigachan50
    @igaigachan50 5 ปีที่แล้ว +2

    マイクロコードのような記述ということでしょうか?

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว

      マイクロコード=マシン語=機械語です。
      例えばAと言うアキュームレーター(メインのレジスター)に対してBと言うレジスターにコピーしたい。
      ニーモニック(人間がプログラムする為の解りやすくした言語)が、AにBをコピーします。となります。
      例えばmov a,b マイクロコードなら例えば 08 01 ←16進数、2進数なら0001000 00000001になり
      始めてCPUに命令を伝えられる様になります。
      ニーモニックからマイクロコードに変換するのに、大昔は自分で表を見ながらキーボードに
      マイクロコード(16進数)を入力してプログラムを動かして一喜一憂しました(笑)
      ただ、その後ニーモニックからマイクロコードに変換するコンパイラーと言う
      パソコンで動作するアプリが出て、簡単に変換出来るようになったのは革新技術でした(笑)
      だって、AにBをコピーするのに 08 01ですって、解りずらいでしょう(笑)

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว

      @gga00463 さん、はい(笑) 所謂ハンドアセンブルと言われますね。
      ハードウェアに対して伝えるのにステップ(クロックに対してのデータバスのラッチ)と
      言う手法を取らざろう得ません。
      4bitで8bitを表現するには2倍のステップ(クロック)を弄しますね。
      命令1+伝送先のアドレスが8bitなら+2の計3ステップが必要ですしね。
      しかし、4bitROMとRAMはどうやって実現するのだろうか・・まさかトランジスターだけで
      フリップフロップで構成するとなると途方もくれる💦
      8BitROMとRAMはICで簡単に実現できるが・・・・。

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว

      @gga00463 さん、そうなりそうですね、4bit+4bit+αで。メモリー容量が分からないから断言できませんが・・・I/Oは8bitを想定している様なので3ステート以上でしょうね。
      あまり詮索するとZEXさんに迷惑かけそうなので後は自重します💦

    • @TOHOKU2008
      @TOHOKU2008 5 ปีที่แล้ว +1

      必ずしもマイクロコード=機械語ではありません。機械語1命令が一個または二個以上のマイクロコードで実現されます。

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว

      @@TOHOKU2008 さん
      広義としてはマイクロコードってCPUの中で色々集約された(処理)を機械語で表現しますから、
      完全ではないとしても、イコールではないでしょうか。
      私は、マイクロコードの言葉のイメージとしてはファームウェアです、
      OSが無いCPUで決まっているROMアドレスに飛んで、CPUの初期設定をして、ペリフェラルを
      初期化して、割り込みアドレスの指定、ウォッチドックがあれば設定し、
      メインルーチンに飛ばしてプログラムどうりに処理させる。
      手法かもしれません、OSがあるプログラミングはマイクロコードとは言えないと
      思います。 必ず、指定のプログラミング言語が用意されていますから。

  • @sinnkouji
    @sinnkouji 5 ปีที่แล้ว +4

    大学の授業を思い出しながら何とかついていけるレベル あと6:30の所テロップが2の12乗の誤字

  • @今安規夫
    @今安規夫 5 ปีที่แล้ว +5

    もう付いていけません(TT)でも、凄いことをやっている事はわかります。今の時代原理原則を知らないでコンピュータを使う人が多いですね、特にスマホ。インプットからアウトプットまでの間が大切だと思います。
    皆さんのコメを見るにつけ理解できてる人がいるのも凄いですね。私にとって嬉しい限りです。
    もはや余計な事は言いますまい。グッドマークを押すに止めましょう。

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว +1

      割と簡単な理論ですよ、基本です、そりゃ今のアプリは簡単にソフトウェアの記述で簡単にブログラミング
      出来てしまうからいい時代です。 MicrosoftのVisual CとかBASICとか小規模なら無料で
      マイクロソフトからダウンロードして開発環境が整ってしまうのだから(笑)、今はネット系のプログラミングになるので
      C言語系を習得すれば(オブジェクトやクラスとか色々の概念)趣味でも楽しめます。
      自分が設計した思いどおりの動きをしたアプリって言うのも感慨深いものでしょう。
      ハードウェアが絡むから混乱するでしょうが、プログラムの根底にはハードウェアが付きまとう、
      だってハードウェアの仕様からプログラムの仕様が決まる!
      ゆるりと、自己の興味に従って知る楽しみも一興でしょう(笑)
      そう、コンピューターの基本は入力に対しての結果とスピードです! 正解です!
      粋狂じゃないですか、この時代に4bitCPUをトランジスターで作るなんて素晴らしい。
      ゆっくりと内容を理解しても良いんじゃないですか?
      だって、私はこの様な事を小5~高2位で理解した・・7年ですか(笑)
      大人ならクグルと1年以内に解決できるかもしれない(笑)
      ああ、子供ん頃クグれれば良かったのにな~(笑)
      このプロジェクトは素晴らしいですよ。 誰に出来るものでもないが
      基本を知れば想像はできる・・・しかし半田ゴテの作業も特筆もの(笑)

    • @今安規夫
      @今安規夫 5 ปีที่แล้ว +1

      @@gorohzaizen3368 さん
      レスありがとうございます。私もマックを買う前にC +Cだったか?機械言語の本を読んだことがあります。理解できたのは最初の数ページの説明だけ。後はさっぱり理解できませんでした。
      機械言語を理解するには柔軟な頭脳が必要なようですね。でもZEXブラックさんの動画は注目しています。

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว +1

      @@今安規夫 さん、現実の事象を素直に評価すれば解るはずです(笑) 難しく無い、雑念だけ捨てれば可!
      んで、狛犬2は昔使っていました(笑) 動かなくなってしまって数年経ったので、Windows xp用のマザボ入れて
      LCD化して遊んでました(笑) 現在。カラクラの筐体だけ残ってて・・そろそろ高画像LCDつけて
      Core i7でも乗っけようかと、カラクラⅡさんのアイコンに触発されそう(笑)

    • @今安規夫
      @今安規夫 5 ปีที่แล้ว +1

      @@gorohzaizen3368 さん
      カラークラシック2って狛犬2って言うんですか?初めて聞きました。
      まだ持ってるんですよ。ソフトのフロッピーは壊れてますけど起動だけは出来るんです。
      ウエルカムマッキントッシュ って出てきます。良き相棒でした。浮動少数点ボードを入れれば
      3Dソフト シェードも動きましたしねぇ。墓場まで持っていくつもりです。(^^)

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว +2

      @@今安規夫 さん、カラクラとカラクラ2は愛称として狛犬って呼ばれていましたよ(笑)
      懐かしいですね。 カラクラの外見はとてもかわいい(笑)

  • @郷仲久志さとなかひさし
    @郷仲久志さとなかひさし 5 ปีที่แล้ว +3

    情報処理技術者試験の
    COMETを思い出しますなぁ。

  • @lemoncmd
    @lemoncmd 5 ปีที่แล้ว +1

    SPやFPを固定番地のメモリに退避させればレジスタ4つでアドレス3byteのスタックマシン作れる…のか?

  • @necosh
    @necosh 5 ปีที่แล้ว +1

    地道な作業の繰り返しなんだな。Z80ニーモニック程度の知識しかないけど、言語の意味を持たせたり、データとして扱ったり、なかなか興味深い。

  • @hagehagehage
    @hagehagehage 5 ปีที่แล้ว +2

    こういう細かいレジスタの利用をわかりやすくするためにいわゆるCISCプロセッサではマイクロプログラムで例えばREG_A+REG_B→REG_Dみたいな操作をALUレジスタを表に出さずに一度にできるようにしてるってことですかね。RISCプロセッサはそのへんのわかりやすさを捨ててこのようなレジスタ操作が表に出てきている感じかな。8080等で命令によって消費するクロック数が異なるのはこの辺が理由でしょうか。あたってるかな。あたってるといいなw

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว +1

      Risk系のプロセッサと言えども、ソフトウェアの命令系統には何の変わりはありません。
      Ciscを踏襲してCPU内部で効率化を図っているにすぎません。
      ただ、このプロジェクトにRiskを求めると・・・途方すぎて溜息が漏れます(笑)
      トランジスターなら・・規模にも寄るけどウン×10万個が必要になるかも。
      命令に消費するクロックは、命令事体の長さ(バイト数)になるので設計レベルの話です。
      例えば00h(hとは16進数)が2バイト消費命令、01hなら3バイト消費命令など、
      違うCPUなら8バイト固定で命令を解釈する無駄な設計など、ただこのCPUは処理速度は断然速い。
      これはCPUの設計次第ですね。
      当たってますよ!!

  • @のぞみいちるの
    @のぞみいちるの 5 ปีที่แล้ว +2

    あけましておめでとうございます
    とうとう年越してしまいましたね

  • @西戸智久
    @西戸智久 4 ปีที่แล้ว +1

    すべては理解できないがざっくりとわかった。

  • @えるふぃ-b7u
    @えるふぃ-b7u 5 ปีที่แล้ว +2

    情報系の学校行く予定なのに理解できない……つらみ…

  • @アグリゴル
    @アグリゴル 5 ปีที่แล้ว +2

    わかってないからか、説明聞いてても(動作、流れ?が)理解できないので
    動きにそった絵(上位ビットに注目してとか、このときはてきな)、
    トレースでつたわるかなぁ
    いろいろ書いたけど、すごいことしてる、
    作成頑張って下さい

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว +1

      このCPUは4bitなので、上位ビットは4bitこれが命令になり下位4bitをROMから次の4bitを取り込んで
      命令に対しての「何をするのか」を読み込んでいる感じでしょう。
      CPUを設計するなら、ある程度自由に設計できるのをご教授頂いたので、既存のCPUの概念に当てはめずに
      考えると、ZEXさんの設計が見えてきます(笑)
      既存の概念は捨てると、理解も深まるのかもしれません。
      私は、ああCPUも設計次第でこんなに自由に出来るんだ! と、感動してます(笑)

  • @nakaedaelc
    @nakaedaelc 5 ปีที่แล้ว +2

    明けましておめでとうございます。簡単なOSも作らなければ???
    仮装コンピュタの仮装端末を実機で作り完成間近・・・この時間が
    一番充実してるんだよね。無線機やパソコンに繋げれば更に楽しさが
    まします。羨ましいな///.

  • @gorohzaizen3368
    @gorohzaizen3368 5 ปีที่แล้ว +2

    4bitで8bitをするから、マシン語の命令が16個しか実現出来ないんでしたね。
    8bitなら256個の命令が実現できるから、インデックスレジスタ―とか必要になります、
    と言うのも使わない命令が余っちゃってもったいない。 でも、ある特定動作のCPUなら違う趣旨の命令も
    追加したり・・例えば浮動小数点数計算に特化するレジスターを追加するなど(笑) 8bitならですが。
    ニーモニックが特殊な記述なのが理解できました。
    脚注:ニーモニックとはマシン語じゃ解り辛いから例えば「転送 A,b」とか人間に分かりやすい
    記述にする事で、Z80 CPUなら「LD A,B」、intel8086なら「mov A,B」とかになり、
    これは大抵コンパイラー(言語変換でマシン語に変換するアプリ)で.HEXファイルや
    .MOTファイルに変換して、それをROMライターに転送してUV-ROMに書き込んで
    実装して動かします。 当時1990年あたりはROMをエミュレートするICE(In Circuit Emulator)と言う高価な機器を使って
    デバッグ(プログラムの評価、検査)したりしました。
    ZEXさんはご存じでしょうが・・💦 これを見ている仲間の方々が、解るように概要を述べましたm(__)m
    しかし、壮観ですね。 ユニバーサル基板のタワー!!

  • @小型みかん
    @小型みかん 5 ปีที่แล้ว +4

    まだ、ついていけてる

  • @オデンカイ
    @オデンカイ 5 ปีที่แล้ว +2

    アセンブリ言語意味不明だった子供の頃の自分に教えてあげたい(`;ω;´)

  • @ashtouroku
    @ashtouroku 5 ปีที่แล้ว +2

    PUSH、POP、が無いんですね。
    関数をどう実装するのかが楽しみです。

    • @gorohzaizen3368
      @gorohzaizen3368 5 ปีที่แล้ว

      スタック無さそうなので、push popは無さそう。
      なんせ命令が16個まででしょうからね・・・。
      どこまで、やるのか楽しみです。
      すごいトランジスターを既に実装してるし、これ以上やると電気信号の伝送へのノイズ対策やら
      例えばLANのケーブルの様にヨリ線したり、異常が起きた時の原因究明に骨が折れるかも💦
      私も楽しみです!