上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.12 地址译码
在很多总线标准中,从设备必须译码所有的地址,这称为全地址译码。比如在PCI总线中,每一个从设备都必须具有32位的地址输入,并对这32位的地址进行译码以确定如何响应主设备的请求。
片上总线规范,比如WISHBONE规范,支持部分地址译码。在部分地址译码总线规范中,从设备只需要译码自己所使用的地址空间。如一个从设备只有4个地址,它就只需译码2比特地址而不是32位地址。这样做的好处是地址译码速度快,地址译码逻辑少,从设备可自由定义地址总线宽度。
WISHBONE部分地址译码的实现如图3-24所示。对于图3-24中所示IP核,假设其只有4个地址,对应4组寄存器。地址译码器首先译码出其地址并给出选择信号,该选择信号与共享总线的STB_O相与输入到IP核的STB_I。而地址总线的最低2位被直接连接到IP核,IP核再根据这两位译码出当前操作选中的具体是哪个寄存器。
图3-24 WISHBONE部分地址译码的实现
WISHBONE共享总线示例中的仲裁器可以设计如下:
//the ACMP0 is for slave0: Flash //the ACMP1 is for slave1: SRAM module address_decoder2S(addr_i,ACMP0,ACMP1); input [31:0]addr_i; output ACMP0,ACMP1; parameter ADDR_LOW_S0=32'b0; parameter ADDR_HIGH_S0=32'h1FFFFF;//2M space for Slave 0; //the rest of the space for Slave 1,so we do not need a dummuy slave assign ACMP0=addr_i<=ADDR_HIGH_S0; assign ACMP1=~ACMP0; endmodule