FPGA纯verilog实现JESD204B协议,基于AD9250数据接收,提供3套工程源码和技术支持

目录

FPGA纯verilog实现JESD204B协议,基于AD9250数据接收,提供3套工程源码和技术支持

1、前言

什么是JESD204B协议?

JESD204B是一种高速串行接口标准,专门用于连接数据转换器(ADC/DAC)和逻辑设备(如FPGA、ASIC)。它由JEDEC固态技术协会制定,是JESD204标准的修订版本;JESD204B协议通过其高速串行接口、确定性延迟和多通道同步能力,已成为现代高速数据采集系统的首选接口标准。FPGA凭借其并行处理能力、灵活性和可重构特性,在JESD204B系统实现中展现出显著优势,特别是在需要实时处理、多通道同步和定制化应用的场景中。随着5G、航空航天、医疗影像等领域的持续发展,JESD204B与FPGA的结合将继续推动高性能数字系统向更高速度、更高集成度和更智能化的方向发展。协议发展历程如下:

JESD204关键特性如下:

数据速率:最高达12.5 Gbps

通道数量:支持1-8个通道

编码方式:8B/10B编码

同步机制:支持确定性延迟

子类支持:Subclass 0, 1, 2

JESD204协议分层结构如下:

JESD204B链路建立过程如下:

JESD204B详细建立步骤如下:

步骤1:代码组同步(CGS)

步骤2:初始通道对齐(ILAS)

步骤3:用户数据传输

正常数据传输开始

持续监控链路状态

JESD204B具体应用领域

1、无线通信基础设施,如下:

应用优势:

支持大规模MIMO系统

高采样率满足5G宽带需求

多通道同步支持相控阵列

2、航空航天与国防,如下:

应用优势:

高可靠性,抗干扰能力强

支持高速数据采集和处理

适用于恶劣环境

3、医疗影像设备,如下:

应用设备:

MRI(磁共振成像)

超声成像系统

CT扫描仪

4、测试与测量仪器,如下:

FPGA实现JESD204B的优势概括

1、架构灵活性,如下:

2、主要优势对比如下:

FPGA实现JESD204B的优势详解

1、并行处理能力,如下:

优势:同时处理多个数据通道,实现真正的并行处理。

2、定制化信号处理,如下:

优势:在数据进入系统前完成预处理,降低后端处理负担。

3、低延迟设计,如下:

优势:适用于需要快速响应的实时系统。

官方有Example,为何要用你这个?

Xilinx官方的确有JESD204B IP核的Example例程;

然后呢?你看得懂吗?你会照着模仿做自己的项目吗?

如果你会,那么请划走;

如果你不会,不妨看看下面的聊天记录

这位朋友用了我的JESD204B参考工程,感觉少走了一年的弯路。。。

工程概述

本设计使用Xilinx系列FPGA为平台,基于纯verilog实现的JESD204B协议实现AD9250数据收发,旨在为读者提供一套精简版的、基于JESD204B协议的的数据收发架构;

首先在由示波器产生正弦波或者使用其他信号源输入AD9250转接板;AD9250实现模数转换后将AD数据通过FMC高速连接器发送到FPGA开发板的GT高速BANK;然后调用纯verilog实现的JESD204B物理层实现并行AD数据与高速低压差分串行数据接口的转换,并输出并行数据;然后调用纯verilog实现的JESD204B链路层实现JESD204B协议层解码功能,数据链路层由解码模块和控制模块两个部分构成;然后调用纯verilog实现的JESD204B传输层实现数据帧解析和格式转换;完成解码解码后的数据送入纯verilog实现的FIFO实现位宽转换和时钟域转换;然后数据送入纯verilog实现的DMA模块实现数据搬运,搬运到FPGA开发板板载DDR3中缓存;然后vitis软件端控制DMA读取AD数据通过串口打印或者通过IIO服务发送到上位机做后续处理;针对市场主流需求,本博客设计并提供3套工程源码,具体如下:

