[upload=image/pjpeg]uploadImages/20050805162415.jpg[/upload]
FLASH接口的设计
由于OR1200采用的是WISHBONE共享总线,其地址线为32位,数据线也为32位。设计中采用将低位与FLASH相联接,并将接口位度设计为16位。原理框图如图2所示。逻辑接口部分采用FPGA来实现。系统选用Xilinx公司最新推出的90nm工艺制造的现场可编程门阵列芯片Spartan-3来实现接口设计,利用它的可编程性特性带来了电路设计的简单化和调试的灵活性。
FLASH读接口设计
该接口可实现单周期读与块读功能,时序部分与WISHBONE兼容。由于采用的FLASH最大读周期时间至少为90ns,故只有在总线时钟工作在10MHz以下频率时可以直接将ACK_O端口与STB_I端口相联。当MASTER(指令CACHE)发出块读信号时,将发出一个LOCK_O=VIH信号给总线仲裁器,要求总线能不间断提供总线。其对SLAVE(FLASH接口部分)控制信号为:
WE_I=VIL,CYC_I=VIH,STB_I=VIH,BYTE=VIH
当MASTER结束块读时发出STB_O= VIL信号即可。其输出接口部分如图3所示。
该输出接口模块源代码如下:
module WBOPRT16(CLK_I, RST_I,WE_I,STB_I,ACK_O,DQ_I,DAT_O);
//WISHBONE SLAVE interface
---input CLK_I,RST_I,WE_I,STB_I;
---output ACK_O;
---output [15:0] DAT_O;
---//non-WISHBONE interface
---input [15:0] DQ_I;
---reg [15:0] DAT_O;
---always @(posedge CLK_I or negedge RST_I)
---begin :label_A
---if (!RST_I)
---DAT_O<=16’b0;//asynchronous reset
---else if ((STB_I & !WE_I)==’b1)
---DAT_O<=DQ_I;
---else
---DAT_O<=DAT_O;
---end
---assign ACK_O=STB_I;
---endmodule
|