FC2カウンター FPGAの部屋 AXI IIC のお勉強1
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

AXI IIC のお勉強1

今までは、自分で作ったI2Cの回路を使用してきたが、Xilinx社のEDK用IPコアの AXI IIC を使ってみることにした。そこで、AXI IICの使い方を勉強してみた。

まずは、LogiCORE IP AXI IIC Bus Interface (v1.01a) のドキュメントを見て学習した。
特徴としては、
・AXI4-Liteインタフェース
・マスタまたはスレーブ動作(今回はマスタとして使用)
・スタンダードモードは100KHz(高速モードは400KHz)
・7ビットまたは10ビットのアドレス
・送信FIFO、受信FIFOは16深度
こんなところか。当然、割り込みにも対応している。マスタ動作でもあるし、今回は割り込みは使用しない

ブロック図を下に示す。ドキュメントの Figure 1: AXI IIC Bus Interface Top Level Block Diagram を引用する。
AXI_IIC_1_121221.png
上図を見ると、AXI IICのイメージが掴めると思う。

パラメータは飛ばして、レジスタ表を下に示す。使用するレジスタだけを抜き出してある。下の表がすべてのレジスタではない。すべてのレジスタ表はマニュアルの11ページの Table 4: Registers を参照のこと。

AXI IIC レジスタ表
Base Address + Offset (hex)Register NameAccess Type
Default 
Value (hex)
C_BASEADDR + 0x100Control Register (CR)Read/Write0x0
C_BASEADDR + 0x104Status Register (SR)Read0xC0
C_BASEADDR + 0x108Transmit FIFO (TX_FIFO)Read/Write0x0
C_BASEADDR + 0x10CReceive FIFO (RX_FIFO)Read N/A
C_BASEADDR + 0x114
Transmit FIFO Occupancy Register 
(TX_FIFO_OCY)
Read 0x0
C_BASEADDR + 0x118
Receive FIFO Occupancy Register 
(RX_FIFO_OCY)
Read 0x0


Control (CR) Register(C_BASEADDR + 0x100、すべてのビットがRead/Write, Reset Value はすべて0)
 ・[31:7]bit - Reserved.
 ・[6] - GC_EN : General Call Enable.
 ・[5] - RSTA : Repeated Start.
 ・[4] - TXAK : Transmit Acknowledge Enable.
   “1” - ACK bit = “1” - not-acknowledge
   “0” - ACK bit = “0” - acknowledge.
 ・[3] - TX : Transmit/Receive Mode Select.
    "1" - AXI IIC transmit.
    "0" - AXI IIC receive.
   Read/WriteのコントロールはTX_FIFOに書くアドレスのLSBで決まる。LSB="1"はRead。
 ・[2] - MSMS : Master/Slave Mode Select.
 ・[1] - TX_FIFO Reset : Transmit FIFO Reset.
   “1” resets the transmit FIFO.
   “0” transmit FIFO normal operation.
 ・[0] - EN : AXI IIC Enable.
  “1” enables the AXI IIC controller.
  “0” resets and disables the AXI IIC controller but not the registers or FIFOs.

Status Register (SR)(C_BASEADDR + 0x104、すべてのビットがRead、Reset Valueは TX_FIFO_Empty, RX_FIFO_Empty のみ 1 で後は 0)
 ・[31:8]bit - Reserved.
 ・[7] - TX_FIFO_Empty : Transmit FIFO empty.
 ・[6] - RX_FIFO_Empty : Receive FIFO empty.
 ・[5] - RX_FIFO_Full : Receive FIFO full.
 ・[4] - TX_FIFO_Full : Transmit FIFO full.
 ・[3] - SRW : Slave Read/Write.スレーブモード用
 ・[2] - BB : Bus Busy. I2C通信のスタートとストップの間を示す。つまりI2C通信の最中だということを示す。
  “1” indicates the bus is busy.
  “0” indicates the bus is idle.
 ・[1] - AAS : Addressed as Slave.現在のI2C通信がスレーブ用アドレスに合っていることを示す。
  “1” indicates being addressed as a slave.
  “0” indicates not being addressed as a slave.
 ・[0] - ABGC : Addressed By a General Call.
  1. 2012年12月21日 05:59 |
  2. IP
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/2339-b58416b8
この記事にトラックバックする(FC2ブログユーザー)