Posts Tagged with "Ultra96"

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

Ultra96toPMODの追加製造費用

posted by sakurai on May 29, 2023 #608

Ulta96toPMOD基板製造再見積り

JLCPCBがPCBA(PCB製造及び部品実装)のセールをやっているようなので, 以前掲載したUltra96toPMODボードのオーダー費を再度計算してみました。

前回と同様パープルとグリーン基板を10枚製造し、さらにICを2個/枚×10枚実装した場合の費用の内訳を示します。前回パープル基板はEconomyの有利な価格で基板が製造できず、Standardとなっていました。今回はパープルもグリーンと同じEconomy扱いに変更されています。

表608.1 Ultra96toPMOD Jlcpcbの費用構成
10枚製造時費用内訳 基板色[USD]
グリーン パープル
PCB Special Offer Price 5.00
Components(TXS0108EPWR --- 20個) 9.39
Extended Components 2.96
SMT Assembly 0.65
Setup fee 7.88
Stencil 1.48
合計 27.36
送料(OCS Express:6~8日) 11.68
総計 39.04

前回と比較してみると、部品(レベコンIC)代が若干安くなり、セットアップフィー、SMTアセンブリ、ステンシルがほんの少し安くなりました。一方、送料が上がりクーポンが使えないので、40.2%の値上げ(パープルは28.6%の値下げ)という結果になりました。

今回、再度BokTech及びSeeedFusion PCBの見積もりを取りましたが、それぞれこの2倍、4倍ほどの費用となりました。JLCPCBの安さが光ります。

PMODピンソケットコネクタの再オーダー

PMOD仕様の12ピンソケットの型格はSamtec製のSSW-106-02-T-D-RAです。

図%%.1
図608.1 SSW-106-02-T-D-RA

以前オーダーしたときはMouser から購入しました。この時は単価が141円と安く送料が無料なこともあり、総額が安かったのですが、今回見積もったら単価が258円とかなり値上がりしていたため、Arrowから購入しました。

再度調べたところ、以下のように最安はChip 1stopでした。単価的にはArrowと同じですが、送料が無料となることから、今後はChip 1stopで購入しようと思います。

  • Chip1stop 単価156.2 x 40(送料650)= 6,899円 (税込み) 最安
  • Arrow 単価156.2 x 40(送料3,080)= 9,330円 (税込み)
  • RSオンライン 単価254.9x 40 (送料無料) =10,199円 (税込み)
  • Mouser 単価263.6 x 40 (送料無料) =10,542円 (税込み)

図%%.2
図608.2 送付部品(SSW-106-02-T-D-RA)

本ピンソケット互換品でA2541HWR-2x6Pという製品があるようです。


左矢前のブログ 次のブログ右矢

Ultra96toPMODのBOM

posted by sakurai on May 26, 2023 #607

Ultra96toPMODのBOM

弊社作成のUltra96toPMODボードですが、BoMを掲載していなかったので、掲載します。

表607.1 Ultra96toPMODボードBoM
Degignator Value Qty MPN
C1, C2, C4, ..., C11 0.1u 10 Multilayer Ceramic Capacitor
C3 10u 1 47 µF 50 V Aluminum Electrolytic Capacitors Radial
J1, ..., J4 SSW-106-02-T-D-RA 4 SSW-106-02-T-D-RA
J100 MTMM-120-03-T-D-155 1 MTMM-120-03-T-D-155
LED1 TLLR4400 1 Red LED 3mm Through Hole
R1 470 1 Axial Carbon Film Resistor
R2, ..., R4, R6 3.3k 4 Axial Carbon Film Resistor
R5 10k 1 Axial Carbon Film Resistor
SW1 COUNT 1 4bit DIP SW
SW2 RESET 1 Tactile Push SW
TP1, ..., TP10 Test Pin 10 Test Pin
U1, U3 TXS0108EPWR-TSSOP20 2 Level Converter IC (SMD)
U2 DC DC Converter IC 1 PQ3RD23

