2015年5月30日土曜日

Lattice Diamond でデフォルトの verilog 設計データをコンパイルして書き込む

前記事では MachXO2-7000HE Breakout Board の用意された JEDEC ファイルをプログラマソフトで書き込んだだけでしたが今回は、設計データの verilog ソースを、少し編集して、コンパイルしてデバイスに書き込みます。
Lattice MachXO2-7000HE Breakout Board
Lattice Diamond 

はまりどころは
  • JEDEC file を生成するには, Export files というプロセスを手動で実行する必要がある。
  • ファイルは明示的に Save all しないと成果物はメモリーの中で、ファイルになっていない。
  1. 設計ファイルをローカルに展開します。場所はプロジェクトを開くときに指定しますのでどこでもよいのですが、c:\Projects\L2015-0530_ABC とかそのへんにフォルダを作ってすべてのファイルをコピーしましょう。
  2. Lattice Diamond を起動し、既存の設計プロジェクトを開きます。File, Open, Project で目的のフォルダを指定し Default_pattern_w_standby.ldf ファイルを開きます。
  3. Verilog ソースを開き、変更します。LED4 と LED5 をカウンターの 20 bit から 19 bit の状態を表示するように変更しました。
  4. Save します。
  5. コンパイルします。 Tools、RunManager、impl1 にチェックを入れて Run 右向き 三角緑ボタン。しばらくかかります。ここでコンパイルが終了していますが、デバイスの書き込みに必要な JEDEC ファイルができていません。古い日付のままで上書きされていませんでした。
  6. Export files で JEDEC ファイルを作成します。Process の Export files JEDEC File にチェックを入れます。 マウスで Process の Export Files を右クリック、Run 右向き矢印、緑。この操作で JEDEC ファイルが生成されます。
  7. プログラマーを起動し、デバイスプロパティで書き込む JEDEC ファイルを指定し書き込みます。Tools、Programmer。検出されたデバイスを右クリックで デバイスプロパティ、プロジェクトフォルダの下にある impl1 フォルダに .JED ファイルがあります。ファイルの日時を確認して開きます。IC に 下矢印アイコンのボタンでデバイスに書き込みます。
  8. LED の点滅パターンが以前のパターンと変わっていることを確認します。
設計は、2.08 MHz のクロックを 22 ビット (0-21)バイナリカウンターで分周した cnt[20] 21Bit 目、2 .08 MHz / 2^21で大体 ~1 Hz)  と その反転 を LED で表示するという設計でしたが、接続図を見ても 2.08 MHz クロック源が無く、内部発信器の設定だと気づくまで???でした。 Export files も自動で最後の JEDEC ファイルまで出ているものと思っていたのであせりました。 






FRDM-KL25Z と Olimex ケーブル

FRDM-KL25Z 評価基板で OpenSDA を(これは CMSIS-DAP とは言葉的に違うのでしょうか?)
評価基板内部に OpenSDA 機能が組み込まれており、親切なことにアダプタとして機能させることができます。FPGA の評価基板も見習ってほしいものです。

USB シリアルデバッグ アダプタ用のプロセッサ K20 が 1つ、評価対象のターゲットのプロセッサ KL25 が 1つ搭載されています。普通に利用する前に、こういう投稿をして申し訳ありません。すぐ書かないと忘れるので。

Freescale FRDM-KL25Z 評価基板、2個あると機能を確認できて面白いです。
Olimex の変換君 ARM-JTAG-20-10 のケーブル。ストロベリーリナックスさんもおっしゃるよう、この変換君は、ハーフピッチ IDC 10 way ケーブル単体で探すより安いです。
2.54 mm 2 way ピンヘッダとジャンパ
1.25 1.27 mm 5x2 10 way ピンヘッダ。もし買えるようでしたら 50 way とか長いのを買ってそれをカットして利用するのもよいかも。





  • FRDMーKL25Z を OpenSDA として利用する場合
