当前位置: 首页 > news >正文

紫光同创FPGA实现HSSTLP高速接口通信,8b/10b编解码数据回环,提供PDS工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、我这里已有的 GT 高速接口解决方案
  • 3、设计思路框架
    • HSSTLP详解
      • HSSTLP基本了解
      • HSSTLP之时钟
      • HSSTLP之PCS
      • HSSTLP之PMA
      • HSSTLP之接口说明
    • 硬件设计
    • HSSTLP IP调用和配置
  • 4、PDS工程详解
  • 5、上板调试验证并演示
  • 6、福利:工程代码的获取

紫光同创FPGA实现HSSTLP高速接口通信,8b/10b编解码数据回环,提供PDS工程源码和技术支持

1、前言

2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于黑铁段位,国产FPGA仰望Xilinx情不自禁道:你以为躲在这里就找不到你吗?没用的,你那样拉轰的男人,无论在哪里,都像黑夜里的发光虫那样的鲜明、那样的出众,你那忧郁的眼神,稀嘘的胡渣子,神乎其技的刀法,还有那杯Dry martine,都深深的迷住了我。。。然而才短短4年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,面对此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。
言归正传,目前对于国产FPGA的共识有以下几点:
1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;
2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具
3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册。。
4:采购方便,产业链自主可控,采购便捷

没玩过高速接口都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用紫光同创的PG2L100H-6FBG676 FPGA实现HSSTLP高速接口通信实现,提供紫光同创FPGA的HSSTLP IP核文件,将PCIE IP配置为8b/10b编解码协议,单线线速率为1.25G,你也可以配置为更高速率进行测试,然后生成默认的Example工程,并对Example工程做小幅修改,即可完成数据回环测试,下载bit后,通过调试窗口查看收发数据的波形进行验证,这个工程是做HSSTLP高速接口通信的基础,只有把数据回环玩儿起来了,才能做更高端的其他诸如视频图像、AD/DA等数据的传输;

本设计提供1套Pango Design Suite 2021.4版本的工程源码;提供HSSTLP IP核文件;

本博客详细描述了紫光同创FPGA实现HSSTLP高速接口通信的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;

提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、我这里已有的 GT 高速接口解决方案

我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建;以下是专栏地址:
点击直接前往

3、设计思路框架

本文使用紫光同创的PG2L100H-6FBG676 FPGA实现HSSTLP高速接口通信实现,提供紫光同创FPGA的HSSTLP IP核文件,将PCIE IP配置为8b/10b编解码协议,单线线速率为1.25G,你也可以配置为更高速率进行测试,然后生成默认的Example工程,并对Example工程做小幅修改,即可完成数据回环测试,下载bit后,通过调试窗口查看收发数据的波形进行验证,这个工程是做HSSTLP高速接口通信的基础,只有把数据回环玩儿起来了,才能做更高端的其他诸如视频图像、AD/DA等数据的传输;工程设计框图如下:
在这里插入图片描述

HSSTLP详解

HSSTLP基本了解

Pango 的 Logos2 系列 FPGA 集成了串行高速收发器 HSSTLP,可以实现高速串行数据通信。其性能基本可以对标Xilinx的GTP,稳定性暂且未知,毕竟没有大规模应用过;HSSTLP收发器支持不同的串行传输接口或协议,支持 PCI Express GEN1, PCI Express,GEN2,XAUI,千兆以太网,CPRI,SRIO 等协议,每通道的收发速度高达 6.6 Gb/s;
每个 HSSTLP 由两个 PLL 和四个收发 LANE 组成,其中每个 LANE 又包括四个组件: PCS Transmitter,PMA Transmitter, PCS Receiver, PMA Receiver。 PCS Transmitter 和 PMA Transmitter组成发送通路,PCS Receiver 和 PMA Receiver 组成接收通路。 HSSTLP 的结构示意图:
在这里插入图片描述

HSSTLP之时钟

HSSTLP 每 个 模 块 有 两 个 差 分 参 考 时 钟 输 入 管 脚 (HSSTREFCLK0P/N_QRX 和HSSTREFCLK1P/N_QRX)作为 HSSTLP 模块的参考时钟源,用户可以自行选择。在我的核心板上,有 2路 125Mhz 的 HSSTLP 的参考时钟连接到 Q3 与 Q6HSSTLP 时钟输入管脚上,作为 HSSTLP 的参考时钟。进入到 PLL0 和 PLL1 中后产生 TX 和 RX 电路中所需的时钟频率。TX 和 RX 收发器速度相同的话,TX 电路和 RX 电路可以使用同一个 PLL 产生的时钟,如果 TX 和 RX 收发器速度不相同的话,需要使用不同的 PLL 时钟产生的时钟。

