NLP-16A 簡易デバッガ

記事作成日時:2024-10-04 11:39:38
最終更新日時:2024-10-05 00:29:02

NAND 16bit CPU「NLP-16A」の簡易デバッガの製作についてです。

回路図等は ここ を参照してください

デバッガとはデバッグ,つまり不具合を修正する際に使用するツールのことです。本体の回路を作る前にまずはこの殺虫剤です。虫が出たときに殺虫剤が無いと慌てることになってしまいますから。
NLP-16A の動作テストやデバッグはすべてこのデバッガから装置を操作し,実行します。パターンジェネレータやロジックアナライザと言った道具を使用することもありますが,ここでは簡易にデバッグ可能なツールを自作してみます。
このようなツールを自作するメリットとしては,検証対象側のコネクタと物理的仕様を統一することでただただ接続するのみで検証可能になる点です。

完成するとこのようになります。




部品表 部品表


番号 部品名 秋月URL(参考) 備考
U1 CH32V003F4P6 32ビットRISC-Vマイコン CH32V003F4P6 ●が1ピン
D1 3mm赤色LED 3mm赤色LED 四角のパッドがマイナス側
R1 1608サイズ470Ω抵抗 チップ抵抗 1/10W470Ω
R2 1608サイズ4.7Ω抵抗 チップ抵抗 1/10W4.7kΩ
RN1,2 8素子集合抵抗4.7kΩ 集合抵抗 8素子 4.7kΩ 四角のパッドが1ピン
C1 0.1μF 積層セラミックコンデンサ チップ積層セラミックコンデンサー 0.1μF50V F 1608
C11 10μF 電解コンデンサ 電解コンデンサー 10μF16V105℃ ルビコンMH7 基板のシルクが白い方がマイナス側
J1 1x6 L型ピンヘッダ ピンヘッダー (L型) 1×6 (6P)
J2 1x6 L型ピンソケット L型ピンソケット 1×6(6P)
J3 2x5 ピンソケット ピンソケット (メス) 2×5 (10P)
J4 2x20 ピンヘッダ ピンヘッダー 2×20 (40P) ピンヘッダー 2×40 (80P)を折って使うと安い
J5-J8 2x10 ピンヘッダ ピンヘッダー 2×10 (20P) ピンヘッダー 2×40 (80P)を折って使うと安い
J9 1x2 ピンヘッダ ピンヘッダー 1x2
基板上の実装無し USB-シリアル変換 CH340E USBシリアル変換モジュール Type-C Arduino pro miniの書き込みに使えるのもなら基本なんでもおk(5V系)
チップ抵抗など背の低い方から実装するのがおすすめです。

ファームウェアの書き込み ファームウェアの書き込み

デバッガのファームウェアの導入です。上から順に書き込みを行ってください。
なお,ファームウェアはMounRiverStudioのプロジェクトファイルで公開していますので,そちらの導入と使い方についてはインターネット等で調べていただければと思います。

リセット無効化 リセット無効化

ファームウェア準備 NRST_GPIO
NLP-16A簡易デバッガでは電源ピンを除くすべてのピンをGPIOとして使用しています。つまりプログラム書き込みに使用するピンやリセットピンもすべてGPIOとして使用する設定に変更する必要があります。
リセットピンはマイコン中のフラッシュに設定を書き込むことでGPIO PD7に変更可能です。(詳しくはデータシートを参照してください)
ファームウェア準備ではこの変更を行います。

デバッガに書き込み機(WCH-LinkEエミュレーター)を接続し, 書き込み前に TeratermやMounRiverStudioのシリアル端末を使用して115200baudでオープンしてください。
この状態で書き込みを行います。
書き込み直後にプログラムが走りますから,シリアル端末にFLASH_COMPLETEが表示されれば設定完了です。(場合によっては数値とfinishだけかも)

スポンサードリンク

本ファームウェア書き込み 本ファームウェア書き込み

本ファームウェア
リセットピンの処理が終わったところで本ファームウェアを書き込みます。
同じようにシリアル端末と接続し電源を投入した後にdebug board firmware v1.6 (c)cherry tech 2023と表示されればファームウェアの導入は完了です。完了したら動作確認に移ります。