现对上述3套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为Xilinx--Kintex7--325T--xc7k325tffg900-2;首先在由示波器产生正弦波或者使用其他信号源输入AD9250转接板;AD9250实现模数转换后将AD数据通过FMC高速连接器发送到FPGA开发板的GTX高速BANK;然后调用纯verilog实现的JESD204B物理层实现并行AD数据与高速低压差分串行数据接口的转换,并输出并行数据;然后调用纯verilog实现的JESD204B链路层实现JESD204B协议层解码功能,数据链路层由解码模块和控制模块两个部分构成;然后调用纯verilog实现的JESD204B传输层实现数据帧解析和格式转换;完成解码解码后的数据送入纯verilog实现的FIFO实现位宽转换和时钟域转换;然后数据送入纯verilog实现的DMA模块实现数据搬运,搬运到FPGA开发板板载DDR3中缓存;然后vitis软件端控制DMA读取AD数据通过串口打印或者通过IIO服务发送到上位机做后续处理;

工程源码2

开发板FPGA型号为Xilinx--Virtex-7--xc7vx485tffg1761-2;首先在由示波器产生正弦波或者使用其他信号源输入AD9250转接板;AD9250实现模数转换后将AD数据通过FMC高速连接器发送到FPGA开发板的GTH高速BANK;然后调用纯verilog实现的JESD204B物理层实现并行AD数据与高速低压差分串行数据接口的转换,并输出并行数据;然后调用纯verilog实现的JESD204B链路层实现JESD204B协议层解码功能,数据链路层由解码模块和控制模块两个部分构成;然后调用纯verilog实现的JESD204B传输层实现数据帧解析和格式转换;完成解码解码后的数据送入纯verilog实现的FIFO实现位宽转换和时钟域转换;然后数据送入纯verilog实现的DMA模块实现数据搬运,搬运到FPGA开发板板载DDR3中缓存;然后vitis软件端控制DMA读取AD数据通过串口打印或者通过IIO服务发送到上位机做后续处理;

工程源码3

开发板FPGA型号为Xilinx--Zynq-7000--xc7z045ffg900-2;首先在由示波器产生正弦波或者使用其他信号源输入AD9250转接板;AD9250实现模数转换后将AD数据通过FMC高速连接器发送到FPGA开发板的GTX高速BANK;然后调用纯verilog实现的JESD204B物理层实现并行AD数据与高速低压差分串行数据接口的转换,并输出并行数据;然后调用纯verilog实现的JESD204B链路层实现JESD204B协议层解码功能,数据链路层由解码模块和控制模块两个部分构成;然后调用纯verilog实现的JESD204B传输层实现数据帧解析和格式转换;完成解码解码后的数据送入纯verilog实现的FIFO实现位宽转换和时钟域转换;然后数据送入纯verilog实现的DMA模块实现数据搬运,搬运到FPGA开发板板载DDR3中缓存;然后vitis软件端控制DMA读取AD数据通过串口打印或者通过IIO服务发送到上位机做后续处理;

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

提供完整的、跑通的工程源码和技术支持;

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

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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开发板搭建;以下是专栏地址:
点击直接前往

我这里已有的 JESD204 高速AD接口解决方案

我的主页有FPGA JESD204 高速AD接口解决方案专栏,有JESD204B、JESD204C等接口解决方案,以下是专栏地址:
点击直接前往

3、工程详细设计方案

工程设计原理框图

工程设计原理框图如下:

JESD204B 硬件设计架构

JESD204B硬件设计实现AD9250芯片与FPGA之间的物理通道交互,基于JESD204B协议,其中AD9250采用FMC转接板形式与FPGA开发板实现物理连接,MFC的HPC接口时钟完全右MFC转接板供给,本设计采用外部时钟输入方式,你也可以采用时钟晶振方式,比如TI公司的LMK04828,多路同源时钟实现JESD204B协议的可靠运行,JESD204B硬件设计架构如下:

信号输入设备

做测试时,可采用示波器产生正弦波作为信号输入,不再赘述;

AD9250芯片解读

AD9250内部架构如下:

AD9250特性如下:

1、集成双通道、14位、170 MSPS/250 MSPS ADC。

2、可配置的JESD204B输出模块支持每通道最高5 Gbps的采样速率。

3、片内锁相环(PLL)允许用户提供单个ADC采样时钟,对应JESD204B数据速率时钟由PLL乘以该ADC采样时钟产生。

4、支持可选RF时钟输入以简化系统板设计。

5、取得专利的差分输入在最高至400 MHz的输入频率下仍保持出色的信噪比(SNR)性能。

6、采用1.8 V单电源供电。

7、标准串行端口接口(SPI)支持各种产品特性和功能,例如:控制时钟DCS、省电模式、测试模式、基准电压模式、超量程快速检测以及串行输出配置等。

