2017年 12月 の投稿一覧

CPUのCache(キャッシュ)って何?

CPUのデータシートに「キャッシュ」ってあります。

これ、気にしないといけないのでしょうか。

 

答え:基本的に無視でOK

 

キャッシュというのは、簡単に言うと超高速メモリです。

RAMからデータを読む時、こういう動きになります。

 

1回目の読み込み:RAM→キャッシュ→CPUの演算部

2回目の読み込み:キャッシュ→CPUの演算部(超高速)

 

キャッシュはRAMより速いので、上の動きになることで2回目以降の読み込みが高速になるのです。

(書き込みにも使用されるので、書き込みも早くなります)

 

だいたい重い計算のときは同じアドレスのメモリを何度も参照しますから、

このキャッシュがあることでメモリアクセスが劇的に早くなるわけです。

 

そして、このキャッシュは基本的に自動で処理されます。

CPUの中で勝手にキャッシュメモリに格納して、使わなくなったら古いものから上書きします。

結構高度な機能ですが、利用者から完全に隠蔽されています。

 

ということで、原理的にはキャッシュが大きいほど処理が早くなるわけですが、

「キャッシュが足りなくて速度が出ない」と問題になることは普通ありません。

それに、キャッシュメモリが大きくても小さくて利用者からは見えないので関係ありません。

 

「へぇ、このCPUのキャッシュメモリは8kBか。小さいCPUの割に大きいな」

ぐらいの感想でそのままスルーしてしまって普通は問題ありません。

 

以上、小田切でした。

クロックってなに? なんかたくさんあるんだけど(初心者向け)

CPUのデータシートを見ると、例えば

「最大周波数40MHz」とか書いてあります。

 

しかし、その後読んでいくと実際に繋げる水晶振動子は20MHzと書いてあったりします。

さらに、読んでいくと32kHzの水晶振動子の話が出てきて、

さらに読んでいくと内蔵低速オシレータだのなのだの、セラミック発振子、LC発振器だの「クロック」に関することが山のように出てきて、はっきりいってわけわからめ!

なにこれ!?

 

ってなことで、クロックに関してざっくりしたことを説明したいと思います。

 

まず、クロック(周波数)というのは内部の回路を動かすための速度です。

1クロックごとに回路の状態が変化していきますので、40MHzであれば、秒間4000万回状態が変化するわけです。

あらためて数字にすると結構凄いですね。わずか100円程度のCPUであってもこれだけの速度で動きますから。

 

さて、で、このクロックというのをどうやって作っているかというのが、まず複数あります。

・水晶振動子

→水晶振動子をCPUに取り付けると、CPUが水晶振動子を駆動してクロックを作る

・外部クロック供給

→他の部品でクロックを作ってCPUに入れる

・セラミック発振子

→水晶振動子に似た安い部品。精度悪い。

・内蔵発振器

→CPU内臓のクロック生成機能。追加部品いらないので安いが、だいたい精度最悪。

 

普通は水晶振動子でクロックを作ります。

数十円のお値段で精度が一番いいので、無難です。

内蔵発振器は一番お安いですが、精度が悪いので問題が出る時があります。

(通信速度がずれてしまうので通信の時に問題が出るなど)

 

そしてクロックを作った後に、このクロックを掛け算したり割ったりして内部クロックを作ります。

たとえば、20MHzを2倍して40MHzです。

こういう機構があるので、CPUの動作速度と水晶振動子の動作速度は違うのです。

 

これで全体はなんとなくわかったかと思います。

 

そして、おまけとして「低速クロック」というのがあります。

これは32kHzの水晶振動子か内蔵発振器で作ります。

これは、物凄く低速で動く機器(32kHz程度の処理速度でいい機器)か、時計の駆動に使います。

CPUの処理を止めておいて(スリープ・スタンバイ)、時間だけカウントするという事ができるのですが、その際に使用します。

これはオプションなので、CPUは常に高速で動き続け、CPUと止めて時間を計測する必要がなければ、低速クロックは不要です。

 

こんな風になっているので、ぱっと見るといろいろあってわけわからなくなりやすいのです。

 

以上、小田切でした。

CPUのビット数ってなに??(初心者向け)

