当前位置:首页 > 消费电子 > 消费电子
[导读]FSL(Fast Simplex Link,快速单向链路)总线,是Xilinx公司为其FPGA器件开发的,可以实现用户IP核与软核处理器的高速连接。FSL总线 FSL总线接口 FSL总线是一个基于FI

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总线应用方案

如图5所示,vectOr_font核通过FSL_Code-与FSL_Lattice两条FSL总线与MicroBlaze软核直接相连。

对于FSL_Code总线,MicroBlaze核是主设备,而vector_font核是从设备。这样MicroBlaze可以通过 FSL_Code总线向vectOr_font核发送汉字的区位码(或者其他格式的汉字编码,由使用的矢量字库和还原算法决定)以及汉字的属性信息(如字体、大小等)。

对于FSL_Lattice总线则正好相反。vector font 核作为主设备可以通过它向MicroBlaze核发送经过还原处理后的汉字点阵数据以及汉字点阵尺寸信息(用于将点阵数据在显存中组织成正确的显示格式)。

数据传输指令与控制位指令的应用

FSL 提供的独立于数据传输的控制位可以用来对正在传输中的数据进行标记。为了区分区位码数据与汉字属性数据,以及点阵数据与汉字点阵尺寸数据。 MicroBlaze分别通过FSL的数据传输指令和控制位传输指令来发送汉字的区位码和汉字属性信息,接收点阵数据和汉字点阵尺寸信息。对应的实现代码如下:

//使用非阻塞的数据写函数向FSL总线写入汉字区位码Microblaze_nbwrite_datatsl(code,O)
//使用非阻塞的控制位写函数向FSL总线写入汉字属性信息maicroblaze_cnbwrite_cnlfsl(attibute,O)
//使用非阻塞的数据读函数从FSL总线读取汉字点阵数据microblaze_nbread_datafsl(1attice[i],O)
//使用非阻塞的控制位读函数从FSL总线读取汉字点阵尺寸信息microblaze_cnbread_cnlfsl(size,O)

代码中用到的与FSL有关函数的定义,都在include目录下的mb_interface.h文件中。其中,各函数的第二个参数代表进行读写操作的 FSL总线接口的编号,对应Mi—croBlaze软核的8对FSL接口。该参数的取值范围从0到7。本例中,MicroBlaze只使用了一对FSL接口,故而值为0。

实现步骤

首先,在Base System Wizard中设计图5虚线框中所示的一个简单的MicroBlaze嵌入式处理器系统。然后,在XPS集成开发环境下完成用户自定义IP核(本例中即 vectoz__font核)的添加、Microblaze核FSL接口的添加(设置参数C_FSL_LINKS=1),同时添加两个FSL总线IP核,分别用于实现FSL_Code和FSL_Lattice总线。另外,将两个FSL总线IP核的参数C_USE_CONTROL置为1,以打开FSL总线的控制位传输功能。所有这些改动,最后都会被更新到MES文件中。这样,硬件平台生成工具platgen就可以根据它生成所需要的FPGA配置文件了。

硬件的实现完成后,进行相应软件参数的设置,如将系统标准输入输出设备指向UART模块等。然后,用库生成工具libgen,根据MSS(系统软件描述文件)文件,将所需外设函数库的头文件添加进工程中。

通过调用这些函数,可以操作和控制这些外设。通过Tool项里的build命令,调用mb—gcc:编译工具,将编写的应用程序编译成ELF文件,再用 updatebitstrcam命令将程序代码对应的RAM初始化数据添加到前面生成的FPGA配置文件中,生成最终的bit配置文件。最后,使用 download命令将bit文件下载到目标板中。

以上就是整个FSL应用实例设计的实现过程。本例只是为了说明FSL总线的使用。实际应用中,还可以根据具体情况通过FSL,将更多的用户自定义IP核(如DCT、FFT等)添加到.MicroBlaze软核系统中去。

结 语

