AR# 52468

Zynq-7000 - Zynq の AXI インターフェイスと AXI プロトコルとで AxSIZE のポート幅が異なる

説明

AXI プロトコルには、AWSIZE/ARSIZE は 3 ビット幅であるとあります。

しかし、PL のある Zynq プロセッシング システムの AXI インターフェイスでは、これらの信号は 2 ビットしかありません。

Zynq PS が AXI プロトコルに準拠していないのはなぜですか。

 

ソリューション

Zynq の AXI インターフェイスは AXI プロトコルに準拠しています。  

しかし、インターフェイスおよびその関連データ幅の性質上、AxSIZE 信号には 2 ビットしか必要ありません。

『Zynq テクニカル リファレンス マニュアル』(UG585)の第 5 章によれば、インターフェイスおよび AxSIZE の幅は次のようになっています。

Zynq AXI インターフェイス AxSIZE 幅 (ビット) データ幅 (ビット)
M_AXI_GP{0:1} AxSIZE[1:0] 32
S_AXI_GP{0:1} AxSIZE[1:0] 32
S_AXI_HP{0:3} AxSIZE[1:0] 32/64
S_AXI_ACP AxSIZE[1:0] 64
 

上記の値は、Zynq プロセッシング システム (PS) の Unisim マクロ インスタンシエーションに対応しています。  

このインスタンシエーションは、すべての Zynq デザインに共通のエレメントです。 

これは ISE の <path>\Xilinx\14.x\ISE_DS\ISE\verilog\src\unisims\PS7.v にあります。

上記の値から、AXI インターフェイスの最大データ幅は 64 ビットであることがわかります。  

AXI プロトコル仕様によれば、2'b11 の AxSIZE は、64 ビットの伝送サイズに対応します。

Zynq-7000 インターフェイスが 64 ビットを超えるデータ幅を持つことは考えられないので、AxSIZE の最上位ビットを使用する必要はありません。  

このため、Zynq PS に対して、このビットは HDL でマスクされます。

このマスキングは、PS に関連付けられている HDL を確認するときにはっきりとあらわれます。 

PS7.v には、次のようなコードがあります。 

module PS7(

 ...

output [1:0] MAXIGP0AWSIZE;

....

endmodule

 

Moving to the PS HDL wrapper  <path>\Xilinx\14.x\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\processing_system7_vx\hdl\verilog\processing_system7.v

module processing_system7(

...

output [2:0] M_AXI_GP0_AWSIZE,

... );

...

assign M_AXI_GP0_AWSIZE[2:0] = {1'b0, M_AXI_GP0_AWSIZE_i[1:0]};

...

PS7 PS7_i (

...

.MAXIGP0AWSIZE   (M_AXI_GP0_AWSIZE_i),

... );

 

 

AR# 52468
日付 10/14/2014
ステータス アクティブ
種類 一般
デバイス
ツール 詳細 概略
IP