« 2016年4月 | トップページ | 2016年6月 »

2016.05.31

ZynqBerryでLinuxを動かす方法

ZYNQを搭載したRasiberryPi形状のボード「ZynqBerry」でLinuxが動くようになりました。

Trenzlinux9


どうやら、この1週間くらいの間にTrenz社でLinux対応が行われたようです。

やりかたは、まず、Trenz社のリファレンスデザインのページにあるDebian_8.4を開きます。

http://www.trenz-electronic.de/download/d0/Trenz_Electronic/d1/TE0726/d2/Reference%20Designs/d3/Debian_8.4.html

Trenzlinux

この中には

  • Flash
  • SD_Content
  • SD_Images

の3つのフォルダがありますが、まずはSD_Imageを開き、zynq-debian.img (Size 1.75 GB / Modified 24.05.2016 - 11:34:53 )というファイルをダウンロードします。そして、これをWin32_Disk_ImagerでSDカードに書きこみます。

Trenzlinux2

Linuxが起動するためにはSDカードにパーティションを設定しなければならないので、Windowsのファイルコピーではだめで、Win32_Disk_Imagerで書き込む必要があります。

パーティションは次の図のような構成になりますので、

Trenzlinux3

先頭のパーティションにSD_Contentフォルダにある2つのファイル

  • image.ub (Size 3.38 MB / Modified 25.05.2016 - 10:21:07)
  • system.dtb (Size 20.57 KB / Modified 25.05.2016 - 10:21:07)

を書き込みます。

また、ZynqBerryのFlashROMにはFlashフォルダにある

  • BOOT.BIN (Size 1.39 MB / Modified 24.05.2016 - 11:22:00)

を書き込んでおきます。
※FlashROMに書き込むのは面倒な手順があるので、それは別途書きます

そうして、基板上のP1をショートしてリセットすると・・・

Trenzlinux4

このようにFlashROMからU-Bootが起動して、SDカード上のファイルを読みにいきます。

途中から激しく文字化けしたり

Trenzlinux5

IPV6がどうのといったWarningが山ほど出ますが、

Trenzlinux6

最終的にはDebian GNU/Linuxが起動します。

Trenzlinux7

Debianだからapt-getができるのが嬉しいですね。

apt-get installでemacsをインストールしてみました。個人的には、emacsが使えるのが有難いです。viなんていう使いにくいエディタで各種の設定ファイルを変更しなくていいのですから。

Trenzlinux8

このLinuxがどれほど使えるかは、明日、インターンの学生が来たら試してもらうことにしましょう。

| | コメント (0)

2016.05.30

日本語のデータシートのご注意で本当に注意だった件

アナデバのAD8253というOPアンプ(インスツルメンテーションアンプ)があります。

Ad8253_1

このICは、A1、A0の端子の設定で、ゲインをx1,x10,x100,x1000と変化させられる便利なアンプです。WR#端子は書き込みのストローブです。

拡張用18bitADCボードで使っているのですが、A0,A1を変化させてもゲインが変換しないという不可解なバグに悩まされました。

日本語データシート(Rev.A)によれば、ディジタル端子のスレッショルドは1.2V以下がLで1.5V以上がHとのことでした。

ところが、1.8V規格のロジック信号を与えているのに、どうも効いている気がしません。

Ad8253_2

英語版データシート(RevB)によれば、なんと、スレッショルド2.数Vに変更されているではないですか!!

Ad8253_3

どうりで1.8Vロジックでは動かないわけです。

メーカーのページには、「日本語データシートは最新版ではないからご注意ください」のような注意が書いてあることがありますが、本当にご注意でした。

| | コメント (0)

2016.05.26

MITOUJTAGのロジアナ波形をエクスポートする方法

アルバイトさんが、MITOUJTAGのロジアナ機能を使って取った波形をEXCELにエクスポートする方法を考えてくれました。

やりたかったことは、18bitのAD変換ボードのA/D変換結果をグラフにしたかったというものです。

まず、MITOUJTAGの内蔵ロジアナを使って、FPGA内部の波形をキャプチャします。

Mjwave_1

一番上の正弦波のようになっている信号が、ADCから受け取った波形です。

十進数にしてみるとこんな感じです。

Mjwave_2

この波形をエクスポートしたいと思います。

まず、MITOUJTAGの画面左で、ツリーになっているところにあるロジアナ波形を右クリックして、エクスポートを選びます。

Mjwave_3

そうしたら、vcdファイルの形式でエクスポートします。

VCDというのは、Value Changed Dumpの略で、標準的な波形記録フォーマットです。

Mjwave_4


VCDファイルはテキストで、このような感じになっています。

Mjwave_5

VCDは、信号名を謎の記号に変換しますが、2進数の部分はこう書かれるようです。

Mjwave_6

こういうのをひたすら集めて、テキストエディタで置換すると

Mjwave_7_2

MITOUJTAGのロジアナで得られた波形をこのようなテキストに落とせるとのことです。

Mjwave_8

ちょっと大変ですが、専用のキャプチャ用アプリを作らなくても、FPGAの中でバスに出ていれば、それをMITOUJTAGで取り込んで他のアプリにエクスポートできるので、開発途中では便利な方法だと思います。

| | コメント (0)

2016.05.24

ZynqBerryをLEDチカチカして、JTAGで観察してみた

今、話題沸騰のZynqBerryをLEDチカチカさせてみます。

