エントリー

DE0-nano + ドットマトリックスLED で遊ぶ

昨年末、AlteraのFPGA「CycloneIV」を搭載しているボード DE0-nano を買いました。

 

20120109_49-1.jpg

 

digikeyで7K円程度と、FPGAのボードにしては非常にお手ごろな価格です。

さて時を同じくして、秋月電子で16x16のドットマトリックスLEDを購入していて、なんとなくFPGAでドットマトリックスLEDを動かして遊びたいな~、という気分になりました。

 

下記、テキトーに考えた構成です。
 

  • 16x16のドットマトリックスLEDを、横に2個ならべて32x16で表示。LEDはダイナミックドライブ(縦方向をスキャン)で点灯。
  • CycloneIVには NiosII を搭載して、いろいろ怪しく遊べるようにする
  • とりあえず秋月電子で手に入る部品で作る。
    ドライバとしてソース側 74HC541APx4個、シンク側 TD62083APGx4個 使用。FPGAからは縦横パラレルでデータを出力。FPGA外の配線数が異常に多くなってしまうが、秋月で買えるICがこれしかないので我慢。あとシンク側で4個使用するのは以下2つの理由から。
  • ドット1個あたり平均1mAの電流で光らせたい。それ以下だと結構暗くなりそう。そんなわけでソース側の出力電流は16mA/ch程度に設定。
  • シンク側のICは絶対最大定格500mAなので、IC1個で横方向32ドットの同時点灯は無理 (16mA x 32 = 512mA)
    仕方なく横方向は16ドットにつきIC1個使いで。

 

完成イメージ

 

20120109_49-2.jpg

 

かなり重量バランスが悪い・・・

ともかく部品も揃っているので早速製作に取りかかろう!と、仕様書を改めて見てみると、TC74HC541AP、使えない子でした・・・orz

 

TC74HC541APで8端子分のLEDを全て点灯させると、1端子あたりの電流値は問題ないのですが、電源電流 Icc の絶対最大定格 75mA を超えてしまうことに気づきました。

9mA/chに設定するといけそうですが、表示がかなり暗くなることが予想されます。

ただ、電流値を多めに設定しておいて、後でシンク側のパルス幅を調整して輝度を下げることはできますが、逆に輝度を上げることはできないので、これはやりたくないです。

 

結局、74HC はどのメーカー、どの品番もダメ。

74AC に変更すれば、Iccが200mAなので十分使えそうです。実は 74HC の場合も言えることなのですが、これらのICを5V駆動させる場合、FPGAからの3.3V出力を直接受けるのは規格的にかなり厳しいです。

そういうわけでTTLレベル入力に対応した 74ACT にすることにしました。

どうせ部品を変更するなら、配線数削減のため、シフトレジスタ付きの TC74ACT164 にしたいところです。シリアルアウトがある TC74ACT299 もありますが、余計な機能が付いてピン数が多くなっているのでイマイチ。

 

あー、またパーツ買うのが非常に面倒くさい・・・(つづく)

 

 

~ 絶対最大定格よもや話 ~

絶対最大定格は一瞬たりとも超えてはならないという規格ではあるのですが、超えたからといってすぐにICが壊れてしまうことはおそらくありません。ですが、絶対最大定格スレスレもしくはそれを超えるような回路を設計すると、仮に趣味の工作であっても、どこからかマサカリが飛んでくることが考えられます。

 

さて、その絶対最大定格の範囲内で使用するとしても、実はこれは動作が保証される限界というわけではありません。動作が保証されるのは推奨動作範囲内に限ります。そしてこの範囲で使用するのが一般的に(信頼性の観点からして)正しい使い方です。

推奨動作範囲から絶対最大定格までの空白の領域については、瞬時に故障しない保証はありますが、動作保証はありません。自己責任で使ってくださいということです。

 

ところで話が若干逸れますが、どのメーカーのどんな規模の集積回路も「バーンイン」や「高電圧印加」と呼ばれる加速試験により、わずかに劣化させてから出荷されます。初期不良を排除するためです。

例えば、「初めて電源を投入して1000時間連続で動作させて問題がない場合、99.9999%の確率でその後10万時間は故障せずに動作する」ということが、あらかじめ何らかの方法によりわかっているとします。

できた製品をそのまま出荷するのではなく、1000時間動作させてから出荷すれば、1000時間未満で故障してしまう不良品は排除でき、ほとんどが将来10万時間動作する製品だけになります。あくまで確率の話ですが。

 

しかし、出荷する全てのICを1000時間も放置しておくのは、時間的にも費用的にも、ただの無駄でしかありません。そこで、1000時間動作させた時の劣化度合と同等と考えられるストレスを短時間で与えます。高温に曝すバーンインをしたり、電源電圧として高い電圧を加えたり、もしくはその両方を実施することによって1000時間を数時間(場合によっては数秒)に短縮させます。

加速試験は絶対最大定格、もしくはそれ以上の過酷なストレスがかかる状態で実施されます。つまり、加速試験をパスして出荷されたものは、少なくとも絶対最大定格内では瞬時に壊れることはない、ということになります。

またこの試験では、ICに本来の動作をさせるのではなく、IC内のトランジスタが極力全て動くような特殊なモードにします。絶対最大定格が動作保証限界ではないのはこのためです。

ちなみに、IC本来の動作をみる検査は、通常は推奨動作範囲の最大・最小(多少マージンを加味したり)の条件で行われます。
 

結局結論は何だということですが、

上のバーンイン試験の内容からもわかるように、実は絶対最大定格内で使用すればICが劣化しない、というわけでもなく、通電している限り極めてゆっくりですが劣化は進行していきます。推奨動作範囲で動かすことは要するに想定された製品寿命を保証する基準と言ってもいいでしょう。

つまり、信頼性の確保が最重要である場合は推奨動作範囲で動かさなければなりません。

 

しかし、耐用年数や安全性等を十分に検証した上での使用、または趣味用途といった信頼性がさほど重要でなく、リスクを自ら負える状況で使用する限りは、推奨動作範囲や絶対最大定格を逸脱することがあっても構わないと私は考えます。

例えば、LEDを抵抗などの電流制限素子を使わずに点灯させることも、使用状況を理解しているならアリと思うわけです。(さすがに電子工作入門の書籍等、理解が十分でない人向けには、あまり取り扱うべきではありませんが…)

 

とはいえ、特別な理由がない限りは、趣味レベルにおいてもスペックに対して十分余裕のある動作をさせることがベストなのは言うまでもありません。

 

ページ移動

コメント

  • コメントはまだありません。

ユーティリティ

Author


oaks (twitter: @oks486)

記事の内容に関しては無保証です。何事も At your own risk ってことでよろしく。
リンクはご自由にどうぞ。

SPAM対策が面倒なため現在コメント投稿機能を停止しています。あしからず...

検索

エントリー検索フォーム
キーワード

Feed

リンク