J11 の裏側のパターンをカットします。OpenSDA のSWD クロック信号をオンボードターゲットから切り離す形で基板上の SDA コネクタ J6 を OpenSDA の SWD インターフェースとして利用します。J8 も似た形状で SWD と書かれていますが、こちらは JTAG 信号が配線されていますので、J11 をカットし J6 を利用します。


  1. J11の裏側のパターンをカット、次の層がどのくらいの深さにあるか分からないので、できるだけ基板にダメージの無いよう浅く、でも確実に切り離します。近いと半田ブリッジの原因にもなります。
  2. J11 に 2.54 mm 2 way ピンヘッダーを半田付けします。OpenSDA アダプタとして利用するときは、Open の状態で使います、ボード上のターゲットを切り離して使います。ジャンパでつなぐと出荷状態、オンボードの KL25Z につながります。
  3. J6 に 1.27 mm 5x2 10way ピンヘッダーを半田付けします。非常に間隔が狭いので半田付けには細心の注意と、ブリッジしていないか必ず確認をします。
  4. Olimex のケーブルで接続します。ケチってキーの無いピンヘッダを使いましたが、人に貸すような可能性がある場合は、極性キーのあるコネクタにします。1番ピン側にフラットケーブルの赤ラインがくるように接続します。

  • FRDMーKL25Z を純粋なターゲットとして利用する場合
ターゲットとして利用する場合、オンボードの OpenSDA の機能を停止させます。そのためには、SDA 側の USB から電源を供給してはいけません。電源は USB KL25Z と書かれている USB ポートかその他オプション電源入力方法で供給します(SDAケーブルによる電源供給も手段の一つです)。 OpenSDA 用の CPU K20 は他からの電源が入力されますが USB SDA 側の 5 V が無い場合は常時リセット状態になります。また内部 SDA の信号は 74125 タイプの 3 state buffer で hi-Z 外部アダプタの信号出力と衝突しないようになっています。接続図の 125 のシンボル間違ってますね、まったくもう。

  1. J6 に 1.27 mm 5x2 10way ピンヘッダーを半田付けします。非常に間隔が狭いので半田付けには細心の注意と、ブリッジしていないか必ず確認をします。
  2. Olimex のケーブルで接続します。ケチってキーの無いピンヘッダを使いましたが、人に貸すような可能性がある場合は、極性キーのあるコネクタにします。1番ピン側にフラットケーブルの赤ラインがくるように接続します。

  • 接続してみます
くどいですが
  1. OpenSDA 側 J 11 のパターンを切り、かつジャンパでも接続しない。オンボード CPU を切り離します。
  2. ターゲット側 USB SDA 側から電源を接続しない。オンボードの SDA 機能を停止させます。
  3. OpenSDA 側 J 6 と ターゲット J 6 同士を接続する。1番ピン側にフラットケーブルの赤。シリアルデバッグ信号を接続します。

この写真でも、ちゃっちゃと結果を出すのにターゲット側の電源を SDA 側から供給していますが、これは本当はよくありません、だめです!たまたまこの評価基板ではできるので、またネットでも良く見かけるのですが、これは憂慮されるパターンです。SWD プローブによる電源供給に慣れて、これが普通だと思うのはとても危険です。

本来は、双方に運用する電源を供給し、アダプターにはレベル変換用のバッファー IC があって、ターゲットの電圧を検出し、レベル変換 IC の 電源  Vcc A だか Vcc B だかに接続して運用するものです。それが数百ドルなんですかそうですかとも思いますが、ともあれ本来はそういうものなのです。節約するのは大事ですが、なぜ節約できているか?を理解する必要もあります。

機能的に、OpenSDAは、これ単体で PC からは USB Flash ドライブのように認識され、そのドライブにファイルをコピーするとターゲットに書き込めるようです。機能はこれから試します。



Lattice Diamond programmer でデバイスへの書き込み

評価基板デフォルトのプログラム内容を上書きします。設計済みの同じ機能を書き込むだけです。
Lattice MachXO2-7000HE Breakout Board
Lattice Diamond Programmer

  1. MachXO2-7000HE Breakout Board 製品ページから設計データをダウンロードします。製品の Web ページ、Documentation, Downloads,  MachXO2 7000HE Breakout Board Demo Design Source 1.0 をダウンロードし圧縮ファイルを展開します
  2. 評価基板を USB 接続し、Laiitce Diamond Programmer を起動します。
  3. 自動検出されたデバイスを LCMXO2-7000HE と指定します。黄色に、ハイライトされている Device 自動認識だけでは分からない種別をマニュアルで指定します。
  4. デバイスプロパティで書き込むファイルを指定します。検出されたデバイスを右クリックする、もしくは、デバイスのチェックボックスにチェックを入れて IC アイコンのボタン Device Properties をクリックする。Programming file で1.で展開したフォルダ、 bitstream にある Default_pattern_w_standby_impl1.jed を選びます
  5. デバイスに書き込む。IC アイコンに 下矢印のボタンをクリックする。書き込みを完了するまでしばらくかかります。プログレスバーとか Output ウインドウに進捗が表示dされます。点滅している LED がデバイスを消去したあたりで一度消灯します。書き込みが成功すると LED が再び点滅します。
  6. 以前と同じ動作をしていることを確認します。