AD9250是一款双通道14位ADC,最高采样速率250 MSPS,旨在为低成本、小尺寸、宽带宽、多功能通信应用提供解决方案。

这款ADC内核采用多级、差分流水线架构,并集成了输出纠错逻辑。ADC内核具有宽带宽输入,支持用户可选的各种输入范围。集成基准电压源可简化设计。占空比稳定器可用来补偿ADC时钟占空比的波动,使转换器保持出色的性能。JESD204B高速串行接口可降低电路板布线要求,并减少接收器件所需的引脚数量。

默认情况下,ADC输出数据直接路由至两个JESD204B串行输出通道,这些输出设置为CML电平。四种模式支持M = 1或2(单通道或双通道转换器)与L = 1或2(单通道或双通道)的任意组合。在双通道ADC模式下,数据可以通过两个通道以最高采样速率250 MSPS发送。但是,如果通过一个通道发送数据,则仅支持最高125 MSPS的采样速率。器件提供同步输入(SYNCINB±和SYSREF±)。

需要时,灵活的关断选项可以明显降低功耗。每个通道通过专用快速检测引脚支持可编程超量程电平检测。设置与控制编程利用三线式SPI兼容型串行接口来完成。AD9250采用48引脚LFCSP封装,额定温度范围为−40°C至+85°C工业温度范围。

纯verilog实现的JESD204B 物理层方案

JESD204B物理层采用纯verilog代码实现,注意这里的纯verilog指的是非Xilinx原语部分,里面包含了GTEX2_COMMON和GTXE2_CHANNEL(GTX为例)原语,实现JESD204B物理层,即实现并行AD数据与高速低压差分串行数据接口的转换。

纯verilog实现的JESD204B物理层方案特性如下:

1、纯verilog代码实现,适用于Xilinx 7系列、Ultrascale和Ultrascale+系列FPGA;

2、支持Xilinx系列的GTXE2、GTHE3、GTHE4、GTYE4高速收发器原语;

3、最高可支持到单Lane 32.75Gbps线速率,根据选择的GT原语类型而定;

4、与Xilinx的JESD204 PHY IP核相比,简化了高速收发器配置流程,可任意修改底层代码,缺点是需要对高速收发器底层十分了解,否则很难精准配置;

5、预留了高速收发器的COMMON、CHANNEL和Eye-Scan的DRP配置接口,并转换为AXI4-Lite接口,可通过软件实现高速收发器线速率的动态配置;

6、支持8B10和64B66B编解码协议;

纯verilog实现JESD204B物理层方案设计架构如下:

纯verilog实现JESD204B物理层方案源码架构如下:

关于这个纯verilog实现JESD204B物理层方案IP的详细配置和使用,博主专门写了一个文档并放在了资料包中,如下:

纯verilog实现的JESD204B 数据链路层方案

JESD204B数据链路层采用纯verilog代码实现,实现JESD204B数据链路层解码功能。数据链路层由解码模块和控制模块两个部分构成;

纯verilog实现的JESD204B数据链路层方案特性如下:

1、纯verilog代码实现,适用于Xilinx 7系列、Ultrascale和Ultrascale+系列FPGA;

2、支持JESD204B和JESD204C;

3、支持JESD204子类0和1;

4、确定性延迟(用于子类1操作);

5、支持AXI4-Lite动态配置;

6、支持事件、中断;

7、8B/10B模式下的最大带宽:15 Gbps;

8、64B/66B模式下的最大带宽:32 Gbps;

9、低延迟;

10、每个独立的Lane可启用/禁用;

纯verilog实现JESD204B数据链路层方案设计架构如下:

纯verilog实现JESD204B数据链路层解码模块方案代码架构如下:

纯verilog实现JESD204B数据链路层控制模块方案代码架构如下:

关于这个纯verilog实现JESD204B链路方案IP的详细配置和使用,博主专门写了一个文档并放在了资料包中,如下:

纯verilog实现的JESD204B 传输层方案

JESD204B传输层采用纯verilog代码实现,实现JESD204B接收数据帧解析和格式转换功能。

该JESD204B传输层方案特性如下:

1、纯verilog代码实现,适用于Xilinx 7系列、Ultrascale和Ultrascale+系列FPGA;

2、支持JESD204B和JESD204C;

