TOP blog

2025-12

年の終わりに

今年、目立つ進展はありませんでした。 jalv2 + PIC16F1454のスタートを切るのは、 来年以降に持ち越しとなります。

Intel 8237 DMAC

普段は調査をあまり真面目にやらない(TTLで決め打ちする)のですが、 今回は少量試作と量産で結論が変わるということになりましたので、 それを含めて書いてみたいと思います。

昔ながらのSCSI HBAを構成することを考えてみます。 この場合、HBAチップにDMACを接続することを考えるのが普通です。 デバイスにはDRQ/DACKを接続するためのピンが出ていたりします。 私はDMACに対するロマンを感じており、今回のような検討は割と大好きです。 DMACは通常64KBのアドレス範囲しか持ちませんので、 メモリアドレス空間が64KB単位のバンクで管理されることになります。 これをどうにかできないのか? というのは難しい課題です。

参考例となるべきNEC PC-9801はバンクレジスタを採用しています。 その後の機種で自動インクリメント方式を実装しています。 自動インクリメントは目立つペナルティがなく、簡潔で優れた方式です。 この方法では、 DMACのアドレスのロールオーバ(0xFFFF→0x0000)を外部で検知して、 インクリメントパルスを生成する必要があります。 カウンタの誤作動を避ける回路設計ができるなら、検討の余地があります。 DMACに専用の通知ピンがあるわけではないし、DMACの内部に介入できるわけでもなし、 ALEがあるわけでもなし、これは煩わしさがあるなと直感が告げております。 今回は検討しませんでした。 当時のNECがこれをやってのけたのは比較的古くから周辺LSIのカスタム化が進んでおり、 ASICに取り込むことができたからだろう、とぼんやり考えています。

DMACのアドレス拡張として、 セグメントレジスタを増設して加算回路を組む方法が考えられます。 加算回路はキャリ伝搬を伴うことからさほど軽いものではありません。 4-bit full adderの74ACT283を4段積んだと仮定すると、 16nsの伝搬遅延が4段重なる部分がクリティカルパスになります。 アドレス線に合計64nsの遅延が掛かるつもりでタイミングを検討する必要があります。 ところでIntel 8237A DMACは5MHz動作です。 80C88級のCPUであるNEC V20(若干の手持ち在庫がある)を使うにしても8MHzのクロックが普通だと考えます。 NEC μPD71037 DMAC(若干の手持ち在庫がある)が10MHz動作であり、8MHz系CPUで比較するのに適任です。 μPD71037はDMA動作モードIOR#パルス幅が2tCYK-15と規定されています。 8MHzクロックは125nsサイクルであることからDMACのIOR#パルス幅は235nsと計算されます。 基準クロックに対してアドレス線が有効になるタイミング tDAと、 基準クロックに対してIOR#線が有効になるタイミング tDCLは同じ値の80nsで規格されており、 同等とみることができます。 これらを組み合わせますと、アドレス線が有効になってからIOR#パルスが終わるまでの時間は235nsとなります。 加算回路の伝搬遅延はここに加算され、都合、171nsに縮められます。 これで周辺デバイスが追従できるなら、セグメントレジスタ方式は採用余地があります。

74ACT283はdigikey価格334円*4本で1336円掛かります。 DIP部品はこの先供給が絶える可能性があります。 今後10年程度のスパンでこの種の回路を組み立てる予定があるなら、 部品は先に在庫しておいたほうが良いでしょう。 SOIC部品は残る可能性があります。 プリント基板を起こす気があるなら、さほど気にする必要はありません。

セグメントレジスタ方式に対する検討候補になるのはメモリマッパです。 これもまた、非常に魅力的な回路方式です。 小さなSRAMで構成されたレジスタファイルに論理アドレスを入力し、物理アドレスに写像変換します。 これであればキャリ伝搬を気にする必要はありません。 メモリマッパでどのような設計をすればよいのかについては、 Texas Instrumentsの74LS612のデータシートが強いヒントを与えてくれます。 このデバイスを模擬したうえで、DMACを組み合わせることを考えれば良いでしょう。 このデバイスはRochester Electronicsがdigikeyのマーケットプレイスを通じて取り扱っており、 レトロPC趣味が非常に昂じているのであれば、 実際に取り寄せることが可能と思われます。 74LS612については約1100円*47本で取引されていますので、 これぐらいを上限にみて部品予算を見積もるのが良いでしょう。

