IPIF - PLBv46_Slave_Single
0赞要做CustomIP,就要好好理解IPIF。
PLBv46的IPIF分为很多类型,Slave的和Master的,Single Beat的和Burst的。
PLBv46 Slave Single 的 Datasheet 已经写得很清楚了,在此做一些简要笔记。
应用PLBv46 Slave Single,最主要是要理解其中的两个参数:C_ARD_ADDR_RANGE_ARRAY 和 C_ARD_NUM_CE_ARRAY.
ARD 的意思就是 Address Range Definition.
这两个参数和这些Port有关:
Bus2IP_CS --> 总线宽度为C_ARD_ADDR_RANGE_ARRAY除2。
Bus2IP_WrCE和Bus2IP_RdCE --> 总线宽度为C_ARD_NUM_CE_ARRAY。
C_ARD_ADDR_RANGE_ARRAY --> CS
这个参数(GENERIC)定义了整个IP的地址空间中可以有多少个独立而不要求连续的地址空间。
参数内容成对出现,一个基地址,一个高地址。
使用64bit地址以备将来扩展。
C_ARD_NUM_CE_ARRAY --> CE
这个参数定义了一个地址空间中有多少个需要独立使能信号(CE)。主要是为了控制不同的寄存器组而设计。
数值需要是2的次方,比如1, 2, 4, 8, 16, 32等等。
每个地址空间必须有至少一个CE。
这两个参数都是在plb_address_decoder.vhd中被定义和使用。
如果是做CustomIP,完全可以手动定义这两个GENERIC参数。
如果需要做某种范围内的自动生成,可以参照GPIO的qual_ard_addr_range_array函数计算过程。