Memory 如何从23位正常地址到行、列和银行地址计算RAM地址?

Memory 如何从23位正常地址到行、列和银行地址计算RAM地址?,memory,vhdl,ram,Memory,Vhdl,Ram,我正在用VHDL做一些东西。我从CPU得到了23位地址,我需要把它转换成RAM中的地址。但是RAM端的接口为:12位行地址、9位列地址和2位银行地址 我试着得到这样的东西:Bank1={0,4,8,12,…},Bank2{1,5,9,13,…},Bank3{2,6,10,14,…}和Bank4={3,7,11,15,…} 我不知道如何将23位地址转换为12位+9位+2位的组合 请更详细地描述这个问题。按照您的说法,12位、9位和2位地址的明显串联似乎可以达到目的。我在FPGA中的RAM模块是按行

我正在用VHDL做一些东西。我从CPU得到了23位地址,我需要把它转换成RAM中的地址。但是RAM端的接口为:12位行地址、9位列地址和2位银行地址

我试着得到这样的东西:
Bank1={0,4,8,12,…}
Bank2{1,5,9,13,…}
Bank3{2,6,10,14,…}
Bank4={3,7,11,15,…}


我不知道如何将23位地址转换为12位+9位+2位的组合

请更详细地描述这个问题。按照您的说法,12位、9位和2位地址的明显串联似乎可以达到目的。我在FPGA中的RAM模块是按行、列和列组组织的。我有2^12行,2^9列和2^2个银行。我的模块需要解码23位地址(0x0…01、0x0…02、0x0…03)。RAM允许在1个周期延迟内从所有银行读取数据。所以,如果我想快速地从0x20-0x24读取数据,我需要在B1中有0x20,在B2中有0x21,在B3中有0x22,在B4中有0x23。否则,我将需要等待更多的时间(从同一银行读取之间的延迟为2-3个周期)。然后使用2个LSB作为银行地址。