| スパルタン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通信によるエコー回路 ( 自己リセットを付加 ) 
 | |||||||||||||||
|  メールでのご質問はこちらへどうぞ | |||||||||||||||
| 
 |