スパルタンU USB-GPIFボード ASB-004/ASB-004R USB通信によるFPGA初期化方法 |
|||||||||||||||
|
|||||||||||||||
初期化(INIT)スイッチを押すと,FPGAは初期化されます.USB通信を利用し,ダウンロードする場合,スイッチを押すのは多少面倒な作業です.Visual
C++やVisual Basicのプログラムの始めに,FPGAを初期化する関数などで,ダイナミックに回路を変更することが可能です.このようなプログラムを利用すれば,一定時間ごとに,自動的にFPGAの内部回路を変更することも可能です. 下図のように,FPGAが出力するリセット信号をCPLDが受け取り,PROGをLOWに下げ,FPGAを初期化する単純なものです. FPGAがリセット信号を出力するということは,FPGA内部にある条件がきたら,リセットを出すという回路を記述する必要があります.例えば,USBから0x2Aを検出したら,1時間経過したら,などです.ピン番号はFPGAとCPLDで次の通りです.
この2つのピンを使用して,下のタイムチャートのように L[1:0] を 00,01,10,11 でリセットをかけるようにCPLD内部回路を変更しました.今回は,2つの信号を考慮しましたが,1つの信号だけでも,リセットは可能です. FPGAがこのように,カウントアップするとCPLDはリセット (PROGをLow) とします.このように自己リセットを加えた CPLD(XC9572XL) の回路は,次からダウンロードして下さい.
次に,エコー回路を例に,FPGAの内部回路について説明します.ここでは,USBから*(0x2A)が送られるとリセットさせます.この 0x2A とリードイネーブル信号にて,順に 00,01,10,11 を L [1:0] に出力されます. SELF_RST port map ( CLK => CLK18M, RST => gd, ENB => ENB, DATA => DATA, L => L );
■USB通信によるエコー回路 ( 自己リセットを付加 )
|
|||||||||||||||
メールでのご質問はこちらへどうぞ | |||||||||||||||
|