ニックネーム: 居酒屋ガレージ店主
★ZAQのBlogari停止のため、あれこれ「データ吸い出し」対策しています。 新規記事はとりあえず停止。 コメント書き込みはまだ有効です。 (JH3DBO 下間憲行)
2011年10月04日(火)
恐ろしいピン名称
【TIがNSを食った】という記事、それにDRIさんの「TGの無いスペアナでTGもどき測定」
を見て、TIの「TMS9914」:GP-IBコントローラを思い出しました。

PC-9801用の拡張ボードでは「uPD7210」が使われていましたが、VMEバス
など、産業用のマイコンボードではTMS9914が多かったように思います。
当時の形状は40ピンのDIP。
こんなピン配置です。



「DIO1〜8」というのがGP-IBのバスにつながります。(バッファを入れて)
その下のSRQ、ATN、EOI〜なんて信号はGP-IBの制御線。
DIO1がLSB(最下位ビット)でDIO8がMSB(最上位ビット)。

さて、問題がマイコンのバスにつながる10〜17ピンの「D0〜D7」。
双方向のデータバス。
これの名付け方が怖いんです。

以下の信号名解説書きをよ〜く見てください。
  (クリックで拡大↓)

     ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 


「D0 is the most-significant bit.」
D0がMSB。 普通D0はLSBでしょ。
これ、絶対見落としますって。

『LSBとMSBをソフトで入れ換える方法ないかなぁ?』なんて相談を
受けたことがあります。
「回転命令」だと8回ループ。
「256バイトのテーブルを作って変換のほうが速いかな」っと答えましたよ。

8ビットのバス線を切断してジャンパーを飛ばすより、知らんふうして、
ソフトで対策するほうがいいかなぁ。

私の場合、トラ技かインターフェース誌でこの注意を見た記憶があったので、
LSB・MSB入れ替わりの設計ミスから逃れることが出来ましたが、けっこう多くの
エンジニアがスカタンしてるんじゃないでしょうか。



2011年10月4日 13時25分 | 記事へ | コメント(6) | トラックバック(0) |
| ・電子回路工作 |
トラックバックURL:http://blog.zaq.ne.jp/igarage/trackback/2606/
※ブログ管理者が承認するまで表示されません
 ド素人なんでチンプンカンプン。27pinの名前が恐ろしいってことなんかなと思いながら読ませていただきました。
2011年10月04日(火) 21:17 by 居酒屋ガレージ店主(JH3DBO)
「EOI」 ははははは
そういうことじゃあなくって…

普通の信号表記では「D0」が「LSB」なんです。
8bitのMSBつまりD7から記すと
「80 40 20 10 08 04 02 01」というビットのデータになりまっしょ。
それがD0がMSB。
つまりビット位置が反転。
D0が1なら「80」という値。
で、えらいこっちゃっとなったわけです。

ちなみにEOIは「End Of Identify」で、データ列の終端を表します。

私は、秋月で扱っているSUNLIKE社の超小型LCDのピン配置
に騙されました。
仕様書には、1〜16の順で説明されているのですが、実際の
ピン配置は15,16、1,2,〜、14になっていて、LCDを一つ
お釈迦にしてしまいました。
確かに仕様書の説明には、一つも間違いが有る訳ではありま
せんが、この間違いやすいピン配置について、一言も注意書
きが書いていないと言う部分にメーカーとしての誠意のなさを
感じました。
2011年10月05日(水) 07:08 by 居酒屋ガレージ店主(JH3DBO)
SC1602とSC2004の1ピン、2ピン(VddとVssが入れ替わり)この違いほうが恐いような。
超小型の1602、元は14線あれば制御できて、15、16はおまけのバックライト電源。
基板のシルク印刷かパターンでのピン表記はなかったのかな?

このあたりは、ピン位置のお話とTMS9914のD0〜D7表記のお話はちょっと違うかと。

昔々の話なら…Bottom ViewとTop View。
IC使いは上から見たところに慣れているけど、リレー屋は下から見たところの足配置。
表面実装パッケージでも、左下が1ピンじゃない石もあります。

いずれにせよ、データーシートをすみずみまで見ていないのが悪いわけでして。
「書いてあるでしょ」っと。

大昔に生産工場で使う検査装置を設計した時にこのミスをしました。
ソフト側でビット変換を行う事も考えましたが結局パターンカットしてジャンパを飛ばしました。
今までずーっと配線をテレコに引き間違えたと思っておりましたが、このような落とし穴があったんですね。
長年のシコリが取れた感じでスッキリしました。
2011年10月06日(木) 12:29 by 居酒屋ガレージ店主(JH3DBO)
SAKA@FW さん、どうも!
失敗体験席へ、お一人様ごあんな〜い。

テーブル変換、テーブルをROMの8ビット境界に置いてアクセスを速くします。

  ORG ($ OR 0FFH) + 1
XTBL:
  DB 000H,080H,040H,0C0H ;00〜03
   :

XBIT:
  MVI H,HIGH XTBL
  MOV L,A
  MOV A,M
  RET

あえて8080ニーモニックで(笑)

サブルーチンだとこんな↑具合で。
高速アクセスがいる場所ならルーチンの先頭で
テーブルアドレス上位を固定。
あとは2命令でテーブル変換できます。

  MVI H,HIGH XTBL   ;Hを固定
   :
  MVI L,CMD1
  MOV A,M   ;ビット変換
  OUT GPIBC  ;コマンド出力
   :
  LDAX D   :出力データ列
  MOV L,A
  MOV A,M   ;ビット変換
  OUT GPIBD  ;データ出力

コメントを記入  
お名前(必須)
 
パスワード:
 
メール:
 
URL:
 
非公開:  クッキーに保存: 
※非公開にチェックを入れると、管理者のみにコメントが届きます。
ブログの画面には表示されません。
captcha


※画像に表示されている文字を入力してください(半角・大文字/小文字の区別なし)。
文字が読みづらい場合はこちらをクリックしてください。
小文字 太字 斜体 下線 取り消し線 左寄せ 中央揃え 右寄せ テキストカラー リンク