0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SRIO介绍及xilinx的vivado 2017.4中生成srio例程代码解释

FPGA设计论坛 来源:FPGA设计论坛 2024-12-10 16:24 1466次阅读

1. 概述

本文是用于记录srio的学习情况,以及一些对xilinx的vivado 2017.4中生成srio例程代码的解释。

2. 参考文件

《pg007_srio_gen2》

3. SRIO协议介绍

本处将从SRIO的数据流,数据协议,常用FPGA支持模式,以及IP例程中的时钟大小计算等部分介绍SRIO的情况。

3.1 SRIO的数据流

SRIO通过生成IP后,通常情况下主要使用的接口为四组:ireq,iresp,treq,tresp。每个IP生成后都有这四组接口,即可以同时用于发送数据,接收数据,发送响应数据,接收响应数据。而这些接口间的信号流向如下图所示:

de37d6b4-b5df-11ef-93f3-92fbcf53809c.jpg

即其信号流为IREQ发出给TREQ,TRESP发出给IRESP。

3.2 SRIO的数据协议

SRIO传输与响应的包类型很多,具体看手册P73-P74页。

在使用Xilinx的ip核时,通常用的都是HELLO包,所以这里指给HELLO包的格式。如下图所示。Packet 中的具体符号表示意义请查看手册P76-P77页。其中的size为一包传输byte的数据量,范围为1-256 bytes。

de5264de-b5df-11ef-93f3-92fbcf53809c.jpg

其典型的传输数据的用户接口代码的波形协议如下图所示:

de5e83b8-b5df-11ef-93f3-92fbcf53809c.jpg

3.3 SRIO常用FPGA支持的模式

de6dd25a-b5df-11ef-93f3-92fbcf53809c.jpg

3.4 SRIO例程代码的时钟计算

refclk可使用时钟如下图table3-3所示。其中典型的时钟计算如Table3-4表头所示。:

gt_clk = line_rate/20;

gt_pcs_clk = line_rate/40;

phy_clk = (gt_clk*link_width)/4;

log_clk = phy_clk;

cfg_clk = phy_clk;

de86fd5c-b5df-11ef-93f3-92fbcf53809c.jpg

de9a40ba-b5df-11ef-93f3-92fbcf53809c.jpg

4. SRIO的例程代码结构

SRIO生成例程后,其例程结构如下图所示。看着有8个文件,但常规情况下与我们相关的只有只有两个文件,即下图高亮的两个文件:

srio_request_gen_srio_gen2_0(发送数据模块);

srio_response_gen_srio_gen2_0(接收数据模块)

deaee060-b5df-11ef-93f3-92fbcf53809c.jpg

4.1 SRIO发送模块详解

SRIO发送模块中主要有两部分代码,发送数据部分(ireq),发送响应数据部分(iresp)。接收部分端口如下图所示:

decf2564-b5df-11ef-93f3-92fbcf53809c.jpg

4.1.1 发送数据部分代码功能说明

