什么是FSL总线
FSL(Fast Simplex Link,快速单向链路)总线,是Xilinx公司为其FPGA器件开发的,可以实现用户IP核与软核处理器的高速连接。
FSL总线
FSL总线接口
FSL总线是一个基于FIFO的单向点对点通信总线,主要用于FPGA的两个模块问进行快速的通信。FSL总线IP核结构如图2所示,FSL接口的I/O信号如表2所列。
该接口的主要特点:
◆单向的点对点通信;
◆非共享的无仲裁通信机制;
◆支持控制位与数据分离的通信;
◆基于FIFO的通信模式;
◆可配置的数据宽度;
◆高速的通信性能(独立运行达到600 MHz)。
FSL总线的写操作时序
对FSL总线的写操作是由FSL_M_Write信号控制的。图3是FSL总线的写操作时序。FSL主设备在第一个时钟上升沿检查到FSL_M_Full 信号未置高,就允许主设备将FSL_M_Write置高,并将FSL_M_Data和FSL_M_Control推上总线,在下一个时钟周期这些数据就被总线读取并送入FIFO了。图中的Write2和Write3是一组"背靠背"的连续写操作。在Write3时,FIFO满使得FSL_M_Full信号被置高,迫使主设备取消自己的FSL_M_Write信号,直到一次读操作将FSL_M_Full置低后,才可以发起另一次写操作。因此,图中暗示着在 Write4处也发生了一次从设备的读操作,否则FSL_M_Full将再次置高。
FSL总线读操作时序
对FSL总线的读操作是由FSL_S_Read信号控制的,图4是FSL从设备的3次读操作时序。当FSL总线上存在有效数据(FSL_S_Exists =‘1’),FSL_M_Data上的数据和FSL_M_Control上的控制位就立即可以被FSL从设备读取。一旦从设备完成读操作, FSL_S_Read信号必须置高一个时钟周期,以确认从设备成功完成了一次读操作。在读操作发生后的时钟上升沿(图中Read2处), FSL_M_Data和FSL_M_Control会被更新为新数据,同时FSL_S_Exists和FSL_M_Full信号也会被更新。同样,这里暗示着在Readl和Read2之间发生了两次主设备的写操作。
FSL总线用法
使用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
通过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。
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。
FSL总线应用方案
- 一种基于EFSL的嵌入式MP3播放器设计方法(11-02)
- 快速创建存储器接口的设计(10-22)
- Xilinx All Programmable RFSoC 背景资料(02-22)
- 基于FPGA的∑-△D/A转换器的设计与实现(04-23)
- 发射应用中多个高速复用DAC的同步(06-23)
- 一种锁定相位编程可调全数字锁相环设计(06-24)