USB2.0の波形を見てみる

■概要

USB2.0の信号波形を測定するジグを作ってUSB2.0波形を測定してみました。

構成は500MHzオシロ(DL1700)+秋月の500MHzパッシブプローブ+プローブアダプタPA013(図 1)です。USBのD+とD-にPA013を51Ωのダンピング抵抗経由で最短距離で配線しました(図 2)。図 2には多少部品が乗っていますがこれは作りかけの電源電流測定回路です。

図 1 プローブアダプタPA013(

https://akizukidenshi.com/catalog/g/gM-15480/より)

 

図 2 USB波形測定ジグ写真

 

■測定結果

測定結果を図 3に示します。この波形はUSB2.0の先頭のSYNCビットと思われます。

オシロが古いためカーソルが細かく当てられず、ビットレートが500Mbpsとなっていますが、USB2.0のため480Mbpsのはずです。ギリギリですが波形取得できています。

図 3の時点では接続したUSBメモリに対して操作は行っていませんが、125us間隔で定期的に通信を行っていることが確認できます。

図 4はUSBメモリに対してファイルを書き込んだときの波形です。定期的な通信に混じってなにやら長いビット列の送信が確認できました。頑張れば目でデコードすることもできそうです。

図 3 USBメモリを挿入したときの波形

 

図 4 USBメモリ通信中の波形

簡易パルス電子負荷の作成

■概要

ステップ応答を見ることの出来る簡易的な電子負荷を作成しました。

f:id:kazu_12312:20220417121637j:plain

簡易パルス電子負荷回路

 

■回路図、動作原理

回路図を下記に示します。

単三電池を昇圧することで接地されていない電源を作り、これでトランジスタQ1のベースを駆動します。

トランジスタQ1のエミッタには帰還抵抗が噛ませてあり、コレによってエミッタ電流を制限しています。(5V*180Ω/(100Ω+180Ω)-0.6V)/51Ω=51.3mAのエミッタ電流が流れるはずです。

エミッタ電流=ベース電流+コレクタ電流ですが、ベース電流の分は浮いている電源の方に戻っていくため電流検出抵抗R4にはコレクタ電流のみが流れます。

SMAコネクタの先には50Ω受けにしたオシロスコープを接続します。SMAコネクタからは1V/Aの電流検出モニタ信号が出てきます。ここは一見伝送線路に不整合が起きているように見えますが、50ΩのSMAケーブルを接続し50Ω終端したオシロスコープを接続すれば回路上は「1Ωの電流検出抵抗に50Ωの抵抗を並列接続しただけ」のようにみえるので不要な反射などは起きません(多分)。

PICマイコン12F1840は10Hzの矩形波を作っているだけです。少しもったいないですが、矩形波を作る適当なICがなかったのでPICマイコンを使用しました。

f:id:kazu_12312:20220417123433p:plain

パルス電子負荷回路図

■動作波形

動作波形を下記に示します。

オシロスコープとの接続に使用したケーブルは秋月で売っている1.5mのSMAケーブルです。

PICマイコンのせいなのかDCDCコンバータのせいなのかわかりませんがノイズが酷く、オシロスコープのトリガに帯域制限を掛けないとトリガがうまくかかりませんでした。

電流はHighレベルのときにおおよそ38mAほど流れています。立ち上がり時間はおおよそ10ns程度です。

20ns程度の周期でリンギングが発生していますが、終端はきちんとしているので伝送線路上で反射しているわけではないはずです。

 

f:id:kazu_12312:20220417123829j:plain

SMAコネクタからのモニタ波形(50ms/div)

f:id:kazu_12312:20220417123900j:plain

SMAコネクタからのモニタ波形(20ns/div)

■追加実験(リンギングの原因調査)

リンギングの原因について調べて見るために追加実験を行いました。

オシロスコープとパルス電子負荷回路をつなぐケーブルを1.5m→3mに変更して波形を取得しました。リンギングが伝送線路の不整合による反射が原因である場合はリンギングの周期が2倍になるはずです。

結果の波形を下記に示します。波形が2つ並んでいますがこれは

黄色い波形:1.5mのSMAケーブル使用時(前述の実験と同じ波形)

白い波形:3mのSMAケーブル使用時

です。

SMAケーブルを1.5m→3mに変えると周期が長くなっていますが、2倍にはなっていません。よって伝送線路の反射によるリンギングなどではないとわかりました。

おそらくですが、SMAケーブルが容量性負荷となってしまいトランジスタが発振気味になりリンギングが起きてしまったのではないかと思われます。

f:id:kazu_12312:20220417125925j:plain

追加実験波形(白=3m/黄色=1.5mのSMAケーブル使用時の波形)

 

伝送線路にパルス入れて両端オープンにしてみる

■概要

 伝送線路にパルスを放り込んでから両端をオープンにするとどうなるのか見てみました。

■詳細

 終端が開放された伝送線路上にパルスを放つと開放された終端でパルスは反射し、パルスを発射した信号源の方に戻ってきます。出力インピーダンスが50Ωであれば送信元終端され、それ以上伝送線路に信号が反射することはありません。

f:id:kazu_12312:20220110212224p:plain

送信側で信号が終端される様子

 そこで、パルスが反射して戻ってくる間に信号源を切り離すとどうなるのでしょうか。パルスは伝送線路の損失でエネルギーがなくなるまで伝送線路上で跳ね返り続けるはずです(下図)。今回はこれを実験してみました。

f:id:kazu_12312:20220110212359p:plain

伝送線路上をパルスが再反射し続ける様子

■実装

 今回はパルス発射とパルス源の伝送線路からの切り離しをFPGAで行うことにしました。

  • 使用基板:Lattice FPGA(LCMXO2-256HC-4TG100C)
  • 動作周波数:133MHz
  • FPGA内の3ステートバッファを使用して伝送線路からの信号源の切り離しを行う

 FPGAの動作としては、SW入力で動作開始→3ステートバッファON→伝送線路にパルス出力→3ステートバッファOFF という動作になります(下図)。

f:id:kazu_12312:20220110212052p:plain

タイミングチャート



 今回は下記のような回路を作成し実験を行いました。

f:id:kazu_12312:20220110212133p:plain

RTL回路図

■結果

 上記の回路をFPGAに実装後、下記のように接続して実験を行ってみました。

 使用したBNCケーブルの長さは2mなので、BNCケーブルでの波長短縮率を70%程度とするとパルスが左端に入力されてからオシロスコープに届くまでは2m/(3*10^8*0.7)≒10ns程度です。

f:id:kazu_12312:20220110212602p:plain

回路接続


実験結果の波形を下記に示します。

下記は同じ信号を100ns/divと50us/divで取得したときの波形です。

下記のような波形になりました(文章中の①~③は下記波形画像中の①~③に対応しています)。

 

①想定通り伝送線路上で信号が跳ね返り続ける(片道10ns,往復で20nsなのでパルス幅は20ns間隔)

②パルスのエネルギーは減衰していき、DC成分が残る(約0.8V)

③残ったDC成分が減衰していく

f:id:kazu_12312:20220110204649p:plain

実測波形(100ns/div)

f:id:kazu_12312:20220110204706p:plain

実測波形(50us/div)

■考察

 上記①のパルスが反射を繰り返す様子は理解できます。BNCケーブルの左端から発射されたパルスが受信端(オシロ)に到達して反射→送信端に到達して反射→受信端に到達・・・・という形で反射を繰り返しています。パルスのエネルギーはBNCケーブルの損失やオシロスコープの1MΩ終端で徐々にエネルギーを失うためパルスの振幅が下がっていきます。

 それでは②~③で残ったDC電圧(約0.8V)は一体何でしょうか。

 実はこの電圧の正体は伝送線路にパルスを注入したときに注入された電荷です。

 実際に計算してみます。BNCケーブルとオシロスコープの容量を実測してみると154pFでした。電流に時間を掛けて入力された電荷量を求めると3.3V/(50Ω+50Ω)*3.7ns=122pCになります。Q=CVという式より、154pFの容量に122pCの電荷を注入したときに発生する電圧はV=Q/C=122pC/154pF=0.79Vです。②~③で残ったDC電圧(約0.8V)とほぼ一致します。

 

■まとめ

 伝送線路に信号を入れて両端をオープンにしてみると送信端と受信端の間で再反射を繰り返すことは想像できましたが、最後にDC電圧が残ることがおもしろかったです。水路に放たれた水が跳ね返りを繰り返しながら静かな水面になっていくさまに似ていますね。

 

 

 

 

デジタル回路のメタステーブル状態を見てみる

概要

デジタル回路のメタステーブル状態を実際に観測してみました。

デジタル回路で使用されるフリップフロップへのデータ入力とクロック入力のセットアップホールド規定を守らないとフリップフロップに保持される信号出力が不安定になることは「メタステーブル状態」として知られています。

話には聞いたことがありましたが、実際に見たことはなかったので実験してみました。

 

f:id:kazu_12312:20210906211442p:plain

メタステーブル発生時の波形

実験回路

実験回路を下記に示します。

AnalogDiscovery2から5MHz、水晶モジュールから25MHzを出力し、これをフリップフロップに入力します。

フリップフロップ東芝の74LCX574FTを使用しました。

AnalogDiscovery2と水晶モジュールは同期していないためほっておくと位相がどんどんずれていきます。そうして少しずつ位相がずれていくと、時々セットアップホールド違反が発生する波形が入力されるはずです。

メタステーブル発生時の波形をオシロスコープのパルス幅トリガで捉えて重ね書きすることによって、メタステーブル状態発生時の波形を観測します。

f:id:kazu_12312:20210906221632p:plain

実験回路図

f:id:kazu_12312:20210906211506p:plain

メタステーブル観測用の実験回路

実験結果

実験結果の波形を下記に示します。

CH1,CH2,CH3がそれぞれフリップフロップのクロック入力、データ入力、データ出力端子の波形です。

下記波形を見ると、クロックの立ち上がりエッジの直後の波形に不自然なエッジがあることがわかります。

通常、フリップフロップはクロックエッジでデータ入力を取り込みデータ出力端子に出力するので、クロックエッジの直後は出力がHighかLowになるはずです。しかし今回の観測波形を見ると、クロックエッジの直後に出力が「一度Lowになってから7ns後にHighになる」という通常とは異なる動作をすることが観測できました。

どうやらメタステーブル状態らしき波形が観測できたようです。

f:id:kazu_12312:20210906215316p:plain

メタステーブル状態を観測した波形

考察

今回の実験で一応はメタステーブル状態らしき波形が観測できましたが、実験開始当初に想定していたような「長時間波形が不確定になる」という現象は観測できませんでした。

疑問に思って今回使用したフリップフロップのデータシートを見てみると疑問が解決しました。このフリップフロップにはメタステーブル用の対策回路が入っているのかもしれません。

理由は下記です。

 

下図より、データシートの伝搬遅延特性(クロックが入力されてからデータ出力が確定するまでの時間)は最大で8.5nsと規定されています。

伝搬遅延の間の時間は出力が確定しないものとされています。

今回はクロックエッジから7nsの間出力波形が不安定になる波形が観測されましたが、データシートによるとクロックエッジから8.5nsの間は出力は不定になると読み取ることもできます。

よって、今回観測された7nsのおかしな波形というのはある意味でデータシートの規定範囲内であるということができます。

セットアップホールドタイムを違反するような波形を入力しても出力波形がデータシートの規定範囲内に収まったということは、何らかの対策回路が入っているのではないでしょうか。

f:id:kazu_12312:20210906215953p:plain

今回使用したフリップフロップのデータシート

 

 

 

 

 

 

 

 

 

Xperia スローモーショントリガ回路

概要

SONYから発売されているスマートフォンXperiaシリーズの一部の機種には960fpsという高フレームレートで動画撮影を行い、それをスローモーション動画として保存できる機能が備わっています。

スローモーションモードにして動画撮影を開始し、スローモーションにしたい瞬間にスローモーションボタンを押すとその瞬間をスローモーションにすることができます(下記URL参考)。

mvno.xsrv.jp

しかし、スローモーションにできる時間はほんの一瞬(約0.2秒)です。スローモーションボタンを押してから0.2秒間しかスローモーションにならないため、単発で発生する現象をスローモーション撮影するのはなかなか難しいです(かなりタイミングよくボタンを押す必要があります)。

そこで今回は単発の現象を捉えるためにスローモーションボタンを自動で押してくれる回路を作りました(といってもほぼ自撮り棒ですが)。

f:id:kazu_12312:20210906223403p:plain

ライターの着火の瞬間をスローモーション撮影したところ

回路構成

回路図は下記です。

いろいろなところに抵抗が入っていますが、これは試行錯誤の結果です。確かイヤホンジャックと並列に入っている10kΩは入れておかないと動作しなかったと記憶しています。

f:id:kazu_12312:20210906223142p:plain

スローモーショントリガ回路 回路図

f:id:kazu_12312:20210906223251p:plain

スローモーショントリガ回路 写真

結果

回路を動作させた結果を下記に示します。

きちんとライターの発火の瞬間をスローモーション撮影できました。

 

 

伝送線路を用いたパルスジェネレータ

概要

伝送線路を用いたパルスジェネレータを作製しました。

今回は5nsのパルスを出力する回路を作成しましたが、下記写真中の伝送線路の長さを変えることによって任意のパルス幅のパルスを出すことができます。

f:id:kazu_12312:20210906123823p:plain

パルスジェネレータ写真

回路構成

回路図を下記に示します。

動作原理は下記です。

  1. シュミットトリガインバータであるTC7W14FU(以下U1)が0V→5Vに立ち上がる
  2. U1の出力する信号が伝送線路上に流れる
  3. 伝送線路を信号が伝っていく間は出力電圧は中間電位になる
  4. 伝送線路から信号が反射して帰ってくると出力電圧は0Vになる
  5. 上記3の中間電位になる間はパルスが出力される

f:id:kazu_12312:20210906124001p:plain

パルスジェネレータ回路図

実際の波形

実際の出力波形を下記に示します。

5nsほどのパルスが出力されています。

f:id:kazu_12312:20210906124633p:plain

出力波形

注意点

このパルスジェネレータではU1の立ち上がりのときに正のパルス、U1の立ち下がりのときに負のパルスが出ます。

何かの測定やテストに使うときにはこのことに気をつけて使用する必要があります。

 

遊んでみる

パルスジェネレータを使って伝送線路の反射の様子を見てみました。

オシロスコープのチャネルをCH1~CH4までデイジーチェーン接続し、そこにパルスを入力してみました。

CH1~3は1MΩ終端にし、CH4を1MΩ終端にしたときと50Ω終端にした時の差を見てみます。

f:id:kazu_12312:20210906124944p:plain

オシロスコープのチャネルをデイジーチェン接続している写真

f:id:kazu_12312:20210906125802p:plain

接続図

CH4を1MΩ終端にした時の波形が下記です。

CH1から入力されたパルスはCH2→4まで通過していき、CH4に到達した時点で2倍の振幅となって反射してCH1に戻っていっている様子がわかります。

f:id:kazu_12312:20210906125123p:plain

CH4を1MΩ終端にしたとき

CH4を50Ω終端にした時の波形が下記です。

波形の反射が発生せず、CH4の50Ωできれいに終端できている事がわかります。

f:id:kazu_12312:20210906125241p:plain

CH4を50Ω終端にしたとき

 

 

ホールセンサの周波数特性実測(A1324LUA-T)

概要

秋月電子で売っているホールセンサA1324LUA-Tの周波数特性を実測してみました。

測定回路

AnalogDiscovery2を使用して測定しました。

家にあった220uHのコイルを使用して磁界を発生させホールセンサに入力し、ホールセンサの出力信号を観測することで周波数特性を測定しました。

磁界を発生させるためのコイルは磁路がオープンになっているタイプ(トロイダル形状ではないもの)を使用する必要があります。

今回はNRシリーズの220uHのもの(https://akizukidenshi.com/catalog/g/gP-08326/)を使用しました。

ホールセンサを動作させるための電圧は5Vです。この電圧はAnalogDiscovery2から供給しました。

f:id:kazu_12312:20210905190112j:plain

測定回路写真

f:id:kazu_12312:20210905185852p:plain

測定回路図

注意点

今回測定するホールセンサは2.5Vを中心として信号が出力されます。つまり、何も信号入力がないときは2.5Vが出力されます。

このため、AnalogDiscovery2で測定を行う際にはNetworkAnalyzer機能の調整が必要です。

まず、AnalogDiscovery2の波形出力機能で適当な信号(2V,10kHz,サイン波)を出力します。この状態で波形が見えるようにCH2のオフセットとレンジを調整します。

f:id:kazu_12312:20210905193118p:plain

オシロスコープ機能でオフセットとレンジを確認する

上記手順で確認したオフセットとレンジをAnalogDiscovery2のネットワークアナライザ機能の画面で設定します。

上記手順で確認した値を下図のようにCH2側に設定します。

f:id:kazu_12312:20210905193547p:plain

ネットワークアナライザ機能のオフセット設定

f:id:kazu_12312:20210905193637p:plain

ネットワークアナライザ機能のレンジ設定

測定結果

測定結果を下記に示します。

-3dBになる周波数は約15kHzでした。データシートを見るとカットオフ周波数は17kHzなので、データシート通りの測定結果が得られました。

位相特性を見ると-3dBの時点で106°も遅れています。通常の一次遅れ特性(-3dB周波数で45°の遅れ)と比較するととても大きな位相遅れです。

 

f:id:kazu_12312:20210905184825p:plain

測定結果

f:id:kazu_12312:20210905192427p:plain

ホールセンサA1324LUA-Tのデータシート

考察

今回測定された大きな位相遅れはもしかしたら測定に使用しているコイルの磁性体の周波数特性が見えている可能性もあります。空芯コイルを使用して再測定して見る必要があるかも知れません。

もしこの位相遅れが本当に存在しているのであれば、この位相遅れの大きさは電流センサとして組むときには気をつけたほうが良さそうです。