読者です 読者をやめる 読者になる 読者になる

HD6445+XGAディスプレイ

HD6445の使い方を勉強中です。 グラフィックボード(CRTC)その1 こちらのページを大いに参考にさせてもらってます。もちろんデータシートも。 で、気付いたことメモ。 同期信号のタイミング指定がキャラ単位なので、先日PSoC5でうまくいったタイミングと同…

キャラクタディスプレイ考

1文字8*8pxを256*192のスクリーンに敷き詰めると32*24文字。1文字(の1ラスタ)のデータを用意するのに使える時間は16MHz/8の逆数で500ns。85nsのSRAMで3メモリサイクルはいける? VRAMから文字コード読み込み キャラクタROMからシフトレジスタへ8bitのラス…

Z80システムのグラフィックボード

解像度256*192でスペック下げたつもりでしたが、8bitCPUのゲーム機と考えたら限界近いサイズな気がしてきました。 ハードで相当工夫しないとMSXとかファミコンみたいにならないですね。当たり前か。 目下の問題は、VRAMから映像信号作るのに、使用予定のSRAM…

PSoCでVGA出力!

PSoCやばいよ。 ものの数時間でカラーバー出せちゃったよ。 これで1000円ぽっちなんて…。 というわけで、何ができるかも良く分からないまま、単に安いからという理由で買っていた PSoC 5LP Prototyping Kit を使ってVGA出力に再挑戦しました。 なんとなく、…

VGA信号解析

DVI-D→VGA変換ケーブルでPCから映像を出せました! 自力で生成するVGA信号の目標が垂直同期60Hzあたりなので、PCからの出力を60Hzに設定して…… こんな形で信号線をブレッドボードに引き出し、AnalogDiscovery2のオシロで波形を観測してみます。 まずは水平同…

VGA出力実験失敗

割り込みでVGA出力の実験。 Arduino でVGA信号生成するのは、少なくともアセンブラ使わないと辛いっぽい。というところで今日は挫折しました……。 GitHub - smaffer/vgax: VGA library for Arduino UNO これ使ってもモニタは NO SIGNAL だったので、まずは今…

BREAK実験

PCからZ80プログラムのデバッグができるよう、BREAKサブルーチンを作ってみました。 call BREAKを実行するとレジスタの内容をRAMにダンプしてHALTします。 PCからはBUSRQでRAMを覗くなり書き換えるなりして、気が済んだらNMIでZ80の実行を再開させます。 ORG…

SRAMの初期状態

前々々回の記事で電源投入直後のSRAMの中身が全部ゼロだと思ってCPUの動作確認したことを書きましたが、実際に確かめてみました。 Z80ボードをON Arduinoをアタッチ(即BUSRQ) PCでRAM全領域を吸い出してdump バイナリエディタで内容確認 結果は… どう見て…

Z80アセンブラでFizzBuzz

レジスタ内容をダンプするシステムコール云々などと言ってましたが、もうちょっと複雑なアセンブラの動作確認がどうしてもしたくなって、BUSRQしてRAMを見にいく方法をさくっと試してみました。 今回のプログラムは遂にLチカを卒業して、FizzBuzzをやってみ…

ブートロード成功

システムとしてはまだ完成してませんが、とりあえずArduinoからZ80のブートロード(と言っていいのか)が上手くいきました。 BUSRQでバス権を取る RAMにプログラムを転送 Z80をリセット(RESETアクティブ中にBUSRQを落とす) 動かしたプログラムはやっぱりL…

Z80カツドウ再開!

仕事落ち着いてきたようなそうでもないような。いろいろ中途半端にぶん投げておりますので、順に消化していきたいと思います。 まずは「Z80コンピュータを作ろう」企画から。 前回、といっても半年…!?近く前ですが、ブレッドボードで作っていた最小構成を…

Haskell 勉強中

引越し後、一向に工作環境が整わないのでZ80プロジェクトも絶賛放置中。ベッドもまだないけど、いい加減に作業机買わないと……。 そんなわけで?最近の家での時間潰しはPCにかじりついてソフトウェア関係の勉強です。「Deep Learning やりたい!」から始まっ…

似非RAMディスク(2)

前回: 似非RAMディスク(1) 第一の誤算はこれです。 M68AF127Bの幅が広くて変換基板のランドに乗りません…。 仕方なく足を畳みます。撮影時は回路図を読み違えていてA14を伸ばしていますが、CS以外畳んでOKです。これでなんとか変換基板には収まります。こて…

似非RAMディスク(1)

仕事が忙しすぎて趣味に手を付けられていませんでした。1ヶ月以上空いてしまうとは……。仕事は一応落ち着いたところですが、プライベートでは引越しをせねばならず、電子工作への本格復帰はまたまた先延ばしです。 とはいえ、ちょっと半田こて握る時間くらい…

今後の展望

先週は忙しいのもあって工作にあまり手をつけられませんでした…。「Z80コンピュータを作ろう」企画の現状は、CPU・ROM・RAM・PIOという最小構成でシステムを動かせたところ。しかし本格的にゲーム機なりのシステムを作ろうと思ったら勉強すべきことが山積み…

