« 2021年11月 | トップページ | 2022年1月 »

2021.12.31

2021年のまとめ

今年の最初に立てた目標がどのくらい達成できたかを見てみます。

  • Spartan-7ボードのサンプルデザインを作成し、量産開始
    →48台まで製造したがMIPI CSIの回路に問題があり、量産は見合わせ。
  • Cosmo-K DVIの量産開始
    →同様にMIPI CSIの回路の問題、HDMI 1080pを2chで受信する際のクロックリソースの不足などが判明し、量産は見合わせ。Cosmo-K DVIはディスコンにすることに。
  • Cosmo-ZのFPGAデザインの大幅な更新と、ユーザフレンドリなUIの開発
    →デザインの大幅な更新はしていないが、ユーザフレンドリなUIは開発を開始。
  • Trenz商品紹介サイトの高度化
    →達成できたかも、
  • HyperFADCのサンプルデザインの開発と販売開始
    →旧デザインを動かしてみて問題があることは分かったが、それ以上の開発はしていない

ということで、100点満点中15点くらいでした。

さて、1月から順にやったことを見ていきます。

1月

某社からの受託開発をメインに行っていました。その中で任意波形が出力できるファンクションジェネレータが必要になったので、Cosmo-Z MiniのFPGAを改造して任意波形のファンクションジェネレータを作成していました。

また、Cosmo-K DVIの注文が入ったため、過去に起きた製造不良の原因究明を行い、XILINXのVideo DMAなど一連のVideo IPの使い方を調べていました。

2月

引き続き某社からの受託開発案件を行っていたようです。その案件では取り扱う電圧などをADCの生の値ではなく、FPGAの中のレジスタに格納する値などでも電圧として扱わなければならなかったので、かなり苦労していたようです。

そのほかには、NahiVivaを正式にリリースしたり、住宅ローンの申請などをしていました。

3月

Cosmo-K DVIの納品に合わせて、Cosmo-K DVIの回路を自分で設計しなおそうと考えていたようです。

また、このころから部品の入手が難しくなってきていたようです。KSZ9031Rの最終在庫をかろうじて入手したり、PericomのPI6PCIEB24ZDEXが入手できなくなって、Cosmo-ZやCosmo-Kの製造が危ぶまれるようになってきました。

あと、「ZYNQに100MのイーサをRMIIでつなぐ(前編)」などという記事もあります。Vivadoがアップグレードすると一部のIPコアがなくなってしまうようで、それの対策方法です。

4月

Cosmo-ZやMITOUJTAGの次の方針を考え始め、Cosmo-ZのAPIにTCP/IPで接続する方法を考えました。また、部品難が激しくなってきたので、手元にあって使われていなかったRXマイコンを再びヤフオクで放出しようと考えていました。また、ZYNQでCANを使う方法などを解析していました。

ショッキングだったのは、レベル変換ICのADC3308が発振してしまうということです。双方向レベル変換ICは使い方を間違えると発振します。WioTerminalというのを買って遊んでみようとしましたが、ほとんど手を付けていませんでした。

5月

Cosmo-ZのAPIにTCP/IPで接続する実験を始め、実際に波形の転送などができることを確認しました。Windowsで動くCosmo-Zのアプリを開発する下地ができてきました。また、Cosmo-Zでヒストグラムを取る際にノイズを定量的に測しました。

また、RasPiカメラをFPGAで操作するための方法をいろいろと調べてMIPI CSI2の実験をしていました。

他には、「Windowsのデバイスドライバをマイクロソフトに送って署名してもらう方法」という記事を書いたり、Trenz社の全製品をデータベースに登録して在庫を検索できるようにしたりしていました。

6月

マンションを購入し住宅ローン返済生活が始まりました。80歳で完済予定なのですが、そのころにはFP爺Aになれるでしょうか。マンションの購入の手続きや、引っ越しの準備、片付けなどで忙しく、あまり仕事はしていなかったようです。

あと、特電の役員の選任登記を怠っていたので10年分の登記を行いました。

7月

部品入手難が深まってきて、EZ-USB FX3のROMにAT25XEしか入手できなくなりました。AT25XEはデフォルトで全セクタプロテクトという変態デバイスでした。

また、特電製品のパッケージの梱包材を減らしてコンパクトな箱にするというエコ化をはじめました。決してSDGsが目的ではありません。箱を簡略化するのはスポンジ屋さんが高圧的だからという理由も少しあります。

他には、RasPiカメラをFPGAで完璧に操作できるようになってきたり、TrenzのTE0808のベースボードの設計方法などを書きました。

それから、はじめてACRiルームを使ってみました。Youtuberをはじめようと思って「なひたふJTAGチャンネル」というのを開設しましたが、音声にエコーがすごく入ってしまうのと、撮影が大変なので中身はありません。来年こそは何かやりたいです。

8月

Pocket JTAG Cableのケースの在庫が尽きてきたので、新しいケースの作成を検討しはじめました。昔作っていたシールがすでに作れなくなっているので、どうしたらいいものかと。また、MITOUJTAGのJTAGスクリプトが最新のC++環境でも使えることの確認と、来年以降のMITOUJTAGの方針などを考えました。

それから、Cosmo-ZのOSをUbuntu18にする検証を行ったり、ZYNQのLinuxで使えるUSB-WiFiを探したりしました。

他には、USB3.0 SuperSpeedの裏表切り替えの仕組みを調べて理解しました。

住宅ローンを通してくれた信金さんからコロナ関係でお金を借りることができるようになりました。このお金には後々大いに助けられることになります。ただ、借金であって、支援金や給付金ではないので、全額返さなければなりません。

9月

ZYNQのLinuxとWindowsでTCP/IPの「ひっかかる感じ」がなくスムーズに通信をする方法を研究していました。大きな理由は名前解決にあったようです。また、タカチの金属ケースにCosmo-Zを入れるための図面を描いていて、今までの図面では0.5mmほどずれている原因がわかりました。

