カテゴリ:本・映画など( 309 )

トラ技

micro:bit の特集があったので買ってみました。
MicroPython に手を出すかどうかは微妙ですが…
f0054075_00221396.jpg

[PR]
by tom01h | 2018-04-13 23:59 | 本・映画など | Trackback | Comments(0)

信長の忍び

13巻が出ました。DVD がなかなか追いついてきませんねぇ。4月からアニメ3期やるみたいです。
f0054075_19153635.jpg

[PR]
by tom01h | 2018-03-30 20:14 | 本・映画など | Trackback | Comments(0)
数日前の途方に暮れていた時に、藁にも縋るつもりでぽちった FPGA マガジンが届きました。
やっぱり特集じゃないと頁少なくてわからない人にはわからない感じですねぇ。
時間が出来たら、VivadoHLS の勉強でもしよう…
f0054075_17023036.jpg

[PR]
by tom01h | 2018-03-26 00:00 | 本・映画など | Trackback | Comments(0)
17年8月号の焼き直しだそうな… 気づかずに買ってしまった。
まぁ、持っている訳じゃないから良いんだけど、もともと1000円が2600円って…
目次を見ただけだけど、内容は面白そうです。
f0054075_20264269.jpg


[PR]
by tom01h | 2018-02-28 21:26 | 本・映画など | Trackback | Comments(0)

Interface 1月号

Arty Z7 で PYNQ の環境が動くって話が載ってました。
他にもいろいろ Arty Z7 の情報が載っていて面白そうです。
f0054075_21304516.jpg

[PR]
by tom01h | 2017-11-29 21:34 | 本・映画など | Trackback | Comments(0)
サイズを変えるたびに、フレームバッファ読み出しアドレスのインクリメントの大きさを更新し忘れます。
今回はソフトの方もピクセルサイズを short から int にするのを忘れていました。
両方直すと動きました。
f0054075_21301185.jpg

しかし、とにかく接触が悪い。
次はコネクタの向きを間違えないで、もっとうまくはんだ付けする。

[PR]
by tom01h | 2017-11-24 21:35 | 本・映画など | Trackback | Comments(0)
Pmod HDMI OUT を使って、FPGA プログラミング大全 の Appendix II-1-3 の Arty で MicroBlaze と MIG を使ったディスプレイ表示回路を試します。
サポートページ にあった display.tcl の vivado と clk_wiz と microblaze のバージョンを変更して無理やり実行します。
display IP は、PYNQ 用の XGA のやつを持ってきます。
そして Arty Z7 の時 と同じように RGB to DVI IP を接続します。
こんな感じになります。
f0054075_22545650.png
んで、流してみると盛大に FIFO アンダーフローしたので 1280x800 の時のやり方 で、display IP のリクエストポートを 64bit 化します。
なんか FIFO がアンダーフローもオーバーフローもしているように見えます。
とりあえずスタート地点には立てたかな?って感じです。
f0054075_22570668.jpg

[PR]
by tom01h | 2017-11-23 23:46 | 本・映画など | Trackback | Comments(0)
前回は 1024x768 出力だった Arty Z7 の HDMI out の1280x800 に挑戦していますが、なかなかうまく出来ません。→ 出来ました
まずはディスプレイの各種パラメータをいじってから流してみたら
disp_fifo がアンダーフローしてまともな表示になりません。
それならと、DDR の読出しを高速化すると fifo アンダーフローはなくなったみたいですが、
まだ表示はおかしなままです。
で、問題のありかがさっぱりわからなくなりました。
そんなわけで、解像度はそのままに、DDR の読出しだけ高速化してみたいと思います。

1280x800 を表示するために必要な転送速度は、平均で
1280x800x4x60 = 246MByte/sec

Arty Z7 の DDR の転送速度は、理論値の最速で
1050MHz x 2(DDR) x 16bit = 4.2GByte/sec

最大と平均の違いがあるからっていくらなんでもここがネックになるとは思えません。

display IP のマスタポートの転送速度は、理論値の最速で
100MHz x 32bit = 400MByte/sec

ここがネックの可能性が高いでしょう。
いろいろネットを漁ってみると、Zynq の HP ポートは 250MHz 64bit幅が理論値の最速みたい。
周波数を上げるのは大変そうだけど、バス幅なら…

ということで、64bit 幅にしたいと思います。
バスの幅を広げて、バスプロトコルも広げて、アドレスインクリメントのステップも2倍にします。
fifo を 48bit ライト、 24bit リードに変更します。書き込み側の段数はそのままで良いかな。

上手く行かない…
面倒ですが、24bit 幅の fifo を 2個インスタンスして、自力で切り替えながら使ってみると上手く行きました。
賢いはずの fifo IP をうまく使いこなせていないみたいです…

まぁ、これでいい事にして、WXGAに挑戦です。

