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

news2024/11/16 3:31:45

目录

  • 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核文件,将HSSTLP 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名片。
网盘资料如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1116355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】网络编程 Socket

目录 1.TCP和UDP的区别 2.基于UDP的 Socket API 总结 3.基于TCP的Socket API 服务器程序的问题 网络编程的目的:通过网络,让不同主机之间能够进行通信。 在进行网络编程的时候,需要操作系统提供一组API,也就是Socket API&am…

用Node.js开发基于稳定扩散的AI应用

在本文中,我们将介绍如何构建一个 Web 应用程序,该应用程序使用 ChatGPT 和 Stable Diffusion 为你提供的任何网站描述生成徽标和合适的域名。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 1、介绍 人工智能正在接管世界。 这些技术每天都在震…

基于GRU的 电影评论情感分析 - python 深度学习 情感分类 计算机竞赛

文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖,适合作为竞…

Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用

文章目录 (143)NameNode内存配置(144)NN心跳并发配置(145)开启回收站参考文献 (143)NameNode内存配置 每个文件块(的元数据等)在内存中大概 占用150byte&…

Android 12.0 Launcher3定制化功能之抽屉式(双层)app列表排序功能实现

1.概述 在12.0的系统开发中,在定制Launcher3的开发中,对于抽屉式即双层桌面的workspace的app列表排序的功能,也是常有的需求,把常用的app图标放在前面,其他的可以放在列表后面做个整体的排序,这就需要了解app列表排序的流程,然后根据需求来实现功能 如图: 2.Launcher3 …

并发编程-延时队列DelayQueue

数据结构学习网站: Data Structure Visualization 思维导图 DelayQueue (延时队列) DelayQueue 是一个支持延时获取元素的阻塞队列 , 内部采用优先队列 PriorityQueue 存储元素,同时元素必须实现 Delayed 接口&#x…

Elasticsearch 8.X 分词插件版本更新不及时解决方案

1、关于 Elasticsearch 8.X IK 分词插件相关问题 球友在 ElasticSearch 版本选型问题中提及:如果要使用ik插件,是不是就使用目前最新的IK对应elasticsearch的版本“8.8.2”? https://github.com/medcl/elasticsearch-analysis-ik/releases/ta…

C++入门3+类和对象上

C入门3类和对象上 一.内联函数1.宏函数的缺点2.宏函数的优点3.内联函数的语法4.内联函数的优缺点5.内联函数的使用条件6.内联函数的展开7.内联函数的一大注意事项1.内联函数声明跟定义分离2.内联函数声明跟定义分离的"奇怪"现象 二.C11对于C语法的补充1.auto关键字1.…

【Nginx34】Nginx学习:安全链接、范围分片以及请求分流模块

Nginx学习:安全链接、范围分片以及请求分流模块 又迎来新的模块了,今天的内容不多,但我们都进行了详细的测试,所以可能看起来会多一点哦。这三个模块之前也从来都没用过,但是通过学习之后发现,貌似还都挺有…

python模块之feapder 爬虫框架

一、简介 官网:https://feapder.com/#/ feapder是一款上手简单,功能强大的Python爬虫框架,内置AirSpider、Spider、TaskSpider、BatchSpider四种爬虫解决不同场景的需求,但像任何工具一样,它也有其优点和缺点。以下是…

如何利用考培系统进行个性化学习和评估

考培系统作为一种现代化的学习和评估工具,可以为学生提供个性化的学习和评估服务。它利用先进的技术和算法,根据学生的学习情况和需求,为其量身定制学习计划,并提供相应的评估反馈。 1. 个性化学习 考培系统通过分析学生的学习情…

QML(25)——文本输入框组件的区别(TextField TextInput TextArea TextEdit)

目录 效果展示适用场景文本组件TextLabelText和Label的区别 单行文本输入框TextFieldTextInputTextField 和 TextInput的区别 多行文本输入框TextAreaTextArea 和 TextEdit 的区别 效果展示 适用场景 场景组件属性短文本Text长文本 末尾省略Textelide: Text.ElideRight文本设置…

通用FIFO设计深度8宽度64,verilog仿真,源码和视频

名称:通用FIFO设计深度8宽度64,verilog仿真 软件:Quartus 语言:verilog 本代码为FIFO通用代码,其他深度和位宽可简单修改以下参数得到 reg [63:0] ram [7:0];//RAM。深度8,宽度64 代码功能&#xff1a…

ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test

1. 简介 [RK3588从入门到精通] 专栏总目录 mpi_dec_test 是rockchip官方解码 demo 本篇文章进行mpi_dec_test 的代码解析,解码流程解析 2. 环境介绍 硬件环境: ArmSoM-W3 RK3588开发板 软件版本: OS:ArmSoM-W3 Debian11 3.…

低代码助力软件开发

低代码开发工具正在日益变得强大,它正不断弥合着前后端开发之间的差距。对于后端来说,基于低代码平台开发应用时,完全不用担心前端的打包、部署等问题,也不用学习各种框架(Vue、React、Angular等等)&#x…

GO 语言如何用好变长参数?

函数重载 对于函数重载相信编码过的 xdm 肯定不会陌生,函数重载就是在同一个作用域内定义多个具有相同名称但参数列表不同的函数 此处的参数列表不同,可以是参数的类型不同,参数的个数不同 那么我们一起分别来看看 C 语言,C 语…

物联网专业前景怎么样?

物联网专业前景怎么样? 物联网专业在当今技术发展迅速的背景下具有广阔的前景。以下是物联网专业的一些优势和就业前景: 1.市场需求大:物联网作为人工智能、云计算和大数据等技术的结合,已经成为许多行业的核心需求。各行各业都需…

【智能指针】

目录: 前言智能指针(一)智能指针初始了解内存泄漏1. 内存泄漏分类2. 如何检测内存泄漏3. 如何避免内存泄漏使用智能指针之前,异常安全的处理 (二)智能指针实现既原理智能指针RAII使用智能指针之后&#xff…

060:mapboxGL点击某处,通过flyTo,以动画的形式聚焦到此点

第060个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中点击某处,通过flyto,以动画的形式聚焦到此点。这里用到了flyTo的方法,里面可以设置bearing,zoom,pitch等众多的属性内容。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示…

数据结构与算法-(10)---列表(List)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…