Online-shopの開設

併せてオンラインショップを開設しました。

図%%.1
図607.1 オンラインショップ画面

左矢前のブログ 次のブログ右矢

PL UARTの接続とPCでの表示

posted by sakurai on May 17, 2023 #605

PL部UARTのPCへの出力

以前Space Invadersのゲーム実行中のVRAM画面の吸出しを実施しました。過去記事ではこれ等が相当します。これは、メモリダンプモジュールをBSVにより設計し、UARTの送信機能を用いてUART/USB変換ボードを経由してPCとUSBで接続し、PC上のPuttyでメモリダンプ情報を取得するというものです。

ところが、再度実行しようとしたところ、どうしてもUARTの出力の取得ができませんでした。前回は比較的簡単にできてしまったので、記事にはpin設定であるxdcの詳細は書いていませんでした。単にUART_TXに接続するとのみと書いており、端子番号は今は定かではありません。

こうなると基本から調べなければならないので、まずUltra96V2の回路図を見ると、なんとPS部からの接続となっているようです。

図%%.1
図605.1 Ultra96 UART部分回路図

UART/USB変換ボードのJ1の2 pinにUART_TXが接続されていますが、これはPS_MIO0のUART1_TXであり、PLからはPIN配置でエラーになるため、PS部であるBank 500のU4端子に接続することはできません。図605.2にUltra96-V2ハードウェアユーザーズガイドの抜粋を示しますが、やはりBank 500(PS部)のU4端子となっています。

図%%.2
図605.2 Ultra96 UART部分端子表

従って、最後の手段としてボード上に配線をハンダ付けし無理やりJ1に出力することを考えます。

まず図605.3はPL部UART_TXの引き出しを示す回路図です。

図%%.3
図605.3 UART_TX部回路図

このUART_TXを次のxdcによりG6端子に割り当てます。これはPL部の出力(Bank 26)です。

set_property PACKAGE_PIN G6 [get_ports {UART_TX}]

最後にUART_TXを割り着けた端子G6とJ1の2 pinの間に配線をハンダ付けし、ショートしてやります。レベル的に本来はTrのD側ではなくS側に接続すべきですが、3.3Vにpull upされているため、これでもVOHは満足しているようです。

このようにすることで921,600bpsにより、VRAM内容の送信がうまく動作しました。が、以前設定だけでできた理由は不明のままです。

PCへの出力結果の確認

以下に、得られたlogファイルを画像に変換するフィルタを再掲します。

log2ppm.c

#include <stdio.h>
void main() {
      char line[4096];
      char ch;
      printf("P3\n256 256\n255\n");
      for(int y = 0; y <= 255; y++) {
            fgets(line, sizeof(line), stdin);
            for(int x = 0; x <= 255; x++) {
                  ch = line[x] - 0x30;
                  if ((ch & 0x4) != 0) printf("255 ");    // R
                  else printf("0 ");
                  if ((ch & 0x2) != 0) printf("255 ");    // G
                  else printf("0 ");
                  if ((ch & 0x1) != 0) printf("255 ");    // B
                  else printf("0 ");
            }
            printf("\n");
      }
}

以下のコマンドによりフィルタを作成します。

$ gcc -O log2ppm.c -o log2ppm

これを下記のようにフィルターとして実行し、ログデータを画像ファイルに変換します。

$ ./log2ppm <putty.log >putty.ppm

生成されたppm図形を図605.4に示します。

図%%.3
図605.4 メモリダンプ図形

左矢前のブログ 次のブログ右矢

posted by sakurai on August 12, 2022 #495

製造(PCBA)費用が安いため、JLCPCBにUltra96toPMODボードを再オーダーしました。グリーン基板はなぜかセットアップやステンシル費用がパープル基板より安いのですが、パープル基板でも他社よりも安いのに加え、今回はクーポン10 USDの割引が使用できるため、今回はパープル基板で製造しました。組み立てもかなり安かったため、今回はレベル変換ICのみ実装したPCBを製造しました。

