== お知らせ ==?

=Smart-USB Sigma製品=
リドライバ機能付きUSB3.0コネクタをリリースしました.FPGAボードを筐体に収容するときに便利です.
詳細

 

Qsysを利用した回路の使い方(メモリアクセス編)

Qsysを利用したFPGA回路をリファレンス制御アプリケーションから制御する方法(メモリ・アクセス編)

メモリアクセスは高速で大容量のデータ転送を行う時に使用する転送方法です。 GPIF-AVALONブリッジ回路によりAVALONバスのプロトコルに変換された後では、メモリアクセスレジスタアクセスの本質的な違いはありません。
(※レジスタベースアドレスと物理メモリのアドレスを重複させる事で低速ではありますが、
レジスタアクセスで物理メモリにアクセスする事も可能です。)

メモリアクセスは、GPIF-AVALONブリッジ・マスタ回路内にあるメモリベースアドレスレジスタを転送開始時のスタートアドレスとして使用します。 このメモリベースアドレスはレジスタ番号"0" に配置した32ビットのレジスタで、AVALONバス上にある「レジスタベースアドレス+0x00」のペリフェラルと重複して配置しています(サンプル回路では、"notuse"という名称のPIOペリフェラルにレジスタ番号"0"を割り当てています。ユーザが間違えてレジスタ"0"を使用しないためにに割り当てています)。

メモリアクセス概要

注意点は以下3点です。

  • レジスタ番号"0" へのライト時は「GPIF-AVALONブリッジ・マスタ回路内のメモリベースアドレスレジスタ」と「AVALONバスにあるレジスタベースアドレス+0x00」の両ペリフェラルにライトを行います。
  • レジスタ番号"0" のリード時は「GPIF-AVALONブリッジ・マスタ回路内のメモリベースアドレスレジスタ」が優先してリードされます。この際「AVALONバスにあるレジスタベースアドレス+0x00」にもリードストローブを発行しますが、リードデータは破棄します。
  • メモリベースアドレスレジスタの下位2ビットは「0」に固定になります。

 


 

『メモリ操作の手順』

ホストPCの制御アプリケーションからメモリ転送を行う手順を説明します。
SX-USB3システム開発ボードのサンプル回路と同じマップ(下表)でメモリが配置されている場合です。

名称 先頭アドレス 終了アドレス
ssram1 0x00000000 0x007fffff
ssram2 0x00800000 0x00ffffff

  1. 転送レングスを「0x00800000」に設定する。
  2. ssram1にアクセスする場合には、レジスタ番号"0"に32ビット長で「0x00000000」を書き込んでからメモリ転送を行う。
  3. ssram2にアクセスする場合には、レジスタ番号"0"に32ビット長で「0x00800000」を書き込んでからメモリ転送を行う。
     

(補足)
レジスタ番号"0"に「0x00000000」をセット後に転送レングスを「0x01000000」でメモリ操作を行うとssram1とssram2を連結した16MWのメモリとしてアクセスする事も可能です。

 


 

『メモリ転送時の総転送バイト数』

メモリリードの場合、ホストPC上の制御アプリケーションで指定したメモリリードのデータ量と、実際にGPIF-AVALONブリッジ・マスタがペリフェラルから読み出すデータ量が異なります。
これは、USBコントローラ(FX2)とGPIF-AVALONブリッジ・マスタ内に各々2,048バイトのFIFOを持っているためです。 

 ホストPCがメモリリードを開始するとFX2とGPIF-AVALONブリッジ・マスタ内のFIFOは、ホストPCからUSBのリードパケット(データ転送要求)を受信後、即座にリードデータをホストPCに出力するため、FIFOを常にFullの状態にする様にペリフェラルからデータをリードしておきます。

メモリデータ転送量

メモリアクセスの方法

「ホストPCが読み出すデータ量 = メモリリードで指定したデータ量 + 4096バイト」となります。
また、余分にリードした4096バイトはメモリリードが完了した時点で破棄してしまいますので注意して下さい。

 


 

「レジスタ・アクセス」


2月の注目製品

AX-Card7M
AX-Card7M

無償開発ツールが利用できる大容量・大規模FPGAボードです.

オンラインユーザ

ゲストユーザー: 1

=製品情報=

当社のFPGAボードを購入していただいたお客様には、設計サポートを無償提供しています.

ニュースリリースをご覧下さい.