本来の使い方では

  1. VivadoでPLとPSを作る
  2. 起動ファイルを作る
  3. フラッシュROMに書き込む

ということになるのでしょうが、2や3の手順はZynqBerryの専用のツール(CMDファイル)を使うようなので、動かない場合にどこで間違えたのかがわからなくなってしまいます。

そこで、今回はMITOUJTAGを使ってPLだけ書き換えてみようと思います。これならBitファイルが出来ているのか、その後の工程で間違えているのかの切り分けが簡単です。

Zynqberry0526

まず、ZynqBerryにMicroUSBをつなぐと、FT2232Hのドライバがインストールされます。

ドライバは下記のURLにあります。

http://www.ftdichip.com/Drivers/VCP.htm

このFT2232HはDigilentのUSB-JTAGを構成しているので、使用するためにはDegilent Adeptをインストールし、再起動します。

http://store.digilentinc.com/digilent-adept-2-download-only/

これで準備OKです。

MITOUJTAGを起動したら、オプション→XILINX Cable Serverの設定を行います。

Zb1

次のダイアログが開くので、ケーブルのタイプをautoに設定するか、digilent_pluginを選びます。

Zb2

EXEファイルを自動的に検索する・・のパスは、XILINXのISE(のラボツール)が入っているパスを選択しておきます。CSEサーバのバージョンは14.5で構いません。

そして、メイン画面のケーブルアイコンの上で右クリックして、ケーブルの接続を選びます。

Zb3

数ある対応ケーブルの中から「Digilent JTAG-HS2 or onboard-JTAG」を選びます。

Zb4

OKを押すと、Digilentケーブルが認識されます。

Zb5

そうしたら、ツールバーにある「自動認識」ボタンを押します。

Zb6

2個のデバイスが検出された旨が表示されるので、最初のデバイスにはZYNQ7000_ARM_DAPを選びます。

Zb7

2個目のデバイスはXC7Z010_CLG225を選びます。

Zb8

実際には、XA7Z010やXC7Z010Iを選んでも中身は同じなので問題はありませんが、225ピンのものを選ぶようにしてください。

画面上に2つのデバイスが表示されます。右の○がいっぱいあるのが、XC7Z010のBGAの端子を表しています。可視化ボタンを押すと・・

Zb9

このように、1つ1つのBGAの端子がHレベルなのか、Lレベルなのかが画面上でわかります。

Zb10

(まだ未完成ですが、3D化も開発中です。)

Zb11

VivadoのXDCファイルを読み込んで、ロジアナを起動してみると、どうやらZYNQのマイコン部分が動いてDDR3メモリに常にアクセスが行われているのがわかります。

Zb12

次にZYNQのPL部へ、書き込みをしてみましょう。

MITOUJTAGでZYNQをクリックして、書き換えボタンを押し、Bitファイルを選択して「開始」を押します。

Zb13

ほんの一瞬でBitファイルが転送されます。1秒かかりません。あまりにも早いので画面キャプチャができないほどです。

Zb14_2

ロジアナで見てみると、H11番ピン(GPIOのピンヘッダ)に設定したI/OからLEDチカチカ用の信号が出ているのがわかります。

Zb15

Zynqberry0526_2

できた!

ZynqBerryでLEDチカチカをする際に迷った点を2つ。

  • ZynqBerryにはユーザ用LEDがない。そのため、LEDを自分で用意して適当なGPIOにつなぐ必要がある
  • ZynqBerryはPLにクロックが入っていない。PSが起動した状態でFCLKをもらう必要がある。(PLだけの完全なスタンドアローン動作はできない)

LEDチカチカ用のVivadoプロジェクトは近日中に公開します。

Zb_scan

| | コメント (0)

2016.05.23

Cosmo-ZのDA出力ボード

特電のアルバイトさんが設計してくれた「Cosmo-ZのDA出力用拡張ボード」ができあがってきました。

Np1085_1

125MHz 14bitのDACを2chと、RS422の出力を持っています。

Np1085_2

これが動いたら、ADCで取り込んだ信号をリアルタイムにZYNQのFPGA部分で処理して、DACから出すということができるようになります。

さて、一発で動くでしょうか?

動くといいな。

| | コメント (0)

2016.05.19

ZynqBerryの使用レポート

インターンで特電に来ている学生さんが、PaspberryPi型のZYNQボード「ZynqBerry」の使用レポートを書いてくれました。

「ZynqBerryの使用レポート」はこちら↓

・ZynqBerryボードの概要と特徴 http://www.trenz.jp/archives/1514/
・ZynqBerryボードのチュートリアル http://www.trenz.jp/archives/1552/

Zynqberry

ZynqBerryの特徴として私(なひたふ)が感じた点をまとめると、

  • オンボードでDigilentのUSB-JTAGが乗っているので、Digilentのプラグインを入れれば、Vivadoからそのまま使える。
  • XILINXのSDKからプログラムをロードして、FlashROMへ書き込むらしい。
  • MicroUSBのコネクタはFT2232につながっている。FT2232Hの片方のポートはUART用、もう片方のポートはUSB-JTAG用になっているようだ。FT2232HのコントロールはLatticeのCPLDが行っている。
  • ピンヘッダは3.3VだからRaspberry Piと電圧の互換性はある。
  • LANは、ZYNQのPSにつながっているのではなく、オンボードのUSB Hub IC (LAN9514)に接続されている。だから、USB経由のLANドライバとして見えるはず。
  • スタンドアローン動作では、SDカードではなく、オンボードのFlashROMから起動する
  • (おそらくVivadoのTclコマンドを仕込んだ)CMDファイルが大量に用意されていて、VivadoのGUI版を使わなくても論理合成や配置配線、プログラムのダウンロードまでできる。きっと、Linuxで開発する人のためには便利なのだろう。