メモリマッパの設計では、レジスタファイルが絡むあたりからして回路規模が大きくなり、面倒な匂いがします。 74LS612を使わないのであればCPLDもしくはFPGAを検討したくなりますね。 そうなるのであれば、効率追求の観点から言えば、FPGAに全体を詰め込むSoC設計になるはずです。 FPGAを採用するのであれば、 8237のようなレトロなデバイス設計を組み込む必要はなく、 自分が望むカスタムなDMAC設計を取り入れれば良いでしょう。

FPGAの入手は大変面倒なので、ここを妥協してCPLD程度とすることを考えます。 CPLDの実装規模であれば、セグメントレジスタと加算回路の案が良いかもしれません。 この場合、外部世界の5VとCPLDの3.3Vの変換をどうにかする必要があります。 レベル変換が伴う回路設計は面倒くさいですね。 この場合の部品予算は74ACT283が4本とみて1300円前後でしょう。 そうですね、この費用感だと74ACT283をそのまま採用したほうが面倒がなくて良さそう。

ここまで考えてみて、商業的に生産してキット販売する (47セットのワンロットを生産する) のであれば、 メモリマッパを使うほうが回路設計としての集積度が高められ、 シンプルで安価になるかも知れない余地があります。 加算回路に使用するべきTTLが意外と高価だからです。 少量試作であれば現行のTTLを買ったほうが良いという判断になるでしょう。 価格的にセグメントレジスタと加算回路の方式が有利となります。 どちらを選択するかは回路に対する魅惑と情熱と予算で決めてしまって良いでしょう。 あとはソフトウェアをどうするかの好みがあります。 非常に悩ましい選択です。

SCSI HBAではなくFDDを扱う、または組み込むのであれば、FDDという相手はデータ転送を待ってくれません。 どうにかしてDMAC実装を頑張ってください。 SCSI HBAであれば相手を待たせることも理論上は可能です。 相手が待ってもよいのであれば面倒な回路設計をしてDMACを触る必要はありません。

ここまで検討しましたが、 今どきの実用上の最適解はCPUでPIO転送をすること、 ということになります。

LED

私が好んで使うのはスモーク樹脂封止で3mmの砲弾型LEDです。 昔は5mmのLEDをよく使っていましたがサイズが相対的に大きいため基板面積を要し、 若干の使いづらさを感じていました。 電子工作それ自体は昔から扱っている関係から、旧式のLEDに対する在庫はまだあります。 旧式のLEDは電流を与えても暗いので使い辛いところがあり、 新規設計という観点から言えばInGaN登場以後の時代のLEDでないと採用する気になりません。 旧式のLEDそれ自体は表示器として細々と消費してはいますが、なかなか減りません。

売れ筋デバイス

秋月のAVRシリーズで人気順にソートして眺めてみると、 最上位ランクにはまずATmega328Pが来ます。 次いで8ピンのシリーズ、その中に紛れてATtiny2313と続きます。 ATmega328PといえばArduino IDEであり、 Arduino IDEでちゃっちゃっと制作しようというユーザが多いらしいことがわかります。 8ピンのデバイスは何に使うのでしょうか。

デバイス自体は為替その他の事情で値上がり基調にあることもありますし、 貫通穴実装デバイスの新製品が出ることもおそらく今後はないと予想します。 モダンにしろクラシックにしろ、 当面使うであろうと期待できるデバイスは事前に購入してしまい、 10〜20pcs程度の在庫を積んでおいたほうが良いでしょう。

湿度に強い貫通穴実装デバイスでも10年を超えると信頼性が心配になってきますね。 これについては、秋月側も10年ぐらいは平気で在庫して売っていることを考えれば、 秋月で部品調達する限りにおいて10年前に買っても10年後に買っても結果はあまり変わらないと思います。

秋月は私が知る限りATtiny4313を取り扱ったことがありません。 現在の相場ではおそらく290円から300円程度です。 このお値段であれば、モダンAVR(SMD)に下駄(変換基板)を履かせても予算的に釣り合うと考えられます。 新規導入には、モダンAVRの選定をお勧めしたいところです。

