Wishbone部分地址译码的实现

电子说

1.3w人已加入

描述

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

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

寄存器

图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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分