发送的包头数据的来源为“request_data_out = instruction[request_ address]”,即数据是从`include "instruction_list.vh"文件中调入的。而选择其文件中的哪些数据则是根据request_address算来的,具体如下图部分所示。

dedae2e6-b5df-11ef-93f3-92fbcf53809c.jpg

最终包头的格式为:

deedcdd4-b5df-11ef-93f3-92fbcf53809c.jpg

而包中去掉包头后传输的数据为每8位递增数据数据,具体如下图所示。

df0b0c46-b5df-11ef-93f3-92fbcf53809c.jpg

重点:发送用户自己的数据与包头时设置,将go的值设置为0x01。

df27692c-b5df-11ef-93f3-92fbcf53809c.jpg

4.1.2 接收响应部分的代码功能详解

接收响应部分主要功能是在期望的得到回应的包类型时,检查是否回应的对应包头类型。

而判断包头类型是否正确主要是根据预判的ftype(expected_ftype)时,检查接收到的ttype是否为协议规定的类型。判断的方式为下图位置:

df300d52-b5df-11ef-93f3-92fbcf53809c.jpg

4.2 SRIO接收模块详解

SRIO接收模块中主要有两部分代码,接收数据部分(treq),接收响应数据部分(tresp)。接收部分端口如下图所示:

df3c105c-b5df-11ef-93f3-92fbcf53809c.jpg

4.2.1 接收数据部分的代码功能说明

接收部分主要是通过解析接收端口的信号,实时的解析如下图的信息,以及first_beat(beat为1个时钟的*_data),之后将每包数据去掉包头后丢入“RAMB36SDP(local_data_store)”中,但是每一包丢入数据时的首地址是current_addr[10:3]。

df514134-b5df-11ef-93f3-92fbcf53809c.jpg

4.2.2 发送响应部分的代码功能说明

响应部分的代码分两部分,第一部分是响应的包头信号部分,第二部分是响应的数据部分。

包头信号部分信息与响应的包类型相关,如下图所示,详细信息参考《pg007》的p76页。

df5f05d0-b5df-11ef-93f3-92fbcf53809c.jpg

数据部分的信息主要是提取treq中输入的信号。但提取的方式是根据starting_read_addr = {1'b0, response_data_out[29:22]}开始提取数据输出,即是根据current_addr[10:3]的地址提取数据。也就是说这个提取数据的位置是根据输入数据包中的地址中的一部分作为首地址来定位的数据开始地方。

当然是否需要反馈数据部分得根据接收到的包头类型而定,有些包只需要反馈包头不需要数据,有些包不需要进行反馈,详情参考手册P73页。

保证存入“RAMB36SDP(response_queue_inst)”的包头判断信息无误的依据是RAMB36SB的写使能WREN(generate_a_response),generate_a_response是在接收到的first_beat时,且这个包头是需要反馈数据的包头时才会拉高使能。需要反馈的依据在《pg007》的Table 3-1,具体信息如下图所示:

df6ddb1e-b5df-11ef-93f3-92fbcf53809c.jpg

5. 疑点

疑点1:

虽然理论上来说反馈的数据提取数据是根据包头信息在同一个位置提取的,那么反馈的数据就和接收的对应包数据相同。但是由于接收到的数据包头的地址可能相同,至少current_addr[10:3]有很大几率相同,那么就会存在数据覆盖的现象,那么就会导致反馈的数据不是想要的数据,即返回的数据与接收到的数据不同。

疑点2:

为何把“current_addr[23:16] == 8'h12”作为pull_from_store(从存储地址开始拉高)?

答:这个只是对应SRIO例程的发射数据,发射数据自定义的“真实起始地址”,参考手册P161,如下图所示。在自己使用时可以屏蔽掉与这个相关的信号。

df7e87ca-b5df-11ef-93f3-92fbcf53809c.jpg

原文链接:

https://openatomworkshop.csdn.net/67459da63a01316874d8e7a6.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • sRIO
    +关注

    关注

    1

    文章

    31

    浏览量

    21142
  • 代码
    +关注

    关注

    30

    文章

    4862

    浏览量

    69688
  • Vivado
    +关注

    关注

    19

    文章

    820

    浏览量

    67484

原文标题:SRIO简介与Xilinx SRIO ip核例程详解

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    Vivado FIR IP核实现

    Xilinx的FIR IP核属于收费IP,但是不需要像 Quartus那样通过修改license文件来破解。如果是个人学习,现在网络上流传的license破解文件在破解Vivado的同时也破解
    的头像 发表于 03-01 14:44 969次阅读
    <b class='flag-5'>Vivado</b> FIR IP核实现

    使用DDS生成三个信号并在Vivado实现低通滤波器

    本文使用 DDS 生成三个信号,并在 Vivado 实现低通滤波器。低通滤波器将滤除相关信号。
    的头像 发表于 03-01 14:31 1019次阅读
    使用DDS<b class='flag-5'>生成</b>三个信号并在<b class='flag-5'>Vivado</b><b class='flag-5'>中</b>实现低通滤波器

    【米尔-Xilinx XC7A100T FPGA开发板试用】 UART测试

    硬件: 一 米尔-Xilinx XC7A100T FPG 二 12V电源适配器 三 下载器 四 win10笔记本 软件: 一 Vivado (指导手册有详细的安装下载流程) 二 官方示例工程 这个例程
    发表于 01-12 10:10

    VivadoDDRX控制器(mig)ip核配置关于命令序号选择和地址映射说明

    本篇主要讨论VivadoDDRX控制器(mig)ip核配置关于命令序号选择和地址映射说明(一) 利用Xilinx 7系列FPGA开发时,经常需要驱动外部存储器--DDRX。
    的头像 发表于 11-27 09:30 2138次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>DDRX控制器(mig)ip核配置<b class='flag-5'>中</b>关于命令序号选择和地址映射说明

    Xilinx_Vivado_SDK的安装教程

    首先是去官网下载安装包:https://www.xilinx.com/support/download.html。 下载这个最大的、支持所有的 OS 如 Windows/Linux 的安装包。 下载
    的头像 发表于 11-16 09:53 2781次阅读
    <b class='flag-5'>Xilinx_Vivado</b>_SDK的安装教程

    【米尔-Xilinx XC7A100T FPGA开发板试用】+03.SFP光口测试(zmj)

    。 2.GTP-iBERT测试 在vivado打开hardware manager,将刚才生成的bit文件下载到开发板。下载完成后,点击auto-detec links。点击Re
    发表于 11-12 16:54

    VivadoFFT IP核的使用教程

    本文介绍了VidadoFFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试v
    的头像 发表于 11-06 09:51 2343次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>FFT IP核的使用教程

    如何自动生成verilog代码

    介绍几种自动生成verilog代码的方法。
    的头像 发表于 11-05 11:45 691次阅读
    如何自动<b class='flag-5'>生成</b>verilog<b class='flag-5'>代码</b>

    如何在TI-NA里的信号编辑器中生成自己的激励波形?

    大家好,请问如何在TI-NA里的信号编辑器中生成自己的激励波形,比如:产生上升沿5ns、下降沿5ns、脉冲宽度12ns的单脉冲激励信号!
    发表于 09-13 07:19

    FPGA的SRIO接口使用应注意的事项

    据传输速率、链路宽度、地址映射等,确保通信能够按照预期进行。 错误处理与恢复 : 在SRIO通信过程,可能会遇到各种错误情况(如链路错误、数据包错误等)。设计并实现有效的错误处理机制,以便
    发表于 06-27 08:33

    怎么建设高性能多核DSP+FPGA实验室?一起来河北工程大学看看

    主核工程与从核工程。主核工程编译后默认生成的可执行文件适用于DSP ETH1网口,如需重新生成适用于DSP ETH0网口的可执行文件,请参考关键代码小节进行源码修改。从核工程编译后生成
    发表于 06-07 14:11

    在不重新安装Vivado的情况下,是否能够安装线缆驱动器?

    如果 Xilinx USB/Digilent 线缆驱动器在安装 Vivado 设计套件时还没有安装,或者 Xilinx USB/Digilent 线缆驱动器被禁用,在不全面重新安装 Vivad
    的头像 发表于 05-16 11:21 836次阅读

    交换板设计方案原理图:473-SRIO_Switch_Gen2_ZD交换板卡

    SRIO_Switch_Gen2_ZD交换板卡为基于IDT SRIO Gen2系列SRIO交换芯片,采用CPCI-ZD平台架构的数据交换板。可以为高速实时信号处理任务提供可靠保障。
    的头像 发表于 05-13 11:40 1029次阅读
    交换板设计方案原理图:473-<b class='flag-5'>SRIO</b>_Switch_Gen2_ZD交换板卡

    FPGA与SRIO调试步骤

     FPGA(现场可编程门阵列)和DSP(数字信号处理器)之间通过SRIO接口进行调试通常需要以下步骤。
    的头像 发表于 04-19 11:48 1725次阅读

    Vivado 使用Simulink设计FIR滤波器

    设计的滤波器性能相同。 xilinx在新版本的vivado中将simulink的WaveScope删掉了,信号观测方式换为和vivado debug相同的窗口,更为灵活和人性化。
    发表于 04-17 17:29