EPM570T100C5Nを動かしてみた

MAX7000Aはどうしようもないので、ITプラザへ行ってオプティマイズのMAX2 CPLDボードを買ってきました。

さくさくっと組み立てます。QFPがハンダ付け済みなので楽ちんです。

今回はブレッドボードとの組み合わせで使うので、ピンソケットを部品面に載せて、ブレッドボード上に置きます。

スイッチの入力に応じてLEDがチカチカするところまで行きました。

しかしながら、やはりCPLDは同期回路を動かしてなんぼです。

3.3Vで動くオシレータがなかったので、余っていたPIC12F675をコンフィギュレーションビットで「内部オシレータ・CLKOUTイネーブル」に設定して1MHzクロックを出力させるようにして接続し、CPLDのクロック入力としてLEDをチカチカさせました。

参考になるかわかりませんが、ソースを置いておきます。BLINKLED.vhd.zip
(端子の指定は別途行ってください)
F/Fのリセットもやってない(そもそもリセット信号を入れてない)とか、スイッチの入力を直接カウンタのイネーブルにつないでる(本来ならF/Fを2回通して同期化すべき)とかありますが、動作確認レベルなので端折っています。

USB Blasterもどきを作ってみた(2)

次に、環境を整えます。

CPLD基板はブレッドボードで扱えるよう、ピンソケットを部品面側に載せることにして、半田面側にはパスコンと電源の配線をしました。

しかしこの基板、せっかく両面なんだから電源とGNDくらい配線しておいてくれても良さそうなもんなんですけど・・・。

これをブレッドボード上に取り付けて、製作したUSB BLASTERもどきと接続します。ついでに、CPLDでLEDチカチカをさせるために、LEDとSWを配線しておきます。

これでQUARTUSIIのプログラマーを起動してJTAGチェーンを認識させると・・・

無事に認識しました。(キャプチャはもっと後のものです)

で、LEDチカチカのためのVHDLコードを書いて、合成すると無事に合成できました・・・・が、書き込みでエラーになります。よくみると、EPM7256Aではなく、7256AEとしてコンパイルされています。

・・・・で、調べてみたら、MAX7000AEシリーズはサポートされているのですが、MAX7000AはQUARTUSIIではサポートされていないとのこと・・・。がっくりです。

まあ、それでもUSB BLASTERもどきの動作が確認できたのでよしとします。

<おまけ>

最近、またデジカメを入手してしまいました。こんどはIXY 210Fです。PC DEPOで中古で4980円だったのを拾ってきました。

コンパクトなくせに、しっかり写ります。

もともとはCHDKを入れて、簡単な三脚とコンパクトデジカメだけでTimeLapse撮影ができるようにして、「いつでもどこでもTimeLapse撮影」とか言いたかったんですが、CHDKはうまく入らないし・・・・で、こういう用途用に重宝しはじめてしまいました。

USB Blasterもどきを作ってみた(1)

いずれカメレオンUSB FX2を使うとしてもEZUSB-FX2のGPIFの使い方は調べなければならないのですが、調べて実験することを考えるといきなりカメレオンUSB FX2を使うよりも、EZ-USB FX2となんらかのCPLDの方が便利そうです。

ジャンク箱を漁っていたら、昔のデザインウェーブマガジン誌についていたMAX7256ATCが載った基板がでてきました。

これを使う前提で考えることにしました。

そうなるとライターが必要なのですが、さすがにパラレルポートのあるPCはもうほとんどありませんし、使い勝手もよくありません。Webで調べてみるとPIC18F14K50を使ってUSB Blaster互換のものを作っている方がいらっしゃいまして、手持ちの部品でできそうだったので、早速組み立ててみました。

ファームウェアを書き込むと、USB Blasterとして認識しました。

<おまけ>

USB Blasterのコンフィグレーション端子の表はよく使いそうなのでユーザーガイドから抜き出しておくことにしました。

EZ-USB FX2LPをLinuxで動かしてみる(2)

引き続き EZ-USB FX2LP です。

こんどは、IN方向のベンチマークを行う bench_inを試してみました。(単に記載されている通りにやっただけです)

1.Examplesを試してみる

usb-fx2-io-examples-0.4.tar.gzをダウンロードしてきて、展開します。

slave FIFOを動作させるため、以下の通り結線します。

  • PA2/SLOE, PA5/FIFOADR1, RDY0/SLRDを3.3Vへ
  • PA4/FIFOADR0, RDY1/SLWRをGNDへ

接続するとこんな感じです。

