3 FSL总线用法 3.1 使用FSL总线IP核的设备间通信 目前Xilinx提供的FSL总线IP核的版本是FSL_V20。两个设备要使用FSL进行数据传输,就必须分别作为主设备或从设备连接到FSL核上。如果需要进行双向的传输,只要两个设备分别作为主从设备,使用两个FSL核连接即可。 无论是作为主设备或是从设备,都需要通过在设备的微处理器外设描述文件(MPD)中进行相应的定义,以实现所需类型的FSL接口。下面这段代码就是一个分别定义了FSL主设备接口FSL_OUT和从设备接口FSL_IN的MPD文件: BEGIN my_fsl_peripheral
OPTl0N IPTYPE="PERIPHERAL"
OPTl0N IMP_NETLIST=TRUE
BUS_INTERFACE BUS="FSL"_IN,BUS_STD=FSL,BUS TYPE="SLAVE"
BUS_INTERFACE BUS="FSL"_OUT,BUS_STD=FSL,BUS_TYPE=MASTER
##Ports
PORT CLK=””,DIR=IN,SIGIS=CLK
PORT RESET=””。DIR=IN
PORT FSL_S_READ=FSL_S_Read,DIR=out,BUS=FSL_IN
PORT FSL_S_DATA=FSL_S_Data,DIR=in,VEC=[o:31],BUS=FSL_IN
PORT FSL_S_CONTROL=FSL_S_Control,DIR=in, BUS="FSL"_IN
PORT FSL_s_EXISTS=FSL_S_Exists,DIR=in,BUS=FSL_IN
PORT FSL_M_WRITE=FSL_M_Write,DIR=out,BUS=FSL_OUT
PORT FSL_M_DATA=FSL_M_Data,DIR=out,VEC=[o:31],BUS=FSL_OUT
PORT FSL_M_CONTROL=FSL_M_Control,DIR=out, BUS="FSL"_OUT
PORT FSL_M_FULL=FSL_M_Full,DIR=in,BUS=FSL_OUT
3.2 通过FSL与MicroBlaze通信 MicroBlaze软核的FSL总线接口支持最多8对FSL连接,具体实现多少接口由系统硬件描述文件(MHS)中的参数C_FSL_LINKS决定。默认情况下该参数为0,表示不实现FSL接口。当需要使用FSL总线把MicroBlaze和FPGA中的一个或多个逻辑模块连接起来时,必须设置该参数的值为相应的模块数。该参数的取值范围是0~8。 在MicroBlaze指令集中还有针对FSL总线操作的指令,它们分别是: ◆get,put——阻塞式数据读写FSL,控制信号被置为0;
◆nget,nput——非阻塞式数据读写FSL,控制信号被置为0;
◆cget,cput——阻塞式控制位读写FSL,控制信号被置为1;
◆ncget,ncput——非阻塞式控制位读写FSL, 控制信号被置为1。 2 4 FSL总线应用实例 在下面的实例中,尝试通过FSL总线技术,将实现特定函数功能的用户自定义IP核整合到MicroBlaze软核系统中,以实现硬件加速的目的。这里以一个矢量汉字(vector font)还原功能的硬件模块的整合为例,说明FSL总线的应用过程。所使用的开发平台是Memec Insight公司生产的Virtex—II系列的MicroBlaze开发板,板上采用的FPGA器件为Virtex—II 1000,系统时钟为100 MHz,开发工具为Xilinx公司的EDK 6.3及ISE 6.3。 |