DS765中介绍:用户地址空间译码是通过定义在AXI4-Lite IPIF中的两个"地址范围定义(ARD)"数组参数,这些参数映射到VHDL的类属表中或者Verilog的参数中去.这两个类属名是C_ARD_ADDR_RANGE_ARRAY和C_ARD_NUM_CE_ARRAY.
C_ARD_ADDR_RANGE_ARRAY数组内定义来自处理器总地址空间的连续地址块为一个地址空间,用数组中一对元素来指定:第一个元素是块的起始地址(Base Address),第二个元素是块结束地址(High Address),地址是字节地址,元素的数据类型是std_logic_vector(0 to 63).地址对的值遵循三个规则:1.块大小(以字节计)必须2次幂(2, 4, 8, 16, 32, 64, 128, 256等等);2.起始地址必须是以块的倍数为边界;3.结束地址是等于起始地址加块大小减一.例如,连续块大小是2048字节,如果起始地址是0x00000000,那么结束地址就是0x000007FF.
C_ARD_NUM_CE_ARRAY数组内每个元素定义为对一个地址空间内片允许(CE)的数量,值是正整数的2次幂,每个地址空间最少必须指定一个片允许.地址空间被以数据宽度或32位一个片允许来细分并顺序指定.
由以上介绍知道:用户IP如有三个寄存器的地址空间,其连续地址块大小将是3X4等于12字节在C_ARD_ADDR_RANGE_ARRAY数组内,而对应C_ARD_NUM_CE_ARRAY数组内一个元素的值,也即对应地址空间的片允许数量是4(要满足2次幂);CIP精灵建立的AXI4-Lite用户IP最多是32个32位寄存器,片允许数量应是32,32X4,其地址空间范围就是128字节.问题:地址空间范围应该能大于128字节,也就是可以有多于32个寄存器可用,我如何修改我的用户IP能使用比32多的寄存器? |