2014年9月27日土曜日

Slave FIFOs メモ書き②

レジスタの設定についてのメモ。


「15.6.4 EPxFIFOCFG」について、

---------------

6 INFM1 IN Full Minus One.
When a FIFO configuration register’s ‘INEARLY’ or INFM bit is set to ‘1’, the FIFO flags for that endpoint
become valid one sample earlier than when the FULL condition occurs. These bits take effect
only when the FIFOs are operating synchronously—according to an internally or externally supplied
clock. Having the FIFO flag indications a clock early simplifies some synchronous interfaces (applies
only to IN endpoints).

INEARLYかINFM のいずれかのビットが1にセットされている時、
FULL になるよりも一サンプル早くフラグが有効になる。

これらのビット(INEARLYとINFM )は、
同期モードの場合だけ(内部あるいは外部から供給されているクロックに従って)効果を表す。

一クロック早く結果を示すフラグは、いくつかの同期転送のインターフェースを簡素化します。

(INエンドポイントのみに適用されます。)


---------------

5 OEP1

 OUT Empty Plus One.
When a FIFO configuration register’s ‘OUTEARLY’ or OEP1 bit is set to ‘1’, the FIFO flags for that
end point become valid one sample earlier than when the EMPTY condition occurs. These bits take
effect only when the FIFOS are operating synchronously—according to an internally or externally
supplied clock. Having the FIFO flag indications a clock early simplifies some synchronous interfaces
(applies only to OUT endpoints).

OUTEARLYかOEP1のいずれかのビットが1にセットされている時、
EMPTYになるよりも一サンプル早くフラグが有効になる。

これらのビット(OUTEARLYとOEP1)は、
同期モードの場合だけ(内部あるいは外部から供給されているクロックに従って)効果を表す。

一クロック早く結果を示すフラグは、いくつかの同期転送のインターフェースを簡素化します。

(OUTエンドポイントのみに適用されます。)


---------------

4 AUTOOUT

 Instantaneous Connection to Endpoint FIFO. This bit applies only to OUT endpoints.

0 As soon as a buffer fills with USB data, an endpoint interrupt is asserted. The connection of
the buffer to the endpoint FIFO is under control of the firmware, rather than automatically
being connected. Using this method, the firmware can inspect the data in OUT packets, and
based on what it finds, choose to include that packet in the endpoint FIFO or not. The firmware
can even modify the packet data, and then commit it to the endpoint FIFO. Refer to
Enhanced Packet Handling in section Chip Revision Control Register on page 231.

1 As soon as a buffer fills with USB data, the buffer is automatically and instantaneously committed
to the endpoint FIFO bypassing the CPU. The endpoint FIFO flags and buffer counts
immediately indicate the change in FIFO status. Refer to the description of the DYN_OUT
bit in section Chip Revision Control Register on page 231.

The SKIP bit (in the EPxBCL registers) chooses between skipping and committing packet data. Refer
to OUTPKTEND in section Force OUT Packet End Register on page 255.

0:バッファが一杯になったら、ファームウェアに割り込みでコントロールが渡される?
1:バッファが一杯になったら、CPUバイパスして(迂回して)勝手にPCへFIFOへ送信する?


---------------

3 AUTOIN

 Auto Commit to SIE. This bit applies only to IN endpoints.
EZ-USB has EPxAUTOINLEN registers that allow the firmware to configure endpoints to sizes
smaller than the physical memory sizes used to implement the endpoint buffers (512 or 1024 bytes).
For example, suppose the firmware configures the EP2 buffer to be 1024 bytes (this must match the
wMaxPacketSize value in the endpoint descriptor), and then sets up EP2 as a 760 byte endpoint by
setting EP2AUTOINLEN=760. This makes EP2 appear to be a 760 byte endpoint to the USB host,
even though EP2's physical buffer is 1024 bytes.

0 Each packet has to initially be manually committed to SIE, (prime the pump). See section
Chip Revision Control Register on page 231.

1 EZ-USB automatically packetizes and dispatches IN packets according to the packet length
value it finds in the EPxAUTOINLEN registers. In this example, the GPIF (or an external
master, if the EZ-USB is in Slave FIFO mode) could load the EP2 buffer with 950 bytes,
which the EZ-USB logic would then automatically send as two packets, of 760 and 190
bytes. Refer to Enhanced Packet Handling in section Chip Revision Control Register on
page 231.

0
パケットのサイズを始めに定義する必要があるって事?

1
エンドポイントを本来よりも小さい大きさに見せかける事ができる。
例えばEP2について、EPxAUTOINLENを760Byteに設定すると、
950Byteのデータは760Byteと190Byteのパケットに分割されて、自動的ホスト(PC)側に送信される。

//……1パケット目の760Byteは兎も角、2パケット目の190Byteは、
//書き込みが終了した事を合図に送信されるのかな?


---------------

2 ZEROLENIN

 Enable Zero length IN Packets.
0 Zero length packets are sent on PKTEND.
1 A zero length packet is sent when PKTEND is activated and there are no bytes in the current
packet.

//良く分からなかった。
0:長さ0のパケットはPKTENDに?送られる。(長さ0のパケットはPCに送られる、って事では無くて?)(あるいは、長さ0だと送信されないのか?)

こちらは「packets」なので、複数のデータが送られるって事?

1:PKTENDが有効ならば、長さ0のパケットは(PCに?)送信される。そして現在のパケットにはデータが無い???(エンドポイントにデータが無い、で良いのか???)

こちらは「packet」なので、単数(一つ)のデータが送られるって事?

//どちらにせよ、長さ0のパケットがPCに送信されるとは考えずらいので、???
//……つまり、つまり、意味が分からない……。


---------------

0 WORDWIDE

 Select Byte/Word FIFOs on PORTB/D Pins.
This bit selects byte or word FIFOS on the PORTB and PORTD pins. The WORD bit applies ‘for
IFCFG =11 or 10’.
The OR of all four WORDWIDE bits is what causes PORTD to be PORTD or FD[15:8]. The individual
WORDWIDE bits indicate how data is to be passed for each individual endpoint.

0 WORDWIDE
Select Byte/Word FIFOs on PORTB/D Pins.
FIFOでのビット幅の選択(8bitOR16bit)
0:Byte幅(8bit)
1:WORD幅(16bit)
「IFCFG =11」にして、「Slave FIFO Interface (external master)」を選択している必要がある。


---------------

0 件のコメント:

コメントを投稿