かなりのキワモノボードであることは間違いありません!!

腕に自信のある我こそはと思うかたは、ぜひ、チャレンジしてみてください。

● 「ZynqBerry」 TE0726(ジンクベリー)

http://www.trenz.jp/products/te0726/

| | コメント (0)

2016.05.18

複数のバンクにまたがってISERDESを使う方法

XILINXのISERDESを使うと、汎用のI/OピンでGbpsを超える信号を扱えるようになるので便利です。

ソースシンクロナス(Source synchronous)では、データのクロックがFPGAとつながる対象のICから送られてきます。CoreGenではこういった場合にも当然ながら対応できます。

Iserdes1

さて、n本の信号があって、各信号をmビットにデコードする場合を考えます。

1:mのSERDESがn個あるような場合です。

Iserdes2

このような回路であれば、普通にCoreGenで作れます。

問題なのは、FPGAのI/Oバンクをまたぐ場合です。

Iserdes3

このような場合、CoreGeneratorでは普通には作れません。

ここで登場するのが、BUFMRというプリミティブです。BUFMRは他のリージョンへクロックをつなぐためのクロックバッファで、ユーザガイドによるとこういうものです。

Iserdes4

1つのクロックで、データが複数のバンクにまたがるISERDESを作るには、下の図のような構造にすればよいわけです。

Iserdes5

実際に作るには、CoreGenで作ったコアのフォルダの下にあるVHDファイルを手作業で修正することになります。

実際に回路を書いてみると、いろいろ大変ですが、I/Oバンクをまたいでも、XILINX 7シリーズのISERDESは使うことができます。

| | コメント (0)

2016.05.17

電子機器を海外へ輸出する際の輸出規制と対応方法

FPGAボードなどの製品を海外に輸出する方法を調べました。

工業製品を海外に輸出する際に気を付けるべきことは、輸出規制と関税です。

輸出規制にはさまざまなものがあって、お互いに範囲が重複していたり複雑な制度なのですが、電気電子エンジニアリングの会社として把握しておくべきものは、①リスト規制、②キャッチオール規制、③米国(再)輸出規制(EAR)です。

この中で、今回は最も基本となるリスト規制について説明します。

リスト規制とは、「輸出貿易管理令別表第一」、通称「別表1」に定められた15種類の貨物に該当するものを規制するもので、大量破壊兵器などに用いられる可能性があるものが輸出されないようにするというものです。

具体的には、1:武器、2:原子力、3:化学兵器、4:生物兵器、5:ミサイル、6:先端材料、7:材料加工、8:エレクトロニクス、9:コンピュータ、10:通信関連、11:センサー・レーザー、12:航法関連、13:海洋関連、14:推進装置、15:その他、機微品目 がリストに挙げられているのですが、ハイテク製品ならほぼ、どれかに該当することになるでしょう。

(貨物)輸出令別表第1のマトリクス表 - 経済産業省

注意しなければならない点は、物の輸出だけではなく、技術や役務も輸出規制の対象となるということです。(海外へ回路図や図面、製造方法などを開示することや、外国人や海外に在住する邦人に技術情報を提供することも規制対象となる)

海外で開催する展示会に出展したりすることには十分な注意が必要です。

実際には、以下のようなフローで判定します。

Export

まず、輸出したいものが規制対象(別表1の1~15)に存在するかどうかを判断します。

・対象外の場合

もし、別表1に存在していないならば「対象外」なので、「非該当証明書」を添付して輸出業者(UPSやDHL、郵便局、佐川など)に渡すことになります。ハイテクではない製品の多くは対象外になります。

対象外の場合の非該当証明書というのは、各会社が任意のフォーマットで作って構いません。

Higaitou

・対象貨物の場合

輸出しようとしているものが別表1に存在しているならば、その性能や仕様が規制される内容かどうかを判定します。

ここでは、該当非該当かを判断することになります。もし、性能が高く戦略物資に該当してしまう場合は経済産業省の輸出許可が必要になるので、面倒になります。

簡単に輸出が可能なのは「非該当」の貨物だけです。なので、輸出する貨物には「非該当である」旨のことを証明した非該当証明書を添付する必要があります

本来は非該当証明書は形式が決められていないので、自社のフォーマットで自由に作っても良いのですが、それには高度な専門知識が要求されるので、通常の会社はCISTECが発行した項目別対比表やパラメータシートを使用します。

Param1

作成の難易度としては、

  自社フォーマットの非該当証明書 > 項目別対比表 > パラメータシート

となるので、多くの会社はパラメータシートを使います。

Param

パラメータシートは分野別(エレクトロニクスやコンピュータ)で1冊3000円なのですが、項目別対比表は全項目を含んで8250円ですから、お得です。しかし、実務的には法律の条文そのものなので、パラメータシートのほうが楽です。

パラメータシートを作成して最後に「非該当」にチェックを付けたものが非該当を証明する書類になるので、製品の輸出が可能になります。

