もうひとつ、ハードウェア設計のネタ。

以前はディジタル回路の設計で、大前提としてLow Activeというのがありました。
例えば、0V(GND)と5V(Vcc)の回路があって、論理が1の時は「0V」にします。当然、論理が0の時は「5V」ですね。

Activeの時に電圧が低い方(ほとんどはGNDレベルの0V)を使うので、通称「Low Active」と言われます。
最近気づいたのですが、論理が1の時に5V(Vcc)を使うHi Activeが増えてきているようです。

そもそもLow Activeはトランジスタ時代(もちろん、TTLのICとかね)のしきい値のマージンの関係でこうなったと聞いています。ふむふむ。
最近はCMOSな世界ではしきい値が電源電圧の半分に来るから、ソフト屋さんが考えやすいHi Activeが使いやすいみたい。ただね、電気的にはLow Activeじゃなくても良くなったとはいえ、過去の資産はLow Activeなんですよ。だから、インターフェースするにはLow Activeで回路を描かなくちゃならない。

最近、色々な回路図を見ますけれど、手慣れた人はやっぱりLow Activeを使っている人が多い。でも、危ないところはちゃんとLow ActiveとHi Activeを使い分ける。
そう、仮にその回路の電源が落ちた時、入力信号のケーブルが切れて入力がオープンになった時等に、「フェイルセーフに入るのはどちらか?(予想外の事態でも安全な状態に入れるのは?という事)」という考え方でキチンと設計されている。

ところが、Hi Activeを好む人の回路はフェイルセーフに入らない事が多い。
回路もソフトも全て「ちゃんと動作する」ことが前提なんです。そこまでは良いのですけれど、エラーにどう対応するか?が考慮されていない事が多い。私の目から見たら「障害が起きたら諦める。止まろうが暴走しようがそれは私の責任ではない」って感じる事ばかり。悲しいけれど、これが現実。

まぁ、これは偏見なんですけれど、Hi Activeな人はソフトからハードにやってきた人が多いです。考えが甘い。
ハードからソフトに行った人はソースを見ても安全性に関してはガチガチに書いてきますよね。
だいたい、デバッグをみていてもコンパイラを信用しなし、OSも信用しない。時として測定器すら信用しない。笑いごとに聞こえるかもしれないですけれど、「他人の作ったコンパイラがソースとは違う訳のわからないコードを吐き出してシステムダウンする」なんいという理不尽な経験をどれだけしてきたかと思うのですよ(笑)
私も、コンパイラに裏切られ、OSに裏切られ、ICEに裏切られ、ディジタルオシロに裏切られた経験があるので・・・(爆)

そりゃ、大規模なものははとても書ききれないけれど、小規模でタイミングの管理(というか、信頼性)が必要な物ならば、今でもアセンブラで0からスクラッチでガリガリ書くのが一番正しいと思いますね(笑)