V53
次にARPモジュールをリンクしました。 これはデータリンク層でARPプロトコルとわかったら自局のMACアドレスを乗せたARP応答を行うものです この状態でボードの自局IPアドレスを"192.168.0.10"として このアドレスに対してPCからPINGを打つとまだ当然タイムア…
で、考えてみるとこれはルータのこっち側のネットワーク上に流れるすべてのパケットを受信しているわけで、同じハブにLANでつながっているADSLルータでインターネットにアクセスしたらどうなるかなと。そこでキャッシュが効かないように初めて見るページに適…
PCから適当なIPアドレスへPINGを打つとRxインジケータが点滅するので ハード的にLANコントローラまでパケットが来ているのは間違いないのですが、 コントローラ内のリングバッファに受信データが入ってきません。 そこでマニュアルのNE2000互換レジスタの説…
ネットで検索するとプロトコルスタックに関する情報がいろいろ入手できたので データリンク層、ネットワーク層(IP,ARP,ICMP)をさくっと実装しました。 ところがこれらのプロトコルのうちボード単体で出力側は動作するのですが、 ネットワークにつないでの入…
1024バイトのパケットを送信するたびにLEDを反転させて測定した波形です。 上がRTL8019のTXOUT、下がLED端子電圧です。 データ1024バイトが3.76msで送信されているので、単純計算では2.2Mbpsということになりますが 10BASE-Tでこんなもんでしょうか? rtl801…
LANコントローラのテストつづき。 RTL8019ASのドライバを作成してライブラリ化しました。 初期化:rtl8019_init() データ送信:rtl8019_output() データ受信:rtl8019_input() レジスタは多いけど初期化さえしてしまえば、リモートDMAのデータを入出力と コ…
LANコントローラのテストを始めました。 RTL8019ASのベースアドレスは0x00C0としたので I/Oアドレスの0x00C0~0x00DFを占有することになります。 しかしこの内部レジスタの多さは手強そう。 Z80-DMAやHD63484-ACRTCも使ったことがありますがそれに匹敵します…
LANコントローラのテストを始めようとしてレジスタを叩いていたら I/OアドレスがUSBコントローラとぶつかっていることに気づきました。 RTL8019ASは0x1F番地を占有するのにI/Oは0x10番地刻みに配置していたため。 CPLDのI/Oチップセレクト周りを変更
CPLDを焼きなおしてみたらLCDの動作はOKとなったので ライブラリにLCD制御の関数を追加しました 液晶コマンドセット void lcdcset(unsigned char x) 液晶データセット void lcddset(unsigned char x) 液晶初期化 void lcdini(void) 液晶カーソル制御 void lcdctr(int adr,in…
モニタからいくつかの初期化コマンドをLCDに送ってみたが動作しません。 そこでロジアナで信号線を当たってみると LCDのR/W端子がコマンド書込み時にH、ステータス読出し時にLになっててまるで逆。 モトローラ系のバス同期信号Eクロックは正論理なのでR/Wも…
LSI-C86で算術関数を使うとき、リンクエラーが発生して悩みました。 算術エラーが発生したときにコールされるmatherrが解決しないと言われます。 これは恐らくsqrt(-1)などのエラー発生時に画面にエラー文字列を表示するために DOSのシステムコールを使用す…
ある程度の機能を持つモニタをCで書いて、 原始モニタを使って数回実機上でデバッグしました。 機能としては以下のメニューのようなものです これをROM化したので原始モニタは用済となりました >h <<HELP>> *** uPD702236R(V53)SBC monitor program V0.05 *** D:du</help>…
CPUおよび周辺がとりあえず動作できているようなので一安心。 これから色々なアプリケーションを動かそうと思うのですが、 今までのようにアセンブラで組んでコードを拾い出してROMに焼いてセット・・ では日が暮れてしまうので、外部からプログラムを転送で…
SCUシリアルコントロールユニットのテスト。 V53内蔵ペリフェラルを使えるようにするのはかなり面倒です メモリやI/Oのロケーション、イネーブル処理など内部レジスタ十数個に値をセットする 初期化を行う必要があります。 これらが終わればあとはシリアルと…
ROMのリセットベクタF000:FFF0hに JMP FAR E000:0000hをあらかじめ書いておいて ROMの先頭番地E000:0000hから動作させたいプログラムを書き込みます。 たとえばパラレルポートの出力テスト。 パラレル出力に0~255の値を繰り返し出力させてLEDを明滅させてい…
旧式の岩通ロジアナだけどこの程度の用途には十分。 ROMから0~5番地を繰り返して読み出しているの良いみたいだけど 1ループが740nSではなくて1バイトフェッチが740nSのようです。
簡単なループプログラムなのだがどうも動作が変なので ロジアナで信号を当たってみることにしました。 それにしてもロジアナの測定はプロービングにかかる時間>>>測定時間なんだな。 グラバが大きいのでPLCCのソケットにさしたICがつかめない・・・
リセットベクタにJMP_FAR $のコードを書き込んだROMをセットして信号波形を測定しました。 上図はROMの/OEの波形で、ほとんどがコードフェッチですが一周740nSでループしているのがわかります。 かなり遅いようですがV53の内部レジスタはリセット後のままな…
ICを挿入して火入れ。+5Vは約180mAでまあ正常。 すばやく各ICの表面を触って熱くなってないことを確認してから各信号を測定しました。 リセット信号のON/OFF・・・・OK チャージポンプの±10V・・・OK USBコントローラの24MHz・・・OK LANコントローラの20MHz…
配線チェックの結果、パタン引き回しミスが1箇所見つかりパタンカットしただけで、UEWのジャンパと合わせ配線完了。 ここで早速火入れをして電源供給やリセット、クロックの確認をしたいところですが LANコントローラとUSBコントローラが既に実装済で、チッ…
部品挿入、裏面ジャンパ飛ばしが終わったのでここで配線チェックしました。 今回回路図を書かないでいきなりパタン設計したので、いまさらながら手書きで配線図を作成。 導通テスタで期待する導通があるか1本1本確認し、 OKならば配線図を蛍光ペンで塗り潰…
V53基板裏面のUEW配線も8割がた終わったところです。 搭載するファームもそろそろ検討。 CPLDのロジックで1MビットのROMを0xE0000から0xFFFFFに8ビット幅で割り付けています。 V53にはメモリが1Mバイト空間の通常アドレスモード(8086互換)と16Mバイト空間…
アドレスデコーダ、制御信号の生成はすべてCPLDで行っています。 ハード設計段階で信号を適当にCPLDにつないでおけば後でゆっくり ロジック設計ができるので非常に楽です。 ザイリンクスWEBPACKで回路図入力してXC9572にフィットさせると マク…
V53基板のハードデバッグのためにパラレル出力にLEDを並べました。 このLEDは懐かしのTLR102Aで、輝度も低いしとっくにディスコンですが 高級感の有る艶消しレンズのシックな発光とセラミックステムの信頼性が高そうなので 好んで使ってます。もっとも大量に…
ようやくV53基板の裏面の手配線をはじめました。 0.2mmUEWでランド間をつないでいきます。 このときUEWの被覆を熱で破るために ボタンを押したときだけ80Wでオーバードライブされる半田ごてTQ-80を使っています。
今進行中のプロジェクトがUEW手配線待ちになっていて これが一番めんどくさいのでなかなかスタートできません。 どれくらいの配線量かというと、 以前作った同程度の規模のTMS320C30DSPボードの例だとこんな具合。 片面だとPGAの内側からパタンを引き出す…
LEDなど背の高い部品を除いてほぼ挿入品は終了。 ちゃんとできたプリント基板ならこれで完成なわけですがこの基板の場合まだ手配線をやらなくてはなりません。パタンで引き回せたのは全体の配線量の60%くらいで CADで引き回しきれずにラッツネットで残ったと…
USBコントローラUSBN9603とLANコントローラRTL8019ASを変換基板を使って 取り付け。 左下の方に取り付ける予定だった液晶のコントラスト調整用半固定抵抗が スペース的に部品面への実装が無理っぽい。しょうがないので半田面に付けるか。
部品の挿入開始。 手製のプリント基板だと穴あけ精度が出ないのでPGAなどの多ピンの部品を挿入するのに 苦労するのだが、今回は穴あけを0.8mmと少し大きめにしておいたのですんなり入った
プロクソンのルータをスタンドにセットして穴あけ。 抵抗・ICの部品の穴は0.6mm、コネクタ類は0.8mm、四隅の取り付け穴は3.2mmといったところ 穴があいたら表側のあらかじめ予定していたジャンパを0.5mmのスズメッキ線で渡す