なお、パラメータシートは全て日本語で記入して構いません。日本の通関でのみ使われる書類ですから。

具体的に何を判断するか

詳しい記述は省いてざっくばらんに書きます。

汎用の集積回路やCPUでは

  • 放射線の耐性がある
  • 温度特性が広い
  • 化合物半導体(GaAs等?)で40MHz以上のクロックで動作するもの

が規制対象となります。どれか1つでも該当すると「該当」となってしまい輸出が難しくなります。

温度特性が広いとは、-55℃以下や+125℃以上での動作するもの、あるいいは-55℃~+125℃の全範囲で動作するものが対象となります。

それから、

  • 端子数が1500より多い
  • 基本ゲート伝搬遅延時間が20psより速い
  • 動作周波数が3GHzよりも高い

などが規制対象となります。

A/D変換回路では、放射線耐性、温度特性のほか分解能とサンプリング速度でも規制があって、

  • 8bitを超えて、10bit以下 ・・・1Gsps以上
  • 10bitを超えて、12bit以下 ・・・300Msps以上
  • 12bit ・・・250Msps以上
  • 12bitを超えて、14bit以下 ・・・125Msps以上
  • 14bitを超えるもの ・・・20Msps以上

が「該当」となります。だから、Cosmo-Zの上位品種は該当です。

我らがFPGAは、I/Oのピン数やシリアルトランシーバの総通信速度で決められています。

  • I/Oピンが700ピン以上
  • シリアルトランシーバが総計500Gbit/s以上

ですから、900ピンのFPGAはぎりぎり。1532ピンくらいになると輸出規制となるでしょう。

FFTプロセッサという項目もあって、例えば16384ポイントのFFTを11.2ms以下の時間で行うものは「該当」となります。ただし、自動車用と鉄道用は規制除外だそうです。超高速のFFTプロセッサも輸出OKです。大人の事情ってやつですね。

波形記録装置という項目もあって、おそらくAD変換器と記録装置を兼ね備えたものを言っているのだと思いますが、

  • 10bit 200Msps以上
  • 8bit 100Msps以上で磁気ディスクに記録できるもの

が「該当」になるようです。某国が核実験の際にトンネルからケーブルを出していろんな計測装置を設置していたのが衛星から見えていたそうですが、そういうことの記録に使われるからでしょうか。

コンピュータや付属品は、温度範囲が厳しくなって、

  • 85℃以上、-45℃以下で動作するもの
  • 毎秒8T(テラ)演算を超えるもの
  • ADC拡張装置で先の条件に該当するもの
  • 複数のコンピュータ間で毎秒2Gバイト以上でインタフェースできるもの

が「該当」します。

ただ、ICの場合ははんだ付けされていたり、全体価格の10%を超えないならば規制対象とはなりません。それでも、リスト規制に沿ってパラメータシートを付けておいたほうが良いでしょう。

では、実際に何をすればよいか

基本的には、CISTECのパラメータシートから関係がある項目を探して、記入して記名押印し、運送業者に渡せばOKです。最後の「非該当」にチェックが付いたパラメータシートが「非該当証明書」になるのですから。

作った製品が「該当」にならないようにするため、海外へ輸出するバージョンと国内向けバージョンの2種類を作り、ADコンバータやFPGAの性能を1ランク下げられるような設計をしておくのも重要です。

もし、「該当」になる場合は経済産業書の輸出許可を取ってください。

| | コメント (0)

2016.05.11

MITOUJTAGの3D化

また別のアルバイトの学生さんが、MITOUJTAGの3D化をだいぶん進めてくれました。

とてもいい感じの3D表示になってきました。

Mj3d

ちなみに表示させているICはZYNQのXC7Z030FBG676です。

昨年のMITOUJTAGオンラインと比べると、かなり速度的にも改善しています。JavaScriptではなくネイティブなプログラムだからでしょう。

来週にはバウンダリスキャンの結果で端子がチカチカ表示できるようになると思います。

BGAの端子が透けて見えたらいいですよね。

| | コメント (0)

2016.05.10

Cosmo-Zの高周波特性

別のアルバイトさんは、Cosmo-Zの高周波特性を測ってくれています。

Cosmo-Zは最高125MHzサンプリングですが、ADC自体は650MHzまでの帯域があります。したがって、125MHz以上の信号を入れるとエイリアシングで何かが見えるはずです。

例えば、下の図は240MHzの正弦波を125MHzでサンプリングして、それをFFTしたときの図です。

Cosmoz240mhzCosmoz240mhzfft

スプリアスがたくさんあります(これは標準信号発生器が出しています)が、サンプリング周波数よりも高い信号でも折り返し周波数の位置に見えます。

月曜日、私が休んでいる間に、アルバイトのスタッフが、ひたすら測定をしてくれました。

Sokutei

使った機材は、Agilentの標準信号発生器「E4432B」と、Lecroyのオシロ725Zi、そしてCosmo-Zです。

信号発生器で10MHz~2GHzくらいの信号を発生させて、それをCosmo-Zに入れてFFTした結果を見るというものです。

Cosmozcable

今年の1月に測ったときには、200MHz程度から特性が下がり始めて、400MHzくらいで-25dBくらい落ちていました。

Cosmozjanuary

プリアンプは2GHzくらいの帯域があるし、何が原因で想定よりも早く減衰しているのかを突き止めるということをお願いしたかったわけです。