8ビットCPU、16ビットCPU、32ビットCPU、64ビットCPUの4パターンが有ります。

極稀に4ビットCPUなんてのもありますが、特殊なので割愛。

 

これは一体何なんなんだ!

 

はい、中で扱えるデータ幅です!

……と言ってもわかりませんよね。

そして、そんなことはあまり重要ではありません。

 

簡単に言うと、

ビット数が小さいと回路が小さいので、

・CPUの価格が安い

・計算が遅い

・扱えるメモリが小さい

・省電力

 

そして、ビット数が大きいと回路がでかいので、

・CPUの価格が高い

・計算が速い

・扱えるメモリが大きい

・電気をたくさん使う

 

ってことです。

 

細かいことを書いても初心者の方には難しいので、ここには書きません。

 

↓こんなイメージです。例外はたくさんあるので、だいたいの話です。

 

スマホ・PC・据え置きゲーム機など:64ビットCPU

ルーター・組み込みCPUボードなど:32ビットCPU

それ以下の製品:8ビットCPU・16ビットCPU

 

その機器に必要な能力・価格・消費電力のバランスを見て選ぶことになります。

これには正解がなくて、経験やリサーチをしなければ答えを出すことは出来ません。

 

以上、小田切でした。

JTAGって何?(初心者向け)

CPUなどを見ていると「JTAG」という用語がよく出てきます。

JTAGってなんでしょうか。

 

元々は接触をチェックするための機能でしたが……いろいろ経緯をかいても意味が無いので省略します。

ずばり、プログラムの書き込みに使うインターフェースです。

 

JTAGというのはだいたい

・TCK(CLOCK)

・TDI

・TDO

・TMS

・TRST

・RST

の6個の信号で実現されています。

 

つまり、デバッガーと呼ばれるプログラム書き込みできる装置とCPUの6ピンを接続すればプログラムが書き込めるわけです。

しかし、最近は小型なCPUも多いので、6ピンも使ったらもったいない! ということで、2ピンの接続だけですむタイプもあったりします。

 

とにかく、JTAG=プログラム書き込みI/Fと思って下さい。

そして、これは各社バラバラです。

使うピン数も違えば、流れている信号も違うし、使えるデバッガーも全部違う。

ということで、「JTAG」といっても全部違うので、結局CPUごとに全部調べ直す必要があります。

(え、このCPUはこうやってデバッガーと繋げないといけないの!? というトリッキーなものもあります)

 

ということで、JTAGはプログラム書き込みI/Fのことを言っていると理解した上で、実際にどうやってデッバガーと接続するかはよく調べるようにしましょう。

 

以上、小田切でした。

RTC(Real Time Clock)とはなんぞや?

電子回路の設計をしていると「RTC」という言葉に結構出会います。

RTCとはなんでしょうか。

 

RTCは「リアルタイムクロック」のことです。

現在の時間をカウントしている機能です。

 

これはCPUに内蔵されている場合もあれば、外付けICの場合もあります。

 

なんでこんなものが必要なんでしょうか?

そもそもCPUは高精度な水晶振動子で駆動されていて、色々なタイマー機能が入っているので、こんなものがなくても起動してからの時間はカウントできます。

ということで、実はCPUが常に駆動し続けている状況ではRTCなんて機能はなくてもなんとかなるんです。

起動後に外から時間を設定してもらうorネットワーク経由で時間を取得してから、後はCPUで1秒毎にカウントアップしていけば良いのです。

 

これが必要になるのは、「CPUがOFFの時にも時間を計測し続ける必要がある」場合です。

例えば、パソコン(PC)・スマホ・ゲーム機です。

こういった機器のCPUは数十ワットの電力を消費しますので、電源を切る時にCPUの電源は当然落ちます。

すると、RTCがないと毎回時間がリセットされてしまうわけです。

ずっと電源を付けている機器なら良いですが、こういう電源を入り切りする機器では不便で仕方ありません。

 

RTCはCPU内臓の場合もICの場合も、どちらも非常に低消費電力です。

時計用の遅い水晶振動子を駆動させて、1秒間に一回カウントアップするだけの機能なので、そもそも電気を食わないのです。

ということで、電力大食いCPUは電源OFF時に止めないといけませんが、これぐらいなら電源ONのままでも対して問題ないのです。