10月

Cosmo-Zで実用的な等価サンプリングができるように研究開発を行っていました。Cosmo-ZのWindows版アプリの開発を始めました。

また、Trenz TE0808のベースボードを設計し、UltraScaleで動くMIPI CSIの回路やUSB3.0の裏表切り替え回路を設計していました。

今年になっていくつかの簡単な基板の設計を請け負ったものの、時間ばかりかかって利益が出ない原因を考え、その反省から「基板設計の見積もり失敗の研究」を書き記しました。

部品難が極まってきて、Spartan-6の製造を終了することにしました。

11月

HyperFADCの旧デザインを解析したり、Cosmo-Zアプリの開発などを行いました。等価サンプリングが実用的になってきました。また、等価サンプリング用の鋭いパルスを作る回路を考案していました。

他には、基板設計見積失敗の研究をさらにすすめ電子回路設計における見積失敗の研究を書いたり、3年前に契約した倉庫の片づけをはじめました。

それから、3カ月前に注文していたPocket JTAG Cableの新しいプラスチック箱が届きました。絶対にメーカーさんが忘れていたと思われます。

12月

Kria KV260で少し遊んでみたり、MITOUJTAGでバウンダリスキャンできることを確認しました。

また、Cosmo-ZアプリにはExcelのファイルをエクスポートする機能を付けたり、連続的な等価サンプリングができるようにしたりなど、機能強化を行いました。パルス出力基板も設計したり実験したりしました。

 

総括してみると、部品難の影響もあって古い製品群の整理ができました。倉庫にしまっておいた古い時代の遺品の整理にも着手しました。

起業して17年目にして、「電子回路の設計請負で儲からない理由」がようやくわかってきました。

いろいろ回り道しましたが、来年はCosmo-ZとMITOUJTAGに注力していけそうです。

 

| | コメント (0)

2021.12.30

オシロアプリの水平軸

オシロアプリを作っているのですが、水平軸の切り替えをどうするかで考えていました。

今まではサンプリングクロックの切り替えのつまみと、キャプチャ長の切り替えのつまみの2つがあって、なかなか使いにくい仕様でした。

総取得時間を増やすとキャプチャするべきデータ長が増えるので、データ転送に時間がかかるようになるので、この2つはうまい具合に連動して変化させなければなりません。

そこで、ツマミは1つにして取得時間を切り替えるようにしました。20ns,50ns,100ns・・・100us,200s,500us,1ms,2ms,5msと切り替えていくときに、データ長が10000を超えるようであればサンプリング周波数を下げるようにしました。これが見事にうまくいって、オシロ的な軽快な操作性が実現できました。

Hdiv1 Hdiv2 

Hdiv2Hdiv3 Hdiv4 Hdiv5

実になめらかに水平軸が切り替わるようになりました。

 

| | コメント (0)

2021.12.29

基板が届いたのでADCLK914の実験を行う

25日に出図した基板が届きました。

Np10291032

本当はCosmo-Zから8chの高速パルスを出力するための基板なのですが、Digikeyから部品が届かなかったので・・

Np1032

一緒に作ったADCLK914の基板だけ作って実験することにしました。

Adclk914_20211230224201

ADCLK914というのは7.5GHzで動作するクロック/データバッファなのですが、クロックに限らずどんなデューティー比の信号でもバッファしてくれそうなICです。このICを使って立ち上がりの鋭いパルスを作ろうと思います。

ADCLK914はCML出力なので差動なのですが、片側の信号だけを使うことにします。

データシートによれば立ち上がり(20% 80%)は100psくらいなのですが、ADCLK914の出力を高速オシロで見てみると、880ps程度かかっていました。

Adclk914up

想定したよりも随分遅いのですが、どうやらADCLK914の出力は50Ωで終端しなければならないのではないかと思われます。

オシロの入力レンジをDC50Ωに変えてみると、200psまで立ち上がりが鋭くなりました。

Adclk914dc50ohmup

一方、基板上に50Ωを付けて終端して、オシロを1MΩにすると立ち上がり時間が遅くなりました。

Adclk914dc50ohm

上で実験した出力電圧はHが1.5V、Lが1.1V程度でなかなか使いにくいレベルだったので、エミッタフォロアを入れて電圧を下げると同時にバッファしてやろうと思ったんですが、高周波トランジスタのBFR106E6327HTSA1を入れたら逆にスルーレートが遅くなりました。

Adclk914tr502

BFR106E6327HTSA1は5GHz帯域で、ADCLK914が7.5GHzなので、トランジスタの方が遅いんですね。

ただ、ドライブ能力は抜群のようで、終端が適切でないと見事に多重反射しました。

Adclk914tr

 

結論としては、ADCLK914はシングルエンドのパルス生成器としても使えて、立上がり立下り時間も申し分ないのですが、電圧レベルがGNDを基準にしていないので多少使いにくいところがあります。トランジスタを入れるとかえって遅くなります。

 

| | コメント (0)

2021.12.27

Cosmo-Zのロックインアンプを復活

Cosmo-Zには昔、ロックインアンプの機能が備わっていました。

ここ数年のバージョンアップにより、ロックインアンプ機能は失われていましたが、復活させることができましたので、その動作例を紹介します。

次の図は正弦波が入力されている様子です。

Lockin1

この状態でコンソールから

/cosmoz.elf lockin iter=1000
/cosmoz.elf lockin 

とコマンドを打つと、ロックインアンプが動作して1000周期分の積和を取るようになります。

その結果、下の図のように表示されます。

Lockin2

これは、CH1の電圧が0.415053Vで、位相が35.483度であることを示しています。

 

どのくらい安定しているかを調べるため、20回動作させてCH1の振幅だけ見るようにしてみました。

i=0; while [ $i -ne 20 ]; do /cosmoz.elf lockin | grep -e Ampl1 ; i=$(expr 1 + $i); done

小数点以下4桁は安定していて5桁目も8~9でほぼ一定しています。

