Tang-NanoでAnalyzer Oscilloscopeを使ってみる

#目的
　Tang-Nanoと言うボードが去年(2019)の終わりごろに売り出されていた。
　一年近く立っており、今更気が付いた訳ですが。
　乗っているFPGAの規模は1152LUTと書かれているので、xilinxのxc6lx9の1/5位て所かな。
　但しLUT4なので、xc6lx9がLUT6なのを考慮すると1/8位ってとこ。
　ＣＰＬＤに比べれば大容量、でも大げさな事は出来ないだろうな。
　6502とかZ80なんか入りそうにないので、遊びどころが狭くて苦しいな。
　しかし、何この値段。
　s**でのボードの値段は535円、m**でのチップ一個より安いじゃないか。
　◆◆◆　よし、チップ単体より安いボードを使ってみよう　◆◆◆
　まあ、サポートとか輸送費等も考慮すると、一概に高い安いとかの判定はつけられないだろうが。
<img width="400" alt="Tang-Nano" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/acf5ed19-9258-9869-d344-b231118d2990.jpeg">

#経緯
　流石に日本国内では535円では買えないので、適当にチョイスして購入(800円)。まあ、値段は許容範囲かな。
　ハードはUSB TYPE-Cでつなげるだけ。ドライバーはソフトと一緒に入ってくる。
　ソフトの導入は、Tang-Nanoで検索すればやり方が出てきた。
　[SiPeed Tang Nanoの環境構築(Windows編)](https://qiita.com/tomorrow56/items/7e3508ef43d3d11fefab)を参考にした。
　ただ、管理者モード云々の記述が有るが、しなくても書き込みは出来た。
　　※Programmer -> Edit -> Cable Setting -> Cable -> Cable SettingのFrequencyが2.5MHzに設定されていた。
　ライセンスは上記に書かれている、- server address 45.33.107.56　- port: 10559　で動作するはず。
　　※LANケーブルを外すと使えなくなる。外部サーバに頼るのはアマチュアと言えど一抹の不安が...。
　サンプルプロジェクトも上記に書かれている。[Tang-Nano-examples](https://github.com/sipeed/Tang-Nano-examples)
　　※但し一つ注意が必要です。
　　　某所で買ったLCD(JST-4300-E3V03)はクロックが10MHz前後。
　　　サンプルは33MHZ動作なのでそのままだと、うすボケ表示となる。まあ写れば動作は出来ているとは言える。
　　　修正にはPLLのクロックを10MHzにすれば良し。
　　　Tools -> IP Core Generator の画面で、Target Deviceの横のフォルダマークをクリック、gowin_pll-> gowin_pll.ipcを選択。
　　　IP Customizationの画面が開くので、CLKOUTDの EXxpected Frequencyを10にして再コンパイルすれば治る。

　これだけでは、ここに書かれた情報なんか要らないと言われると悲しいので、よそ様ではあまり書かれていないAnalyzer Oscilloscopeについて少々解説したい。
　Analyzer Oscilloscopeて何ですかと言われたら、signaltapやchipscopeみたいなものですと言っとこう。
　ＦＰＧＡの動作信号をパソコン画面に表示してくれる優れもの、追加ハード無し、無料で出来まっせ。
　その道のプロはシミュレーションで動作検証するらしいが、素人では環境構成方法がむずかしく、そこで躓く。
　アマチュアは、直接FPGA君にお伺いします。但し、LUTとかメモリを食うのが難点ですが。

#Analyzer Oscilloscopeの使い方
　Analyzerの使い方にはマニュアルが有ります。[Gowin Analyzer Oscilloscope](http://cdn.gowinsemi.com.cn/SUG114E.pdf)
　しかし、これ60ページ近くあり、しかも英語。(中国語バージョンも有った)
　そこで、斜め読みの結果を軽く解説。判らなければ、原本を読んでくださいと言っておこう。
　これを使うには、次の様な操作をステップを踏んで実行します。
#１．gaoファイルの作成。
　予めソースをコンパイルを実行しておく。
　1.1 File -> Newで GAO Config Fileを選択してOK。
　1.2 ダイアログが現れるので、そのままNEXT。
　　※Liteを選択するとトリガなしになるが、LUTの消費が減るのでGW1Nには嬉しいかも。
　　　今回の場合、Standard = 512LUT　Lite = 162LUTという結果になっている。
　1.3 Nameにファイル名を適当に設定してNext
　1.4 FinishでDesignビューに***.gaoが出来ているので、選択する事により編集操作が可能となる。
![Image2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/502ac45b-143e-f3d6-19ce-ba8c37d7dbfe.jpeg)

#２．gaoファイルの編集。
　***.gaoの選択でTrigger OptionとCaputure Optionの設定が可能となる。()内は取り合えず設定した内容。
　2.1 Trigger Option
　　３箇所の設定が必要、ダブルクリックでダイアログが開くので設定入力。
　　1)Trigger Ports　　「＋」クリックでSearch Netsが開くので、トリガ信号を設定("counter[10]"を指定)
　　2)Match Units  　　トリガ条件を設定(Match Typeを"Basic w/edges"とし"counter[10]"がValue"R"で立ち上がりトリガ！の設定となる)
　　3)Expressions　　　トリガ条件の組み合わせ(ここは取り合えず"M0"だけ)
![Image7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/40d85fa6-9925-715c-6ab4-40f397ae0d2b.jpeg)
　2.2 Caputure Option
　　1)Sample Clock　　キャプチャーの基準となる信号を設定(sys_clkを指定)
　　2)Capture　　　　キャプチャー幅を設定(サイズは256、位置は128で中央でトリガ)
　　　　　　　　　　　　※これを増やすと解析しやすくなるが、利用できるメモリが無くなる。
　　3)Capture Signals　表示する信号(counter[0]-[3],[10]を指定)
![Image6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/a58d90b9-6513-f995-6cf6-34e17482dea4.jpeg)
　2.3 設定完了したらコンパイルを実行する。
　2.4 Tools -> GOWIN Analyzer Oscilloscopeで、Oscilloscope画面が開く。