(ボタン電池で数年動き続けられるレベルの消費電力なので)

 

とまぁ、こんな雰囲気であります。

 

以上、小田切でした。

積層セラミックコンデンサの温度による影響は?

前回は電解コンデンサの温度による影響を説明しました。

今回は積層セラミックコンデンサについて説明したいと思います。

 

積層セラミックコンデンサも温度によって「容量」が変化してしまいます。

しかも、温度が低ければ小さくなって、温度が高くなれば大きくなる、というようなわかりやすい関係ばかりではありません。

積層セラミックコンデンサには「温度特性」が規定されていて、いろいろあります。

 

・非常に安定していて温度が変化してもほとんど容量が変わらないもの

・低温で容量が減り、高温で容量が増えるもの

・常温あたりで容量が最大になり、低温でも高温でも容量が小さくなるもの

 

非常に厄介に思えますが、面倒くさいゆえに積層セラミックコンデンサはきちんと温度特性が公開されています。

電解コンデンサは温度特性が公開されていることは少なく、当て推量で扱わないといけません。

しかし、積セラは資料がきちんとあるので、特性としては面倒ですが事前の検討はとてもやりやすいのです。

 

ということで、積セラを扱う時、とくに容量の変化に敏感な回路に積セラを使うときは、データシートを見て温度特性を確認しましょう!

 

以上、小田切でした。

電解コンデンサは温度で何が変わるか?

実は電解コンデンサに限らず他のコンデンサも温度で特性が変わるのですが……

今回はわかりやすい電解コンデンサについて説明したいと思います。

 

電解コンデンサは電解液に浸されていますので、その液体の温度が下がると電子が動きにくくなります。

ということで、一般的に温度が低いほど性能が悪化します。

 

◯静電容量

温度が低いと、なんと静電容量自体が小さくなります。

 

◯ESR(内部抵抗)

温度が低いと電解液の動きが悪くなって、内部抵抗が大きくなります。

 

◯漏れ電流

この要素だけ逆です。

温度が高いほど大きくなります。

 

こんな特性を持っていますので、電解コンデンサをパスコンとして使った場合、こんなことが実際に置きます。

1,温度が低くなるとノイズが大きくなる。

2,温度が低くなると正常に動かない(古くなった家電やパソコンでもたまに起こります)

3,温度が高くなると漏れ電流が大きくなってオーディオ回路などが正常動作しない

4,温度が高くなると漏れ電流が大きくなって電池が早く終る

 

こんな風に低温でも高温でもやっかいなものなんです。

 

以上、小田切でした。

鉛フリーはんだって?(初心者向け)

もともと普通の「はんだ」には鉛が含まれています。

この「鉛ハンダ」は、溶けやすいしハンダしやすくて大変結構なものなのですが、環境保全の観点で「鉛」が問題になりました。

そのまま捨てられると鉛が土に染み込んでしまい、環境汚染の元になるからです。

 

ということで、鉛を含まない「鉛フリーはんだ」というものが生まれました。

今ではほとんどの製品では「鉛フリーはんだ」を使用していて、従来の「鉛ハンダ」を使用することなどほとんどありません。

(経験上、見たことありません)

電子部品も大抵「鉛フリー対応」と書かれています。

 

ところが、鉛フリーはんだは、扱いにくいんです。

融点が高いので、鉛ハンダより溶けにくく、鉛ハンダより高出力のこてが必要になります。

(実際やってみると「なんだこのハンダ。全然溶けないぞ」って感じます)

さらに濡れ性が悪くて、いい感じにするするっと流れてくれません。

鉛ハンダで綺麗にハンダできていた感覚で扱っても、なかなか綺麗にハンダできません。

 

ということで、業務で扱うなら鉛フリーを使う以外に手はないのですが、アマチュアで扱うなら正直従来の「鉛ハンダ」のほうが圧倒的に扱いやすいです。

もし、鉛フリーはんだで苦しんでいたら、鉛ハンダを買って試してみるのも手です。

 

以上、小田切でした。

実装精度を気にしないといけない部品

量産品の基板に部品を搭載するのは実装マシンです。

 

1,基板にはんだペーストを塗り