HDDケース

NASの実装にあたりHDD外付けを検討することがあります。 このときUSB接続は性能が出ないことが多いので採用してはいけない、というのが鉄則です。 UASPが使えればマシという判断はあり得ますが、 コマンドキューイングできるかどうかは仕様に謳われておらず、 どうしても博打になってしまいます。 最低でもeSATAを搭載したものが良いでしょう。

サーバクラスタの検討

CephでNASを組むことを考えてみましょう。 これを考えた発端には、いまどきのPCケースでHDDを複数積むことができない、 という事情があります。

消費電力はAMD Ryzen CPU+RAM+NVMe+i82599の標準的な構成で32W*3node=96Wであると見積もります。 これにHDDの電力が加わります。 HDDについて8W程度は使うのが普通なので、3node分の24Wを加算します。 合算して120Wになりますね。 そうすると1ヶ月あたり概算90kWhと見積もることができます。 だいたい4000円弱ぐらいですか。 趣味の費用にするにはちょっと重たい気がします。

電力的に軽めの構成を考えましょう。 Celeron J4125を使うとCPU+RAM+SSD+HDDのノードが18Wであることが経験的に知られています。 3node集めて54Wです。 概算して40kWh程度です。 54Wというのは先程の試算からすると軽めですが、 具体的に検討してみると54Wの電力を投入できるならRyzen 5系のメインボードが使えるのではないでしょうか。 共存するべき仮想ゲストとの兼ね合いにもよりますが、経済的であるとは言いかねる感じがします。 Ryzen 5系の実績である32WにHDD 3本を24Wとして見積もり加算すると56Wとなりますので、 クラスタを組んだほうが微妙に安いかもしれない程度です。 間欠運転と割り切るなら、J4125でパフォーマンスに悩むよりも、 Ryzen 5系のシングルで組んだほうがより良い性能が得られると考えられます。

同じCeleronでもN100系は手に取りたいと思うメインボードが販売されていないので除外します。

ここまで考えてみて、 NAS機能をProxomox VEで賄うのは無駄が多そうな感じがあると結論します。 シャーシが手に入るなら普通に組み立てたほうが良いでしょう。

MIDI opto-coupler

H11L1Mの取り扱いが秋月で開始されました。 秋月では過去のいっとき、SHARP PC900Vが扱われていたことがありました。 H11L1MはPC900Vに代わる、MIDI用に使えるべき貫通穴実装のフォトカプラとなります。 帯域は1MHzとされており、UART用途には必要十分でしょう。

細かいことを言えば秋月に扱いのあるTLP2361のほうが安価でありまして、 そのほうがトーテムポール出力で高性能だというのはツッコミどころかもしれません。 ところがTLP2361は表面実装型のデバイスであることから、 何を実装するにしても先ずは基板を起こす必要があるというところに猛烈な難点があります。 仮に既に基板があって手で実装するにしても、表面実装型デバイスはいろいろと気を使うので不便です。

MIDIといえば6N138が推薦に挙がることがあります。 アナログ動作型のフォトカプラは設計が面倒なのでお勧めしません。 ロジック用途にはロジック用に設計されたフォトカプラがお勧めです。 それなりに実績があるとされる6N137は電流感度の規格がMIDIとしてはギリギリを攻めすぎている様子があります。 フォトカプラとしてのデバイスを選べるのであればお勧めしません。 素直に標準品であるH11L1Mか、電流感度の高いTLP2361を使うのが良いでしょう。

NetBSD-current objdir

フルビルドに必要な作業領域は16GiB程度です。 objdir等を押し込む作業用ファイルシステムは、 24GiBから32GiB程度までの間で割り当てておいたほうが良いようです。

NetBSD-current LFS

月初に開発者の手で若干のコミットが投下されました。 カーネルがpanicする傾向はまだまだ治まらないようです。 バグ潰しは進められているはずだと期待するところですが、 最近のコミットがどの方向を向いているのかはわかりかねる、といった感じがあります。 積極的に安定化する方向に進んでいるという感触がないのです。 実負荷に耐えられるようになるまでには、まだまだ時間がかかりそうです。


This is copyrighted material. copyright © 2025 clare. all rights reserved.