ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

ゲームボーイを作る(17) - LCDの調査

ゲームボーイを作るその17。CPUを作るのに若干飽きてきたので、LCD周りの調査を始めた。今回は入手したLCDについて調べた事を少しまとめてみる。

ゲームボーイを作る(16) - ジャンプ命令のサイクル数について

ゲームボーイを作るその16。今回はジャンプの挙動について、どう扱うべきかについて迷ったのでメモ書き程度にまとめておく。 ジャンプ命令(JPNN/JPHL)

ゲームボーイを作る(15) - DAA命令の調査

ゲームボーイを作るその15。少しずつCPUの実装を進めている所なのだが、DAAという命令の挙動がよくわからん!となったので、調べたことをまとめておく。 DAA (Decimal Adjust Accumulator)命令

ゲームボーイを作る(14) - キャッシュ機能付きCI環境構築

ゲームボーイを作るその14。テストを作って実装を進めているが、この作業を進めるうちに、少し前に実装してPASSしたテストがFAILするという事がチラホラ起き始めた。そろそろCIを導入してデグレを早期発見できるようにしてみようと思う。 GitHub Actionsを使…

ゲームボーイを作る(13) - フラグレジスタの確認

ゲームボーイを作るその13。加算・減算などを実装しようと思って、仕様を読んでいたのだがフラグ系のレジスタの動きを整理しておきたいと思ったので、簡単にまとめておく。 CPUの算術/論理演算とフラグレジスタ 各命令セットのFlagsの見方 Zero (Z) N H (Ha…

ゲームボーイを作る(12) - レジスタ表示の改善

ゲームボーイを作るその12。ちょっと寄り道して、デバッグのためにレジスタ表示を改善する。

ゲームボーイを作る(11) - ロード命令の実装

ゲームボーイを作るその11。前回作ったテストをパスするため、ロード命令を実装していく。 ゲームボーイのCPUの命令 CPUの動作波形 とりあえずロードの実装

ゲームボーイを作る(10) - CPUのレジスタ実装

ゲームボーイを作るその10。前回でCPUレジスタの仮実装を行ったので、テスト環境側の期待値比較処理を作っていく。

ゲームボーイを作る(9) - CPUのレジスタ実装

ゲームボーイを作るその9。今回はテストの体裁を調えるために、CPU内部のレジスタを仮実装していく。

ゲームボーイを作る(8) - テストROMビルドのsbtタスク化

ゲームボーイを作るその8。前回に引き続き、ハードウェアの検証環境を整備していく。と書きながら、今回はバイナリ→HEX変換のタスク化の話。

ゲームボーイを作る(7) - CPUのテストベンチ作成

ゲームボーイを作るその7。前回は最初のテストコードの準備をしたので、今回はハードウェアの検証環境を整備していく。 CPUのテストベンチ作成 メモリ CPU CpuTb テストクラス ChiselTest CPUのテストクラス

ゲームボーイを作る(6) - 最初のCPUテストコードの作成

ゲームボーイを作るその6。CPUを作るためにcpu_instrsを解析していたが、最初に動かすテストとして使うのは厳しそうということで、まずは自前のテストコードをそれを動かす環境を用意する。

ゲームボーイを作る(5) - テストROMの解析3

ゲームボーイを作るその5。元に戻ってblargg-gb-testsのcpu_instrsの解析を続ける。

ゲームボーイを作る(4) - ビルド環境(wla-dx)の整備

ゲームボーイを作るその4。やっぱりビルドの環境があった方が良い気がしたので、そのあたりを整備していく。

ゲームボーイを作る(3) - テストROMの解析2

ゲームボーイを作るその3。今日は実装に使用するテストROMを解析してメモった内容の続き。今の段階では解析して、こう見える、、、程度の状態で書いているので、何か誤認識があるかもです。(後で気づいたことは、適宜修正入れていきます。) テストROMの解…

ゲームボーイを作る(2) - テストROMの解析1

ゲームボーイを作るその2。今日は実装に使用するテストROMを解析してメモった内容。 テストROMの解析1 cpu_instrs PASS/FAIL判定 shell.inc

ゲームボーイを作る(1)

何か動かして楽しいものを!と思いついたのが、昔のゲーム機器だったのだが、情報収集してみた結果ゲームボーイが比較的資料も豊富に存在していて、これなら作れるかもと思った。(先駆者の皆様に感謝!) 今回はゲームボーイを作るに当たって、色々調べてる…

sbtの変数&タスク定義について

2021年になって、早半年(´゚д゚`) なんか知らぬ間に時間が経っていきますね。。。。 謎に落ちていたモチベーションも戻ってきつつあるので、またゴニョゴニョ活動してる内容をブログにしていこうと思います。 という事で、Chiselで使っているsbtについて、気…

2021年の抱負的なアレ

新年明けて、もう1週間以上経ちましたね、おめでとうございます! 新年なので、今年何をしたいかとざっくりと書いておこうと思います。 すでに出遅れ間満載ですが、いわゆる年始のポエム的なやーつです。

2020年を振り返ってみる

2020年もおしまいなので、振り返りの意味もこめてサクッとまとめを。

Chisel3.4.0のリリースノートを確認した(5) - groupオブジェクト

Chisel3.4.0の変更点確認の5回目&最後(のはず)の記事。今回は#1073で追加された`group`オブジェクトについて。

Chisel3.4.0のリリースノートを確認した(4) - verificationオブジェクト

Chisel3.4.0の変更点確認の4回目。今回は#1499で追加された`verification`オブジェクトについて。

Chisel3.4.0のリリースノートを確認した(3) - Module.io / BlackBox.io がdeprecatedになった

Chisel3.4.0の変更点確認の3回目。今回は#1550の`io`がdeprecated指定に変更された件の影響を確認する。

Chisel3.4.0のリリースノートを確認した(2) - naming & prefix

Chisel3.4.0の変更点確認の2回目。今回からは、気になった機能を確認していく。 まず最初はChisel3.4.0の目玉機能である、コンパイラプラグインとPrefixingによる、命名規則の改善について。

Chisel3.4.0のリリースノートを確認した(1) - 概要編

Chisel3.3.0の確認をーーー、、、急がないと3.4.0がー!!ってやってたらChisel3.4.0がリリースされました。 Chisel3.3.0の変更点の確認は、気になったやつは前回で一応おわってて、後はリリースノート確認中に「こんな機能あったんか」案件だったため、ギリ…

Chisel3.3.0のリリースノートを確認した(6) - 簡単なやつを3つ

引き続きChisel3.3.0の変更点を。。Chisel3.4.0はリリース間近!!(ただいまRC3)。 今回はIssueのタイトル読めばほぼ理解できる、次の3つを簡単に紹介。 - (#1283) BitPatで空白文字が使えるようになった - (#1284) ScalaのDouble/BigDecimalからFixedPoin…

Chisel3.3.0のリリースノートを確認した(5) - NoChiselNamePrefix

引き続きChisel3.3.0の変更点を。。Chisel3.4.0はリリース間近!!(ただいまRC2)。 今回は#1383の@chiselNameの処理を非適用にする機能NoChiselNamePrefixについて。 #1383 @chiselNameの処理を非適用にするトレイトが追加された

Chisel3.3.0のリリースノートを確認した(4) - @chiselNameが強化された

あっという間に9月になりました。。 本題に入る前に少し宣伝的な事も書いてみます。 過ぎ去った8月末に、昨年同人誌で出版したChiselの本の商業誌版が出版されました。 内容的には同人誌版をベースに執筆時点で書ききれなかった内容+執筆時点からのアップ…

Chisel3.3.0のリリースノートを確認した(3) - SyncReadMemに追加された引数

転職でバタバタしてて、気づけば最後に更新してから早2ヶ月。。。 間が空いたけど、前回からの続きでChisel3.3.0の変更点を確認していく。 今回は#1183のSyncReadMemの件について #1183 SyncReadMemに同時アクセス時の挙動を指定するパラメータが追加された …

Chisel3.3.0のリリースノートを確認した(2) - ChiselStageを使ったエラボレート

今日は前回の続きでChisel3.3.0で変更/追加になった機能について確認していく。 今回は一番気になったRTLの生成処理の変更について。 #1213 Driverのいくつかのメソッドが非推奨になった Chisel3.stage.ChiselStage ChiselStage.executeを使ったRTLの生成 C…