信号発生器で発生させた信号をCosmo-Zに入れて、回路上のいろいろな箇所の振幅をアクティブプローブを使って測りました。

Cosmozmeasure

彼が作成したグラフがギザギザしているのは、信号発生器の出力をT型に分岐させていたから、おそらく反射によるものでしょう。

それでも、OPアンプの周囲の様々な点を測って、OPアンプの帰還抵抗の1kΩという値と基板の浮遊容量でLPFが出来ているからでは、という推測にたどり着きました。

そこで、1kΩを100Ωに変えて、今度は反射が生じないようにオシロを外して再度測ってみると、見事なまでに周波数特性が改善されました。

Cosmozhifreq


1GHzくらいでゲインの谷間があって、その後、-70dBくらいまで戻ってしまっているのが謎ですが、500MHzとか800MHzとかの信号でもCosmo-Zで測定できることがわかりました。

| | コメント (0)

2016.05.09

Cosmo-ZをLabViewで使う

別の学生アルバイトさんは、LabViewを使ってCosmo-Zを操作するアプリを作ってくれています。

今、Cosmo-ZにTCP/IPで通信するサーバ機能を開発しています。そのサーバ機能をLabViewから操作して、波形を見たり操作したりしようというわけです。

実を言うと、私は全くLabViewというのを使ったことはないので、この回路図のような巨大なシートをみると、とても難しそうに見えます。

Lb1

Lb2

中にJScriptというのがさりげなく書いてあったり、jsonを使っていたり・・

LabViewはTCP/IPで受け取った任意のバイナリデータを固定サイズで区切ったりすることができるらしく、こんな複雑怪奇な図のようなものが延々と続いています。

スタートボタンを押してみると・・

Lb3

うほっ!

どういう仕組みかわからないけど、波形が出た!

FFTにしてみると・・

Lb4

わおっ!

スペクトラムが出た!

見た感じでは毎秒10回程度更新できているようです。

連続して波形を表示するのが難しいようです。波形を表示したら次の波形を要求するようにすると、メッセージループが切れないから応答がなくなるらしいです。だからといってタイマーで動かすのも問題があるそうです。

| | コメント (0)

2016.05.07

MAX10のボードがやっと動いた

そんなわけで、PIC書き込みのシーケンスを徹底的にデバッグすることにしました。

PICの各端子をオシロで見たところ、MCLR、PGM、PGC、PGDの波形は正常に来ていました。付録の本を読むと、LVPビットが0クリアされていると低電圧モードが使えないということが書いてあります。予想される原因は、最初にFPGAとつないだときの書き込みで失敗して、LVPビットも含めて様々なコントロールレジスタに全部0が書き込まれてしまった、のではないかということです。(LEDの点滅がそのときだけ変だった)

全身の秘孔をすべて突かれたようなものですね。あたたた

早速、秋月に行って交換用のPIC18F14K50と、何かに使うかもしれないと思いPICKIT3と、ICソケットを買ってきました。

そして、MAX10-JB基板からPICを外してICソケットを付けました。DIP20ピンを外すのは結構大変でしたよ。

Max10_7_2

ソケットに新しいPICを挿します。いよいよ電源ON!!

しかし、焦りすぎたせいか、うっかりPGCの端子を5Vにショートさせてしまいました。5Vの安定化電源がブーンと怒ったような音を上げて、1.36Aくらいの電流が流れてFPGAがお亡くなりになりました。

マルツに再び行って、2冊目の本とFB基板セットを買って帰ります。夜、家に帰ってきてから再チャレンジです。

5Vがショートしていないことを確かめて、新しいFPGA基板と、新しいPICで、期待に震えながら電源ON!!

おおっ、LEDが緑色に光って書き込みが完了したではないですか!!

そして、古いPICに差し替えてみると起動しない。失敗を示す白の点滅だ。

これで、PICに書き込めない原因はPICの個体の問題であることがはっきりしました。

PICKIT3を使って、書き込めないほうのPICを調べてみました。

Max10_8_2


やはりBlack Checkが通りません。Not Blankです。何かが書き込まれているようです。

Pickit3

なんと、EraseしたらMAX10-FBとJBボードでも書き込みができるようになりました。昨日の苦労が嘘のようです。

推測は正しかったようです。何らかの原因で、FPGAからPICへの書き込みに失敗してVCPビットが0になってしまい、低電圧プログラミングモードに移行できなくなっていたようです。

どういう原因でVCP=0となるほど激しく書き込みが失敗するのかはわかりませんが、ひとつだけ、確実にわかったことがあります。

J1~J4をショートしたまま(PICへの書き込み用の状態)で、少なくとも私の使っているPCのUSBポートに挿すと、PICに変なデータが書き込まれて、起動しなくなってしまう。

再度安定化電源から5Vを供給すれば治るのですが、昨日のこういう波形

Pdgpgc_ng

が送られてPICがメチャクチャな動作をするのでしょう。

そもそも、FPGAが起動したら問答無用で即PICに書き込みにいくのではなく、押しボタンスイッチを押したら書き込む・・とか、ちょっとのゆとりが欲しかったですね。そうすれば、こんな1日半の苦労もしなかったと思います。

おかげでPICの書き込みシーケンスには詳しくなれました。(なりたくない)

あと、5Vのショートする危険があると思う箇所があります。

このポリスイッチです。足がくねくねとしてバネ状になっていますね。

Max10_9