接続したらPCに接続して、「make run」でテストが実行されます。

ということで、16Mバイトの転送が513msで実行され、31.194Mb/secの速度が出ていたことがわかります。

ちなみに環境は、

  • CPU : Celeron G530
  • Mother : ASRock H61M-ITX (Intel H61 Chipset)
  • Memory : 8GB
  • OS : LinuxMint11 64bit

です。EZUSB-FX2とマザーの前面USBポートの間にUSB2.0のHUBが入っています。

2.FX2Pipeを試してみる

前回インストールしておいた、FX2pipeも試してみました。FX2pipeではEZUSB側のF/Wを指定しなければならないのですが、これに今回のbench_inのF/Wを使ってみます。

さっきと同じディレクトリで、「fx2pipe -fw=bench_in.ihx -i -0」として動作させて、適当なところで CTRL-cで中止させます。

ということで、1100秒間で45069058048バイト=45Gバイトの転送を行って、平均はほぼ40MB/sということになりました。

<追伸>fwにbench_inを指定しなくても動作は一緒でした。あとはGPIFの使い方を調べないといけないですね。

 

EZ-USB FX2LPをLinuxで動かしてみる

またまた突然ですが、仕事絡みで高速に大量のデータをお手軽にPCに引き取る必要が出てきました。

この手の話は

  • ロジックアナライザでステートモードでキャプチャして、テキストでPCに取り込んで、テキスト処理でデータを抽出する
  • 適当な高速パラレルI/Oボードで受ける

というあたりが手軽な定番だったりするわけですが、今回はその後素人さんにも使わせないといけなくなるようです。しかも金もないときたもんです。

そこで適当な方法ででっち上げようと思うと、手軽そうなのは、

  • FT245R(これはFSですが・・・)やFT2232H、FT232HのHiSpeedのUSBデバイスで受ける
  • EZ-USB FX2LP などのHiSpeedのUSBデバイスで受ける

ということになります。
本当は手軽さから前者にしたかったのですが、FT2232HやFT232HがつながるCPLDボードがあいにく手元にありませんので、今回はカメレオンUSB FX2をターゲットにすることにしました。

・・・・っと、その前に、EZ-USB FX2LPを動かしてみよう、というわけです。

で、CycFX2Progを参考にEZ-USB FX2LPを動かしてみます。(基本的に書いてあることを踏襲しているだけです)

1.必要なもの

  • CycFX2Progのソース
    作者さんのサイトからダウンロードできるようです。 ちなみにライセンスはGPLとのことなので、これをベースにしたらソース提供してやらにゃいけませんが、きっとそんなことは気にしない人たちでしょう。(提供しない、といってるんではなくて、GPLってなんぞや、って人たちだろうな・・・と)
  • libusb
    すでにインストール済みのようでした
  • SDCC
    インストールされていなかったようなので、パッケージマネージャからインストールします。
    ・・・と思ったら、CycFX2Progとは直接関係ないようです。・・・が、サンプルをコンパイルするのには必要です。

 2.コンパイル

CycFX2Progは適当なフォルダに展開してMake一発みたいです。
後のことを考えると、cycfx2progはパスが通っているところに置くのが良さそうです。そうすると、EZ-USB FX2LP側のアプリケーションのMakefileが「make run」で実行(テスト)までもっていけるようです。 自分はホームディレクトリに bin フォルダを掘って、そこに .bashrc でPATHを通しました。

3.ホストシステムの準備

/etc/udev/rules.d/z70_usbfx2.rules というファイル名で以下の内容のファイルを作ります。

次に、ユーザの設定で、自分のアカウントが「plugdev」というグループに属しているかを確認します。

その後、udevを再起動します。

さらに、EZ-USB FX2LPを取り付け直して、認識させ直します。

4.USBの折り返しテスト

こちらに記載の折り返しテストを実施してみます。

単純にソースファイル(usb-fx2-local-examples-0.5.tar.gz)をダウンロードして展開すると、

  • hello_world_ram
  • hello_world_usb
  • convert_string

という3つのテストプログラムのフォルダができます。各フォルダの中で、「make run」するとテストが完了します。

5.その他メモ

ただひたすらデータ転送するのであれば、CY7C68013A(すなわちFX2LPが必要ですが、FX2Pipeというプログラムも公開されています。ひょっとしたら、これを使うとFX2LP側のプログラムは不要になるような気がします。とりあえずインストールは、

でできました。

#こんな簡単にLinuxでEZ-USB FX2LPを動かすノウハウを公開している作者さんに感謝です。