Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

Wishbone总线地址译码

0
阅读(2188)

连载目录篇:http://blog.chinaaet.com/justlxy/p/5100051808 


在很多总线标准中,从设备必须译码所有的地址,这称为全地址译码。比如在PCI总线中,每一个从设备都必须具有32位的地址输入,并对这32位的地址进行译码以确定如何响应主设备的请求。

片上总线规范比如Wishbone规范支持部分地址译码。在部分地址译码总线规范中,从设备只需要译码自己所使用的地址空间。比如如果一个从设备只有4个地址,它就只需译码2比特地址而不是32位地址。这样做的好处是:地址译码速度快,地址译码逻辑少,从设备可自由定义地址总线宽度。

image.png

图26 Wishbone部分地址译码的实现

Wishbone部分地址译码的实现如图26所示。对于图中所示IP核,我们假设其只有4个地址,对应4组寄存器。地址译码器首先译码出其地址并给出选择信号,该选择信号与共享总线的STB_O相与输入到IP核的STB_I。而地址总线的最低2位被直接连接到IP核,IP核再根据这两位译码出当前操作选中的是具体哪个寄存器。

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