#３．Analyzer Oscilloscopeの実行
　3.1 Enable Programmerをチェックするとプログラマー画面がプルダウンする。
　3.2 書き込み釦(右端)を押す。上に有る赤かったPlease...が緑のReady...に変わる。
![Image2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/d8779b29-bb46-3f31-8348-5c74fae72b2d.jpeg)
　3.3 実行釦(三角)を押すと、実行中に変化。
　3.4 トリガがかかると、キャプチャー結果が表示される。
　3.5 拡大縮小(+-...)釦も活用して波形を確認。
![Image3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/368840ff-3ccc-a4a9-e8d2-92214c521b97.jpeg)

#Tang-NanoでのAnalyzer Oscilloscopeの評価
　1.このお値段で、この機能は秀逸だと思う。
　2.シミュレーションの知識不要で、実機の信号が確認可能。
　3.信号が目に見えるので、ロジックの動作が非常に判りやすい。
　4.signaltapやchipscopeを使っていれば、操作性にさほど違和感はない。
　5.この程度の単純な設定で、約500LUTとメモリ1Blockを使用。GW1Nにはちと荷が重いかな。
　　※Liteに設定すれば162LUT、これぐらいなら使えるかもね。
　　　但し、トリガが効かなくなるので、キャプチャーは運任せ。
　　　一本でいいから、トリガソースを用意してほしいな。
<BR>
#感想
　元々GW1N単体で纏まった処理をするのは無理で有り、マイコンに任すべきだろう。
　GW1Nは10-200MHzの高速信号を処理して、マイコンに渡すような役回りだろうが、アマチュアには使いどころがなかなか難しい。
　しかし、この値段とAnalyzer Oscilloscope機能を前面に押し出して、FPGAの啓蒙に使えないかな。
　電子回路の教育用として、技術教育に売り込めばいいのに。なんせこの値段なんだから売り込みやすいだろうに。
　口で説明するより、実物はインパクトが有るよ。更に拡張性も十分だし。
　しかも、最初に使ったＦＰＧＡを、将来も使う可能性はかなり高いだろう。
　まあ、ドライバーとライセンス管理には、再検討が必要かも知れないが。
　なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。