3、支持AXI4-Lite动态配置;

纯verilog实现JESD204B传输层方案设计架构如下:

JESD204B数据传输层负责在AD9625 JESD204B接口中进行数据格式的映射和解映射,即根据ADC芯片数据手册调整

关于这个纯verilog实现JESD204B传输层方案IP的详细配置和使用,博主专门写了一个文档并放在了资料包中,如下:

PL端逻辑工程源码架构

提供2套工程源码,以工程源码1为例,工程Block Design设计如下:

提供2套工程源码,以工程源码1为例,综合后的工程源码架构如下:

PS端软件工程源码架构

PS端软件代码架构

PS端软件工程源码架构如下:

软件程序流程图

程序流程图如下:

PS端代码功能

PS端代码功实现一套精密的"数据流水线控制系统":

1、搭建流水线:

从时钟源(AD9517)开始,经过ADC转换(AD9250)、高速传输(JESD204B)、FPGA接收与处理,最终通过DMA存入内存。

2、全线质检:

在正式采集前,执行PN序列测试和斜坡测试,确保从ADC数字输出到FPGA接收的整个链路功能正确、数据无误。

3、提供服务:

最终通过IIO框架将这条"流水线"的产品(采集到的数据)开放给用户进行高级分析和处理。

PS端代码主要功能模块详解

1、硬件抽象与平台初始化模块

作用:初始化FPGA的底层硬件接口,为上层操作提供统一的访问方式。

关键组件:

SPI控制器 (no_os_spi, xilinx_spi):用于配置AD9517时钟芯片和两片AD9250 ADC芯片。代码中通过一个SPI多路复用器 (demux_spi) 用单个SPI控制器控制多个设备。

GPIO控制器 (no_os_gpio, xilinx_gpio):用于产生JESD204B链路所需的SYSREF同步信号。

缓存控制器 (Xil_ICacheEnable, Xil_DCacheEnable):启用处理器缓存以提升访问DDR内存的性能,对高速数据流至关重要。

2、时钟生成与分配模块 (AD9517)

作用:为整个系统提供高精度、低抖动的时钟源。

芯片:AD9517,一款高性能的时钟发生器和分配器。

配置流程:代码中先进行ad9517_setup,然后依次开启并配置通道0、1(LVPECL输出)和通道4、5、6、7(LVDS输出),使其输出250MHz时钟,最终通过ad9517_update写入寄存器,并读取状态寄存器验证PLL是否锁定。

3、高速模数转换器模块 (AD9250)

作用:将输入的模拟信号转换为高速数字信号,并通过JESD204B接口发送。

芯片:AD9250,双通道、14位、最高250 MSPS采样率的ADC。

关键配置:

JESD204B接口配置 (ad9250_0/1_jesd204b_interface):设定链路参数(如通道ID LID、每帧字节数 K、加扰使能等)。

输出格式:设置为AD9250_OUT_OFFSET_BINARY(偏移二进制码)。

测试模式:依次进入AD9250_TEST_PNLONG(伪随机序列测试)、AD9250_TEST_RAMP(数字斜坡测试),最后返回AD9250_TEST_OFF(正常工作模式)。

4、JESD204B高速串行链路与FPGA收发器模块

作用:建立并维护ADC芯片与FPGA逻辑之间的高速、可靠的串行数据通道。

FPGA收发器 (adxcvr):配置FPGA内部GTX/GTH等高速收发器的物理层属性(参考时钟、线速率 4915200 KHz、PLL选择等)。

JESD204B接收链路 (axi_jesd204_rx):配置逻辑层的链路参数(每帧字节数、每多帧的帧数等),并调用axi_jesd204_rx_status_read来监控链路同步状态。

5、FPGA数据路径与DMA控制器模块

作用:在FPGA侧接收、处理JESD数据,并高效地将数据搬运至内存。

ADC接口核 (axi_adc_core):将JESD204B解帧后的并行数据转换为可供逻辑使用的标准数据流,并支持PN序列监视器 (axi_adc_pn_mon) 用于链路测试。

DMA控制器 (axi_dmac):负责将axi_adc_core缓冲区的数据,以直接内存访问的方式搬运到DDR内存 (ADC_DDR_BASEADDR)中,极大减轻CPU负担。代码中演示了两次DMA传输。

6、工业I/O框架模块 (IIO Framework) - 可选项

