趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。※サイト移転しました(tomono.eleho.net ⇒ tomono.tokyo)
RSS icon
  • EPM570T100C5Nを動かしてみた

    投稿日 2012年 6月 18日 コメントはありません

    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)

    投稿日 2012年 6月 17日 コメントはありません

    次に、環境を整えます。

    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)

    投稿日 2012年 6月 16日 コメントはありません

    いずれカメレオン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)

    投稿日 2012年 6月 14日 コメントはありません

    引き続き 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で動かしてみる

    投稿日 2012年 6月 12日 コメントはありません

    またまた突然ですが、仕事絡みで高速に大量のデータをお手軽に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を動かすノウハウを公開している作者さんに感謝です。