2015年5月29日金曜日

ColinkEX と Olimex ケーブル

CooCox の JTAG/SWD ケーブル ColinkEx  と Olimex の変換君 ARM-JTAG-20-10


ColinlkEX だけでも 2 mm 10 pin, 2.54 mm 10 pin /20 pin 対応です、これに
Olimex の変換君で 1.27 mm 10 pin にも対応できるようになります。

ColinkEX は、CooCox 上(Win で 特定 サプライヤ用)上では JTAG ケーブルになります。 またそのほかの条件には CMSIS-DAP ファームがあります、これだけのコネクタを備えて、ここまで安いのは珍しいです、残念ですがシリアルポートは無しです。

ドライバが 2種ありまして。

  • ColinkEx_firmware_V0.4.bin: CooCox (Win のみ) で サポートされるデバイスに対しては JTAG デバッガになります。
  • colinkex_cmsis-dap.bin: オープンな CMSIS-DAP アダプタになります SWD シリアルワイア デバッガになります。(サポート対象外)

ファームの変更。
JP1 は通常オープンで使いますが、ジャンパでつないで USB ポートに接続すると USB Flash drive みたいになりますので、目的の .bin をコピーして終わり、ほかの .bin ファイルは消す。

使うときは、JP1 を オープンにする。

この便利なアダプタに、Olimex ARM-JTAG-20-10 を買うと 1.27 mm 5x2 10 way にも対応でき、ますます便利になります。

2015年5月28日木曜日

Quartus2 の導入

Quartus II のインストールとプログラミングソフトウェアがターゲットを認識するまで
  1. FTDI から最新の D2xx ドライバーをダウンロードします。実行形式の .exe ファイルですから実行します。 
  2. Altera から各種ファイルをダウンロードするために、アカウントを作ります。メイルアドレスとログイン用パスワードを設定し、アカウントを作ります。
  3. DVD から Quartus II web edition をインストールします。 私の手元にあったのは 7.2 でした。
  4. インストールされた Quartus II 7.2 Web Edition を実行します。ライセンスファイルが無い旨が表示されます。
  5. Altera にライセンスファイルの発行を依頼します。180 日有効のライセンスが適当だと思います。所定のライセンス請求のページに 利用する PC の ネットワークインターフェースの Mac アドレスを送ります。 cmd 実行、ipconfig /all  で表示される 物理アドレス. . の - を抜いた 12桁の文字列を入力します。
  6. メイルで .dat という拡張子のライセンスファイルが送られてきます。
  7. C:\altera 直下あたりにコピーします。好みの場所でよいです。
  8. Quartus2 の tools. License setup で、ライセンスファイルのあるフォルダーの位置を明示します。
  9. Quartus2 が正常に起動することを確認します。
  10. ターゲットボード  Cyclone II FPGA Starter Development Kit を接続します。
  11. ドライバーは C:\altera\72\quartus\drivers\usb-blaster\x64 この辺にあります。
  12. Programmer を実行します。QuatusII を起動し tools, programmer を実行。
  13. 左ボタン、Auto Detect で Device が正しく表示されれば成功。 
これで、開発ツール Quartus II がターゲットボードのFPGAを正しく認識したことになります。

Lattice の Diamond をインストール後に Quartus II をインストールしたところ、Diamond 側が一時 USB ケーブルというかライター機能を認識しなくなりましたが、これは、ともにオンボードのライターに FTDI のチップを使っているせいでしょう。Lattice Diamond 側のドライバーをマニュアルで再インストールしたところ、(今のところ)Lattice Diamond / Altera QuartusII 両方の環境が共存できています。