図%%.1
図495.1 Ultra96toPMODV10 (表)

図%%.2
図495.2 Ultra96toPMODV10 (裏)

パープル基板とグリーン基板を製造し、さらにICを2個/枚×10枚実装した場合の費用の内訳を示します。グリーン基板のほうが半額近い費用です。

表495.1 Ultra96toPMOD Jlcpcbの費用構成
10枚製造時費用内訳 基板色[USD]
パープル グリーン
PCB Price 5.00
Components(TXS0108EPWR --- 20個) 12.05
Extended Components 0.00 2.93
SMT Assembly 0.68
Setup fee 25.00 8.00
Stencil 8.46 1.50
Feeders Loading 1.35 0.00
合計 53.05 30.16
送料(格安:7~12日) 7.68
合計 60.22 37.84
割引 ▲10.00
総計 50.22 27.84

価格表に示すとおり、パープル基板はグリーン基板よりも倍近く高いものの、SMD部品を2個ずつ実装してもらっても1枚5ドル程度でした。


左矢前のブログ 次のブログ右矢

posted by sakurai on November 16, 2021 #445

BoktechからレベコンICのみ実装のV10ボードが届きました。図445.1のように、基板は5枚でわずか1.0 USD、レベコンICの実装は最低2枚からで、その費用は部品代が6.64 USD、実装費その他を加えて29.83 USDでした。今回はDHLを使用したので若干輸送費が高く34.0 USDで、合計64.83 USDでした。

図%%.1
図445.1 BokTechオーダ内容

他の部品を半田付けして組み立て動作させたところ、フルハードウェア(マイコン、ソフトウェアは一切使用しない)によるSpace Invadersが正常に動作しました。

図%%.2
図445.2 Ultra96toPMODV10システム

図445.2のように、使用機材はAvnet製Ultra96ボードに弊社Ultra96toPMODボードの他、インタフェースのためのPMODボード類です。これでUltra96toPMODボード回路はようやくfixとなります。

V10ボードデータ一式はこの場所にあります。以下はデータのREADMEです。


Gerber data and Pick&Place data for Ultra96toPMOD mezzanine board.

https://qiita.com/mocapapa/items/a2faa710503e4affa88b

  • BokTech-Bom-Ultra96toPMODV10_minimum.xlsx ---- BOM file for BockTech
  • Ultra96toPMODV10.brd ---- EAGLE layout data
  • Ultra96toPMODV10.sch ---- EAGLE schematic data
  • Ultra96toPMODV10_2021-10-22.zip ---- Gerber data for two layer production (SeedFusion 2layer)
  • Ultra96toPMODV10.mnt.zip ---- Pick & Place file for PCBA
  • JLCPCB-PP-Ultra96toPMODV10_minimum.xlsx ---- Pick&Place file for JLCPCB
  • JLCPCB-Bom-Ultra96toPMODV10_minimum.xlsx ---- BOM file for JLCPCB

image

image


左矢前のブログ 次のブログ右矢

posted by sakurai on October 25, 2021 #442

BoktechにオーダーしていたV9基板が届いたので、組み立て火を入れたところ、JoystickスイッチONのタイミングで垂直同期にノイズが乗る現象が再発しました。

図442.1の上側黄色トレースが、X_RIGHT_SW信号(ボードへの入力、負論理)、下側青色トレースがVSYNC(ボードからの出力、負論理)です。スイッチのチャタリングが、本来無関係のはずの同期信号にクロストークしています。

実際にこのVSYNCのノイズにより、外付けモニタが誤動作しています。具体的には同期が乱れるため、それを自動的に検知し、一定期間ブランキングしています。

図%%.1
図442.1 オシロスコープ波形

レベコンICのVSYNCの隣接端子であるX_RIGHT_SW信号からノイズが回り込んでおり、一つ離れたX_LEFT_SW信号からの回り込みはありません。