動作確認 動作確認

デバッガとは言え自作のものにはバグが付き物です。ですのでまずはデバッガのデバッグから始めましょう。
「デバッガのデバッグってなんだよ」感はありますがちゃんとやらないとちゃんと苦しむ結構重要なコトだったりします。ここから自分で色々と基板を作ってそれを組み合わせて行くわけですが,信頼できないものと信頼できないものを組み合わせても動くわけがないのです。このデバッガのデバッグは今後の「信頼できる」の礎にあたる箇所の作業です。
言っても実際の作業は大したことではなく,デバッガを以下のように接続しテストコードを実行して確認できます。

バージョンが古いですが,リボンケーブル接続の仕様は同様ですので参考にしてください。ただし右側の青いジャンパワイヤの接続は不要です。

J9をショートします。複数台繋げた場合でも末端 (PC から一番遠い側) を同じようにショートさせることで末端であることを知らせます。
テストの実行はリポジトリの ここ にあるmain.pyを実行します。

$python3 main.py

windows環境などでは単に"python"の場合もあります。
これを実行すると
input 0 open COM6
input 1 open COM4
Please enter the port number
という感じで接続するシリアルポートを尋ねられます。使用するポートを確認して input に続く番号 (例えば COM6 であれば 0) を入力し Enter を押すとテストが走ります。
最後に
test passd
と表示されればデバッガの動作は正常です。 4番ピン(PD7)で動作が落ちる場合はリセットピンをGPIOに変更することに失敗しています。リセット無効化の章を参照してファームウェアを再度導入してください。

テストの仕組み テストの仕組み

ここで接続している「ALU バス」は本来演算装置などで使用するバスをテストする際に使用するものです。このバスは 16bit のバスが 8bit バス x2 本出ていまして,図のように 0~7bit までを出力するポートと 8~15bit までを出力するポートがあります。テスト 1 では 0~7bit まで (以降下位 8bit) からデータを出力し,8~15bit(以降上位 8bit) で受信したとき,テスト 2 では上位 8bit からデータを出力し,下位 8bit で受信したときに出力した値と受信した値が一致しているかどうかを確かめることでテストを実行します。
このようにテストを行うことで断線やショートしている箇所を発見することが可能です。せっかくなので試しに私の環境でショートをさせてみました(本体だけでなくPCも危ないのでやらないようにお願いします。やるにしても自己責任で…)
ここでは 2 番ピンから H を出力していますから,本来なら A 番 (十進で 10 番) ピンだけが H になっている必要があります。しかしショートさせているため,となりの B 番ピンまで H になっています。
考えられることはもちろん A 番と B 番がショートしている時ですが,実は出力側の 2 番ピンと隣の 3番ピンがショートしている可能性もあります。
デバッグの難しい所はこのようにただただ出力で見えているところだけが原因になるのではなく繋がっている先すべてに原因の可能性がある点です。
コツというほどではないですが,まず,現在の入力値に対しての回路のすべての素子の出力が H なのか L なのかを書き出して見ましょう。その上で問題があるピンがその出力になるためにはどこがおかしければそうなるかということを,問題があるピン側から入力側へ追っていきます。これらのデータを集めた状態で各端子をオシロやテスター,紹介した LED 式テスターで出力レベルを確認してみれば自ずと不具合個所が分かります。
泥臭いですがこれがNAND CPUを完成させるうえで最短経路ですので頑張って下され…

分かりにくい箇所等あればコメント欄やTwitterなどでお気軽にどうぞ~

関連するページ


コメント欄

投稿をすべて見る

最新の投稿を見る

投稿をすべて見る

投稿する場所
名前
メール
削除キー
添付画像(1投稿1枚10MBまで)
↓チェックを入れてからボタンを押してね!!認証エラーになるよ!!
なんかアドブロック使ってるとダメらしい...すみません
今日累計
キリ番踏み逃げ禁止!!

スポンサードリンク




RSSフィードはじめました.詳細RSS