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
mikiken
December 12, 2023
Programming
0
1.1k
簡単な4bitCPUの作成
mikiken
December 12, 2023
Tweet
Share
More Decks by mikiken
See All by mikiken
ライフゲームの製作
mikiken
0
200
Webブラウザでページが表示されるまで
mikiken
0
68
Cコンパイラ自作はじめてみた
mikiken
0
240
seccamp2022 成果発表
mikiken
0
36
Other Decks in Programming
See All in Programming
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
980
あなたとKaigi on Rails / Kaigi on Rails + You
shimoju
0
130
CSC305 Lecture 03
javiergs
PRO
0
240
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
止められない医療アプリ、そっと Swift 6 へ
medley
1
160
All About Angular's New Signal Forms
manfredsteyer
PRO
0
120
What's new in Spring Modulith?
olivergierke
1
140
Cursorハンズオン実践!
eltociear
2
1k
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
720
Le côté obscur des IA génératives
pascallemerrer
0
140
Devvox Belgium - Agentic AI Patterns
kdubois
1
120
XP, Testing and ninja testing ZOZ5
m_seki
3
620
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
6.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Git: the NoSQL Database
bkeepers
PRO
431
66k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
How STYLIGHT went responsive
nonsquared
100
5.8k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Practical Orchestrator
shlominoach
190
11k
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