この現象は、開発初期のV4で起きていたため、V5からスイッチ信号と同期信号を同じレベコンICに入力しないようにしていました。その後、配線に近い場所があったため、ロジカルには大丈夫だろうと、V9で同じレベコンICに入れたのですが再発しました。論理的には問題ないはずなので、あとは以下の2つ程度が考えられます。

  • チャタリング⇒レベコンICの電源・グラウンドの揺れ⇒同期信号にノイズ
  • レベコンICの内部でのクロストーク

ところが、4chオシロで観測したところ、電源・グラウンドの揺れはありませんでした。従って、原因はレベコンIC内部でのクロストークと考えられます。修正がここまでかかった原因は、メーカー製ICを信用し過ぎていたことに依るものです。

以上より、信号を入れ替え、ズイッチ信号と同期信号のレベコンICを別々に変更しました。これをV10とします。V10の基板図を図442.2及び3に示します。

図%%.2
図442.2 Ultra96toPMODV10ボード基板図(表面)

図%%.3
図442.3 Ultra96toPMODV10ボード基板図(裏面)

左矢前のブログ 次のブログ右矢

posted by sakurai on September 21, 2021 #437

改版中のV9ボードの基板図を図437.1及び2に示します。

図%%.1
図437.1 Ultra96toPMODV9ボード基板図(表面)

図%%.2
図437.2 Ultra96toPMODV9ボード基板図(裏面)

左矢前のブログ 次のブログ右矢

posted by sakurai on September 20, 2021 #436

V8基板が到着しました。今回も実装が安いBokTechに依頼しました。

図%%.1
図436.1 Ultra96toPMODV8基板

部品を並べたものが図436.2です。

図%%.2
図436.2 Ultra96toPMODV8ボード及び部品

組み立てたものが図436.3です。

図%%.3
図436.3 Ultra96toPMODV8ボード完成

正常に動作したものの、デバッグ途中で修正箇所を発見したため、V9として改版中です。具体的には、

  • Dip SWの入力がレベル変換ICにより1.8Vに変換されて入力されていた(Dip SWはスタティック信号のため、レベル変換ICの必要無し)⇒Dip SWの電源を1.8Vに変更し、ダイレクト入力に変更
  • Joy SWの入力が3.3Vダイレクト入力だった⇒1.8Vにレベル変換して入力(ラッチアップの可能性有るため)

Joy SWはV3において、1.8Vへのレベル変換ICを通すように変更したのですが、その際にSW信号が水平・垂直同期信号に悪影響を与えたため、V4以降で元に戻したものです。ただし動作しているとはいえ、1.8V入力に3.3Vを加えています。今回は再度V3と同様に修正します。ちなみにV3での悪影響の理由は、レベル変換ICで混信したのではなく、図436.4のように、レイアウト上同期信号がSW信号の間を通っていたためのようです。 【追記】レベル変換ICの端子間もしくはIC内部での混信のようでした。

図%%.4
図436.4 V3でのHSYNC/VSYNCのSWとの混信

V9ではV3と同様、再度JoySW信号を1.8Vへのレベル変換ICに入れるように修正しました。合わせて、レイアウト上SWの間を水平・垂直同期信号が通らないように注意して配線しています。


左矢前のブログ 次のブログ右矢

posted by sakurai on September 3, 2021 #434

Qiitaに「BSVによるSpaceInvaderのソースを公開」という記事を書きましたが、それに合わせてUltra96toPMOD基板の再設計(V8)を実施しました。現行のV7との変更点は、以下の2点です。

  • UltraZedボードインタフェースの削除
    UltraZedからは能動素子無しにUltraZedボード⇒Ultra96toPMODボード⇒PMODインタフェースボードと経由して信号を通していました。今回評価したところ、反射が起きて正常に動作しませんでした。Ultra96toPMODボード内でバッファを通す必要があったようです。設計変更も考えましたが、あまり需要が無さそうであるため、このインタフェースは削除することにしました。これに伴いZenarダイオードによる電源のOR回路も省略でき、電源まわりがすっきりしました。

  • 4層から2層に変更
    4層基板を2層としました。理由は、以前はそれほど高額でない料金で4層板が設計できたものが、EAGLEがAutodeskに買収されたため、高額なサブスクリプションでなければ4層板が設計できなくなったことです。無償で設計できるのが2層までとなったため、設計変更しました。

