納品!納品!納品!
今年度の最終日。
HyperFADCという1GサンプリングのADCボードなのですが、パソコンとのインタフェースになるPCIe基板の動作テストやケースへの組み込みなどを行い、錦糸町から本郷までチャリで行って納品。
気候も良かったのでキャンパスをぐるっと一周自転車で走って帰って来て、次のお客様にメールを送って出来ているところまで納品。
あわただしい一日でした。
今年度中に仕上がらなかった仕事がいくつかあるのが心残りでした
今年度の最終日。
HyperFADCという1GサンプリングのADCボードなのですが、パソコンとのインタフェースになるPCIe基板の動作テストやケースへの組み込みなどを行い、錦糸町から本郷までチャリで行って納品。
気候も良かったのでキャンパスをぐるっと一周自転車で走って帰って来て、次のお客様にメールを送って出来ているところまで納品。
あわただしい一日でした。
今年度中に仕上がらなかった仕事がいくつかあるのが心残りでした
お客様からRoHSの対応状況を聞かれることがあります。
ドイツから輸入しているから当然鉛フリーだと思いますが、RoHS2はどうとか10品目はどうとかいうのが最近よくある問い合わせです。
「RoHSって鉛とか環境に悪いものを使わないということでしょ。最近は規制物質が10種類に増えたよね。」ぐらいに思っていたのですが、調べてみると、たくさんの種類があるのと、化学物質を規制すればいいだけではなく、意外と奥が深いものでした。
オリジナルRoHS
まず、最初のRoHSはEU内で流通する電気電子機器に特定の有害物質の使用を制限する指令として出されたもので、2002/95/ECといいます。
オリジナルのRoHSは鉛、水銀、カドミウム、六価クロム、ポリ臭化ビフェニル、ポリ臭化ジフェニルエーテルを使っちゃいけないよというもので、21世紀初頭に鉛フリーはんだに移行したのが記憶に残っているでしょう。2002/95/ECは2013年1月2日に廃止されました。
改正RoHS=RoHS2
改正RoHS=RoHS2というのは2011/65/EUです。変更点は医療機器や監視・制御機器が対象になり、その他の電気電子機器が追加されたのとCEへの適合が必要になったことです。また技術文書の作成と保存などが求められます。
この段階ではまだ6品目でした。制限物質の拡大が行われたわけではなく、対象機器の拡大だったのと事務的な話のであまり印象には残っていないですね。
RoHS2(10品目)
フタル酸ビスなどに拡大して10品目が規制対象になったのは2015/863で、2011/65/EU+2015/863というようです。このころから日本の商社から「拡大4品目に対応していますか?」という問い合わせが増えてきた気がします。まぁ、普通はそんな化学物質を意図的には使いませんよね。
「改正RoHSに対応していますか?」と聞かれた場合、「2011/65/EUですか?それとも+2015/863ですか?」と聞き返しましょう。少なくとも改正と追加で2回は変わっているので、聞いているほうも理解せずに聞いている可能性が高いです。聞き返すのが最初の「対応」です。
さて、RoHS2対応に必要なCEなのですが、ここに罠があります。
CEはRoHS2だけのマークではなく、安全に使えるかどうかを判断するためのマークです。
CE適合を謳うなら、電気を使う産業機械なら機械指令(2006/42/EC)、
EMC指令(2014/30/EU)も満たさなければなりません。
AC100Vを使うような機器なら低電圧指令(2014/35/EU)にも従う必要があります。
AC100Vを直接扱うのは日本でもPSEという悪法があるので避けたほうがいいわけで、ACアダプタで避けられますが、とりあえず確実に必要なのはEMC指令です。
コンデンサや抵抗などの電子部品単体は適用されませんが、CPUボードは対象となりますので「部品だから」という言い逃れはできません。とにかく大半の電子回路が対象となるでしょう。なお、無線機は対象となりません(そりゃそうだ)。
EMC指令がどういう指令かというと、無線や他の電気機器の動作や性能を妨害しないことというのと、想定された使用状態において十分な電磁耐性(イミュニティ)を持つことです。電波暗室で放射電磁界を測定するだけではなく、静電気放電試験や雷サージ試験など、ノイズを受ける側の試験もしなければならないわけです。
では、RoHS2に対応させるにはどうすればよいか?
RoHS対応といっても、オリジナルのRoHS(2002/95/EC)は2013年1月に廃止されてしまっているので対応しても意味がありません。今ならRoHS2の2011/65/EUに対応させなければならないことになります。
鉛フリーの部品だけを集めて作ればRoHS2対応になるかというと100%ではないそうです。「通常使用される温度範囲内でのみRoHS2対応」という部品もあってそれを超える温度で使えばRoHS2対応でなくなる、という事例もあるそうなのですが、重箱の隅ですね。コンサルタントが儲けるためのいいがかりでしょう。
RoHS2に対応するには、
① 基板も梱包も特定6物質を使わないようにして作る
② 技術文書と適合宣言書を作る
③ EMC試験を行う
④ CEマークを施す(適合宣言をする)
です。RoHSは自己宣言なので必ずしも認定機関に認定してもらう必要はありません。自分で宣言できるのであれば自分の責任で宣言します。
繰り返しになりますが、厄介なのはCEにはEMCや低電圧指令も含まれていることです。環境だけ守っていてもRoHS対応ができないのです。EMC試験は自分だけではできませんし、RoHS2対応の部品を集めてきてもクリアできません。
ただし、適用除外がいくつかあります。軍事用。宇宙用。大型固定設備。大型据え付け型産業用工具。専門家が設置する太陽光パネル。埋め込み能動型医療装置。そして、「企業間の取引のみによって入手可能とされる研究目的のためにのみ特に設計された機器」などです。ほかにもいくつかありますが、要するに特注で作る研究目的の機器はRoHSに反していてもEUに輸出できるのです。
宇宙や軍事用はちゃんと管理されるし、大型の機械や太陽光パネルは設置から廃棄まで専門の業者がやるでしょうし、なるほどなと思います。
最後にまとめておきます。
・RoHS2は10品目のことではない
・RoHS2=2011/65/EU
・RoHS2+2015/863=10品目
・RoHS2適合を謳うにはCE適合宣言が必要で、
CEにはEMC指令2014/30/EU も含まれる。
ほかにも玩具指令とか定電圧指令とか、安全に関する指令がいっぱい!
・企業間取引される研究用の機器は適用除外
安全!安全!環境!環境!って度が過ぎる気がしますが、EUはこんな規制をつくってしまって自分自身でがんじがらめにして経済発展を自ら阻害しているんじゃないですかね。あくまでもEUの規格なので日本国内で流通させるのであれば考慮しなくてもいいのですが、RoHS=環境に配慮した製品じゃないですよ。
RoHSとCEはもともと別々だったのですが後からCEに含まれることになり、こんな厄介なことになっているそうです。
海にポイ捨てしても地面に埋めても有害物質が漏れ出てこないというはずだったのが、安全と絡めてどんどん拡大されてこんなことになってしまいました。ヨーロッパ的愚かさを感じます。
我々、零細電気電子事業者としては、最後の「企業間で取引される研究用の機器」という部分に希望の光を見出すことができます。
FPGAができたら次はU-BOOTとLinuxを作りましょう。
今回使ったPHYチップはLAN8720AIというものです。
下の写真でコネクタの下にある小さなチップがLAN8720AIです。
U-BOOTを作る際に特に設定を変更する箇所はないのですが、デバイスツリーに以下のような記述をするようです。
&gem0 {
status = "okay";
phy-mode = "rmii";
phy-handle = <ðernet_phy>;
ethernet_phy: ethernet-phy@0 {
reg = <0>;
compatible = "smsc,lan8720";
device_type = "ethernet-phy";
};
};
reg=0はPHYのアドレスです。PHYチップのリセット時のI/Oのプルアップなどで設定する値です。これを合わせておかないと通信はできません。
結果。下の図のように、ちゃんと認識しました。
miiコマンドやmdioコマンドでPHYのレジスタを読むことができます。
しかしながらMDIOで認識はできるものの、ネットワークを介した通信はできず、U-BOOTのDHCPでIPアドレスを設定したりPINGを飛ばすということはできませんでした。
あきらめてLinuxのビルドに移ります。
Linuxを作るときには、特に何かのデバイスドライバを有効にしたり無効にしたりする必要はなさそうだったのですが、デバイスツリーは必ずhsiで作り直すのがポイントでした。既存のデバイスツリーを微修正して使用するのは不可でした。
デバイスツリーのトップには、
/ {
・・・
aliases {
ethernet0 = &gem0;
serial0 = &uart0;
spi0 = &qspi;
spi1 = &spi0;
};
・・・
};
と書いて、ethternet0を&gem0でアクセスできるようにします。
つまり、zynq-7000.dtsiに書かれている
ethernet@e000b000 {
は直接はいじりません。ドライバを呼び出すcompatibleの記述は、デフォルトのままの
compatible = "cdns,zynq-gem", "cdns,gem";
・・・
phy-mode = "gmii";
でいいようです。
ただし、このethernet0にエイリアスを設定した&gem0を次のように書きます。
&gem0 {
mdio {
#address-cells = <0x1>;
#size-cells = <0x0>;
phy0:phy@0 {
compatible = "ethernet-phy-ieee802.3-c22";
device.type = "ethernet-phy";
reg = <0x0>;
};
};
};
これでLinuxからEthernetが認識されるようになりました。
もちろんPINGも動作します。
最初に示したようにRMIIのモジュールは着脱式にしたので、本番稼働時にはモジュールを外すだけでよく、デバッグ時のみネットワークを使えるZYNQ環境ができました。
いま作っているZYNQのボードでは消費電力の削減のためネットワークのモジュールを着脱式にしています。開発時にはファイル転送のためにネットワークに使いたいけど、本番時はネットワークなしで動かすという感じになります。
このようにネットワークの存在はそれほど重要ではないので、1000BASEではなく100BASEでよく、RMII(Reduced MII)という方式を用いて少ない信号線でPHYチップに接続したいと思います。
さて、ZYNQの内蔵イーサネットはGMIIというGigabitEtherなので、これをRMIIという一番遅いタイプのインタフェースに変換することが第一の関門となります。
Vivado 2019.1まではGmii to Rgmiiというコアがあったのですが、Vivado 2019.2からはディスコンになってしまいました。2019.2以降ではGmii to Rgmiiのサポートがなくなってしまったのです。
このブログではVivado 2019.2以降でZYNQにRMIIをつなぐ方法を紹介します。
やり方はとても簡単。
まず、古いVivadoがインストールされたディレクトリから、rmii_to_rmii_v2_0のフォルダを探して、それを自分自身のプロジェクトのIPレポジトリにコピーします。
私はDドライブにVivadoをインストールしているので、 D:\Xilinx\Vivado\2019.1\data\ip\xilinx\mii_to_rmii_v2_0にありました。
これでIPのRepositoryをRefresh Allすれば、mii_to_rmiiが使えるようになります。
IP Catalogでmiiと入力すると、Ethernet PHY MII to Reduced MIIが出てきます。
これを貼り付けます。最初はMII仕様になっているのですが、クリックして
Mode Selectionを[Zynq PS Gigait Ethernet Controlloer]に変えると、
左側のポートがGMIIに変わります。
偉いコアですね。なんでディスコンにしてしまったのでしょう。
ZYNQのPSの設定ではEthernetをEMIOに出すようにしておきます。
これで、ZYNQのPSから出てきたGMII_ETHERNET_0とmii_to_rmiiコアがぴったりとつながるようになりました。
ref_clkには50MHzのクロックを入力します。このクロックはRMIIのバスのクロックなので、PHYチップにCLKOUTという端子があるならばPHYチップからのクロックを供給します。PHYチップがクロックを入力するタイプならばFPGA内で50MHzを作り出して供給します。
それから、PHYの動作にはMDIOが必要ですが、XILINXのMDIOのInterface定義には誤りがあるのでそのままでは使えません。
下の図を見てください。MDIO_IとMDIO_OとMDIO_Tが、MasterとSlaveの両方で同じDirectionになっています。
そこで、上の図のようにMDIOの信号はバラして、独自のIPコア「phyutil」に入れます。
このコアは何をしているかというと、
inst_obuf : IOBUF port map (
I => zynq_mdio_o,
IO => phy_mdio,
T => zynq_mdio_t,
O => zynq_mdio_i
);
phy_mdc <= zynq_mdc;
と3ステートバッファを実装しているのと、PHYに送るリセットパルスを生成しているだけです。
これでZYNQのGMIIからEMIOを通じてRMIIに変換してPLのI/Oから出すことができるようになりました。
信号の数はリセットとクロックを含めて全部で11本。電源も含めて13本です。
一昨日実装が上がってきたCosmo-K基板のIBERT検査を行っています。
IBERT検査を行うのに、いままではXILINXのPlatform Cable USBを使っていたのですが、今回からSmartLynqを使うことにしました。
そうしたら、超快速!!!
2dのグラフを作るのに5分くらい待っていたのが30秒くらいで出るようになりました。もう、IBERT検査をするならSmartLynq一択ですね。
待っている間にFPGAが発熱で熱くなるのが嫌だったのですが、SmartLynqなら熱くなる前に検査が終わります。
1dはあっという間です。
なにげに10Gbpsで検査してアイが60%開いているこのCosmo-Kの基板もすごいです。
本日、住宅ローンの契約会が行われました。
金融機関から融資されたお金が口座に入って、それを自分で窓口で売主さんに振り込むのかなぁと思っていたのですが、そうではありませんでした。
売主、買主(私)、両方の不動産業者、司法書士、行員すべてが一同に会してなごやかな雰囲気の中で行われました。融資されたお金が口座に一度入るのではなく、口座に購入の残金(司法書士の手数料、融資の保証料、不動産の仲介手数料)を入れておいて、そこに融資のお金を追加し、前日に書いておいた支払依頼書によって粛々と支払いが同時に行われます。
それと同時に司法書士の先生が登記所に行って所有権の移転登記を行うという形でした。
融資と、支払いと、仲介手数料と登記がすべて同時に行われるというわけです。
これで晴れて夢のマイホームを手に入れたわけですが、35年間、働き続けなくてはならなくなりました。
完済するときには、FPGAは、JTAGは、どうなっているんでしょうね?
なお、まだ売主さんが住んでいるので引っ越しができません。しばらくは賃貸マンションのままかな。
今年度最後の大仕事。
新規基板の出図を行いました。9時までにガーバを出せば6層基板を24時間で作れるという超超特急の会社さんです。
BGAが3個でZYNQの乗った基板です。
前日に設計中のガーバを送って問題点のすり合わせなどをしていたので、本日のガーバを出して修正などはせず、そのまま作ることになりました。
ZYNQの484ピンって0.8mmピッチなのに電源がいくつもあって正直大変です。ViaのクリアランスがP板ルール(0.4mm)だと、DDR3の部分では1.5Vの電源のための島が分離されてしまって作れないです。みんなどうしているんでしょうね。
ZYNQの484ピンを使うなら、内層クリアランスが狭くても大丈夫な基板業者さんにお願いするか、できるだけIO Bankの電圧を変えない(3.3Vのみにする)といった工夫がいるかもしれません。
さあ、今週中に実装が完了した基板を手に入れることができるでしょうか。
果たしてDigikeyからの荷物は届くでしょうか。
入手困難だったKSZ9031Rを入手することができました。
Digikeyにも、Mouserにもなく、Chip1stopからは発注後に「ありませんでした」メールが送られてくるし、RSには当然のようになく、Avnet、ArrowにElement14、世界の隅々まで探したけれども見つからなかったKSZ9031Rが入手できました。
Microchip社のGigabitEtherPhyなのですが、なんとがメーカー直販をしてくれていたのです。DigikeyやMouserなどではいまだに数か月待ちの状態ですが、メーカー直で納期2週間程度で入手できました。これがないとCosmo-Zが作れないので本当にヒヤヒヤしていました。
(2015年まではMicrelの製品だったけど2015年11月以降はMicrochipに変わっている)
開けてみると箱。
開けてみると袋。
さらに開けてみると箱
その中にお目当てのICが入っていました。
厳重な梱包です。箱の中は導電スポンジの上にICが乗っていますが、蓋の部分にでっぱりがあって上からも押さえているのでカタカタしないようになっています。この梱包方法は参考になります。こういう半導体用の小さな箱ってどこで売っているんでしょうね。
今まで使っていたICと本当に同じものかどうかを見比べてみます。
温度グレードが違う(今回のほうが良い)だけでパッケージサイズも同じで、同じICなのでしょう。
入手できて本当に良かった。
Microchip社の製品が入手できなくてお困りの場合は、メーカー直販で扱っているかもしれないので、ぜひチェックしてみてください。
Kintex-7を使った画像ミックス回路ができました。
使ったボードは、ここにあるCosmo-K DVIというもの。
中身は下の図のような構成になっていて、HDMIから入力した画像と、DDR3メモリ上にある画像を演算して、その結果を(DDR3メモリにいったん書いて)出力するというものです。
アプリは下のような感じです。
PCを2台用意して、1台目のPCでyoutubeを流し、それをHDMIでモニタに表示しつつ2台目のPCからUSB3.0でキャプチャしたりしています。
最近、C#のスレッドとinvokeを覚えたので、マルチスレッドの中からUSBを操作するテクニックもわかってきたので、静止画キャプチャだけでなく動画を流すということもできるようになりました。
この装置で何ができるかというと、例えば、下の図のようなリファレンス画像を用意して、
似たような動画を流したとします。
その差分画像や、
加算画像
混ぜ混ぜした画像などを
リアルタイムに作り出すことができます。
本当は動画の差分を見るのではなくて、画像に差分が生じたときのいろいろな計測に使うことが目的です。
そういうのを監視するのが目的です。
この回路の肝心要となる部分は、上の図で黄色で書いた演算回路の部分が、
vout_calcdata <= vinf_dout when (calc_mode = "000") else
add8x3(vinf_dout, memf_dout(23 downto 0)) when (calc_mode = "001") else
sub8x3(vinf_dout, memf_dout(23 downto 0)) when (calc_mode = "010") else
lattice_img(vinf_dout, memf_dout(23 downto 0), vin_count(0), vin_line(0)) when (calc_mode = "011") else
memf_dout(23 downto 0);
と、単純なVHDLで書かれていることにあります。
ここのadd8x3やsub8x3はVHDLの単純なfunctionなので、VHDLが分かれば誰でも任意の演算に書き換えができます。
もちろんHLSを使えば一瞬でできることかもしれませんし、おそらくそういうIPも既にあるでしょう。しかし、HLSが使えるのは相当ハイレベルなエンジニアだと思います。HLSはよくわからないけど、普通のVerilogやVHDLは使えるというエンジニアはまだまだ大勢いると思います。
私もHLSは使いこなせません。なので、生のRTLで書いたコードに多少の価値はあるものと思っています。
それから、一つ気が付いたことというか、思い出したことですが、XILINXのFIFOは出力部分にセレクタが入っているので、200MHzとかのクロックで動かすのはきついですね。FIFOの出力を演算して、AXI Streamに入れるとタイミングがきつくなります。
FIFOに「レジスタを挿入する」というオプションがあって、それを使うとタイミングが改善できますが1クロック遅れてしまいます。そうするとAXI Streamでは扱えなくなるので難しいところです。
特電のArtix-7ボードではコンフィグ用のSPI ROMにWinbondのW25Q128を使っていました。ISEのころはこれでよかったのですが、VivadoがWinbondに対応していないので、Vivado対応を思って今回のロットからSpansionのS25FL128LAGMFV010に置き換えて製造しました。
※ちなみに、特電のArtix-7ボードはUSBから専用ツールでSPI ROMに書き込める(しかもVivadoよりもずっと高速)ので、これでも不都合は特にない
ところが、なんということでしょう!
ツールからSPI ROMを認識しないのです。
IDCODEなどがFFFF・・ということはMISOが常に'1'なのでしょう。しかしオシロで触ると'0'になります。
結論としては、Aritx-7ボードのSPI ROMは1.8Vで、今回使ったS25FL128LAGMFV010が3.3V用のSPI ROMなので電圧が合わなかったということでした。
とりあえずはW25Q32を実装することで再び認識させられるようになりましたので、とりあえず、今日の出荷は間に合いました。
今後のことを思って1.8Vで使えてVivadoに対応している128MbitのROMを探してみると、ディスコンだったり品切れしていたりして、使えるものがほとんどないのです。
※ちなみに、Vivadoが対応しているROMの一覧はD:\Xilinx\Vivado\2019.2\data\xicom\xicom_cfgmem_part_table.csvにあります。
入手できるのは、ISSI IS25WP128-JBLEとCypress S25FS128SAGMFI101くらいでしたので、早速Digikeyで取り寄せてみることにします。
FPGAに作りこんでいたビデオ演算回路が動くようになりました!!
このような回路です。
先日、メモリから読み出した画像が乱れていたのはDDR3の帯域が足りなかったためでした。DDR3自体は6.4GByte/sの帯域があるのですが発熱を抑えるため今回は半分の800MHzで動かしているので帯域は3.2GByte/sとなります。
HDMI 1080pの画像は148MHz×24bitなので445MByte/sあれば足りるのですが、実際には32bit幅でないと扱いにくいので無駄な1バイトを付けて32bitにしていることと、システムが200MHz動作なので、結局のところDDR3の読み出しや書き込みは画像ポート1本あたり800MByte/secを使うことになります。
これでも余裕で足りるはずなのですが、DDR3はたまに遅くなる(リフレッシュとかMIGが詰まったり?)ので、DDR3から読み出すところのFIFOを深くしたり、ビデオのタイミングを待たずにどんどん読み進めていったりしないと間に合わなくなっていたようです。
こういったバグを見つけるポイントは、DDR3から読み出したデータを入れるFIFOがFULLやEMPTYを出していないかどうかを監視することです。
さて、できあがった回路の成果ですが、別のPCでYoutubeを動画流してキャプチャしてみたりします。
まず、元の画像
緑と青のグラデーション画像をDDRメモリにアップロードして、この画像と演算させてみます。
足し算。
引き算
1画素ごとにミックス
このようなことがリアルタイムにできるようになりました。
HLSを使えば楽なのでしょうが、私はRTLでやっています。
住宅ローンの本申し込みをしてきました。
仮審査には通っているので、本審査で必要なものは
でした。確定申告書の写し等は求められませんでした。
巷でいわれているとおり、信金や銀行の住宅ローンでは仮審査で実質的な審査を行い、本審査ではその確認を行うというようです。
つまり、本審査は、仮審査で提出した書類が本当であるかどうかを確認する程度のようです。課税証明書や納税証明書という公的な側から、確定申告書や会社の決算書の内容が本当かどうかを確かめるというようです。一週間くらいで結果が出ますとのことでした。
仮審査の書類で嘘を書いていたり、その間にカードローンを作っていたりしなければ、本審査で落ちることはほとんどないというのは本当なのかもしれません。
火災保険というのが意外と高く、諸費用は総額で360万円くらいになりました。
Diodes Inc. (旧Pericom)のクロックドライバを使っている基板の注文が入ったので、3月中に8台製造することになりました。
クロックドライバといってもPCI Expressのクロックドライバで、PI6PCIEB24ZDEXというICです。
使用目的としては、Kintex-7に入れるPCIe Clockをバッファするわけなのですが、本来ならKintex-7はPCIe Clockを直接受けられるのでこんなドライバICはいらないのですが、PCI ExpressにおいてPCのマザーボードとFPGAとの相性の問題と思われる事例が意外とある気がしているので、クロックドライバICをいれたいと思っています。
FPGAの起動中にGTXのCLK入力がどうなっているかとか、気になりませんか?FPGAのコンフィグ前後でCLK端子のインピーダンスが変わったりすると、マザーボードにその変化が伝わってしまう。ボードの動作中にFPGAをコンフィグしたらPCがハングアップしてしまうとかを避けたい。
ただ、世界的に電子部品の供給が不足している中で、この規模の基板の部品を1週間前後で漏れなく集めることは、かなり大変な仕事です。
私の場合はDigikeyにないことがわかったら、Chip1stopを探しRSを探します。それでもなければMouserを探します。
幸い、Mouserに在庫を見つけられたので注文をいれたのですが
後から「この部品は在庫がなかった」というメールが来て、結局入手できませんでした。3500個買わないといけないようです。
ディストリビュータの在庫がない場合、メーカーのホームページを見ると直販をしていることがたまにあります。TIとかCypressとかMicrochipは直販をしています。
なのでDiodes Inc.のホームページに行ってBuyを押し、フォームに入力してみると、翌日に日本の代理店から電話がかかってきました。
聞かれたことは、
「量産の予定はあるか?」「年に何個必要なのか?」「何に使うのか?」「いつごろほしいのか?」
などです。
欲しいのはせいぜい10個くらいですよ。量産?10個が量産ですよ。
もう勘弁してほしい。そういう会話をしたくないからDigikeyやMouserやChip1stopで買うんですよ。
だいいち日本の電子部品商社っていうのは在庫を持たない。顧客から言われてメーカーにMOQ(最低ロット数)で発注するだけ。在庫は持ちたくないから小売りはしない。だから納期は半年とかかかるし1個で買えない。そんな商社に何の存在価値があるのでしょう。
だから、みんなDigikeyとかMouserとかChip1stopで買うんですよ。
そこんところをわかってほしいですね。
会話なんてしたくないから、Web上で注文して2日後に届くDigikeyをみんな使うんですよ。1個から買えるし、待たされない。
で、翌々日にまた電話が来ました。
「3500個からでないと販売できない」
だそうです。それならMouserから買うわ。と言っておきました。
幸いなことに、Diodes Inc.に問い合わせた日に特電の社内在庫を検索してみたら、在庫ありと出てきました。
2018年に20個購入して、残りは8個あるようです。
うーん、なんか計算が合っていないな。Cosmo-Zで2個使ったことになっているけど、Cosmo-Zではこの部品は使っていない。
棚卸データベースでも8個あるとされています。
Cosm-Kの残部品の中にあるようなので、探してみると・・
あった!
恐る恐る中身を開けてみると・・
6個ありました。
数が2個足りないけど、とりあえず今年度で受注している分の製造には何とか間に合いました。
次回からはDiodes Inc./Pericomの石はできるだけ使わない設計に変えていきたいと思います。
AXI Streamで送られてくるVideo信号同士を演算する回路を作ろうとしています。
元になるのは、HLSで作ったこの回路。
これと同じような動作をする回路をRTLで作っていきたいと思います。
まず、RTLでAXI4のReadトランザクションを発行させるわけですが、これをVideoタイミングに合わせて発行させてみたいと思います。
AXI-S Videoでは、ラインの終わりはLASTが、フレームの最初はTUSER(0)が上がるのですが、ラインの最初はわかりません。前にLASTが来たかどうかを見ていなければならないので面倒くさいんですよね。
で、ラインの先頭が来るタイミングに合わせてDDR3メモリのリードトランザクションを発行してみました。
結果は、AXI Streamで送られてくるデータよりも早く読み出しが出来ていました。それが次の図です。
tin_validはVideo入力からのデータがあることを示しています。m_axi_rvalidはDDR3メモリからの読み出しのValidです。tin_validはトグルして入ってきますがrvalidは固まってやってきます。当然といえば当然ですがVideoタイミングに合わせたメモリの読み出しは十分に可能です。
次の図は、フレームの先頭部分を拡大したものです。
vin_tvalidとvin_tuser(0)が同時に入ってきていますね。データを20個くらい送った後は4:1くらいの比率でtvalidが立つようになります。
次の図はDDR3メモリの読み出し波形です。
変なところにlastが出ていますね。ここだけではなく、最初の波形を見てもわかるとおり、関係ない個所でLASTが立ちまくっています。ですが、基本的にはvalidが'0'の時のLASTは意味を持ちませんので無視します。AXI Interconnectの都合で、他のマスタがトランザクションを発行した場合の他社へのLASTが漏れてきているのかもしれません。
validが'0'の時のLASTは意味を持たないというか、むしろ有害なので無視しなければならないことがわかります。
最近のコメント