本帖最后由 taogehao 于 2013-6-5 17:28 编辑
使用PLB总线没问题,但是使用AXI的有问题,相同的设置,出错的部分在BMM文件。
使用PLB和AXI,edk都会生成一个 ***.BMM 文件,ise根据这个BMM文件重新生成一个 ***_bd.BMM文件用于生成bit文件。
PLB的 ***_bd.BMM内容如下:
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0', ID 100, memory map.
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_MAP microblaze_0 MICROBLAZE 100
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'lmb_bram_combined' 0x00000000:0x00007FFF (32 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE lmb_bram_combined RAMB32 [0x00000000:0x00007FFF]
BUS_BLOCK
XLXI_9/lmb_bram/lmb_bram/ramb36e1_0 RAMB32 [31:28] [0:8191] INPUT = lmb_bram_combined_0.mem PLACED = X3Y7;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_1 RAMB32 [27:24] [0:8191] INPUT = lmb_bram_combined_1.mem PLACED = X2Y7;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_2 RAMB32 [23:20] [0:8191] INPUT = lmb_bram_combined_2.mem PLACED = X3Y3;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_3 RAMB32 [19:16] [0:8191] INPUT = lmb_bram_combined_3.mem PLACED = X3Y4;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_4 RAMB32 [15:12] [0:8191] INPUT = lmb_bram_combined_4.mem PLACED = X3Y5;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_5 RAMB32 [11:8] [0:8191] INPUT = lmb_bram_combined_5.mem PLACED = X3Y6;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_6 RAMB32 [7:4] [0:8191] INPUT = lmb_bram_combined_6.mem PLACED = X3Y8;
XLXI_9/lmb_bram/lmb_bram/ramb36e1_7 RAMB32 [3:0] [0:8191] INPUT = lmb_bram_combined_7.mem PLACED = X3Y10;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'share_bram_block_combined' 0x84418000:0x84419FFF (8 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE share_bram_block_combined RAMB32 [0x84418000:0x84419FFF]
BUS_BLOCK
XLXI_9/share_bram_block/share_bram_block/ramb36e1_0 RAMB32 [31:16] [0:2047] INPUT = share_bram_block_combined_0.mem PLACED = X3Y9;
XLXI_9/share_bram_block/share_bram_block/ramb36e1_1 RAMB32 [15:0] [0:2047] INPUT = share_bram_block_combined_1.mem PLACED = X3Y11;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
AXI的***_bd.BMM 文件如下:
ADDRESS_MAP microblaze_0 MICROBLAZE-LE 100
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'microblaze_0_bram_block_combined' 0x00000000:0x00007FFF (32 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE microblaze_0_bram_block_combined RAMB32 [0x00000000:0x00007FFF]
BUS_BLOCK
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_0 RAMB32 [31:28] [0:8191] INPUT = microblaze_0_bram_block_combined_0.mem PLACED = X0Y20;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_1 RAMB32 [27:24] [0:8191] INPUT = microblaze_0_bram_block_combined_1.mem PLACED = X1Y22;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_2 RAMB32 [23:20] [0:8191] INPUT = microblaze_0_bram_block_combined_2.mem PLACED = X2Y21;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_3 RAMB32 [19:16] [0:8191] INPUT = microblaze_0_bram_block_combined_3.mem PLACED = X1Y23;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_4 RAMB32 [15:12] [0:8191] INPUT = microblaze_0_bram_block_combined_4.mem PLACED = X2Y20;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_5 RAMB32 [11:8] [0:8191] INPUT = microblaze_0_bram_block_combined_5.mem PLACED = X1Y21;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_6 RAMB32 [7:4] [0:8191] INPUT = microblaze_0_bram_block_combined_6.mem PLACED = X1Y19;
XLXI_6/microblaze_0_bram_block/microblaze_0_bram_block/ramb36e1_7 RAMB32 [3:0] [0:8191] INPUT = microblaze_0_bram_block_combined_7.mem PLACED = X1Y20;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'axi_bram_ctrl_0_bram_block_combined' 0x41418000:0x4141FFFF (32 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE axi_bram_ctrl_0_bram_block_combined RAMB32 [0x41418000:0x4141FFFF]
BUS_BLOCK
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_0 RAMB32 [31:28] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_0.mem;啥都没有,应该就是这部分有问题了
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_1 RAMB32 [27:24] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_1.mem;
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_2 RAMB32 [23:20] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_2.mem;
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_3 RAMB32 [19:16] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_3.mem;
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_4 RAMB32 [15:12] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_4.mem;
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_5 RAMB32 [11:8] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_5.mem;
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_6 RAMB32 [7:4] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_6.mem;
XLXI_6/axi_bram_ctrl_0_bram_block/axi_bram_ctrl_0_bram_block/ramb36e1_7 RAMB32 [3:0] [0:8191] INPUT = axi_bram_ctrl_0_bram_block_combined_7.mem;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;
两者的差别就在与 PLB的share_bram_block_combined 已经有 PLACED = ****; 而AXI的axi_bram_ctrl_0_bram_block_combined 这部分后面什么都没有,好像palace出问题了,各位有没有遇到相似的问题,可有解决办法? |