2017.03.30
2017.03.29
FPGAでHDMIの入力をする
Cosmo-K DVIでHDMI入力をする方法を考えています。
全部自分で作るのは大変なので、ZYBOのHDMI INプロジェクトを参考にします。
プロジェクトの生成は以下の手順で行います。
① DigilentのサイトからプロジェクトファイルZYBO-masterをダウンロードしてくる
② VivadoにDigilentのボードファイルをインストールする
③ Vivado 2016.2のコンソールでtclを実行する
tclを実行するには、vivadoの下にあるTcl Consoleで、
source ./ファイル名
とします。なるほど、sourceか。
の3つの手順が必要で、これを理解するのに3時間くらいかかりました。
ZYBOのプロジェクトはZYNQのものなので、ZYNQコアのほかいろいろ入っています。
Cosmo-KはKintexなので、ZYNQまわりをいろいろ削除することになります。まずはHDMI入力が可能かどうかを調べたいだけなので、VGA出力も含めてざっくりと削除します。
HDMI入力プロジェクトはZYBO上では動作して、1080pでもHDMI→VGAの出力はできたのですが、Cosmo-Kに移植したときにはうまく動きませんでした。
どうやら、DigilentのHDMI入力コアは、信号のパターンをデコードできてロックが取れない場合は、同期信号も映像信号も何も出さないようです。
その後、アルバイトさんが頑張ってくれて、Cosmo-Kの片方のHDMI入力ポートでは動作したのですが、もう片方のポートでは動作しないとか、いろいろ不安定です。
なぜZYBOではうまく動くのか、なぜCosmoKではだめだったのかを今後追求していくことになると思います。
2017.03.28
HDMIのパススルー失敗
Cosmo-Kで、HDMI入力を試すために、HDMIパススルーなるものを作ってみたのですが、うまく動きません。
回路的には、IBUFDSとOBUFDSを直結した感じです。
D0InputBuffer: IBUFDS generic map ( DIFF_TERM => FALSE, -- Differential Termination IBUF_LOW_PWR => TRUE, -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards IOSTANDARD => "TMDS_33") port map ( O => d(0), I => hdmi_in0_d_p(0), IB => hdmi_in0_d_n(0));
D0OutputtBuffer: OBUFDS generic map ( IOSTANDARD => "TMDS_33") port map ( I => d(0), O => hdmi_out0_d_n(0), OB => hdmi_out0_d_p(0));
こんな感じの回路なのです。
ただのバッファなのに、うまく動きません。
以前作ったHDMI出力回路と比べると、なぜかHDMI出力の振幅がめちゃめちゃ大きい。
I/Oレポートを見てもとくにおかしなところはないのですが・・
+------------+------------------+------------------+------------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+-----------+------------+-----------+----------+------+------------------+ | Pin Number | Signal Name | Bank Type | Pin Name | Use | IO Standard | IO Bank | Drive (mA) | Slew | On-Chip Termination | Off-Chip Termination | Voltage | Constraint | Pull Type | DQS Bias | Vref | Signal Integrity | +------------+------------------+------------------+------------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+-----------+------------+-----------+----------+------+------------------+ | A12 | hdmi_out0_d_p[2] | High Range | IO_L24N_T3_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | A13 | hdmi_out0_d_n[2] | High Range | IO_L24P_T3_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | A14 | hdmi_out0_d_p[1] | High Range | IO_L21N_T3_DQS_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | A15 | hdmi_out0_d_p[0] | High Range | IO_L23N_T3_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | B11 | hdmi_out0_cec | High Range | IO_L20N_T3_16 | TRISTATE | LVCMOS33 | 16 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | | B12 | hdmi_out0_scl | High Range | IO_L20P_T3_16 | TRISTATE | LVCMOS33 | 16 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | | B14 | hdmi_out0_d_n[1] | High Range | IO_L21P_T3_DQS_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | B15 | hdmi_out0_d_n[0] | High Range | IO_L23P_T3_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | C13 | hdmi_out0_clk_p | High Range | IO_L19N_T3_VREF_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | C14 | hdmi_out0_clk_n | High Range | IO_L19P_T3_16 | OUTPUT | TMDS_33 | 16 | | | | FP_3.3_50 | | FIXED | | | | NONE | | F13 | hdmi_out0_sda | High Range | IO_L15N_T2_DQS_16 | BIDIR | LVCMOS33 | 16 | 12 | SLOW | | FP_VTT_50 | | FIXED | | | | NONE | | L24 | hdmi_in0_d_n[0] | High Range | IO_L8N_T1_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | M24 | hdmi_in0_d_p[0] | High Range | IO_L8P_T1_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | N21 | hdmi_in0_clk_p | High Range | IO_L12P_T1_MRCC_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | N22 | hdmi_in0_clk_n | High Range | IO_L12N_T1_MRCC_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | N23 | hdmi_in0_d_n[1] | High Range | IO_L11N_T1_SRCC_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | P23 | hdmi_in0_d_p[1] | High Range | IO_L11P_T1_SRCC_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | R22 | hdmi_in0_d_p[2] | High Range | IO_L14P_T2_SRCC_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | | R23 | hdmi_in0_d_n[2] | High Range | IO_L14N_T2_SRCC_13 | INPUT | TMDS_33 | 13 | | | | NONE | | FIXED | | | | NONE | +------------+------------------+------------------+------------------------------+---------------+-------------+---------+------------+------+---------------------+----------------------+-----------+------------+-----------+----------+------+------------------+
やはり、HDMI出力はOSERDESを使って、ちゃんと作ってやらねばならないのかもしれません。
2017.03.26
2017.03.22
Kintex-7のマルチビデオボードが出来ました!
Kintex-7搭載のマルチビデオボード「Cosmo-K DVI」が出来ました。
9cm×7cmのサイズにHDMIを4個と、CSIカメラインタフェースを2個備えているほか、1GByteのDDR3 SDRAM、USB3.0なども搭載しています。
懸案だったDDR3メモリも、1600MHzで動作することを確認できました。つまり、DRAMのバス幅が6.4GByte/secとなるわけです。
HDMIが6ポートでも耐えられる帯域でしょう。
CSIのカメラインタフェースは裏面にあるのですが、
丁度良いコネクタがないので、現存するコネクタを少し加工して取り付けます。
すると、RaspBerry Piカメラなども接続できるようになります。
小型でたくさんのHDMIが使えます。ウェアラブルなステレオビデオ入出力+ステレオCSIカメラといった応用例を考えています。
2017.03.20
物理学会の付設展示会に出展しました
17日~20日に、大阪大学で行われた日本物理学会の付設展示会に出展しました。
プラスチックシンチレータとMPPCを16個並べた放射線センサから16本の同軸ケーブルを引っ張り出して、それをCosmo-Zに入れて、MPPCの波形をリアルタイムに表示するというデモを行っていました。
・・・
しかし、いくら待っていても、なかなかお客さんは来ません。
展示会場の場所も相当悪かったのですが、12時から14時くらいの間に数人来る程度で、1日あたり6人くれば上出来です。
そんな閑散とした展示会で大丈夫なのかと思うかもしれませんが、
一人ひとりのお客様のエネルギーがとても高い。
そういう展示会なので、出ないわけにはいきません。次回(宇都宮大学)もきっと出ることになるでしょう。
で、ほとんどの時間は無為に過ごすわけなので、私もアルバイトの学生さんも、いろいろな人の講演(発表)を聴きに行っていました。
Cosmo-Zを使った研究の発表や、Cosmo-Kを使った研究の発表もあった、何かの研究の役に立っていることが嬉しくなりました。
いろいろな発表の中で、「電子回路を作って計測してます」みたいなのを好んで聴いてきました。アルバイトさんは量子コンピュータとか量子エレクトロニクスに興味を持ったようです。
2017.03.15
応用物理学会2日目
今日も応物に来ています。
いただいた質問では、GTXのSerDesを使って、10Gbpsの任意信号を発生させられないか、というものがありました。
みんな、SERDESが好きですね。
SERDESを通信用以外の目的に、つまり任意波形の送受信に使えるかどうか試してみる価値はありそうですね。
応用物理学会の付設展示会、初日
今日から応物学会が始まりました。
特殊電子回路㈱は展示会場のブースAe-2で、Cosmo-ZとCosmo-Kを出展しています。
Cosmo-Zは16chのMPPCアレイにつないで、リアルタイムに宇宙線を見ています。
プラスチックシンチレータと、MPPCとプリアンプが入っていて、16本の同軸ケーブルでCosmo-Zとつなぎます。
得られた波形とスペクトラム(何もピークはないが)はリアルタイムに表示しています。
1日目は8名ほどのお客様がいらっしゃいました。
いただいたご要望では、1bitでいいから、とても(20Gbit/secくらいの)高速なデジタイザがほしいというものが多かったです。
つまり、FPGAのGTXにあるSERDESを使って作れるのか、という質問でした。
GTXのSerdesは通信用なので受信したパターンに何かしらの周期性が必要で、PLLをロックさせなければなりませんが、はたしてそのような計測用に使うことができるのでしょうか。
どうなのでしょう。私にもわかりません。
要望がある以上調査はしたいと思います。
2017.03.13
2017.03.10
超特急のところに基板を出図しました
今年度中に納めなければならない案件があるので、超特急で基板を作ってくれるところを探しました。
作る基板は、こういうもの。
18bit 8ch 5MHzのA/Dコンバータ基板と、マルチDVI/CSI 画像入出力ボードです。
いままでP社に頼んでいたのですが、金フラッシュとか細いパターンとかがあるため、ウルトラクイックにしても9日くらいかかり、値段も20万円くらいかかります。
そこで、ネットで「超特急」というキーワードを付けて探してみると、いろいろと短納期の基板屋さんが見つかりました。
6層基板で、このサイズで、6枚。金フラッシュ仕上げで実働2日。日本製で、来週の月曜日に発送してくれるところを見つけました。しかも価格はP社より安い。
これはもう、頼むしかないでしょ。
超特急だけではなく、日常の基板製造もお願いしたいくらいです。
2017.03.09
FPGAでCSI(カメラ)インタフェースを使う方法
HDMIを2チャネル入力、HDMIを2チャネル出力、CSIを2チャネルという、マルチカメラ入出力ボードを設計しました。
6層基板で、90mm×57mmのサイズに納まりました。中心にKintex-7のXC7K160T-2FFG656Cを配置し、1GBのDDR3メモリ、USB3.0などを備えています。
DDR3メモリは32bit幅で1600MHzで動きます。HDMIのFULL HDは1つあたり500MB/secの帯域が必要なので、6チャネルあっても大丈夫でしょう。
さて、CSIというのが、ラズベリーパイカメラのように、最近の標準的なカメラインタフェースとなっています。正確にはMIPI CSI D-PHYといいます。これをXILINX FPGAで使うためのI/Oの方法をまとめました。
① CSIの基本回路
CSIの基本的な入力回路を図に示します。
DP0/DN0、DP1/DN1、CP0/CN0という3本の高速差動信号が走っています。
② CSIカメラのクロックは、常にカメラから送る
CSIカメラはクロックとデータを送ってきます。FPGAからCP0/CN0へクロックを与えることはありません。CSIのクロック信号(CP0/CN0)は、FPGAは常に受信となります。
③ 高速差動信号は150Ωで終端する
DP/DN、CP/CNの高速差動信号は150Ωで終端します。
④ DP0/DN0は低速信号と共有される
DP0/DN0、DP1/DN1は高速差動信号で200mVの振幅ですが、DP0,DN0はシングルエンドの低速信号(ローパワーモード)としても使われます。
D0は低速信号を使う場合のため、100Ωの抵抗でこの2本の信号を分岐させ、FPGAの汎用ポートにつなぎます。(上の回路図では150Ωになっているのは間違い)
⑤ IOSTANDARDは、LVDS(2.5V)とHUSL12
高速差動信号はLVDS_25で受信できます。低速信号は1.2V規格の信号なので、HUSL12を使って受信します。HUSL12は1.2V規格のIOSTANDARDですが、VREFと比較してH/Lを決めます。FPGAは内部でVREF用に0.6Vを作れるので、外部からVREFを与えなくても受信だけならばできます。
⑥ VCCIOは3.3Vで良い
CSIで使用するDとCはLVDSやHUSLですが、LVDSは受信だけならば3.3V規格でも使えます。HUSLも内蔵VREFとの比較でH/Lを決めるので、VCCIOは何Vでも構いません。
そのため、IOSTANDARDは3.3Vでも可能です。
この基板にはさらにHDMIもありますが、LVDS_25(受信のみ)と、HUSL_12(受信のみ)と、TMDS_33(送受信)、LVCMOS_33は同一のI/Oバンクに共存できます。そのためHDMIの送受信と、CSIの受信は共存できるのです。
というわけで、総合すると上のような回路になります。
なお、GPIOやSCL、SDAなどは3.3Vでもいいようです。
2017.03.08
応用物理学会と日本物理学会の付設展示会に出展します
さて、来る3月14日から横浜で応用物理学会が、 3月17日からは大阪で日本物理学会が開催されます。
応用物理学会はみんなスーツを着ているけど、 日本物理学会はスーツを着ている人はいない、 などと言われていますが、本当ですね。
スーツを着ているのは業者だけです。
さて、これら2つの学会には展示会が付設されていて、 様々な実験機器や装置などを業者が展示しています。 特殊電子回路も、 「FPGAとADCを活用した高速DAQシステム」 ということで出展します。
今年は、
- 高速マルチチャネルADCボード「Cosmo-Z」
- 超高速1Gs/sのADCボード「HyperFADC」
- 光ファイバ搭載PCI Expressボード「Cosmo-K」
を展示します。
http://www.tokudenkairo.co.jp/jps2017.html
◆開催概要
●第64回応用物理学会
日時 3月14日(水)~17日(土) ※17日は内藤はいません
時間 9:30~18:00
会場 パシフィコ横浜
ブース位置 Ae-2
●日本物理学会 第72回年次大会
日時 3月17日(土)~20日(月) ※20日は内藤はいません
時間 9:00~17:00
会場 大阪大学 豊中キャンパス
ブース位置 B棟2階
なお、17日は2つの展示会が重なっていますので、17日は大阪でのみ出展する予定です。
20日は内藤は、会場にはいない予定です。
これらの製品は、放射線計測や核物理・素粒子物理実験などにお使いいただける、 高性能なFPGAボードとAD変換ボードです。
特殊電子回路は、皆様のご研究の内容を正しく理解し、 ニーズに合った高速・高性能かつ、最適なデータ計測取集装置を低予算でご提案させていただきます。
ぜひ、当日会場で、ご研究のお話をお聞かせいただけることを楽しみにしております。
◆ご来場の日時をぜひ、お知らせください
当社代表の内藤はできるだけ展示会場におりますが、 7日間の長丁場のため、あいにく席を外してしまっているかもしれませんし、 他の来客の接客中かもしれません。もしお越しいただけるのであれば、 下記のページのフォームから、おおよそのご来訪日時を予めお知らせいただければ幸いです。
ご予約をいただいたお時間に、貴殿をおもてなしし、 じっくりとお話をお伺いできるようにいたします。
http://www.tokudenkairo.co.jp/jps2017.html
どうぞよろしくお願いします。
最近のコメント