この状態なら大丈夫なのですが、基板を裏返したりして机に押し付けると・・

Max10_10

あっ!

ごらんのとおり容易に寝てしまいます。このポリスイッチには5Vが来ているのです。VIO5というのは、FPGAボードの3.3V電源につながっているのですから・・・恐いですね。5VがFPGAの電源につながって、一瞬でパーです。

だから、この基板に限っては、ポリスイッチの足はしっかりと伸ばしてから奥まで挿して倒れないようにしたほうがよいでしょう。

Max10_11

ポリスイッチは温度で抵抗値が変わるデバイスですから、足を短くして基板に近づけると温度が上がりにくくなってトリップしにくくなるかもしれません。もしかすると、がっちりと固定すると割れたりするのかもしれません。

でも、そんなことにこだわってショートさせることのほうがよっぽど危険です。過電流に対する感度や信頼性を優先させるか、それともうっかりFPGAを壊して2冊目の本を買う可能性を減らすか、あなたらなどちらを選択しますか?

私なら迷わず足を短くします。

今日の成果をまとめると、

  • FPGAからの書き込みに失敗した際に、PICが低電圧プログラムモードができない状態になってしまっていた
  • PICKIT3でEraseしたら復活した
  • ICソケットは使ったほうがいい。書き込み失敗して直せなくなる可能性があるから。
  • J1~J4をつないだままパソコンのUSBポートに挿すとプログラムが破壊された
  • FPGAのIOに5Vが加わると壊れる。俺は2冊目を買った。Chick show !
  • ポリスイッチの足は短くしたほうがよい

おかげでたっぷり楽しむことができましたが、せっかくなら書き込み済みのPICで販売してほしかったです。

| | コメント (9)

2016.05.06

MAX10の付録本を買ったが動かなかった

MAX10のFPGA電子工作スーパーキットを買ったので、遊んでみました。

Max10_1

厳密に言えば、この本が届いたのは木曜日なのですが、USB Blaster基板は基板だけで全く部品が乗っていなく、使うためにはマルツの部品セットを買わないと何もできないので、金曜日にマルツで部品セットを買ってきたというわけです。

組み立てるのは難しくなく、30分くらいあれば完成します。

Max10_2

Max10_3

基板上のコネクタのオスメスやジャンパのどこをどうショートすればよいのかは、本を読まないとわかりません。

FPGAボードのほうは12か所のすべてのはんだジャンパをショートし、JTAGボードのほうは特にショートしなくても良いというのが正解です。

さて、ボードが組みあがったので、早速、USBをつないでみました。

Max10_4

しかし、反応はありません。

どうやら、マルツのセットで買ったとしても、PICはプログラムが書きこまれていない状態らしいです。

自分で書き込まなければならないので面倒だなと思っていたのですが、本を読むと、どうやらFPGAと接続すると自動で書き込まれるとのこと。一瞬、目を疑ったのですが、FPGAに内蔵されたNIOSか何かのプロセッサで、PICの書き込みシーケンスを出してやっているのでしょう。

ほう、これは新しい仕組みだ。

感心しました。

この本を熟読すると、ピンヘッダにJ1~J4を差し込んだ状態でFPGAとつないで電源を入れると書き込まれるらしい、ということが書いてあります。

で、期待してやってみたのですが、全く書き込まれる気配がありません。

なんかちょっとLEDの点滅が気絶して止まったと思うと、うーん、やっぱり動かないな・・と思い、再び電源を入れてみても次からはFPGAボードのLEDは白の点滅で、つまり、PICが認識されない状態です。

ボードに付録の本を読むと、パソコンにつなぐのではなく、USBの給電ハブやスマホの充電アダプタで給電しないと、書き込みシーケンスが乱されて失敗するようなことが書いてありました。

で、いろいろやってみたのですが、家にあったいろんなアダプタを7種類くらい試したけど、全部だめ。秋月のUSB出力タイプのシンプルなアダプタでもだめっぽいです。

仕方がないので、オシロを使って書き込みシーケンスのデバッグをすることにしました。FPGAがやりたいのですが、PICの書き込みのためなら少しの回り道は仕方ないですね。

本を読んだところ、このPICの書き込みはVpp(高電圧)を必要としない低電圧プログラムモードというのを使っているようで、MCLRよりも先にPGMをHにしておけばそのモードになるようです。また、PGDとPGCという2本の信号を使ってシリアルでデバッグ用の信号を送って書きこみを行うようです。

というわけで、PICの書き込みに必要な信号は、MCLR、PGM、PGD、PGCの4本です。

オシロでMCLRとPGMを見ると、おそらく正常だろうなという信号になっていました。

Max10_5

青い信号がPGMで、黄色がMCLRです。FPGAが起動するとすぐにこの信号が出ます。

一方、PGDとPGCですが・・

Pdgpgc_ng

明らかにおかしな波形になっていました。

実は、PGCとPGDの信号は、USBのD+とD-と共用されています。D+とD-は差動信号ですから、間に終端抵抗があってもおかしくありません。終端抵抗があるとD+とD-の信号は互いに漏れます。だから、ACアダプタの中でD+とD-の間に抵抗が入っているのではないかと想像されます。

そこで、安定化電源から5Vを取ってUSBのVBUSとGND間に与えてやると、綺麗な波形になりました。

Pdgpgc_ok

クロックが20発なので、20bitのデータをFPGA→PICに送っています。