2,はんだペーストの上から実装マシンが部品を搭載し、

3,リフロー炉に入れてはんだペーストに熱が入ってハンダが固まり、

4,いっちょ完成!

 

ということです。

 

「人がやるのではなく、メカがやるんだから部品なんてそんなずれないでしょ。実装精度とか気にしなくても大丈夫でしょ」

 

だいたいはそうなんです。

0603みたいな1mmよりはるかに小さい部品でもだいたい大丈夫です。

0.5mmピッチのめっちゃ細かいピンが出ているICでもだいたい大丈夫です。

 

が……実は鬼門が有ります。

 

実装マシンくんはとても正確です。

上下左右のズレなんて0.1mm程度です。

 

ところが、はんだペーストに載った後はんだペーストの上で部品がぬる~と動いてしまうのです。

これはどんなに実装マシンの精度が良くても関係ありません。

 

「絶望的じゃないか!」

 

実は大抵の場合問題ありません。

はんだペーストの上に部品の端子が載ると、粘性があるので端子ははんだペーストの中で上下左右に移動しても外れることはないのです。

 

・実装マシンくんが超絶精度で、超絶小さいパッドに塗られたはんだペーストの中央に超絶小さい部品の端子をきっちり置く

・部品がはんだペーストの上でちょっと滑る

・部品の端子がパッドの中央からずれる(でもパッドからは外れない)

・この状態で炉に入って固定される

 

とこのように、多少ずれてもパッド内での話であり、電気的にはなんの問題もないわけです。

 

「なんだよ驚かせやがって。何の問題もないんじゃないか」

 

ところが電気的にはOKだけじゃだめなのがあるんです。

 

「コネクタ」です。

 

パッド内で端子が移動するだけなので電気的には問題ありませんが、位置がずれてしまいます。

通常、縦横方向のズレはあんまり問題ありません。

問題は回転です。

僅かに2-3度ずれただけでもダメになる場合があります。

 

例えば、こんな基板を考えましょう。

・PCI-EXPRESSのコネクタがついている

・その数cm先にPCI-EXPRESSカード固定用のネジ穴が開けてある。

 

はい、ここでPCI-EXPRESSのコネクタが2-3度でも回ったらどうなりますか。

PCI-EXPRESSカードを指した時、カードのネジ穴と基板のネジ穴が合わなくなります。

つまり、アウト!

 

ということで、少しでも位置がずれたらアウトなコネクタを扱うとき「だけ」は実装精度を気にしないといけません。

 

以上、小田切でした。

ショートって何Ω以下?

基板の各部をテスターで当たって「ショートをチェックする」というときがあると思います。

しかし、思いませんか?

 

「ショートっていうけど、何Ωならショートなんだ?」

 

0Ωならもちろんショートですが、実際はそんなことはありません。

どんなに小さくても0.7Ωなど、少しの抵抗値はあります。

1Ωはショート?

10Ωはショート?

100Ωはショート?

 

実は絶対値がありません。

その回路によります。

 

例えば、意図的なショートがあります。

「ショートが正解」のケースです。

ある電源と別の電源を1Ω抵抗で接続しているなど。

そのときは、その1Ω+測定誤差の範囲内がショートになります。

 

不具合によるショートもあります。

「ショートが不正解」のケースです。

このときは逆に「正解」を決めてから、ショートの意味を決めます。

例えば、正常状態で抜き取り検査をして抵抗値が1kΩ±50Ωの回路があるとしましょう。

すると、ショートとは明らかにこれより小さい場合になります。

もしココが具体的な抵抗などで決まっているのであれば、この値からずれるわけがありません。

なので、「950Ω以下はショート」と決めてしまっても良いわけです。

しかし、電源回路の+とーの場合はコンデンサの特性のばらつきなどで大きく変化してしまうので、あまり厳しくしてしまうと今後正常品が不良になってしまうかもしれません。

ということで、十分余裕をもたせます。

ここはその会社によると思いますが、500Ω,100Ω,50Ωなど1kΩより十分に小さな値にします。

つまり、「想定している値より小さければショート」ということにしてしまうのです。

 

こんな風に、場合によってショートが示している抵抗値はかなり変わります。

 

以上、小田切でした。