关于Xilinx FSL总线的一些总结

整了一段时间altera的AVALON总线,最近又整了一段时间Xilinx的FSL总线,AXI总线比较主流一点,教程也比较多,FSL少多了,由于个人需要,基本上是自己琢磨FSL。

建立好FSL总线之后,会生成一个.v文件,文件名与自定义IP核名字相同。

主要有以下一些接口

关于Xilinx FSL总线的一些总结_第1张图片

// Definition of Ports
// FSL_Clk             : Synchronous clock
// FSL_Rst           : System reset, should always come from FSL bus
// FSL_S_Clk       : Slave asynchronous clock
// FSL_S_Read      : Read signal, requiring next available input to be read
// FSL_S_Data      : Input data
// FSL_S_Control   : Control Bit, indicating the input data are control word
// FSL_S_Exists    : Data Exist Bit, indicating data exist in the input FSL bus
<pre name="code" class="plain">// FSL_M_Clk       : 
// FSL_M_Read      : Read signal, requiring next available input to be read
// FSL_M_Data      : Input data
// FSL_M_Control   : Control Bit, indicating the input data are control word
// FSL_M_Exists

 
 
</pre><pre name="code" class="plain">

FSL_Clk 是总线时钟,FSL_Rst是总线复位(高电平有效!!!!!!

时钟:

FSL_M_Clk:主设备给FSL总线提供的时钟信号(ip核中不用)

FSL_S_Clk:从设备给FSL总线提供的始终信号(ip核中不用)

数据(32bit):

FSL_M_Data:32bit,主设备发送到总线上的数据

FSL_S_Data:32bit,总线发给从设备的数据

控制(1bit)

FSL_M_Control:主设备发给总线的控制信号(ip核中不用)

FSL_S_Control:总线发给从设备的控制信号(ip核中不用)

FSL_M_Write:主设备正在写总线的标志位 = state==WriteOutput?~FSL_M_Full:0

FSL_S_Read:从设备从总线读数据的标志位 = state==ReadInput?FSL_S_Exists:0

FSL_M_Full:总线发出总线满信号

FSL_S_Exists:总线发出总线上有数据的信号

自定义IP核方面,如果修改了自定义IP核的底层文件.v文件,就要删除XPS中所有关于该自定义IP核的网络,再重新添加,否则修改了等于没修改。应该是ISE的一个BUG,

没修改XPS一个小地方,都要实时更新一下,XPS——>project——>rescan user repositories   最后再生成bit文件,如果microblaze加入到ISE工程当中,就要ISE全部重新编译了,注意是全部编译,选中microblaze,右击下面的export hardware design to sdk with bitstream 选择run all。这样才会更新XPS更新的IP核文件。

在SDK中,读取FSL总线和往FSL总线中写数据需要用到函数:

getfsl(val, id)  
putfsl(val, id) 

val是要从FSL总线写的数据 或者要从总线读的数据,id是FSL的标号。如果有多条FSL总线,每条FSL总线都会有一个id(0.1.2.3)

有时间更新具体操作步骤











你可能感兴趣的:(关于Xilinx FSL总线的一些总结)