その次にわたしがやりたいのはいよいよUSB通信、、、ではなくてFIFOを動かしてみたい.FIFOの先っぽにDACをつけて、波形を出力してみたい.
FIFOからなにがしかの出力を得るには、「GPIF Designer」というソフトで出力波形をデザインする仕組みになっています.そこでまずはGPIF Designerをいじってみました.
こちらのCypress AN66806を参考にしました. http://japan.cypress.com/?rID=12937
やりたいコトは、
・FIFOを出力としてつかう
・FIFO CLOCKはFX2LPが発生する48MHz
・FIFO出力レートは4MHzとする
・そのため、CLOCK÷12=4MHzをFX2LPから出力する
今回はまず、4MHzをFX2LPから出力するところまでをやってみます.
main()
サンプルプログラムをここに置きます.
main()を見るとこうなっています.GpifInit()を生成してくれるのが「GPIF Designer」です.
main()
{
WORD g_data;
CPUCS = 0x10;
GpifInit();
XGPIFSGLDATLX = g_data;
while(1);
}
GPIF Designerは、FX2LP DVKをインストールすると自動的にインストールされています.
↓GPIF Designerを起動しますと、どのCPUをTargetにするかを尋ねられますので、ここで使うCY7C68013Aは56pinですのでそれをポチッとしてOKと押します.
↓するとこんな画面が表示されます.左がCY7C68013A、右が外部回路でこの場合はDACを接続したいなどと構想しているわけです.CY7C68013Aにはアドレスpinが無いのでADRには配線が表示されません.
↓最初に、CLKの場所でマウスを右クリックしますと、
↓この画面が出ます.いまはCY7C68013AからCLOCKを出力するつもりなので、Internalを選択.周波数はとりあえず48MHzにします.IFCLOCK Outputにチェックを入れる.OKを押す.
↓つぎはRDYで右クリック.
↓次はCTKを右クリック.
↓CTLは3本ありますが、2本は使わないのでチェックを外します.1本残したCTL0は名前をdiv12にします.(しなくてもOK) OKを押す.
↓いよいよ波形の編集です.「Single Write」タブを開きます.縦の点線が48MHzの各タイムスロットを表しています.6タイムスロット目のdiv12の行をクリックしますと、div12の波形が変化します.StateがS0になります.
↓つぎにdiv12のさらに6タイムスロット先をクリックしますと、こんな画になります.それっぽくなりましたが、div12が上がったり下がったりするのは永久運動ですからどこまでこの画を描き続ければいいのでしょうか???
↓永久に描き続けるわけにはいかないので、loopさせてオシマイにします.Status行の最後から1つ手前をクリックすると、そこに◆マークがつきます.これ以外の場所に◆マークをつけるとおかしな波形になりますのでご注意を.
↓◆を右クリックしてEditをクリック、
↓出てくる画面をこうします.S0というのはS0へ戻る(loop)しろという意味です.これで永久運動が実現します.LOOPのチェックを忘れずに.
↓最後に、C言語のソースを書きだして「GPIF Designer」の作業は終了です.div12.cとでも名付けておきます.
Keil IDEでビルド
↓こうなっている(かもしれない)projectに、さきほど生成したdiv12.cを組み込みます.
↓Keil IDEでファイルを追加するやりかたはちょっと変わっています.projectのペインで右クリックして出てくるメニューで「Manage Components」を選びます.
↓この画面でAdd Filesボタンを押します.
↓OKを押すと、IDEのprojectがこのようになります.
この後にProject→Build Targetして、ビルドが正常終了するコトを確認.
USB Control Centerで.hexファイルをdownloadしてFX2LPプリント基板を動かします.
↓FX2LPの「CTL0」ピンをオシロで観測すると、4MHzが観測されます.これにて、48MHz÷12=4MHzのタイミング信号を生成できました.
データには着手してませんが、今宵はここまでにしとうございます.
かしこ
INDEXページへ
0 件のコメント:
コメントを投稿