Lockin3

このロックインアンプの動作は、任意の入力チャネルの信号を見て周期を測り、同じ周期のSINとCOSをFPGAの中で作り出して掛け算し、それをN周期分平均するという動作をしています。

下の波形は茶色が入力波形、緑が検出した位相ゼロの点と位相が180°以上かの区別、青が三角関数生成用の位相(少しずれる)を示しています。

Lockin4

このような計算をFPGA内で行い、また、任意の長さの周期の分平均化できます。

| | コメント (0)

2021.12.26

多重帰還形フィルタのパラメータを変えたら発振した

Cosmo-Zの特注品で、アナログのゲイン1で周波数帯域を5MHzに制限したものがほしいという要望がありました。

通常のCosmo-Zの帯域は50MHzでゲイン2なので、アナログフロントエンドに入っている多重帰還形フィルタのコンデンサの容量を10倍にして、抵抗の大きさを2倍に変えてみました。

そうしたら・・

Osc

発振しました。( ノД`)

発振といってもADCのLSBで数えて4LSBくらいの小さなものですが、FFTしてみると妙なスペクトルがちゃんと見えてしまいます。

Spec_20211227012301

さて、OKAWA Electric Designのサイトで多重帰還形のフィルタの特性をシミュレーションしてみます。このサイトはWebサイト上で抵抗やコンデンサの値を入れるとすぐに特性が見れるので大変便利です。

私の適当に作ったフィルタをR1=1kΩ、R2=901Ω、R3=1kΩ、C1=33pF、C2=33pFを当てはめた結果、

Filter_20211227013201

fc = 5.08MHz、Q = 0.339で、特にピークなどはありません。1MHzあたりからだらしなく特性が下がっています。

Bode

ボーデ線図を見る限り発振が起きている35MHz付近にはピークはありません。なので、この回路図に現れない微妙な現象が起きているのでしょう。浮遊容量でOPアンプがむががが。。 

 

さて、↑の回路は発振してしまうので、正しいパラメータの回路に作り変えます。

今回のカスタマイズのためにコンデンサや抵抗を乗せ換えたので、せっかくだから帰還コンデンサの33pFを活かせるようにGain=1、Q=0.707、fc=5MHzとなるように設計すると、R1=680Ω、R2=340Ω、R3=680Ω、C1=132pF、C2=33pFが最適となりました。

シミュレーション結果は下記のとおり。Q=0.707で、fc=5.01MHzです。

Bode2

   ↑理想的なQ=0.707

 

今日のところは手元に680Ωがないので、1kΩと150pFと200Ωで代替しました。

fc=5.06MHz、Q=0.68と少し違っていますが、私が作った最初の回路よりはQの値が高くなっています。

特性的にもキレのよい普通のLPFです。

Bode3

   ↑手持ちにある部品でQ=0.7をめざす

 

実際のCosmo-ZのCH1とCH5を、この1kΩ、200Ω、150pFに改造してみた結果はというと、

Noosc

緑と茶色の線は発振していないことがわかります。

スペクトラムを見ても、発振を思わせるようなピークはありません。

Noosc2

 

ちゃんと設計したフィルタのほうがQは高いのですが、発振しませんでした。なぜなんでしょうね。

より正確な値に近づけるよう、RSコンポーネンツで120pFと12pF、330Ω 0.1%、680Ω 0.1%をたくさん注文しておきました。

| | コメント (0)

2021.12.25

年末年始のお供の基板を一晩で設計

TDR測定用にCosmo-Zから鋭いパルスを出力する回路を作りたくて空中配線で実験していたのですが、これを基板化します。

Org_20211226103301

朝9時までに作れば土曜日から製造開始してくれるかなと思って急ぎます。

設計開始が12月25日の0:01分。

LVCMOS18のディジタルのパルスをエミッタフォロアでバッファするだけなのですが、1つのIO出力を8個のトランジスタのベースにいれるとエッジが鈍ってしまいますので、1本の信号でドライブするのは2chあるいは4chまでにしておけるよう、基板に未実装のパターンをいっぱいつくっておきます。

回路図書き終わりが0:38。

Pulse8

これから配置するぞーの図。午前1:07。

First

思っていた以上に部品がたくさんありますね。簡単な回路なのに・・

基板に配置しながら、回路をグレードアップしていきます。

8chのエミッタフォロアはこんな感じ。

Sch1_20211226104701

エミッタフォロアとは別に、ADCMP553(高速コンパレータ)を使ったパルス生成や、トリガ入力回路なども作りこみます。

Misc

トリガ入力ってマイナスの電圧を入れることもあるから意外と奥が深いのです。計測に使うシステムはどんな電圧が来るかわからない。単純にCMOSのロジックゲートやコンパレータで作ろうとすると、マイナスの入力が来た時に予期しない動作をするのです。

そこでトランジスタで受けるようにしたのですが、高速性が出るかどうかはよくわかりません。本当は非飽和領域で動作させたほうがいいのですが、そこまで設計している時間はなかった。

 

基板の形と、だいたいの部品が配置できました。午前3:25。

Pcb

ポリゴンを貼って3:49。これならGHz信号も通りそうだなという感触です。

Polygon

ここでいったん寝ます。Zzz

 

起きたら朝9時過ぎ。

朝9時までに入稿すれば土曜日(25日)から製造開始してくれるかと思ったのですが、どうやらそうではなくて、締め切りは16:00であるようです。基板屋さんのWebサイトで確認すると土曜日の16:00までに入稿すれば、月曜(27日)、火曜(28日)で製造して水曜日(29)に到着するとのこと。なーんだ。朝9時じゃないじゃん。

それより部品が心配ということで急いでDigikeyに部品を注文したものの、「クリスマスため24日の午前11:00で出荷終了します」という文言が・・・。午前11:00というのはアメリカのセントラルタイムだとすると、日本では金曜日の夜か。つまり今週は土曜の朝に注文しても出荷されない。クリスマス粉砕!

 

家族の朝ご飯を作って、ぼちぼち設計再開。

14:29。設計完了!

Top1

容量性負荷で発振するといけないのでエミッタフォロアの出力は裏面を抜いています。両面基板で厚さ1.6mmもあるから容量は1pFもないと思うけど、念のため。

ほとんどのパターンを表面に通すことで、裏面は広いベタを確保することができました。高速信号にはガードを施していますが、ガードが容量になって発振の原因になるんじゃないかとも思っているので少し不安です。

Bot1

とにかく今回は両面基板なのでインピーダンスコントロールができないのですが、まぁよしとしましょう。

 

さて、Cosmo-ZのフロントパネルからSMA同軸を出すための小さな基板も作ります。

Np1131

そして面付するのですが、以前作っていたADCLK914とADCMP553による高速パルス実験基板もセットで面付して、出来上がり。

Np1132paneled

15:43設計完了。

設計指示書を作って出図が15:52。ぎりぎりで間に合いました。

Top_20211226103001

Bot_20211226103001

私はガーバを見るためのツールとしてGCPrevueを使っているのですが、Windowsをインストールしなおしたらラインセンスが使えなくなってしまっていて、結局ガーバは見ずに出図。

さて、うまく出来上がるでしょうか??

| | コメント (0)

2021.12.24

Cosmo-Z Windowsアプリで電圧自動設定を実装

Cosmo-Z Windowsアプリで、電圧自動設定機能を実装しました。

波形のビューで右クリックして、「電圧スケールを自動設定」を行いますと、今見えている波形が最大限に見えるように電圧レンジを自動で調整します。また、オフセットも調整するので、波形が画面の中心に最大の大きさで見えるようになります。

Autorange

例を見せましょう。

上の画面は1mV/Divで最も拡大したレンジですが、ここで振幅が大きな正弦波を入れると↓の図のように画面からはみ出てしまいます。

Autorange2

ここで、「電圧スケールを自動設定」を行うと、

Autorange3

このように、大きな入力が加わっているチャネルだけ適度なレンジで表示されます。

 

 

 

| | コメント (0)

2021.12.15

不燃ごみ処理

3年前にオフィスを引き払ったときのケーブル類やその他の不燃ごみを、いつか役に立つかもしれないと思って倉庫に入れていたのですが、とうとう捨てることにしました。

そうはいっても、特電が借りているオフィスで大量の不燃ごみは出せないようですし、諸般の事情で区の回収に出すこともできません。有料ごみ回収のシールを貼ったとしても出す場所がないのです。自宅のあるマンションのごみ捨て場に出すわけにはいかないし、特電オフィスは専門の回収業者がきているので、区の回収がこないのです。

それに不燃ごみを区の回収に出そうとしても2週間に1回しか来ないし、不燃ごみと粗大ごみの境界線は作業員の胸先三寸で、粗大ごみは事業系を捨てることができません。持っていってくれないとなると1.5か月くらいごみが処理できないことになります。そういうわけで、不燃ごみは行政の回収には出したくないのです。

そういうわけで、不燃ごみを処理してくれる業者をネットで探してみました。

 

そもそも捨てたかった不燃ごみというのは、ケーブル類。オフィスを引き払ったときに出た大量のLANケーブルや、USBケーブル、HDMIケーブル、テーブルタップ、ACアダプタ・・などです。ゴミ袋3つ分くらいあります。

Gabage1

それからパソコンのキーボード4つ。これを捨てようとしたら特電が入居しているビルのごみ清掃の人に出せないといわれました。

Gabage3

それから、ハンドスピナー。昔作ったノベルティーですね。

Gabage2 

あと、段ボールとか、古雑誌とか、衣装ケース、梱包材を詰めた可燃ごみです。

ごみ処理業者のホームページには「ごみ回収」「軽トラ詰め放題 9300円」などと書いていたのですが、こういう業者はホームページに表示している値段ではやらないことは十分に承知しています。

以前、自宅の引っ越しの際にぼったくられたので手口はよくわかっています。

今回の業者さんも、ごみの山を見るなり「これは、見積になりますね~」とか言い出すので、「いやー、9300円ぽっきりしかもっていないんですよ。営業の方とも9300円という話で進めていたので~」と現金の入った封筒をフリフリして言うと、

「うちはリユースできるものはするという方針なので、可燃ごみや雑誌は焼却になるので別途料金がかかります」とかわけのわからないことを言い出しました。

「じゃあ、9300円で大丈夫なだけもっていってもらえますか?」

と言って可燃ごみと資源ごみをひっこめました。

そう。そもそも可燃ごみと資源ごみは、今日出す予定ではなかったのです。それでも、最も捨てたかったケーブル類、ハンドスピナー、古いキーボード、衣装ケースだけを残したところ、9300円でOKとのことでした。

  

それから、このコーヒーメーカーの入ったダンボールは料金追加にならずにOKだそうです。こんな使い古しのコーヒーメーカーを本当にリユースするんですかね!??

Gabage4

  

と、まあ、ごみ処理・不用品回収業者で軽トラ詰め放題みたいなところは後から値段を吹っかけてくるので、多めにゴミを見せておきながら本当に捨てたいものだけを残すと当初の予定料金になります。可燃ごみや資源ごみは苦労しなくても普通に捨てられますからね。

今回は大成功でした。

| | コメント (0)

2021.12.13

エミッタフォロアでGHzレベルの矩形波を送信!

Cosmo-Zを等価サンプリングを利用した反射波測定器にしようという案件が進んでいます。

パルスを送ってその反射波を測定して距離や媒質の長さを調べたりするのですが、矩形波のパルスの立ち上がりは鋭いほどよいのと、8ch同時に15mくらい同軸ケーブルで引っ張ってパルスを出すため、FPGAのI/Oを直接出すのは怖いので、パルス出力アンプを作ることにしました。

それがこの回路です↓。汚くてすみませんね。実験のため空中配線で作っているのと、40半ばで老眼なのかコンタクトレンズをしながら細かい配線が最近やりにくくなってきたのです。

Pulsecircuit

真ん中にある黒い物体が高周波トランジスタ。紫の配線の上にあるのがAC終端用コンデンサ。その下に埋もれているのがパスコンで、トランジスタの左にあるのがエミッタフォロア出力のダンピング抵抗です。

 

上の写真は完成形なのですが、最初に作った回路はこんな感じです↓。

Pulseamp2

ZYNQから出てくるLVCMOS18の信号を高周波トランジスタでエミッタフォロアして、SMAコネクタとADC用アンプの間に入れようとしました。エミッタフォロアの負荷抵抗はADCアンプの入力抵抗Riが兼ねているので、1つの抵抗に2つの役割を持たせたことでちょっとうれしくなっていました。

 

基本的にはエミッタフォロアの出力をアナログ入力に入れているだけなのですが、見事に発振しました。

Wave1_20211214005502

綺麗に振動していますね。200MHzくらいです。

ただ、これが本当に発振なのかどうかはわかりません。数百MHzの振動には発振と似たような現象がいくつかあって、

  • 本当の発振・・出力から入力に回り込み、ゲインが-1以上で位相が180度回転するなど難しい原因
  • リンギング1・・矩形波の高調波成分がLPFで見えなくなってsin 3ωの成分が残ることで振動しているように見える
  • リンギング2・・どこかに寄生したLC共振回路が励起されて電圧が振動する
  • 多重反射・・信号がいったりきたりして振動する

といった場合もあるからです。

だから、信号が波打つだけではアンプの発振だとは断言できません。本当の発振ならば指を近づけたときに周波数が変わったり弱まったりするのですが、今回はそんなに変わらなかったので発振ではない可能性が考えられました。

上のような振動する波形でしたが、8mの同軸ケーブルを分岐させてつないで反射させてみたところ、振動も一緒に反射しました。

Wave2_20211214010301

(カルガモの親子のようで可愛い波形です。寄生振動が一緒についてくることを何かに応用ができないでしょうか!?)

 

さて、回路に抵抗やコンデンサを切って貼ってして振動を抑える工夫をしていくのですが、その前にこの振動がホンモノの高速オシロでどう見えるかを見てみます。

あらためてCosmo-Zで測った波形が下の波形。CRを追加して少し発振を弱めています。

Wave3

同じものを20Gサンプリングで帯域2.5GHzのオシロ+アクティブプローブで見たものがこちら。

Eqs_20211214010901

完璧に一致していたので一安心です。Cosmo-Zの等価サンプリングが正しい波形をキャプチャしていたことが確認できました。ホンモノのオシロのほうが少し振幅が大きいですね。

 

いろいろな部分を触ってみて一番怪しかったのがトランジスタのベースです。ZYNQの出力に入っているダンピング抵抗の位置を変えたりベースを終端すると発振が弱くなります。

そこで、ベースをAC終端してみました。当初のエミッタフォロアが下の図のような回路になりました。

Pulseamp

終端のCとRの大きさはカットアンドトライで決めるしかないので、まずは3pFと100Ωでやってみました。かなり抑えられました。

Wave4

オシロで見た(今回はアクティブプローブではなくBNCケーブルで直結)波形はこちら。

Ac3p100ohm

AC終端によって劇的に振動が収まりました。やはりベースで多重反射していたのが原因のようです。オシロで見たほうが少しだけリンギングが大きく見えます。

 

次は10pFと100Ωの場合で↓の図。振動は収まったのですが波形の立ち上がりが鈍るようになってしまいました。(10pFの場合のオシロの波形は取り忘れた)

Wave5

 

次は7pFにしてみました。実際に取った波形が↓の図です。かなり理想に近い矩形波になりました。

7p100ohm

オシロで見てみると、

Ac7p100ohm

かなり良い。オシロで測った立ち上がり時間は1.2ns~1.8nsくらいでした。欲を言えば1nsは切ってほしかったけど、これ以上高速にするにはトランジスタを完全OFFや完全ONさせない微妙な電圧で動かすというのをやらなければならないのかもしれません。

  

これだけ綺麗な矩形波が出るなら反射波も綺麗に取れるかもしれないと思い、6mの同軸ケーブルをつないで反射させてみました。Cosmo-Zで取った波形が下の図。

Refrect6m

同じものを高速オシロで取ったものが下の図。

Ac7p100ohm2

Cosmo-Zの等価サンプリングで取れた波形と高速オシロで取った波形はほとんど同じでした。

 

これでFPGAのI/Oから直接ではなくトランジスタを介して、RiseTimeが1nsオーダーの立ち上がりのパルスを出力するということができるようになりました。次はこのトランジスタの出力回路を8個並べて、それでも同じように動くかどうかを検証しなければならないですね。・・・空中配線だとしんどい。

波形の振動が本当の発振なのか別の理由なのかという究明は行いませんでしたが、当初LVCMOSの信号をそのままトランジスタのベースに突っ込んだため多重反射でnsオーダーのリンギングが生じていたのではないかと思っています。

 

| | コメント (0)

2021.12.10

連続的等価サンプリング

Cosmo-Zで、連続的な等価サンプリングができるようになりました。

下の図は普通にパルスをサンプリングしたもの。

Seqeq1

ここで、等価サンプリングをONにすると、サンプリング速度が一気に480MHzになります。

Seqeq2

ADCサンプリング周波数は80MHzのままですが、タイミングをずらすことで等価的に6倍速の480MHzサンプリングができています。

次は24倍。等価的に1.92GHzサンプリングです。

Seqeq3

最後は96倍。等価的に7.68GHzです。

Seqeq4

 

6倍速から96倍速まで、ほとんど差が見えませんが、Cosmo-Zのフロントエンドを改造してアナログ特性を伸ばした個体では差が見えるようになります。

今は96倍速で19200ポイント(200×96)の場合のサンプリング時間は500msくらいかかっていますが、処理の一部をハードウェア化することで、高速に連続サンプリングができるようになると期待しています。必要に応じて計測に有利な回路を組み込めるのはFPGAを使っているメリットです。

 

| | コメント (0)

2021.12.09

Cosmo-Zからパルスを出力する基板

8chのマルチチャネル等価サンプリングを行うために、下の図のような基板を考えています。

Pulse1

HMC987LP5Eの1:9バッファを使って信号を分岐させた後、HMC788Aでバッファします。

この基板をCosmo-Zの本体とBNCコネクタの間に入れて、

Pulse2

パルスを送信して、戻ってきたパルスをCosmo-Zに送るというしくみです。

Pulse3

こういうことをやりたいのですが、高周波対応のスイッチというのもあるようで、例えばRenesas F2976なんていうのがあります。

スイッチを使えば、反射測定するときだけ送信アンプとBNCコネクタをつないでおいて、通常の測定時はパルス送信回路を切っておくことができます。

Pulse4

 

こういう最近出てきた高周波デジタル・アナログ・ミックスド・デバイスは絶対最大定格で入力パワーが30dBm付近に設定されていますが、1Vの電圧が50Ωのインピーダンスに加わると20mWですから、6dBmになって、だいたい1Vくらいの振幅の波までしか通せないことになります。

送信機並みのパワー用でなくて、受信用あるいは基板間接続用なのですね。

同軸ケーブルをドライブするにはちょっと心細い感じがします。送信のパワードライブにはやっぱりトランジスタかな。

| | コメント (0)

2021.12.08

Visual C#でのExcel出力

作成中のCosmo-Zアプリで、波形データをExcelのファイルとして出力できるようにしました。

まず、下の図はサンプリングした波形です。

Export1

ファイル→エクスポート→Excel形式とやると、Excelのファイルができます。

1つ目のシートには測定の情報が、

Export2

2つ目のシートにはデータが表で羅列されています。

Export3

範囲選択して挿入、グラフとやると、すぐにグラフが描けます。

Export4

 

うーん。Excelでのエクスポートって便利かも!

Excelでエクスポートするプログラムの作り方ですが、ネットで検索すればいろいろ出てくるので詳しくは検索してください。

よくわからなかった点だけを書きます。まず、Microsoft.Office.CoreとMicrosoft.Office.Interop.Excelを参照に追加するようです。バージョンをどうすればよいのかわかりませんが、私のPCに入っているOfficeのバージョンが16なので、バージョン16を追加しました。おそらく、どれでもいいのだと思います。

Export5

とすることでExcelが使えるようになります。

Excelのセルに値をセットするのは、

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
Excel.Application ExcelApp = new Excel.Application();
Excel.Workbooks wbs = ExcelApp.Workbooks;
Excel.Workbook wb = wbs.Add();
Excel.Sheets sheets = wb.Sheets;
Excel.Worksheet ws = sheets[1];
ws.Select(Type.Missing);
ExcelApp.Visible = false;
ws.Cells[1, 1] = "aaa";

のような感じでいけるのですが、Cellに代入するのがめっちゃ遅いです。10000個のセルを設定しようとすると1分以上かかります。おそらくnew Excel.Application()をやった時に裏でExcelが起動していて、Excelクラスの中にあるオブジェクトを触ると、Excelと通信して、Excelのほうのプロセスがセルの設定とかをやっているのでしょう。

高速にやるには、

object[,] values = new object[rows + 1, cols + 1];

と、object型の2次元配列を作って、

try
{
  Excel.Range range = ws.Range[ws.Cells[1, 1], ws.Cells[1 + rows, 1 + cols]];
  range.Value = values;
}

で、範囲を指定して一括コピーします。

 

つまり、C#の中でExcelファイルを作っているのではなく、裏でExcelを起動してExcelを操作してファイルを作っているのでしょう。だから、Excelファイルを出力するプログラムを作るにはあらかじめExcelがインストールされていなければならないし、バージョンまで指定しなければならないのでしょう。

| | コメント (0)

2021.12.06

Kria KV260のバウンダリスキャン

Kria KV260のバウンダリスキャンに成功しました。

Kria_bscan1

バウンダリスキャンというのは、FPGAに備わっているJTAGの機能を使ってI/Oの状態を見たり操作したりするいわば工場出荷時のテストモードです。従来は工場の出荷検査に使われていた機能なのですが、MITOUJTAGというツールを使うとエンジニアのデスクトップ上で手軽な「デバッグ」用ツールとして使うことができるようになります。

バウンダリスキャンを行うにはBSDLというファイルが必要です。BSDLはBoudary Scan Description Langageの意味で、JTAGのレジスタの内容が記述されています。MITOUJTAGにはたくさんのデバイスのBSDLがインストールされているのですが、Zynq UltraScale+が比較的新しいデバイスであるため、まだ入っていません。そのため、下記のURLからダウンロードしてくる必要があります。

https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/device-models/bsdl-models/zynq-ultrascale-plus-mpsoc.html

このファイルを解凍すると出てくるxck26_sfvc784.bsdというファイルが、Kria K260本体のBSDLです。これをMITOUJTAGの画面にドラッグ&ドロップすると、BSDLが登録されます。

自動認識すると、ARMのDAPとXCK26の本体が見えるようになり、上の図のようにBGAの端子が可視化されるというわけです。

波形で見てみるとK26の上でチカチカ点滅しているLEDはMIO7であることがわかります。きっとGPIOですね。

Kria_bscan2

Linuxが起動するときの波形を眺めてみるとMIOの中で激しく動く端子がいくつかあります。おそらくUSB 2.0のULPI端子だと思われます。

Kria_bscan3

逆に、PLは全く動いていません。PLのすべての端子が入力状態になったままです。

Kria_bscan4

回路図を見ても、K26のI/Oの接続はSOMの中に隠されてしまっているのでよくわかりませんね。ただ、SOMから出てくる信号を見てもあまりPLは使われていないように見えます。HDMIの出力はPLを使うのではなくDisplayPortからDP→HDMIブリッジを使って出しているようですし。PLが使われているのはRasPiカメラから画像を取り込むところくらいのようです。

 

さて、そもそもKria KV260に搭載されているXCK26 SOMに搭載されているXCK26って何者なんでしょう?

ZYNQ UltraScaleのBSDLファイルに記載されているJTAG IDCODEの中のarray sizeを調べてみました。array sizeというのがデバイスの規模を示す数字なのですが、

デバイス ArraySize  16進表記
XCK26 100100100 124h
XCZU1 010001000 088h
XCZU2 100010001 111h
XCZU3 100010000 110h
XCZU4 100100001 121h
XCZU5 100100000 120h
XCZU6 100111001 139h
XCZU7 100110000 130h
XCZU9 100111000 138h
XCZU11 101000000 140h
XCZU15 101010000 150h
XCZU17 101011001 159h

K26とXCZUは、JTAG上は同じUltraScale+ファミリに属するようです。デバイスの規模が大きくなるとArraySizeも大きくなるという傾向はあります。(一部逆転するところはある)。そう考えると、XCK26はXCZU5とXCZU6の間くらいの規模なのではないかと思われます。

 

K26自体のデータシートを探したのですがSOMのデータシートしか見つかりませんでした。下の表によればK26はビデオコーデックがついているUltraScale+であるようです。XCZUの**EVに相当するようです。

K26_ds

一方、XCZUのセレクションガイドを見ると、XCZU5EVと、K26はPLのリソースのサイズがほぼ一致しています。

Xczu_sel

つまるところ、K26というのは、XCZU5EVをSOM用にカスタマイズしたものではないかと思われます。

Xczu5_xck26

あ、XCZU5EVの784ピンと、ピン配置が同じだ。

| | コメント (0)

2021.12.05

Kria KV260を動かしてみた(2)~5V電源で動作させてよいのか

Kria KV260を自宅に持ち帰って再度チャレンジしようと思ったのですが、12VのACアダプタがすぐに出てこない・・。そこで手近にあった5VのACアダプタをつないでみると、なんと動くではないですか!!FANに勢いがなくて静かですし。

本当にこれでいいのかと思って回路図を追ってみることにしました。

まず、DCジャックから供給された12VはMP5016HGQH-ZというICに入ります

12vprotect

MP5016は電源保護ICです。過電圧からの保護、電流が流れすぎたときの制限、逆電圧からも保護してくれるICのようです。MP5016の電源入力は2.6Vから15Vまでの動作レンジとのことなので、5Vでは問題なく素通りします。(このICの右についているFETは逆電圧保護のためについているようだ)

電源保護を通った12VはMP8772というスイッチング電源ICに入って、5Vが生成されます。このICは一応3Vくらいから動作するようなので、スイッチング電源の動作自体は問題なさそうです。しかし、5V入力で5V出力というのは原理的に不可能なので、私の環境では4.85V入力4.35Vが出力となっていました。(MP5016とMOSFETにより、スイッチング電源に入る前に0.1Vくらい電圧降下している)

MP8772のVFBは0.6Vなのですが、電源電圧が低いためVFBは0.51Vまで下がっています。これはMP8772が定格動作できていないことを表しています。全力でスイッチングしても定格の電圧に達していないので良い状態ではありません。PG端子はVFBが規定電圧の0.8から0.9倍のところにスレッショルドがあるので、0.48Vから0.54Vまで下がってしまうとLになります。これは出力電圧に換算すると4.03V~4.53Vなので、私の環境ではぎりぎりOKだったということになります。

つまり、5V入力で動作させる場合、MP8772のスイッチングレギュレータはほとんどスイッチせずに素通りしているのでしょう。

回路上で12Vが使われているのはこの電源ICの部分だけで、ほかには使われていません。電源入力が5Vだとスイッチング電源の出力は4.3V程度まで下がってしまい、SOM_5V0という名前でSOMにて供給されているため不安は残ります。本格的にKriaを動かして消費電力が増えてくると問題が起きるのかもしれません。

 

それからikwzmさんのZynqMP-FPGA-Linux/target/Kv260/boot/が起動しなかった原因は、git cloneする際に、Windows版のgit bashでgit cloneしたため、uEnv.txt等のテキストファイルの改行コードがLFからCR LFに変換されてしまったためでした。

Linux版のgitでgit cloneしてSDカードを作ったら問題なく起動しました。

Bootok

 

| | コメント (0)

2021.12.04

Rochster Electronis, LLCという電子部品商社

AD9253BCPZ-125 というADコンバータが必要になりました。

いつものようにDigikeyを見に行くと、なんと、品切れ!

Digikey

RLが付いたほう(リール品)は486個あるようなのですが「受注発注品」でRochester Electronics, LLCと表示されています。

Digikey2

マーケットプレイスというのがいかにも怪しく、怪しい流通在庫かもしれないと思ったので他を探すことにしました。

 

次に、Chip1stopで探してみると、在庫ありと出てきました。

Chip1

納期が長いなーと思いつつ。あれ?486個ってどこかで見た数字じゃない?

 

Rochester Electronics のホームページでAD9253BCPZを探してみると、

Rochs

ビンゴ!

 

このRochester Electronics, Incって何者って思って調べてみると、Wikipediaによれば

ロチェスターエレクトロニクスRochester Electronics, LLC)は、世界的な半導体製品の販売代理店及び製造メーカー。本社はアメリカマサチューセッツ州ニューベリーポート。主に、半導体の製造中止品の販売と製造(継続生産・再生産)ソリューションを提供している。

とのこと。

どうやら世界最大規模の正規販売代理店の一つだったようです。今まで知りませんでした。創立40年のアメリカの会社のようです。

少なくとも中国の流通在庫ではないので一安心。

 

事業内容にある「製造中止品の販売」ってことは買い占めて転売でもしているのかと思ったのですが、そうではないようです。再生産ソリューションというのは、半導体メーカーから移管された技術と情報で再生産しているらしく、半導体メーカーからウェハを買ってパッケージングして再生産したりなどをしているそうです。

メーカーオリジナルの物にデータシート上は完全に適合するらしく、ロチェスター製と書かれているICはオリジナルのICと同じ性能といえるようです。つまり、半導体メーカーとしては何らかの理由で作ることをやめてしまったものを、代理で製造してくれるありがたい会社なんですね。

 

ロチェスターの販売代理店は、日本ではAvnet、Chip1stop、コアスタッフ、ネクスティエレクトロニクス、PALTEK、菱洋エレクトロ、東京エレクトロンデバイスなどが並んでいます。このことからも、怪しげな流通在庫商社ではなく、信頼できる正規の流通経路であることがわかります。

 

どうやら、商社を通さなくても1個単位でロチェスターのWebサイト上から買えるようです。価格はチップワン経由の方が安いのですが、納期が2週間かかってしまいます。

なので、Webサイト上でさっそく注文しました。オンラインでの買い物も非常にスムーズでした。

Roches2

チップワンやDigikeyを通すとどうしても納期が長くなってしまうので、緊急で必要な少量はロチェスターからオンラインで買い、数十個まとめて買うときにはチップワン経由で買うのがよいでしょう。

Rochester、本当に助かりました。

今度からは、Digikey、Mouserにない部品は、Rochesterを先に探すことにします。

| | コメント (0)

2021.12.03

Kria KV260を動かしてみた(1)

Kria KV260が手元にあって久しく使っていなかったので、動かしてみることにしました。

Kria1

箱から基板を取り出し、どうやら電源は12Vらしいので安定化電源から12Vを供給しようとしたのですが、どうやらDCジャックの太さが合わず、普通のDCジャックが刺さりません。

Kria2

普通のACアダプタで使われている普通のDCジャックはΦ2.1なのですが、どうやらKria KV260は2.5じゃないかと思われます。だからといって今から専用のACアダプタを買う気にもなれません。

なので、DCジャックの端子に直接リード線をはんだ付けして12Vを供給したのですがKria KV260は起動してくれません。一度パチンと音がして、FANが回ったきりで、基板上のLEDも点きません。

 

基板上の各部のテストポイントをテスターで測ってみると、5Vや3.3Vの電源は生成されていますが、PL_1.8VやPL_1.2Vといった低電圧系の電源が動いていないようです。

この時点で「壊したのではないか!?」という不安がよぎりますが、回路図をよく見てみると、DCジャックの3番ピンがPWROFF_C2M_Bという信号になっています。

Kria_power

なんだこれは!?

衝撃を受けました。DCジャックの3番ピンをこのような使い方をするのは初めてみました。DCジャックの3番ピンがスイッチになっているのは、外部電源と電池駆動を切り替えるためのものだと思っていたからです。

このPWROFF_C2M_Bがどこに行っているかを調べてみると、5V電源のPGと、

5vallways

3.3V電源のPG、

3v3pg

それから、LED表示と、

Led

KriaのB26番端子に行っています。

Kria_ja1b_b26

電源レギュレータのPGという端子は、一般的にはその電源ICが無事に立ち上がったことを示すオープンドレインの信号なので、相互に接続された場合はどれか1つがLならば電源が立ち上がっていないことを示す信号となります。つまり、3.3Vと5Vの電源がONであってDCジャックが挿さっていれば、ここは100kΩでプルアップされてHになります。そういう電源Goodを表す信号と考えてよさそうです。

Hならば電源Goodを表す信号がKV260モジュールのB26番ピンに入ることで起動するのかもしれません。

だとすると、DCジャックに何かを挿さないとの3番ピンがGNDにくっついてしまったままでPower GoodがHになりません。そこで、DCジャックを破壊して取り外しました。

Kria3

焦げたフラックスと、はんだ吸い取り線のヤニで汚くなっていますが、フラックスリムーバーをかければ綺麗になります。

ここに、秋月で売っている普通のDCジャックを取り付けます。

Mj179ph

このとおり。

Kria4

フラックスリムーバーで除去した後です。綺麗でしょ。

Kria6

安定化電源から12Vを供給すると、無事にLEDが光りました。よかった。壊れていなかった。

Kria5

 

さて、Kriaのスタータキットの「ステップ 2. SD カード イメージを設定する」のページを参考にSDカードを作ってみようと思いましたが、PetaLinuxっぽい巨大なファイルがダウンロードされたのと、balenaEtcherとかいう知らないツールを強要されたので、30秒でやる気をなくしました。SDカードのイメージくらい変なツールを使わずにそのままの姿でアップロードしておいてほしかったです。

そういうわけで、@ikwzmさんのgithub https://github.com/ikwzm/ZynqMP-FPGA-Linux からブートイメージをダウンロードしてSDカードに書き込んでみました。SDカードを2つのパーティションに分けて、最初のパーティションをFAT32にして、/target/Kv260/boot/にあるboot.scr、devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-kv260-revB.dtb、devicetree-5.10.0-xlnx-v2021.1-zynqmp-fpga-kv260-revB.dts、image-5.10.0-xlnx-v2021.1-zynqmp-fpga、uEnv.txt、uEnv-linux-5.10.0-xlnx-v2021.1-zynqmp-fpga.txt、の5つのファイルを書き込んでおけばいいのでしょ、と思ったのですが、

Failed

なぜか、起動失敗。

どうやら、Kria KV260の真のboot.binは基板上のROMに書かれていて、SDカードからはboot.scrを読みだして起動するという2段階のブートになっているということはわかりましたが、起動失敗の原因はわかりませんでした。

 

| | コメント (1)

« 2021年11月 | トップページ | 2022年1月 »