
写真1 AD9833 DDS MSOP 0.5ピッチ 変換基板に乗せる
それはさておき、
このチップは10ピンのMSOPで、写真にようにピンセットの先ほどの大きさです。
変換基板に取り付けましたが、ピンのピッチは0.5なので、半田付けにはちょっと技術が必要です。
まずチップをゲルタイプの瞬間接着剤で正確な位置に仮止めしておきます。
フラックスをほんのわずか塗って、すべてのピンにわざとまたがるくらい半田を盛ります。
半田吸い取り線で、余分な半田を吸い取って、出来上がり。
慣れれば簡単ですが、最初は数個パーにする覚悟がいります(笑)。
このDDSは、マスタクロック(MCLK)周波数は最高25MHzで、その場合最高発振周波数(ナイキスト周波数)は12.5MHzとなり、分解能は0.1Hzです。
今回は手持ち部品の関係で、20MHzのクリスタルを使用したので、10MHzまでのプログラマブルオシレータとして、実験してみました。この場合の分解能は約0.075Hzです。
mbed EPROM Writter
投稿日 2011/06/22
秋月のEPROMライタを所有していますが、残念ながらPC98でしか動きません。
PC98は遠の昔におはらい箱。
Z80で何か作りたいときに対応できないし、昔購入したAKI-80も活用できません。
そこでmbedでEPROM Writterを作ってみました。

EPROM Writter試作の様子 一番上がmbed
真ん中が8255 PIO 下が27256 EPROM
左中が電源回路 LED群はアドレス/データラインのモニタ用で回路図には無い
EPROM つまりUV消去できるROMです。
EPROMには容量の違いにより2764, 27128, 27256 etcといろいろありますが、
一番使用頻度の高いと思われる27256を対象としました。というより、手持ちが27256しかありませんので、他の容量は試せませんでした。
27256には、メーカによって書き込み電圧が異なるものがあります。私の手持ちはVcc 6V, Vpp 12.5Vのものです。Vpp 21VのEPROMはサポートしていません。(21Vを作れるようにすれば可能と思います。)
そういう訳で、ターゲットは27256 EPROMです。
ところでZ80のアセンブラにはいくつかあるようですが、わたしのはシステムロードのXS80です。
このXS80の吐き出したHEXファイルを書き込みます。おそらく他のアセンブラも同じインテル形式のHEXファイルを出力するとは思うのですが、試していません。
HEXファイルの書式は、ここが参考になります。
27256のプログラミングスペックは、ここやこれ、またはこれが参考になります。
書き込みの大まかな手順は、
①EPROMのVccに6V, Vppに12.5Vを加えておく。
②HEXファイルから得た書き込みアドレスと、書き込みデータを与える。
③~CE(負論理)をTrueにして書き込む。
④直後に~OE(負論理)をTrueにしてすぐに読み出し、書いたものと比較(べリファイ)する。
⑤異なっていれば25回繰り返して、それでもダメならベリファイエラーとする。
⑥次のアドレスとデータを得て②から繰り返す。
なお、EPROMはあらかじめUV消去(紫外線消去)しておかなければなりません。イレーサで20分くらい紫外線に当てれば消去されます。消去されたEPROMは、内容が全て"1"です。FF FF FF ・・・・ となります。
書き込みは1を0にすることはできても、0を1にすることはできません。このため消去が必要です。
プログラムは、mbedで走らせます。
HEXファイルは、mbedのローカルファイル(mbedをUSB接続するとパソコンから見えるドライブ)に置いておきます。
ファイル名を指定できるようにするのは面倒くさいので、今のところ「TEST1.HEX」固定になっています。
プログラムのファンクションは、次の4つです。
○ブランクチェック 消去できているかチェックする。(00)
○ライト HEXファイルの内容を書き込みます。(01)
○リード EPROMの内容を単純に0番地からファイル(HEXファイルではない)に落とします。(10)
○コピー リードで作ったファイルを単純に書き込みます。(11)
使用手順は、UV消去したEPROMをブランクチェックしたあとライトします。
リードで作られるファイル(TEST1.DMP)はASCIIなのでメモ帳などで見られますが、BZなどのバイナリエディタで見たほうが、番地が判るので便利です。
コピーはリードで作ったTEST1.DMPをそのままEPROMに書き込みます。
回路は以下のようになっています。

ブレッドボードなのでアドレスラインやデータラインが不安定になるようであれば10KΩくらいでプルアップしておきます。
電圧可変三端子レギュレータ317でVccとVppの電圧を作ります。Vcc用に0V(正確には0Vではない)、5V,、6Vを、Vppに0V, 5V、12.5Vを作り、切り替えられるようになっています。これは秋月のEPROMライタの回路を参考にしました。
mbedのI/Oピン数では足らないので、間に8255 PIOを入れて制御します。8255についてはここが参考になります。
前述の4つのファンクションはDIPスイッチで選べるようにしてあります。()内の1,0がスイッチのON,OFFを示します。
DIPスイッチをセットして、リセットします。
プッシュボタンを押せば、指定したファンクションを実行します。
ブランクチェックエラー、HEXファイルのチェックサムエラー、書き込み時のリトライ(ベリファイ)エラー等が発生すれば表示して止まります。
以下のような簡単なプログラムをXS80でアセンブルし、HEXファイルを27256 EPROMに書き込んで、AKI-80に実装して実行しみました。
org 00h
jp 0100h
org 100h
ld a, 11001111b
out (1dh), a
ld a, 00000000b
out (1dh), a
ld a, 00000111b
out (1dh), a
ld a, 01010101b
out (1ch), a
halt
end
1chはAKI-80 PIOのAデータポート、1dhはAコントロールポートのアドレスです。
このプログラムのHEXファイルは以下のようになります。
:03000000C3000139
:110100003ECFD31D3E00D31D3E07D31D3E55D31C7696
:00000001FF
1行目のC30001が、jp 100hです。
このプログラムはPIOのAポートに01010101を書き込みます。1のピンに5Vが出力されるので、AKI-80のPA0からPA7にテスターを当ててチェックするとPA0,2,4,6が5V近くを示します。

EPROMをAKI-80に実装して確認する。
プログラムのソースは、mbedのホームページにあります。
27256は32KBですので、32768バイトの全領域をブランクチェックしたりするのは非効率です.
このため、プログラム内のMAX_ADDRESSで対象とするアドレス範囲を指定できるようにしてあります。
この値をプログラムサイズから考えて十分な大きさの値にしておきます。
たとえは1024(標準)にしておけば、0から1023番地までがブランクチェック、リード/コピーの対象になります。
ライトはHEXファイルに準じて書き込むので関係ありません。
EPROMライタは新品を買えば、物にもよりますが数万円、オークションで中古を狙っても、動くかどうか判らない物に数千円以上。メーカ製は多機能ですが、すでにメジャーではないZ80のプログラム開発にはちょっともったいない投資となります。mbedを活用すれば、単純な機能のみですが、ちょっと書き込むのに重宝します。
(JF1VRR)