各種パラメータは
localparam HPERIOD = 11'd1680;
localparam HFRONT = 11'd72;
localparam HWIDTH = 11'd128;
localparam HBACK = 11'd200;
localparam VPERIOD = 10'd831;
localparam VFRONT = 10'd3;
localparam VWIDTH = 10'd6;
localparam VBACK = 10'd22;

ピクセルクロックの生成は83.5MHzが欲しいので
100×41.75÷5÷10

もう一個、71Mhzの別のパラメータがあったんだけど、そっちでは動きませんでした。
f0054075_23460531.jpg


[PR]
by tom01h | 2017-11-17 23:51 | 本・映画など | Trackback | Comments(0)
9章の本題 同様に、課題の方にも PYNQ 用のサンプルがあって、そのまま実行すればいいはずなんです。
なのに、すごく手間取りました。Xilinx SDK の使い方難しすぎ。
これだけ出れば十分かと思ったけど、別のディスプレイにつなぐと表示されません。インチキ臭い繋ぎ替えがいけないんでしょうかね?
[追記 HSYNC と VSYNC がネガポジ反転しているみたいです。そこを直して、RGB2DVIの入力データはRBGの順にして、ポート接続を無理やりねじっているのも元に戻すとちゃんと表示できました。たぶん… ちゃんと確認できたら過去の9章まとめも修正する予定です。]
f0054075_21102307.jpg

[PR]
by tom01h | 2017-11-06 21:36 | 本・映画など | Trackback | Comments(0)
Arty Z7 で FPGA プログラミング大全 の9章のグラフィック表示回路を設計します。
サポートページ の PYNQ 用設計データを参考にして HDMI 出力のできる回路にします。
f0054075_01205104.jpg
要点
サポートページのデータはEdgeではダウンロードできない。
display と ZYNQ の間を自動接続すると AXI SmartConnect になるので、AXI Interconnect に変更する(Vivado 2017.2)。
disp_fifo は 24bit 幅の 1024 段に設定する。
RGB to DVI Video Encoder IP には RBG の順でデータを入れる(RGB to DVI 1.4)。
RGB to DVI Video Encoder IP の出力とポートの接続時に、データのビット0とビット1を交差させる(RGB to DVI 1.4)。
RGB to DVI Video Encoder IP の設定は MMCM のほうが良いみたい。
display IP と RGB to DVI の間で HSYNC と VSYNC の極性があっていない。

準備
FPGA プログラミング大全を買う。
サポートページ から PYNQ 用設計データをダウンロードする。
Digilent の IP を ここ からダウンロードしてきて、Installation に書いてある通りにインストールする。

実装
いろいろとすっ飛ばして 9-2-2 から始めます。コードの入力も自分ではやりません。本に書いてある通り進みます。
で、最初に本の内容から変わるのはグラフィックス IP に FIFO を追加するところ。
PYNQ 用の説明にある通り、FIFO は 24bit 入力、24bit 出力です。
PYNQ のデータの中に準備してくれているようにも見えるけど、これ(disp_fifo)は消しちゃって自分で生成します。
IP Catalog から FIFO Generator を選びます。図9-11 を参考に作りますが、少し違って 24bit 幅、深さ1024 の FIFO を作ります。
Add Sources で disp_ip の 下にできた src/disp_fifo/disp_fifo.xci をファイルのコピーなしで追加します。
これって自動で追加してくれないんですかね?
f0054075_20260115.png
また本の記述に戻ります。グラフィックス IP を組み込んで自動配線をするのですが、ディスプレイ IP と ZYNQ が AXI SmartConnect で繋がれます。互換性あるって書いてあるのですが、なんか怪しいので AXI Interconnect に取り替えます。AXI Interconnect の Master Interface 数は 1 に変更します。
GPIO をつないだ後は、当然ですが VGA 出力を出力ポートに接続しません。
PYNQ の資料を参考に RGB to DVI などを接続するのですが、以下の違いがあります。
RGB to DVI への入力は RBG の順です。
なぜかここをRGBの順からRBGの順に変えるだけで動かなくなります。まったく意味不明ですが、別のところで対策することにしました。
RGB to DVI の設定は MMCM を使用しました。
display IP と RGB2DVI は HSYNC と VSYNC の極性があっていないので、間にインバータを挟みました。
出力ポートは Create Port を使って、自分で作成しました。
全部できるとこんな感じです。
f0054075_21302586.png
Synthesis, Implementation と進んで、ポートを以下のように接続します。
f0054075_21261510.png
また Systhesis からやり直し?いつもこうやっているけど、この手順しかないのかな?

動作確認
ここから先は PYNQ のデータを使って、本に書いてある通りに実行するだけです。

ずいぶん強引な対策をしたので、この絵以外でもちゃんと動くのかはよくわかりません。
それにしても映り込みがひどい液晶です。
f0054075_01212162.jpg

[PR]
by tom01h | 2017-10-31 23:18 | 本・映画など | Trackback | Comments(0)