図%%.1
図434.1 Ultra96toPMODV8ボード表面図

データの場所は、https://github.com/mocapapa/Ultra96toPMODV8です。

今回もPCBA(SMD実装込み)を依頼しましたが、SeedFusionだと1万5千円以上だったので、BokTechに依頼しました。費用内訳は、

  • 基板代 1.0 USD
  • アセンブリ費用(部品代込み) 29.83 USD
  • DHL送料 34.0 USD

合計64.83 USDでした。


左矢前のブログ 次のブログ右矢

デザインのボード間移植

posted by sakurai on June 18, 2021 #424

ArtyボードからUltra96ボードへ

RTLにはボード依存性はありませんが、トップモジュールやIPにはボード依存性があるため、その移植が必要となります。まずトップ配線(ブロック間配線)は、Export Block Designにより、配線情報がTCLにより得られるので、それを入力したいところです。しかし、ボード依存性があるようで、新ボードを設定した上で旧ボードのTCLを読み込むとエラーになってしまいます。そのため、

  • 旧ボードの環境でデザインを構築しておき、新規ボードに変換する

方法により、デザインのボード間移植を実施しました。

新規プロジェクトの生成

最初に旧ボードでプロジェクトを生成します。この段階で必要なものはVerilogソースが全て含まれているsrcディレクトリ、ブロックデザインのTCL、新ボードのXDCのひな形です。

  1. Vivadoの下にプロジェクトフォルダを作成します。その下に、Verilogソースが全て含まれているsrcディレクトリ、ブロックデザインのtcl及び、xdcを配置します。
  2. Vivadoを起動し、Create Project⇒Next⇒RTLプロジェクトを選択し、Verilogソースフォルダを選択します。
  3. 次にconstraintファイルとしてxdcを設定します。
  4. Boardsとして旧ボードを選択します。
  5. FinishによりProjectが生成されます。
  6. IP Integrator⇒Create Block Designを実行します。
  7. BLOCK DESIGN⇒Sources⇒Design sourcesのトップデザインであるdesin_1に対してラッパを生成します。
  8. design_1を選択して右クリックでCreate HDL wrapperを実行するとダイアログが現れます。
  9. Let Vivado ...を選択してOKをクリックします。
  10. オレンジの階層だったものが、design_1_wapperというグリーンの階層が生成されます。
  11. それを右クリックし、Set as topにより、トップ階層とします。
  12. 最下段のTCL Console内で、source C:/Users/<ユーザ名>/Vivado/<プロジェクト名>/design_1.tclを実行します。
  13. ブロックが配置され、ブロック間に配線されます。Diagramを右クリックしてExpand Allし、Regenerate Layoutをクリックします。
  14. タイトルコメントのText sizeを64、Box fill colorを204,255,255とします。

新ボードへ移行

  1. ボードが旧ボードになっているので、PROJECT MANAGER⇒Settingsでダイアログを立ち上げ、Project Settings⇒General⇒Project device:によりボードを新ボードに変更します。
  2. BLOCK DESIGNに、IPのアップグレードを促す指示が出るため、個数をクリックします。Show IP Statusをクリックします。
  3. 最下段のUpgrade SelectedをクリックしIPのアップグレードを実施します。
  4. IPによっては結線が外れていることがあるため、良く見直して、外れていれば接続しなおします。

注意点

coeファイルは相対ディレクトリで記録されますが、tclスクリプトからうまく参照できないようなので、全て絶対ディレクトリ(例:e:\file.coe)として参照できるようにしました。


左矢前のブログ 次のブログ右矢


ページ: