Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
簡単な4bitCPUの作成
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mikiken
December 12, 2023
Programming
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
簡単な4bitCPUの作成
mikiken
December 12, 2023
More Decks by mikiken
See All by mikiken
ライフゲームの製作
mikiken
0
240
Webブラウザでページが表示されるまで
mikiken
0
81
Cコンパイラ自作はじめてみた
mikiken
0
270
seccamp2022 成果発表
mikiken
0
51
Other Decks in Programming
See All in Programming
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
さぁV100、メモリをお食べ・・・
nilpe
0
130
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
450
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
320
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
350
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
2.4k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
190
Oxcを導入して開発体験が向上した話
yug1224
4
290
Claspは野良GASの夢をみるか
takter00
0
170
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
A Soul's Torment
seathinner
6
2.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
400
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
For a Future-Friendly Web
brad_frost
183
10k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Facilitating Awesome Meetings
lara
57
6.9k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
簡単な4bit CPUの作成 電気電子工学実験 テーマS(a) 自由設計 mikiken (@mikikeen) 1
何を作ったか • 書籍「CPUの創りかた」で解説されている4bit CPUを FPGAで実装 • 予めROMに書き込んだプログラムを実行できる • LEDチカチカ •
タイマー (参考: GitHubリポジトリ) https://github.com/mikiken/TD4 2
「CPUの創りかた」―マイナビ出版 (2003) • 汎用ロジックICを用い、簡単な4bit CPU「TD4」†1を作る • アナログ回路の基礎から、丁寧に解説されている • 30刷以上重版 (技術書としては異例)
†1 “とりあえず動作するだけの 4bitCPU” の略 3 https://www.google.co.jp/books/edition/CPU%E3%81%AE% E5%89%B5%E3%82%8A%E3%81%8B%E3%81%9F/2UbaDwA AQBAJ?hl=ja&gbpv=1&printsec=frontcover
動機 • FPGAで何か作るといえばCPU • 自作CPUに関する書籍はいくつかあるが… • 「CPUの創りかた」なら授業時間内で作れそう 4
TD4の仕様 • • • • • • • • •
• • • 5 • 命令長8bit • オペコード4bit, オペランド4bit • 表現できるアドレスの大きさも4bit = プログラムは16 Stepまで • 演算用レジスタは2つ
どのような手順で作ったか • 基本的には本の記述に従って実装 • 具体的には • レジスタ → ALU†2 →
プログラムカウンタ → 命令デコーダ → ROM の順 • ROMは実装方針に迷ったので後回しに †2 Arithmetic Logic Unit (算術論理演算装置). 大層な名前がついているが、今回のCPUの場合、ただの4bitの全加算器 6
7 回路の全体像
8
ROM (メモリ) クロック生成 ← プログラムカウンタ ALU (4bit FA) 命令デコーダ レジスタ
データセレクタ 9 Aレジスタ → Bレジスタ → キャリーフラグ
• リセットがかかると、ROMの0000番地の命令から実行開始 • ROMに入っている機械語命令 • 上位4bit(オペコード)を命令デコーダが読み込む • 下位4bitを(オペランド)をレジスタに読み込む • ALUはレジスタから値を読み込み、演算を行う
• 演算結果をレジスタに書き込む • プログラムカウンタを+1する • このような動作をクロックに合わせて、繰り返し行う 10 回路の全体像
ROMの実現方法 • 書籍では、8bit DIP SW✕16個 でROMを表現 • 評価ボードのDIPスイッチが 足りない •
Verilogで、各アドレスに対し 機械語命令を返す論理素子を 記述することでROMを表現 11
サンプルプログラム1 : LEDチカチカ 12
サンプルプログラム1 : LEDチカチカ 13
サンプルプログラム2 : タイマー • 実演します 14
感想 • ブラックボックスだと思っていたCPUの仕組みを ある程度知ることができ、勉強になった • もう少し大規模なCPUをHDLを用いて実装してみたい 15