Wishbone共享总线连接与点到点连接

wishbone共享总线连接与点到点连接同样重要。在本例中,两个主设备和两个从设备通过syscon实现了共享总线连接,在后续章节中,我们将使用该例子对or1200进行基本rtl验证。系统复位后,一个或者多个主设备通过置高cyc_o请求使用总线,仲裁器(后文将讨论)选择其中一个主设备#x(x在0和n之间),只将该主设备对应的gntx信号置高,而将其它gnt信号置低以通知intercon哪一个主设备可以使用总线。
一旦主设备选定,其输出信号将通过选择器送到共享总线进而送到各个从设备。例如,如果主设备#0被中可以使用总线,则器adr()、dat_o()、sel_o()、we_o和stb_o信号将被送到各个从设备。与此同时请求使用总线的其他设备,将永远接收不到总线周期结束信号ack_i/err_i/rty_i。
从设备是如何被选择的呢 '若系统中有m个从设备,则地址线被地址译码器分为m个部分,别代表每一个从设备的地址空间。从设备#y对应的译码输出信号与共享总线上的stb_i信号相与,如果stb_i信号和从设备#y对应的译码输出信号同时为高,从设备#y才发起对主设备操作的响应。
各个从设备输出的总线周期结束ack_o/err_o/rty_o被通过或门送到各个主设备的ack_i/err_i/rty_i。而从设备的dat_o()输出则通过选择器送到各个主设备的输入端,这个选择器的输入为共享地址总线。
图22 基于选择器的wishbone共享总线连接示例
intercon模块的源码如下:
module intercon2m2s(clk_i,rst_i,wb0s_data_i,
wb0s_data_o,wb0_addr_i,wb0_sel_i,
wb0_we_i,wb0_cyc_i,wb0_stb_i,wb0_ack_o,
wb0_err_o,wb0_rty_o,wb0m_data_i,
wb0m_data_o,wb0_addr_o,wb0_sel_o,
wb0_we_o,wb0_cyc_o,wb0_stb_o,wb0_ack_i,
wb0_err_i,wb0_rty_i,wb1s_data_i,
wb1s_data_o,wb1_addr_i,wb1_sel_i,
wb1_we_i,wb1_cyc_i,wb1_stb_i,wb1_ack_o,
wb1_err_o,wb1_rty_o,wb1m_data_i,
wb1m_data_o,wb1_addr_o,wb1_sel_o,
wb1_we_o,wb1_cyc_o,wb1_stb_o,wb1_ack_i,
wb1_err_i,wb1_rty_i
);
……//这里忽略了端口定义
//仲裁器,两个主设备,两个从设备
wire gnt0,gnt1,cyc;
arbiter2m2s arbiter2m2s(.clk(clk_i),.rst(rst_i),.cyc0(wb0_cyc_i),.cyc1(wb1_cyc_i),
.gnt0(gnt0),.gnt1(gnt1),.cyc(cyc));
//地址译码器
wire acmp0,acmp1;
wire [31:0] shared_address;
address_decoder2s
address_decoder2s(.addr_i(shared_address),.acmp0(acmp0),.acmp1(acmp1));
//共享总线周期有效信号cyc,从各主设备到各从设备assign wb0_cyc_o=cyc;
assign wb1_cyc_o=cyc;
//共享地址信号
assign shared_address=gnt1?wb1_addr_i:wb0_addr_i;
assign wb0_addr_o=shared_address;
assign wb1_addr_o=shared_address;
//从各主设备到各从设备的共享数据总线
wire [31:0] shared_data_m2s=gnt1?wb1m_data_i:wb0m_data_i;
assign wb0s_data_o=shared_data_m2s;
assign wb1s_data_o=shared_data_m2s;
//从各从设备到各主设备的共享数据总线
wire [31:0] shared_data_s2m=acmp1?wb1s_data_i:wb0s_data_i;
assign wb0m_data_o=shared_data_s2m;
assign wb1m_data_o=shared_data_s2m;
//从各主设备到各从设备的共享选择信号
wire [3:0] shared_sel=gnt1?wb1_sel_i:wb0_sel_i;
assign wb0_sel_o=shared_sel;
assign wb1_sel_o=shared_sel;
//从各主设备到各从设备的共享写使能信号
wire shared_we=gnt1?wb1_we_i:wb0_we_i;
assign wb0_we_o=shared_we;
assign wb1_we_o=shared_we;
//从各主设备到各从设备的共享选通信号
wire shared_stb=gnt1?wb1_stb_i:wb0_stb_i;
assign wb0_stb_o=acmp0?shared_stb:1'b0;
assign wb1_stb_o=acmp1?shared_stb:1'b1;
//从各从设备到各主设备的应答信号
wire shared_ack=acmp0?wb0_ack_i:wb1_ack_i;
assign wb0_ack_o=shared_ack;
assign wb1_ack_o=shared_ack;
wire shared_err=acmp0?wb0_err_i:wb1_err_i;
assign wb0_err_o=shared_err;
assign wb1_err_o=shared_err;
wire shared_rty=acmp0?wb0_rty_i:wb1_rty_i;
assign wb0_rty_o=shared_rty;
assign wb1_rty_o=shared_rty;
endmodule

另类光伏电池黑科技满满,让人脑洞大开
荣耀V9评测:华为荣耀V9对比华为P9、华为P10、华为荣耀Magic、华为Mate9保时捷版、荣耀8谁的颜值更好看
安靠将斥资20亿美元在亚利桑那州建造先进芯片封装厂
千元机同是999!魅蓝5s却为何能截杀红米Note4x?到底差在了什么地方?
iPhone少买个一千万部 谁会跟着倒霉?
Wishbone共享总线连接与点到点连接
用智能手机进行光谱分析 可检查水果是否打农药
小安派开源硬件S1和S2有哪些区别呢?
新的医疗服务模式,离我们有多远?
英伟达市值狂飙万亿的背后,是“时势造英雄”还是“厚积而薄发”?
互联网时代下的STEAM教育创新之路
科技创新+高校房产管理,广凌科技助推高校房产管理新模式
iButton任务数据恢复:内存日志用户指南
单片机测控系统屏蔽的分类详谈
工业平板电脑的主要特点是什么
时代华纳与AT&T合并是为了与谷歌和Facebook互联网巨头竞争
HUAWEI WATCH GT 2保时捷采用全新华为Truseen™ 4.0+心率监测技术
打破质疑!华为云这款轻量应用服务器让小程序降本增效
机房/基站节能解决方案
中国移动2021年数据链路采集设备集中采购