HSSTLP 中的四个收发 LANE 共享 PLL0 和 PLL1,每个发送或者接收 LANE 都可以独立选择 PLL0或者 PLL1, PLL 工作频率范围为 1.6GHz~6.6GHz。 PLL0 和 PLL1 都各自对应有一对外部差分参考时钟输入,每个 PLL 还可以选择来自另一个 PLL 的参考时钟或者来自 Fabric 的时钟作为参考时钟输入( Fabric 逻辑时钟做参考时钟,仅用于内部测试); PLL 输出频率支持动态再分频,以适应0.6Gbps到6.6Gbps 的 Data Rate 范围。

HSSTLP之PCS

PCS Transmitter 和 Receiver 结构框图如下:
在这里插入图片描述
每个 PCS Transmitter 主要包含以下模块:
Tx Bridge Reg 模块: 用于从 Fabric 到 PCS Transmitter 的数据桥接;
Tx Bridge unit 模块: 用于 PCS Transmitter 内部时钟域和 Fabric 时钟域相位补偿;
8b10b Encoder 模块:完成符合 IEEE 802.3 1000BASE-X specification 的 8b10b 编码;
Tx gear 模块: 完成 64b66b/64b67b 数据适配功能;
Tx Bit Slip 模块: 主要功能是根据配置对发送数据实现按位 Slip;
PRBS Generator 模块: 产生 PRBS 测试序列;
Tx Drive Reg 模块: 用于从 PCS Transmitter 到 PMA Transmitter 数据桥接;
每个 PCS Receiver 主要包含以下功能模块:
Rx Sample Reg 模块: 用于从 PMA Receiver 到 PCS Receiver 的数据桥接;
PRBS Checker 模块:用于 PRBS 序列的校验;
Word Alignment 模块:支持灵活的 Word Alignment 功能;
8b10b Decoder 模块:完成符合 IEEE 802.3 1000BASE-X Specification 的 8b10b 解码;
Rx gear 模块: 完成 64b66b/64b67b 数据适配功能;
Channel Bonding 模块:用于通道对齐;
CTC 模块:用于补偿发送时钟和接收时钟的微小频差;
Rx Bridge unit 模块:用于 PCS Receiver 内部时钟域和 Fabric 时钟域相位补偿;
Rx Bridge Reg 模块:用于从 PCS Receiver 到 Fabric 的数据桥接。

HSSTLP之PMA

PMA Transmitter 功能示意图如下:
在这里插入图片描述
每个 PMA Transmitter 主要包含以下功能模块:
Tx Digital 模 块 : 完 成 PCS Transmitter 到 PMA Transmitter 的 数 据 桥 接 , 以 及 PMA PRBSGenerator;
Serializer 模块: 完成并行数据到串行数据的转换功能;
Transmit Emphasis 模块: 支持可调节的去加重功能;
Transmit Driver 模块: 支持可调节的发送驱动;
PCI Express Receiver Detect 模块:支持基于 PCI Express 的 Receiver Detection 功能;
PMA Receiver 功能示意图如下:
在这里插入图片描述
每个 PMA Receiver 主要包含以下功能模块:
Receive Front-end 模块:支持多种接收 Termination 模式;
LEQ 模块:支持 Linear Equalizer 功能;
CDR 模块:数据和时钟恢复功能;
LOS Detect 模块:用于检测接收信号是否有效功能;
Deserializer 模块: 完成串行数据到8 bits, 10bits, 16bits 以及 20bits 并行数据的转换功能;
Rx Digital 模块: 完成 PMA Receiver 到 PCS Receiver 的数据桥接,以及 PMA PRBS Checker;

HSSTLP之接口说明

接口信号是 FPGA 的用户数据与 HSSTLP 的接口连接信号,该接口信号的名称和说明如下表所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

硬件设计

