[Suzaku:01823] Re: 高速GPIO取得方法について

松本崇行 email@hidden
2010年 6月 10日 (木) 11:57:00 JST


溝渕様

 お世話になります。松本です。
お返事が遅れまして申し訳ございません。

>GPIOの値をLinuxから見に行ってdramまたはBRAMに格納するような処理を行なう
>とデータのとりこぼしが発生すると思います。GPIOではなく専用のIPを開発する
>ことをおすすめします。

リアルタイム性はLinuxOSを使う限り無理な話でした。すみません。
BRAM、DRAMへの取り込みは問題ないことは理解できました。
別な方法でも検討してみます。
ありがとうございました。

松本


溝渕です。

松本崇行 wrote:
>  お世話様です。下記回答ありがとうございます。
> 私の説明不足だった点を訂正致します。
> データ量的には、3msec間隔ごとに2kBが転送されますので、
> 667kB/secになるかと思います。
> 2kBのデータの取り込み自体は60μsec以内に行いたいです。

すみません。解釈を間違えていました。外部にデータを転送するのに必要な処理
量は、
2kB/3ms = 667kB/sec * 8bit/Byte = 約5Mbps
となるのですね。

内部メモリに2kBのデータの取り込むのに必要な処理量が、
2kB/60μsec = 3333kB/sec * 8bit/Byte = 約260Mbps
になりますね。

> それでもフラッシュメモリへの書き込みは回数の問題で不可ということになります
> ね。

そうですね。フラッシュメモリは頻繁に書き換えるような用途では使用しない方
が無難だと思います。

また、5Mbpsだと、sz130やsz410で使われているSPIフラッシュメモリに書き込む
には速度的に厳しいです。

> 改めて、下記2点の確認をさせて下さい。
> ・2kBのデータを60μsec以内にDRAM領域に格納することは可能でしょう
か。
>  (条件は下記の通り、マニュアルトリガを掛けながら1000回繰り返します)

SUZAKU I/O AV Boardでは、約320Mbps(40MB/s)のデータをDRAM領域に格納してい
ます(約2.5kB/60μsec)。

なので、2kBのデータを60μsec以内に格納することは可能です。

さらに、FPGA内部のBRAMを使用すると、DRAMよりも高速にデータを格納すること
ができます。BRAMのサイズは18kbitなので、BRAM1つあたり、1000回分のデータ
を格納できそうです。

> ・USB転送の場合、転送速度とはまた別に
>  DRAM領域からUSB経由でPC等に転送する処理自体は間に合いますか。
>  (2kBを3msec以内)

SUZAKUはUSBインターフェースを持っていないので、USBデバイス側の拡張する必
要があります。

まず、帯域についてです。

USB Full Speed(12Mbps)だとバルク転送の実効速度は8Mbpsであり、常時5Mbpsの
帯域を確保するのは難しいです。

Hi-SpeedのUSBデバイスのLSIをSUZAKUに拡張することが必要です。その際に、
USBデバイス側のデバイスドライバ等の作成も必要です。

LANとUSBが同じ程度の処理と想定すると、
- sz130:帯域は足りてますが、プロトコル処理や他の処理を含めると性能ギリギ
リです
- sz410:十分な性能を持っています

次に、時間的制約についてです。

3msec以内に2kBの転送を完了させなければならない場合には、当社で提供してい
るLinuxはリアルタイム性が無いため使用は難しいと思います(転送自体が開始さ
れれば、十分な帯域を確保できますが)。

例えば、3msec間隔ごとにdramまたはBRAM等に転送される2kBのデータをいくつか
貯めておき、まとめて転送するなどの対応が可能であればLinuxも使用可能に
なってくると思います。

■補足
5Mbpsであれば、LANで転送することもできそうです。以下はLANで転送する場合
のSUZAKU単体での性能です。ネットワークの環境等により意図した性能が発揮で
きない場合がありますので注意してください。
- sz130:帯域は足りてますが、プロトコル処理や他の処理を含めると性能ギリギ
リです
- sz410:十分な性能を持っています

もしBRAMを使用する場合は、FPGA内部のBRAMを複数用意したり、DMA転送などを
利用して、データをとりこぼさないようにする工夫が必要です。

GPIOの値をLinuxから見に行ってdramまたはBRAMに格納するような処理を行なう
とデータのとりこぼしが発生すると思います。GPIOではなく専用のIPを開発する
ことをおすすめします。







suzaku メーリングリストの案内