以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
WB_BIU模块是OR1200处理器与外部Wishbone总线连接的接口模块,15.1节给出了WB_BIU模块的对外连接关系,并指出WB_BIU模块的三个作用。因为OR1200处理器支持Wishbone B3版本,所以在15.2节介绍了Wishbone B3版本中的寄存反馈总线周期,重点说明了其中的周期类型识别地址标签CTI_O/CTI_I、突发类型扩展地址标签BTE_O/BTE_I的作用。
15.1 WB_BIU模块的对外连接关系
通过图1.6可以发现,OR1200处理器使用了两个WB_BIU(Wishbone Bus Interface Unit)模块,分别作为处理器的指令Wishbone总线接口单元、数据Wishbone总线接口单元。处理器通过这些总线接口单元进行取指、加载存储数据等操作。读者朋友可能会有疑问:为何不去掉WB_BIU,使得ICache、SB直接与外部的Wishbone总线连接,毕竟ICache、SB模块的对外接口信号也符合Wishbone总线规范。这就涉及到WB_BIU模块的作用,本节在后面对其接口的介绍中会给出WB_BIU模块的作用,届时读者就会明白。
WB_BIU模块的接口以及对外连接关系如图15.1所示。
图15.1中,WB_BIU模块对处理器外部的接口名称都是wb_xxx_x的形式,对处理器内部的接口名称都是biu_xxx_x的形式,这一点需要注意,在后面代码分析中,可以据此判断某一信号是WB_BIU与处理器外部模块之间的信号,还是WB_BIU与处理器内部模块之间的信号。
从图15.1中还可以发现:WB_BIU与处理器外部模块之间的信号比WB_BIU与处理器内部模块之间的信号多,重点就是图中使用斜体标示的6个信号,这6个信号揭示了WB_BIU模块的作用:
(1)clmode、wb_rst_i、wb_clk_i
处理器外部Wishbone总线的时钟可以小于处理器的时钟,这样做的目的是降低系统功耗,这三个信号的作用就是在Wishbone总线时钟与处理器时钟不一致时,协调WB_BIU模块对处理器内部、外部的Wishbone总线信号,使其正常工作。其中wb_rst_i、wb_clk_i是外部Wishbone总线的复位信号、时钟信号,clmode是时钟模式选择信号,长度是两位,可以设置如下:
- 2’b00:外部Wishbone总线时钟wb_clk_i等于处