RAMが仲間になった!

東芝のSRAM、TC55257DPL-85Lです。これ1個で32kBあり、アクセスタイムも85nsとおそらく速い部類で、やはりZ80基準だと未来のデバイスなのでしょう。まぁ、気にせず組み込んでいきます。 ROMとRAMでチップが1個ずつだけあって、それぞれに32kBのアドレス空間…

水晶発振の罠(レベル1)

先日とりあえず完成したミニマルなZ80システムは電源投入時の動作に問題がありました。手持ちの測定器具であれやこれやと調べてるうち、Analog Discovery 2のオシロスコープで次のような波形が… 水色がRESET#信号で、パワーオンリセットが500msほど続いた後…

Z80でLチカ!

思ったより簡単に動いてくれました。手こずったのはICのGNDつなぎ忘れなどの凡ミスばかり。 Lチカプログラムはとてもシンプルです。 PIOAD: equ 0 PIOAC: equ 1 org 0 ; ; PIO初期設定 ld a,11001111b ;ビットモードで動作 out PIOAC,a ld a,00001111b ;出力…

UbuntuでZ80アセンブラを書く

選択肢は色々あるようですが、次のサイトの zasm というZ80専用アセンブラを使うことにしました。 zasm - z80 assembler - download page オプションでCPUサイクル付きのリストが出せるのが面白そうです。導入方法は、Archiveから実行バイナリをダウンロード…

ROM(EN29F002)ライタ完成

RubyでPC側のソフトも作って、ROM書き込み環境が整いました! PC側書き込みソフト Arduino側ファームウェア 64kBまでのバイナリファイルをROMに書き込めます。64kBというのはPC側ソフトを簡単に実装にするための制限(かつ、Z80で使うには十分な容量)で、フ…

秋葉原!

ドヤッ 初受験なりの感覚でも900点はないな、という手応えだったので、まぁ想定通りの実力でした。リスニングは精度、リーディングは速度が課題のようですね。改善して来年のいつかにまた受けたいと思います。ちなみに、会社の奨励金が満額もらえる点数に5点…

ROMライタのファームウェアひとまず完成

EN29F002用ROMライタ ファームウェア ファームウェアのソースだけあってもしょうがないんですが、共有してみます。書き込み、読み込み、チップ全消去できるのは確認済み。 ROMに対する各操作シーケンスのタイミングがイメージしやすいよう、特に構造化もせず…

ROMライタ製作中

オーソドックスなROMライタというのがどんなものか分からないまま作ってます。データシートのタイミング通りに「コマンド書き込み→データ書き込み→書き込み完了をポーリング(異常検出したらリトライor終了)」を繰り返せばいいとは思うのですが。 ターゲッ…

手動クロックで動かすZ80

ようやくZ80(LH0080A)の動作確認できました。 課題になっていた手動クロックは 74HC123 で無事解決。C=0.001μF(1000pF)× R=470Ω の時定数で、タクトスイッチを押したときに 1μsec 弱のLパルスが出る回路を作ってLH0080Aを動作させました。 角のギザギザ…

台湾旅行

連休は台湾旅行に行っておりました。もちろん光華國際電子廣場などの部品屋街を巡ってきましたよ。 一番嬉しかったのはこれです。鍍銀線。10色揃えてしまいました。 500ft(約150m)で230元(1元≒3円だったので690円)。右は国内通販で買った100ft巻で、900…

クロックまわり下調べ

Z80の動作の理解にあたって手動クロックで各マシンサイクルを追いかけていこうと思っているので、そのために調べたことをメモ。 資料を読んでいると「nMOS版は最低クロック周波数がある」という記述あり。WikipediaによるとnMOS版はダイナミック・ラッチとい…

メモリまわり下調べ

Z80写真再掲。 これは純粋にCPUというだけのICで、メモリもありません。メモリがなければプログラムもありません(ストアドプログラム方式ってヤツだ!)。というわけで、まずはメモリについて学ばなければいけません。 「メモリ」というだけだと相当に意味…

12ステップ完遂

久々の更新です。 『12ステップで作る組み込みOS自作入門』を完遂。「そもそもOSって何のためにあるの?」というところから学べて、とてもためになりました。RubyやJavascriptでイチャコラとカジュアルなプログラミングに親しんでいただけだった私が、今や「…

ステップ6まで終了

第1部ブートローダ編が終わりました。思ったよりサクサク進めたのは確実に『CPUの創りかた』をこなしてたおかげです。『12ステップで作る〜』は、ステップ6までは章の前半でソフト開発を進め、後半でCPU原理を解説するという構成が多いのですが、この後半部…

12ステップで作る組み込みOS自作入門

本とハードが届いてみたらめちゃ面白そうだったので、思わず始めてしまいました。TOEICなんてどうでもええ! 著者も書いている通り環境構築が一番の壁のようで、私も大いに躓きました。先人たちの情報をググりまくることでStep1を無事クリアできたので、私自…