在我的开发板上,有 2 路光纤接口 SFP1~SFP2, 分别连接到 FPGA 芯片的 HSSTLP 的通道上。FPGA和光纤连接的设计示意图如下图所示:
在这里插入图片描述
其中 SFP1 光模块接口连接到 Q3 HSSTLP 的 Channel3 上,SFP2 跟 Q3 HSSTLP 的的 Channel2 相连。光模块和 FPGA 之间用 0.1uf 的电容隔开,使用 AC Couple 的模式。光模块的 LOSS 信号和 TX_Disable 信号连接到 FPGA 的普通 IO 上,LOSS 信号用来检测光模块的光接收是否丢失,如果没有插入光纤或者 Link 上,LOSS 信号为高,否则为低。TX_Disable 信号用来使能或者不使能光模块的光发射,如果 TX_Disable 信号为高,光发射关闭,否则光发送使能,正常使用的时候需要拉低此信号。硬件原理图如下:
在这里插入图片描述

HSSTLP IP调用和配置

我们提供HSSTLP IP核文件,新建一个PDA工程,然后按照如下步骤添加HSSTLP IP核添加并配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完成后,点击“Generate”产生 PCIe 的example工程,如下:
在这里插入图片描述
在这里插入图片描述
这是官方IP自动生成的Example工程
为了适合我的开发板硬件电路设计,将这个工程拷贝出来,单独做一个8b/10b数据回环工程,主要对 hsst_core_dut_top.v 的复位进行修改,进行统一复位,并增加调试接口测试,修改管脚分配,其它不变,然后程序编译综合产生位流文件。单独的工程如下:
在这里插入图片描述

4、PDS工程详解

注意!!
注意!!
注意!!
该工程需要拷贝到Linux中去;
开发板FPGA型号:紫光同创–PG2L100H-6FBG676;
开发环境:Pango Design Suite 2021.4
输入输出:SFP光口;
工程作用:紫光同创FPGA实现HSSTLP高速接口通信
工程代码架构如下:
在这里插入图片描述
工程的资源消耗如下:
在这里插入图片描述
工程已经综合编译完成,如下:
在这里插入图片描述

5、上板调试验证并演示

测试之前我们把 SFP 的光模块分别插入到光模块的接口上,再用光纤把光模块 SFP1 和 SFP2对连起来。因为这里我们用的光模块及光纤是 TX 和 RX 是分开的,这样 SFP1 光模块 RX 需要跟SFP2 光模块的 TX 相连,SFP1 光模块的 TX 需要连接到 SFP2 光模块的 RX。连接后如下图所示:
在这里插入图片描述
下载程序到开发板中进行在线调试,可看到窗口中发送和接收的数据一致的,如下:
在这里插入图片描述

6、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

相关文章:

紫光同创FPGA实现HSSTLP高速接口通信,8b/10b编解码数据回环,提供PDS工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、设计思路框架HSSTLP详解HSSTLP基本了解HSSTLP之时钟HSSTLP之PCSHSSTLP之PMAHSSTLP之接口说明 硬件设计HSSTLP IP调用和配置 4、PDS工程详解5、上板调试验证并演示6、福利:工程代码的获取 紫光同创FPGA实…...

Web前端—盒子模型:选择器、PxCook、盒子模型、正则表达式、综合案例(产品卡片与新闻列表)

版本说明 当前版本号[20231019]。 版本修改说明20231018初版20231019补充了综合案例二新闻列表的代码及完善部分代码 目录 文章目录 版本说明目录盒子模型01-选择器结构伪类选择器基本使用:nth-child(公式)伪元素选择器 02-PxCook03-盒子模型盒子模型-组成边框线四个方向单方…...

C++ vector类模拟实现

目录 一、成员变量 二、构造函数 1.默认构造 2.拷贝构造 3.迭代器构造 4.使用n个值构造 5.赋值拷贝 三、析构函数 四、vector重要成员函数 1.size和capacity函数 2.reserve函数 3.resize函数 4.push_back函数 5.insert函数 6.erase函数 7.重载operator[] 一、成…...

FastAPI+Pydantic使用自定义参数校验+自定义异常+全局异常捕获

目录 1 自定义参数校验异常 2 自定义的curr_page_v参数校验函数,如果不合法抛出自定义异常! 3 配置全局异常 1 自定义参数校验异常 # 1.用户自定义异常类型,只要该类继承了Exception类即可 class ValDtoError(Exception):# 初始化def __in…...

Python综合练习题