作用:在定义了IIO_SUPPORT宏时,提供一个基于网络或串口的远程数据访问和控制接口。

功能:iio_app_init会创建一个IIO上下文,将axi_adc设备及其DMA缓冲区暴露出去。这样,用户可以在主机PC上使用iio-oscilloscope等图形化工具,实时查看ADC采集的波形,或动态调整ADC参数。

4、vivado工程源码1详解-->K7-325T版本

开发板FPGA型号:Xilinx--Kintex7--325T--xc7k325tffg900-2;

FPGA开发环境:Vivado2022.2;

AD输入:AD9250;

DA输出:串口打印或串口输出到上位机;

数据交互接口:JESD204B;

JESD204B物理层方案:纯verilog实现的JESD204B物理层;

JESD204B链路层方案:纯verilog实现的JESD204B链路层;

JESD204B传输层方案:纯verilog实现的JESD204B传输层;

JESD204B使用高速收发器类型:GTX;

工程作用:让读者掌握FPGA基于JESD204B实现AD9250数据收发的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

5、vivado工程源码2详解-->V7-485T版本

开发板FPGA型号:Xilinx--Virtex-7--xc7vx485tffg1761-2;

FPGA开发环境:Vivado2022.2;

AD输入:AD9250;

DA输出:串口打印或串口输出到上位机;

数据交互接口:JESD204B;

JESD204B物理层方案:纯verilog实现的JESD204B物理层;

JESD204B链路层方案:纯verilog实现的JESD204B链路层;

JESD204B传输层方案:纯verilog实现的JESD204B传输层;

JESD204B使用高速收发器类型:GTH;

工程作用:让读者掌握FPGA基于JESD204B实现AD9250数据收发的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

6、vivado工程源码3详解-->Zynq7045版本

开发板FPGA型号:Xilinx--Zynq-7000--xc7z045ffg900-2;

FPGA开发环境:Vivado2022.2;

AD输入:AD9250;

DA输出:串口打印或串口输出到上位机;

数据交互接口:JESD204B;

JESD204B物理层方案:纯verilog实现的JESD204B物理层;

JESD204B链路层方案:纯verilog实现的JESD204B链路层;

JESD204B传输层方案:纯verilog实现的JESD204B传输层;

JESD204B使用高速收发器类型:GTX;

工程作用:让读者掌握FPGA基于JESD204B实现AD9250数据收发的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

7、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;

2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件-->另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;

3:如果你的vivado版本高于本工程vivado版本,解决如下:

打开工程后会发现IP都被锁住了,如下:

此时需要升级IP,操作如下:

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:


更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;

2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;

3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

8、上板调试验证

准备工作

需要准备的器材如下:

AD9250子卡;

FPGA开发板;

AD9250数据收发效果演示

将AD9250子卡连接FPGA开发板的FMC-HP接口,如下:

然后打开vitis,下载程序,具体演示这里不方便展示,敬请见谅

8、工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,

资料获取方式:文章末尾的V名片。

网盘资料如下:

此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:

相关推荐
FPGA_无线通信2 小时前
OFDM 精频偏补偿
算法·fpga开发
我爱C编程4 小时前
【仿真测试】基于FPGA的完整16QAM软解调链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·软解调·帧同步·维特比译码·频偏估计·定时点提取
高速上的乌龟4 小时前
Lattice LFCPNX-100 Fpga开发+源码:基于spi协议的flash驱动控制
fpga开发
ehiway6 小时前
中科亿海微SoM模组——FPGA高速信号采集解决方案
fpga开发
tiantianuser12 小时前
RDMA设计13:融合以太网协议栈设计2
fpga开发·rdma·高速传输·cmac·roce v2
XINVRY-FPGA18 小时前
XC3S1000-4FGG320I Xilinx AMD Spartan-3 SRAM-based FPGA
嵌入式硬件·机器学习·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
国科安芯1 天前
航天医疗领域AS32S601芯片的性能分析与适配性探讨
大数据·网络·人工智能·单片机·嵌入式硬件·fpga开发·性能优化
贝塔实验室1 天前
新手如何使用Altium Designer创建第一张原理图(三)
arm开发·单片机·嵌入式硬件·fpga开发·射频工程·基带工程·嵌入式实时数据库
FPGA_无线通信1 天前
OFDM 同步设计(3)
算法·fpga开发