在嵌入式系统的开发中,人们一直希望能够有一个满足自己需要的“定制”的嵌入式处理器,而不是手头大量存在的通用微处理器。但是,直接将用户自定义IP核添加到处理器核中,不仅受到处理器原架构的束缚,还有可能降低处理器的性能(处理器工作频率);而通过与内部寄存器直接相连的FSL接口,用户自定义IP 可以在不破坏处理器原有结构的情况下,紧密地与MicroB- laze软核结合在一起。这样,即使关键路径覆盖了用户IP 核,由于它在处理器内核之外,也不会导致处理器时钟频率的降低。

通过对FSL总线的分析以及上述实例的验证,证明了在基于MicroBlaze的SoC 系统设计中,一方面可以针对具体应用进行“量体裁衣”式的设计;另一方面,利用其专用的FSL总线接口技术,实现嵌入式软处理器系统与用户自定义逻辑的整合,从而在不提高系统主频的前提下,通过部分函数功能的硬件实现来提升系统的性能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式开发领域,工具链的生态竞争直接影响开发效率与产品竞争力。德州仪器(TI)的Code Composer Studio(CCS)与赛灵思(Xilinx)的Vitis作为两大主流平台,分别在DSP与FPGA/SoC开发...

关键字: TI Xilinx

Serial RapidIO(SRIO)是一种高性能、低引脚数、基于数据包交换的互连技术,专为满足未来高性能嵌入式系统的需求而设计。它由Motorola和Mercury等公司率先倡导,旨在为嵌入式系统提供可靠的、高性能的...

关键字: SRIO Xilinx

随着Altera,Xilinx两家FPGA巨头陆续被收购,FPGA的未来似乎已经与数据中心、AI等超大规模应用绑定。

关键字: Altera Xilinx

在现代电子设计自动化(EDA)工具链中,ModelSim作为一款功能强大的仿真软件,广泛应用于FPGA(现场可编程门阵列)和数字IC设计的验证阶段。特别是在与Xilinx FPGA结合使用时,ModelSim能够模拟复杂...

关键字: ModelSim Xilinx

在FPGA(现场可编程门阵列)设计与开发过程中,Xilinx的Vivado工具凭借其强大的功能和用户友好的界面,受到了广大工程师的青睐。然而,仅仅掌握Vivado的基本操作是远远不够的,掌握一些使用小技巧可以极大地提高设...

关键字: Vivado FPGA Xilinx

在高速数据传输的FPGA设计中,时序约束是保证数据准确传输的关键因素之一。特别是在LVDS(Low Voltage Differential Signaling)等高速接口设计中,信号的传输延时和时序对齐尤为重要。Xil...

关键字: 时序约束 Xilinx IDELAYE2应用

在现代的FPGA设计中,球栅阵列(BGA)封装已经成为了一种常见的封装方式,特别是在高性能、高密度的Xilinx FPGA设计中。BGA封装以其高集成度、小体积和优良的热性能受到了广泛的应用。然而,BGA封装的复杂性和高...

关键字: BGA 球栅阵列 Xilinx

Vivado是Xilinx公司推出的一款强大的FPGA开发工具,它为用户提供了从设计到实现的全面解决方案。然而,在FPGA设计过程中,Vivado编译错误是开发者经常遇到的问题。本文将总结Vivado编译过程中常见的错误...

关键字: Vivado编译 Xilinx FPGA开发

在FPGA(现场可编程门阵列)的应用中,Flash下载速度是一个关键的性能指标。特别是在需要频繁更新FPGA配置或进行大量数据传输的场景下,提高Flash下载速度显得尤为重要。Xilinx作为全球领先的FPGA供应商,其...

关键字: Flash Xilinx FPGA

视频流媒体市场总额将从2021年的61个Billion一路增长,至2028年达到213个Billion。流媒体大涨的背后技术挑战来自新一代的交互模型,会是“多对多”的形式。这种交互模型的变化,将会彻底改变基础设施的部署模...

关键字: AMD Xilinx 加速卡 VPU Alveo MA35D
关闭