题目 创建一个系统,里面可以添加学生、添加班级、查看班级里的学生,在控制台输出 效果图 关键代码 完整代码 # -*- coding: UTF-8 -*-#功能 Functionality0 #学生 Student [刘榕榕0, 秦英姿1, 王家乐0, 孟德赫3, 门子伟4, 明展宇5] #班级 Class [大…...

SpringCloud+Nacos集成Seata-1.7.0分布式事务

前言 项目中需要A服务调用B服务,当A服务方法体内出现异常时,若B服务方法已执行,要求B服务能够进行回滚,需要借助分布式事务实现。Seata是一个比较成熟的分布式事务工具,但官方文档比较简洁,查阅网上资料也…...

任务调度框架-如何实现定时任务+RabbitMQ事务+手动ACK

任务调度框架 Java中如何实现定时任务? 比如: 1.每天早上6点定时执行 2.每月最后一个工作日,考勤统计 3.每个月25号信用卡还款 4.会员生日祝福 5.每隔3秒,自动提醒 10分钟的超时订单的自动取消,每隔30秒或1分钟查询…...

修炼k8s+flink+hdfs+dlink(六:学习k8s)

一:增(创建)。 直接进行创建。 kubectl run nginx --imagenginx使用yaml清单方式进行创建。 二:删除。 kubectl delete pods/nginx 三:修改。 kubectl exec -it my-nginx – /bin/bash 四:查看。 …...

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[4]客户端与服务端连接

红队专题 招募六边形战士队员服务端编写新建工程server函数创建主线程类获取配置信息运行command 命令头文件里创建引用win32 类库/头文件startsocket 开始监听 类函数添加类StartSocketmysend/myrecv 设置 m_sockCommon 头文件MSGINFO_S 结构体 ThreadMain头文件runflag 启动 …...

Qt Designer生成ui文件,如何转py文件,如何运行

下面将逐步介绍ui文件如何转py文件,怎么运行的具体操作步骤 ui文件转py文件 1.使用Qt Designer生成ui文件,保存到本地 2.输入 cmd ,打开命令行窗口 3.进入ui文件的目录下,文件路径使用你本地存放ui文件的位置 cd /d ui文件路径…...

Python数据挖掘:自动售货机销售数据分析与应用

📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看 📘相关专栏C语言初阶、C…...

【设计模式】设计模式概述

😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!&#x1f4…...

第六届“中国法研杯”司法人工智能挑战赛进行中!

第六届“中国法研杯”司法人工智能挑战赛 赛题上新! 第六届“中国法研杯”司法人工智能挑战赛(LAIC2023)目前已发布司法大模型数据和服务集成调度 、证据推理、司法大数据征文比赛、案件要素识别四大任务。本届大赛中,“案件要素…...

关于 passing ‘const xx’ as ‘this’ argument of 的错误

今天在写一个简单的函数时&#xff0c;编译时出现了如下的错误&#xff1a; 这个很简单的函数是这样的&#xff1a; struct bundle_set {uint32_t baseId;uint32_t endId;bool operator< (const bundle_set &a){return baseId < a.baseId;} }; 在网上搜索到都是说什…...

数据结构和算法(13):优先级队列

概述 按照事先约定的优先级&#xff0c;可以始终高效查找并访问优先级最高数据项的数据结构&#xff0c;也统称作优先级队列 优先级队列将操作对象限定于当前的全局极值者。 根据数据对象之间相对优先级对其进行访问的方式&#xff0c;与此前的访问方式有着本质区别&#xf…...

面试经典150题——Day15

文章目录 一、题目二、题解 一、题目 135. Candy There are n children standing in a line. Each child is assigned a rating value given in the integer array ratings. You are giving candies to these children subjected to the following requirements: Each chil…...

web APIs——第一天(上)

变量声明的时候建议 const优先&#xff0c;尽量使用const 原因&#xff1a; const语义化更好很多变量我们声明的时候就知道他不会被更改了&#xff0c;那为什么不用const呢&#xff1f;实际开发中也是&#xff0c;比如react框架&#xff0c;基本const如果你有纠结的时候&…...

【Leetcode】215. 数组中的第K个最大元素

一、题目 1、题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例1: 输入: [3,2,1,5,6,4], k = 2 输出…...

服务器数据恢复-RAID5常见故障的数据恢复方案