TD4完成!

8月中という設定にギリギリ間に合いました。 こちら完成品になります。どどん。 配線の汚さは言い訳不可能のようですね。それは次回への課題ということで、今はTD4がちゃんと動作してることを喜びましょう。 ★動いてるところ: 4bitCPU TD4 - YouTube 本の作…

これからが本当の地獄だ…

ROM完成&LED配置まで。ROMさえ乗り越えれば、という考えだったけど残り作業の方が面倒くさそう。最短配線だと詰むので順番と線を這わせるルートを計画する必要があるます。さらに、ここから先は完成まで動作チェックできないのも辛い。できるけどかえって非…

バス配線開始

今週の平日は大して進められませんでしたが、リセット・クロック回路を片付けてついにバス配線に手をつけました。土日でROMの動作確認までは進めたい。 ラッピングワイヤのはんだ付け方法にずっと悩んでたところ、ここでスライド法なるやり方を知って実践中…

配線計画

もくもく。 ICソケットとパスコン取り付け、ROMのプルアップ抵抗の再配置で今日はおしまい。新しいワイヤストリッパが明日届くけど、次はLEDの配置かな。 確認のために基板上でのブロック図を書いてみました。 これ、このまま配線計画書として使えそうですね…

基板実装開始

機能モジュールごとの基板上の配置を大体決めたので、もくもくとはんだ付けを進めています。現在、リセット・クロック回路とROMの部品付けまで。本当はリセット・クロック回路を完成させて動作確認したかったのですが、新しく買ったラッピング線がストリッパ…

チップ抵抗、現る

TD4のROMユニットに普通のカーボン抵抗を配置する余裕がないので色々検討した結果、「チップ抵抗の手はんだ付けに挑戦してみよう!」ということになりました。LEDの電流調整抵抗はCPUの動作に関係ないから裏面に実装しても構うめぇ。で、さっそく買ってきた…

お手製ダイオードアレイ 改良版

以前作ったダイオードアレイの見た目が気になっていたので改良しました。 長めの足を順々に継いでいく形だったのを、このように1本の長い橋に間の短い足をくっつけるようにしてみる。 この体勢で下から順にはんだ付け。コテとはんだで接続部を挟むようにする…

TD4ブレッドボード版できた!

命令デコーダがあっさり組めた勢いで、試作したモジュールを統合してブレッドボード版TD4を仕上げました。 動いてるところ: TD4 on ブレッドボード - YouTube モジュールごとにきっちり動作確認してたおかげか難なく動いてくれました(まだ全部の命令を試し…

レジスタ&ALU試作(成功?)

完璧に仕上がったクロック回路をひっさげて、いざ失敗したレジスタ&ALU回路のデバッグへ赴かん!……って、あれ、一昨日から配線弄ってないのにちゃんと動いてますけど……。これは「なんとなく直っちゃった」というできれば避けたかった事態ですね。釈然としな…

チャタリング退治&開発用リセット・クロック回路

スイッチのチャタリングを見ていきましょう。 こんな基本的な話も『CPUの創りかた』でバッチ解説されていて助かります。 タクトスイッチから直で信号を取ろうとすると、接点が衝突する瞬間にON/OFFが暴れる。これをチャタリング(とかバウンス)と呼ぶ。 な…

レジスタ&ALU試作(失敗)

こんなのウゴク・ワケ・ナイス、と思いながら作業してましたがやっぱり動きませんでしたね……。はじめImData想定の4bitDIPスイッチからAレジスタへのデータ転送はクロックごとに上手くいってたので「やったか!?」と思いましたが、BレジスタとDレジスタ(プ…

お手製ダイオードアレイ

改良版つくりました - お手製ダイオードアレイ 改良版 『CPUの創りかた』で紹介されているTD4の部品のうち、昨日の74HC154の他にはダイオードアレイDN9-1Cも通販でひょいっと買える感じではないようです。こっちはないならないでダイオード128個×両端=256箇…

アドレスデコーダ試作

前回はROMの仮組みがメインだったので、アドレスデコーダ部分が本番規模の半分でした。 今回は4bit2進数を16bit10進数(と言っていいのだろうか…)にゲンミツに変換していきましょう。 あっさりできましたー。 DIPスイッチによるアドレス指定が2進数で1010な…

ROM回路の部分試作

というわけでTD4の製作日記です。 方針としては、まずブレッドボードでモジュールごとに回路を組んで動作確認してから基板実装に移ります。 まずはROM回路から。 機能別にボードを分けてます。一番下がアドレスデコーダで、ROM上の読み出したいデータの番地…

電子工作ブログ

春先から電子工作を始めたおっさんです。 作業記録など残したいなぁと思い立ったのでブログつけてみます。 これまでの製作物 直流安定化電源(6月上旬) 『電子工作は失敗から学べ!』という入門書のガイダンスに従って製作。 3~10Vで出力調整でき、メータ…