Lattice Diamond の導入

Lattice Diamond のインストールとプログラミングソフトウェアがターゲットを認識するまで
  1. FTDI から最新の D2xx ドライバーをダウンロードします。実行形式の .exe ファイルですから実行します。 
  2. Lattice から各種ファイルをダウンロードするために、アカウントを作ります。メイルアドレスとログイン用パスワードを設定し、アカウントを作ります。
  3. Lattice Diamond 開発ツールをダウンロードします。 3.4.0.80_Diamond_x64.zip をダウンロードしました。ファイルサイズの小さい 3.4.1.213_Diamond_x64.zip はなぜかうまくインストールできず、前のバージョンがおいてあるのも、そのあたりの事情かもしれません。
  4. Lattice Diamond をセットアップします。3.4.0.80_Diamond_x64.exe を実行します。
  5. インストールされた Lattice Diamond を実行します。ライセンスファイルが無い旨が表示されます。
  6. Lattice にライセンスファイルの発行を依頼します。所定のライセンス請求のページに 利用する PC の ネットワークインターフェースの Mac アドレスを送ります。 cmd 実行、ipconfig /all  で表示される 物理アドレス. . の - を抜いた 12桁の文字列を入力します。
  7. メイルで .dat という拡張子のライセンスファイルが送られてきます。
  8. C:\lscc\diamond\3.4_x64\license というそれ風のフォルダがあるのでそこにコピーします。
  9. Lattice Diamond の Help LicenseDebug というツールで、ライセンスファイルのフォルダーの位置を明示します。自動的に認識されていればこの作業は不要です。
  10. Lattice Diamond が起動することを確認します。
  11. ターゲットボード Lattice MachXO2-7000HE Breakout Board を接続します。ドライバーがインストールされます。失敗した場合は Windows, すべてのプログラム, Lattice Diamond 3.4 (64-bit), Accessories, Install&Uninstall cable drivers で FTID ドライバーをインストールします。
  12. Diamond programmer を実行します。Windows, すべてのプログラム, Lattice Diamond 3.4 (64-bit), Accessories, Diamond Programmer
  13. Create a new project from a scan で cable を HW-USBN-2B(FTDI)で OK
  14. Device で LCMXO2-7000ZE (黄色)を ▼ で 7000HE に変更、自動検出ではここまで判定できないらしい。
これで、開発ツールがターゲットボードのFPGAを正しく認識したことになります。

Diamond programmer が書き込みケーブル(この場合評価基板の組み込み FTDI ライター部分)をうまく認識しない場合。また、一度うまく動いていたのに、動かなくなった場合は、Help にもありますがドライバーの再インストールを試します。 Windows, すべてのプログラム, Lattice Diamond 3.4 (64-bit), Accessories, Install&Uninstall cable drivers でドライバーを再インストールします。

コツは、 Uninstall をくどいほど繰り返します。そんなドライバ入っていませんと言い出すまで。必要なドライバーは FTDI windows driver ですが、再インストールを試みているはずなのに、インストールが終わりましたと、スパッとダイアログが出るときは、怪しいです。きちんとアンインストールができれば、次のUSBケーブルを接続した時点で、WindowsUpdate にはこんなドライバーありませんと、ドライバーのインストールに失敗します。そこで改めて  Install&Uninstall cable drivers にてマニュアルでドライバーをインストールします。このドライバーは信用できませんだとか、警告が出れば安心です。



2015年5月27日水曜日

FPGA の利用

FPGA を利用するための記事もはじめます。

Windows XP のサポートも終了しました。 個人的に Windows 7 - 64 Bit なので、この環境を前提に進めます。開発と言わず利用と言う理由は、自前の基板を作って開発するのでは無く、売っている評価基板を買って使うだけだからです。

安く済ませるための Lattice の MachXO2-7000HE Breakout Board (MachXO2-7000HE) と、リッチに行く Altera の Cyclone II FPGA Starter Development Kit (EP2C20F484C7N) をターゲットに進めます。

Lattice は Diamond、 Altera は Quatus 2 web  edition ともにフリーの開発環境を整備します。

コスト的に問題になる JTAGプログラマ ライターは、ボードの組み込み機能を利用する方針です。仕事で本気の開発をするときには、正規品を会社に買ってもらうという前提です。