raid5阵列常见故障&#xff1a; 1、服务器硬件故障或者RAID阵列卡故障&#xff1b; 2、服务器意外断电导致的磁盘阵列故障&#xff1b; 3、服务器RAID阵列阵列磁盘出现物理故障&#xff0c;如&#xff1a;电路板坏、磁头损坏、盘面划伤、坏扇区、固件坏等&#xff1b; 4、误操作…...

12个VIM编辑器的高级玩法

vim 是一个很好用的编辑器&#xff0c;应用十分广泛。但关于 vim&#xff0c;总有一些你不知道的事情&#xff0c;我们需要持续不断的学习。 我经常使用 vim&#xff0c;也经常在各大社区、论坛看到 vim 专家用户分享经验&#xff0c;今天我们就总结其中常用的一部分&#xff…...

⽜客论坛的笔记

项目描述: 一个基本功能完整的论坛项目。项目主要功能有: 基于邮件激活的注册方式&#xff0c;基于MD5加密与加盐的密码存储方式&#xff0c;登录功能加入了随机验证码的验证&#xff0c;实现登陆状态检查、为游客与已登录用户展示不同界面与功能。支持用户上传头像&#xff0c…...

JS逆向分析某枝网的HMAC加密、wasm模块加密

这是我2022年学做JS逆向成功的例子&#xff0c;URL&#xff1a;&#xff08;脱敏处理&#xff09;aHR0cHM6Ly93d3cuZ2R0di5jbi9hdWRpb0NoYW5uZWxEZXRhaWwvOTE 逆向分析&#xff1a; 1、每次XHR的GET请求携带的headers包括&#xff1a; {"X-ITOUCHTV-Ca-Timestamp":…...

论坛介绍|COSCon'23开源商业(V)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…...

在word、ppt、excel编辑软件标题栏顶部左上角加入自定义功能:另存为、导出PDF

...

Flink学习笔记(三):Flink四种执行图

文章目录 1、Graph 的概念2、Graph 的演变过程2.1、StreamGraph (数据流图)2.2、JobGraph (作业图)2.3、ExecutionGraph (执行图)2.4、Physical Graph (物理图) 1、Graph 的概念 Flink 中的执行图可以分成四层&#xff1a;StreamGraph -> JobGraph -> ExecutionGraph -&g…...

堆-----数据结构

引言 什么是堆&#xff1f;堆是一种特殊的数据结构&#xff08;用数组表示的树&#xff09;。 为什么要使用到堆&#xff1f;比如一场比赛&#xff0c;如果使用擂台赛的方式来决出冠军&#xff08;实力第一&#xff09;&#xff0c;就很难知道实力第二的队伍是什么了。 但是…...

震撼登场 | 拓世科技集团新品亮相成为2023世界VR产业大会全场焦点

在当今世界&#xff0c;新一轮科技革命和产业变革蓬勃发展&#xff0c;虚拟现实作为这一浪潮中的代表性技术&#xff0c;伴随着5G商用及元宇宙概念的迅速兴起&#xff0c;已经成为推动数字经济发展和产业转型升级的关键技术&#xff0c;深刻地改变着人类的生产和生活方式。 10…...

后端接口的查询方式

在与前端对接过程中一直都会遇到一个问题&#xff0c;就是我们后端接口提供好了&#xff0c;自测也通过了&#xff0c;前端却说接口不通&#xff0c;当我们去排查时却发现大都不是接口不通&#xff0c;很多情况是前端使用的姿势不对&#xff0c;比如接口明明写的参数是放到ULR路…...

Maven首次安装配置

所有版本下载地址 http://archive.apache.org/dist/maven/ 配置环境变量 变量名&#xff1a; MAVEN_HOME 值&#xff1a; D:\apache-maven-3.9.5 Path&#xff1a;%MAVEN_HOME%\bin 是否安装成功 mvn -v 出现版本号就安装成功 配置本地仓库 也就是从服务器上下载的JAR包地址&a…...

使用html2canvas将html转pdf,由于table表的水平和竖直有滚动条导致显示不全(或者有空白)

结果&#xff1a; 业务&#xff1a;将页面右侧的table打印成想要的格式的pdf&#xff0c;首先遇到的问题是table表上下左右都有滚轮而html2canvas相当于屏幕截图&#xff0c;那滚动区域如何显示出来是个问题&#xff1f; gif有点模糊&#xff0c;但是大致功能可以看出 可复制…...