最初の4ビットが0000で、後のビットが1111 1100 0111 0000なので、0x0e3fと読めます。どうやら最初の4bitが0000だと、デバッグポートから送り込んだ機械語をPICに1ワードずつ実行させるという意味だそうです。きっとMOVLFか何かの命令なのでしょう。

全部で6ワードの命令が送り込まれて、最後の2ワードが0x9なのでここでPICからデータを読み出しているように思われます。

※ 実際にはIDCODEを読み出しているようだ

で、このIDCODEが正しい値でないとFPGAは白点滅をするというものだそうです。

付録基板で遊びたいだけなのに、ここまで頑張ったのは初めての経験です。

Max10_6

今日わかったことをまとめると、

  • マルツのパーツセットが両方(FBとJB)必要
  • パーツセットのPICは未書き込みだ(そのままつないでも何も起きない)
  • FPGAボードとつながると自動的に書き込まれるらしい(PICライタは不要)
  • FPGAボードのはんだジャンパは全部盛るべし
  • PCやACアダプタからの給電だと、D+、D-の波形が乱れて正常に書き込めない(どんなアダプタならOKなのか、逆に知りたい)

感想としては、VCCIOの電源を細かく切り離せるジャンパは12個もいらないから、D+とD-をPGD,PGCから切り離すジャンパが欲しかった。

| | コメント (4)

2016.05.03

小学生に電子工作やプログラミングを教えること

連休中、どこにいっても混雑しているので、子供に電子工作やプログラミングに教えることにしました。

まずは小2の方にAmazonで購入したエレキット ピカタワーを与えてみました。

Pika

結構真剣に作っています。

Pika1

オヤジがほとんど手伝わずに、抵抗とLEDを付けられました。「A」という文字がある方が長い足だよとおしえたら、LEDのアノードとカソードも間違わずにLEDを付けられました。

Pika2

今年の夏休みの工作はレインボーブリッジを作りたいとかなんとかいいながら丁寧に丁寧につけていきます。

一方、兄(小6)のほうは、昨夜RasPi2でネットサーフィンしているところを母親に見つかって取り上げられてしまったようです。返して返してと懇願しても返してもらえないようなので、最新のRaspberryPi3と、ラズパイマガジン17号と部品セットを与えてみました。

Raspi3shou6

ブレッドボードに触るのは初めてだったようなので、少し説明してから、自由にやらせてみました。

しかし、全然だめ。なんと、GPIOのサンプルプログラムが動かないようです。

たしかに、本の通りにやっても、import wiringpiでエラーが出ます。

なぜ動かないのかは、オヤジが必死に原因を調査中です。

結果は、

  • エレキットを与えたほうは、真剣に作った
  • ラズパイマガジンを与えたほうは、全くモーチベーションが出ない

ということになりました。

この違いはなぜでしょう。

まず、エレキットのほうは完成形(ピカピカ光る姿)が最初に示されているから、結果がイメージしやすのでしょう。

しかし、ラズパイマガジンのほうは、何ができるのかが示されていないからモーチベーションも出ないのでしょう。最終的にすごいものができる(あるいはスキルが身に付く)とわかっていても、1つ1つの途中経過が魅力的でないと、モーチベーションが続かないのでしょう。

たぶん、「ラズパイでネットサーフィンとかゲームとか楽しいことができるのに、なぜ何ページも本を読んでLEDを点けたり消したりしなければならないの?」という気持ちなのではないかと思いました。

パソコンという高度な機械を使って低レベルなことをやらせるのは、モーチベーションが湧かないのかもしれません。

また、小学生は英単語を知らないから、変数や関数名を打つのも一苦労だし、エラーが出た時に対処ができないようです。(エラーメッセージをGoogleで翻訳しようとします。)

それから、IDLEとかいうPython開発環境のフォントの問題もあります。デフォルトのフォントでは、lと1が区別できなので、ledという単語を1edと打っていて動かない動かない・・とずっと悩んでいました。

一般的に小学生は動かない状態が数分続くだけで諦めてしまいます。1とlを間違えたとかいうつまらない理由で諦めてしまうのは、大変もったいないことです。

RaspberryPiのように、OSのバージョンも、中に入っているプログラムやライブラリも読者ごとにみんな違うようなコンピュータでは、本のとおりにやってもうまくいかないことが多いでしょう。小学生にプログラムが動かない原因を一人でデバッグさせるのはまず無理ですから、まずはオヤジが予習して一通りやっておかなければなりません。

小学生に電子工作やプログラミングを教えるのは大変です。無理やり「教える」のではなく、興味を持たせるくらいのことを目的にしたほうがよいのではないかと感じました。

もし、小学生に教えるという教材を作るなら、親向けの冊子を付録に付けておき、親が完璧にインストールと動作をさせられるようにしておき、親から子に教えるような2段階のスキームが必要だと感じました。

※追記

pythonからimport wiringpiができないのは、sudo apt-get install wiringpiでインストールされるものはC言語のwiringpiであって、Phthonから使うにはラッパが必要であるそうだ。

https://twitter.com/glareguard/status/722799285708791808

下記の手順でやればラッパをインストールできる

https://github.com/WiringPi/WiringPi-Python

| | コメント (0)

2016.05.02

RasPi形状のZYNQボード「ZynqberryPi」を販売開始しました

