CPLD試食

PSoCを触って以来、古いLSIを弄るにしても周辺ロジックはプログラマブルなデバイス使ってもいいんじゃないかと思い始めまして。 かといってMPUもアナログも使わないのではPSoCはちょっと場違いなので、CPLDを覚えようと思い立った次第です。 で、これが一応2…

バス・アービトレーション

水平/垂直帰線期間中はVRAM/PCGにCPUがアクセスできるよう、両者のアドレス端子とデータ端子をバスにつなぎます。 一方、モニタが可視範囲を走査中はVRAMのD0~7からキャラクタID(文字ならASCIIコード)が出て、PCGのA3~A10に入っていきます。 ここにデー…

自作ワイヤリングペン

UEW配線用のワイヤリングペンを作りました。 2本失敗して一番右が決定版。この形じゃないとボビンが倒れてしまうのです。 ホルダー状に曲げた平型の針金を瞬着で仮止めし、細い針金できつめに縛ってから2液タイプのエポキシ接着剤で固めています。 材料はダ…

引き続きZ80用グラフィックボード検討

そろそろ回路設計したい! 要件まとめて来週中にハード実装に移りたく思います。 VRAMの容量は1Byte/文字の32*24表示で、最低限768Bytes必要。 マルチスクリーンとか画面外バッファとか後々のオプションで考えるとしても、2kBあればOK。 文字のビットマップ…

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版はダイナミック・ラッチとい…