特殊電子回路では、ドイツTrenzElectronic社のZynqBerry TE0726の販売を開始しました。

Te0726_0


ZynqBerryは、Raspberry Pi 2と同一形状のFPGAボードで、XILINXのZYNQ XC7Z010を搭載しています。

http://www.trenz.jp/products/te0726/

CPUはZYNQに搭載されたCortex-A9で、512MBのDDR3L SDRAMのほか、USBポート×4、イーサネットポート、16MByteのFlashROM、CSI-2(カメラインタフェース)、DSI(ディスプレイインタフェース)を搭載しています。

Raspberry Piと同一形状なので、RasPiのケースにもちゃんと収まります。

Zynqberry_2

今回はごく少量しか入荷していないので、ご興味のある方はお早目にご注文ください。

万が一、品切れになってしまうと、次期ロットの入荷は連休明けの5月中旬になると思われます。その頃には、Trenz社の在庫も減っているかもしれませんので、お早目に。

ご注文はこちら↓↓↓

https://shop.tokudenkairo.co.jp/shopping/detail.php?shpdi=TRENZ0726

ご注文お待ちしております。

| | コメント (0)

18bit Cosmo-Z拡張ボードのヒストグラム

| | コメント (0)

2016.05.01

RaspberryPi3を使うまでのセットアップ

RaspberryPi3を購入したので、使い方をまとめてみた。

Raspi3

【NOOBSをインストールする】

NOOBSのV1.9.0をインストールする。1GBくらいあるやつをダウンロードすること。

Noobs

NOOBSのZIPを解凍した中身をSDカードに入れて、Raspberry Piを起動する。

RasPiが起動すると、すぐさまSDカードのパーティションが変更されて、RECOVERYという小さなパーティションと、6GBの大きなパーティションに分割される。

【RasPiをリモート接続できるようにする】

RaspberryPiにNOOBSを入れたすぐの状態だと、GUI画面で漢字が出ず、日本語の表示が文字化けしまくっているので、ちゃんと使えるようになるまではホストPCからTeraTermを使ってリモート操作でやると楽。

① まずはネットワークにつなぐ。 無線でも優先でもよい。

② RaspberryにキーボードとモニタをつないでTerminalを開き、ifconfigを行って、IPアドレスを調べておく

③ teratermでログインできることを確認する

 なお、ユーザ名はpi
 初期パスワードは  raspberry

である。

【日本語が表示できるようにする】

① ロケールを設定する

sudo dpkg-reconfigure locales

ロケールの選択画面が出るので、

en_GB.UTF-8
UTF-8 ja_JP.EUC-JP
EUC-JP ja_JP.UTF-8

をチェックする。また、UTF-8 デフォルトのロケールを選ぶ画面が出たら、ja_JP.UTF-8を選択する。

② 日本語フォントを入れる

apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

③ ここで一度リブートする。

sudo reboot

これで日本語がちゃんと表示されるようになるので、GUIを使うことができるようになる。

【日本語入力と時刻の設定を行う】

このページを参考にする http://ryus.co.jp/blog/raspberrypi2-4/ とよい。

① ibusをインストールする

sudo apt-get install ibus-anthy

メニューから、[設定 > iBusの設定  インプットメソッド ibus  Anthy]とやる。

どうやら、RaspberryPiで使うかな漢字変換システムは、ibusとAnthyというらしい。

全角半角キーで日本語になるように設定を変更するとよい。

② 時計の表示を変更する。

初期状態ではGMTなので日本時間で表示したい。

sudo dpkg-reconfigure tzdata

アジア→Tokyo を選択する。

そして、リブートする。

【Google Chromeをインストールする】

標準で入っているWebブラウザ「Epiphany」はどうしても好きになれない。

まともなブラウザが欲しいが、apt-getではGoogle Chromeは入らない。

NOOBS 1.9のRaspbial OS(jessyという?)には、Chromeはapt-getではインストールできないようだ。

検索すると、apt-getでchromiumやchromium-browserをインストールする例が出てくるが、現在のRaspberry Piでは使えない。

なお、chromium-bsrというのは別物。

やり方はここにある。

https://www.raspberrypi.org/forums/viewtopic.php?t=121195

以下の4行をコピーして、Terminalに貼り付けて、実行すればよい

wget -qO - http://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
echo "deb http://dl.bintray.com/kusti8/chromium-rpi jessie main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install chromium-browser rpi-youtube -y

これでChromiumが使えるようになる。

【その他】

電源の容量は2Aくらいでもいいんじゃないか?

ヒートシンクも特にまだいらなそうだ。

【Raspberry Piで使ったSDカードを再利用するには】

Raspberry PiのSDカードはパーティションが分割されてしまう。WindowsからはWindowsからは1GBのRECOVERYパーティションしか見れないし、RECOVERYパーティションは91MBの空きしかない。

つまり、何GBのSDカードを使っても、1GBのSDカードになってしまう。

Windowsの管理ツールのディスクの管理で見ると、

Disk

となってパーティションが分割されているのがわかる。

パーティションが分割されたSDカードは、Windowsのディスクの管理では直せないので、Windowsで使えるように戻したいならば、SDFormatterというツールを使う。

Sdf_2

SDFormatterでフォーマットする際に、論理サイズ調整をONにすると、すべてのパーティションがクリアされて、クリーンなSDカードに戻る。

 

| | コメント (1)

« 2016年4月 | トップページ | 2016年6月 »