自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

做有挑战的事

记录并分享自身FPGA的学习经历

  • 博客(50)
  • 收藏
  • 关注

原创 SyncE与1588 ptp

SyncE(同步以太网)是一种在以太网物理层实现时钟同步的技术,通过从接收数据流中恢复发送端时钟信号,为网络设备提供统一的频率基准。SyncE利用PHY芯片的CDR(时钟数据恢复)技术,从串行数据中提取时钟(如1GE提取257.8125MHz),再经FPGA倍频供系统使用。与IEEE 1588 PTP协议结合时,SyncE提供稳定的频率同步,PTP则实现亚微秒级时间同步,形成完整的网络同步方案。这种组合特别适用于5G等需要高精度同步的应用场景。

2026-02-07 20:18:51 1106

原创 quartus 的IOPLL,ATXPLL介绍

本文对比了四种PLL(锁相环)的核心区别与应用场景:IOPLL是通用PLL的增强版,具有动态重配置等高级功能,适用于复杂I/O接口;通用PLL功能基础,适合简单时钟需求;ATXPLL是纯模拟电路,提供GHz级超低抖动时钟,专为高速收发器设计;fPLL支持小数分频,频率灵活性最高。文章还通过代码示例展示了ATXPLL在10G以太网时钟生成中的应用,以及fPLL在SyncE时钟转换中的使用,强调不同PLL在复位时序管理和频率转换方面的设计要点。

2026-02-07 19:27:05 801

原创 FPGA UART设计

比如发送方以115200bps发送,接收方却以9600bps来接收,那么接收方每个比特采样的时间就是发送方的12倍,一个字节会被拆分成很多份,数据就完全乱掉了。数据位的传输顺序是低位在前、高位在后,也就是说先传第0位(最低有效位),最后传第7位(最高有效位)。停止位之后,如果还要发送下一个字节,就不会有空闲位,直接开始新的起始位。因为数据位是低位先传,所以第一次采样得到的是第0位,第二次是第1位,以此类推。为什么要等半个周期?停止位应该是高电平,如果采样到低电平,说明传输有问题,可能是起始位或数据位出错。

2026-02-06 10:44:27 340

原创 FPGA I2C设计

本文介绍了I2C总线协议及其Verilog实现。I2C是一种双线制串行通信协议,包含SCL时钟线和SDA数据线,支持主从设备通信。文章详细说明了I2C的物理层特性、基础时序规则、写操作和读操作流程,包括START/STOP条件、ACK/NACK机制等关键要素。重点展示了一个完整的I2C主控制器Verilog实现,包含状态机控制、时钟生成、数据收发等模块,支持7位地址寻址和读写操作。该实现采用同步设计,通过精确控制SCL时钟和SDA数据方向,确保符合I2C时序规范。

2026-02-06 10:15:06 872

原创 FPGA 组合逻辑和时序逻辑

摘要:Vivado在实现阶段出现多驱动错误(DRCMDRV-1),分析发现两段代码存在问题。第一段实现数据累加,第二段实现极值查找,均因在for循环中使用非阻塞赋值(<=)导致:1) 时序逻辑中非阻塞赋值会推断寄存器,使循环比较失效;2) 多实例并行驱动同一寄存器造成冲突。正确做法应遵循"计算用阻塞,输出用非阻塞"原则:循环内临时计算使用阻塞赋值(=),最终输出使用非阻塞赋值(<=)。修改后代码消除了多驱动问题,确保每个实例独立计算,互不干扰。

2026-01-17 11:33:22 656 1

原创 AD9361 IQ接口框架搭建

AD9361是一款高度集成的宽带射频收发器芯片,支持70MHz-6GHz工作频段,适用于多种通信标准。该芯片采用12位并行或LVDS接口与基带处理器连接,支持1T1R和2T2R模式,通过SPI接口配置内部寄存器。数据接口采用差分设计,使用IDDR/ODDR实现DDR-SDR转换,配合IDELAYE2进行时序校准。在1T1R模式下每2个时钟周期完成12位IQ数据收发,2T2R模式下每4个周期完成。芯片内置128抽头FIR滤波器和可配置抽取滤波器,提供灵活的基带处理能力。

2025-12-28 17:03:11 1077

原创 SPI接口 DAC控制器

本文介绍了时钟频率与周期的转换关系,重点分析了AD5324 DAC芯片的工作原理及FPGA控制实现方案。主要内容包括:1)时钟频率与周期的快速换算公式;2)AD5324芯片功能及SPI接口时序规范;3)FPGA工程架构设计,包含串口接收、命令解析和DAC控制三个模块;4)详细阐述了从串口命令到模拟电压输出的完整转换流程,包括16位数据拼接、SPI时序生成等关键实现细节;5)提供了1.6V电压输出的具体计算示例和十六进制指令格式。该方案实现了通过串口指令精确控制DAC输出电压的功能。

2025-12-27 15:19:11 742

原创 USB3.0 GPIF II接口

摘要:赛普拉斯EZ-USBFX3是一款USB3.0外设控制器,其GPIFII接口可配置为32/16/8位总线,最大速度100MHz。FPGA通过GPIFII同步从设备FIFO模式与FX3通信,实现3.2Gbps数据传输。读操作需注意SLCS、SLOE和SLRD信号的时序配合,数据输出有2个周期延迟;写操作需监测FLAG信号避免溢出,短数据包需在最后一拍拉低PKTEND。标志信号更新存在2-3个周期延迟,水印值设置影响可读写数据量,需根据标志状态精确控制时序。

2025-12-24 17:08:23 847

原创 压缩解压缩算法 BFP-8bit

摘要:本文基于ORAN协议的BFP压缩算法,提出了一种针对IQ数据的压缩处理方法。算法通过计算IQ绝对值的最大值确定压缩因子,根据最高有效比特位进行截位处理:当K≥7时保留符号位和[k:k-6]位,K<7时保留符号位和最低7位。FPGA实现中详细描述了压缩因子计算、截位规则和舍入处理,包括正数的四舍五入和负数的向零舍入策略。同时阐述了8bit压缩数据的解压过程,通过压缩因子确定补零位数实现数据恢复。该算法有效实现了BFP-8bit的压缩和解压缩功能。

2025-12-16 18:59:19 941

原创 OFDM 频偏补偿和相位跟踪(1)

摘要:OFDM技术易受载波频率偏移和相位噪声影响,802.11a采用两级补偿策略。前导码阶段进行粗同步与频偏估计后,数据阶段通过4个导频子载波(-21,-7,7,21)实现精细补偿。剩余频偏补偿处理线性累积的相位误差,相位跟踪则解决随机相位噪声和采样时钟偏移。算法通过测量导频相位差,估计剩余频偏和相位误差模型,对所有数据子载波进行补偿。这种闭环反馈机制将导频作为参考点,通过频域复数运算实现相位旋转校正,确保系统在动态信道中稳定工作。

2025-12-07 15:38:34 734

原创 OFDM 频偏补偿和相位跟踪(2)

本文提出了一种OFDM系统中频偏和相位补偿的联合算法实现方案。算法分为频偏补偿和相位跟踪两部分:频偏补偿通过导频信道估计值Rx(i)*conj(H(i))计算相位增量β;相位跟踪则利用去扰码后的导频序列计算每个子载波的相位旋转量θj。实现过程中需特别注意导频信道的处理,包括FIFO剔除导频、去扰码操作以及四个导频值的平均计算。算法采用CORDIC IP核进行相位计算,通过DDS实现相位累加,最终将补偿序列与信道估计后的IQ数据进行复数乘法完成补偿。系统支持可变长度的OFDM符号处理,能正确区分信号域和数据域

2025-12-07 15:37:32 1128

原创 OFDM 信道估计和均衡

本文研究了OFDM系统中基于长训练序列(LT)的信道估计方法。系统利用LT1和LT2两个训练序列进行辅助估计,通过FFT变换后取平均作为参考信道响应。信道估计的核心公式为H(i)=[LT1(i)+LT2(i)]/2 × conj(LTS(i)),其中LTS为标准训练序列。在FPGA实现时,采用RAM缓存训练序列,通过复数乘法运算完成信道估计,并将结果用于后续数据域的解调均衡。该方法通过动态调整判决门限值,将均衡后的接收信号归一化,有效解决了多径效应导致的信道响应差异问题,为后续的符号判决提供了可靠依据。

2025-12-06 10:09:23 655

原创 OFDM FFT 时频域转换

本文提出了一种OFDM信号处理方案,重点实现时频域转换和数据预处理。通过FIFO缓冲模块实现64点数据存储和循环前缀剔除,采用200MHz时钟处理20MHz采样信号。FFT输出23位IQ数据经截取高16位后重新排序,将频点转换为-26至+26的52个信道(剔除直流分量)。特别设计了导频提取机制,从指定信道(-21、-7、7、21)获取导频信号用于后续频偏校正。处理流程包括:FIFO写入时序控制、FFT运算、输出数据截取与重排序、导频信号提取等关键步骤,最终输出重新排序后的频域数据和导频信息供后续处理使用。

2025-12-05 22:28:19 293

原创 OFDM 精频偏补偿

本文提出了一种基于OFDM系统中长训练序列自相关的精频偏补偿方法。通过分析接收机本振偏差导致的基带信号频偏问题,利用两个长训练序列的自相关特性估计频偏分量。算法首先进行64拍延时和共轭运算,通过复数乘法、累加平滑和CORDIC计算得到相位旋转量,再经DDS生成补偿序列。实现中采用定点数优化计算,将除法转为乘法运算,并通过延迟设计确保补偿时序正确。该方法在粗频偏矫正基础上,能将剩余频偏补偿至10Hz以内,为后续信道估计和符号恢复提供精确的频偏校正。

2025-12-05 22:27:31 539

原创 OFDM 符号对齐

摘要:本文提出了一种基于长训练序列的OFDM符号对齐方法,通过检测长训练序列的相关峰实现信号域定位。关键点包括:(1)利用已知长训练序列特性,将复数乘法转换为符号位加减运算,优化计算复杂度;(2)采用4级流水线结构实现高效相关运算;(3)设置门限值和间距计数器确保可靠检测;(4)通过96个采样周期的延迟实现与LT1起始位置对齐。该方法在检测到两个间距64采样点的相关峰后,输出对齐标志,为后续FFT解调提供精确同步。系统还包含超时检测机制,确保在320个采样周期内完成同步过程。

2025-12-04 21:00:11 740

原创 OFDM 粗频偏校正

摘要:本文研究了OFDM系统中利用短训练序列自相关性进行粗频偏校正的方法。当接收端与发射机本振存在频率偏差时,基带信号会产生相位旋转。通过计算两个短训练序列的相关值,可以估计出相位旋转量α,进而补偿频偏分量efc。文中详细推导了相位旋转量计算公式α=2πefc*Ts,并提出了基于FPGA实现的频偏补偿算法,包括Atan函数近似计算、定点数处理和DDS频率控制字生成。最后讨论了复数乘法运算中的截位处理方法和DDS参数配置,为实际系统实现提供了理论依据和实现方案。

2025-12-04 20:55:26 871

原创 OFDM 分组检测

摘要:OFDM接收端分组检测通过短训练序列识别数据分组起始位置。核心算法利用16拍延迟的IQ信号共轭相关运算,当检测到连续短训练序列时输出接近1的相关值。FPGA实现采用RAM缓存16拍数据,结合复数乘法、平滑滤波和幅度估计模块。检测需满足三个条件:1)相关值超过阈值;2)持续100个周期满足条件1;3)检测到25个正负波动信号。最终通过移位运算优化除法计算,当所有条件满足时输出分组检测完成标志。(150字)

2025-12-03 20:18:09 960

原创 OFDM 调制解调

摘要:OFDM是一种多载波调制技术,通过将高速数据流分割为多个低速子载波并行传输,利用子载波间的正交性避免干扰。相比单载波系统,OFDM能在相同带宽下容纳更多子通道。802.11a协议定义了PPDU帧结构,包含前导码(用于同步)、信号域(传输参数)和数据域(含服务字段、有效载荷等)。在20MHz信道下,采用64-QAM调制时理论速率可达54Mbps。OFDM系统处理流程包括发送端的编码、IFFT变换、循环前缀添加,以及接收端的同步、FFT变换、信道均衡等关键步骤。

2025-12-03 20:15:32 1149

原创 FPGA与AD9371的数据交互

AD9371采用零中频架构,接收侧通过本振下变频至基带,支持7.5-100MHz接收带宽。该芯片包含4个JESD204B接口Lane(RX/ORX各2个)和4个TX Lane,由外部时钟芯片提供device clock和SYSREF信号。

2025-12-02 21:09:27 795

原创 PCIe SG-DMA原理

上位机内存地址都存在SG的列表里面(sglist),sglist的获取是由上位机的驱动把零散的内存空间存到sglist,再把sglist存到一块连续的物理内存中,此时就可以读取sglist,读取sglist就是block DMA操作,就只需要发送MRD的指令即可,就可以从内存里面的某个基地址把sglist读回来,读到板卡一侧,板卡接收到sglist之后,会取出元素,元素里面包含了基地址(希望往内存里写数据的基地址),以及元素能承载的数据长度是多少,也就是此基地址往后偏移能存多少数据。

2025-12-02 15:55:50 1291

原创 RRU 1588同步

IEEE 1588协议通过主从时钟交换时间戳(T1-T4)实现亚微秒级同步,其三种时钟模式(OC、BC、TC)分别采用不同机制:OC模式直接计算路径延迟,BC模式通过端口级联同步,TC模式专注测量网络时延。在RRU应用中,通过Sync/Follow_Up和Delay_Req/Resp四步交互,精确计算传输延迟和时钟偏移,最终实现RRU与主时钟的同步校准。

2025-11-30 17:52:32 1025

原创 RRU CFR算法

本文介绍了峰值对消(PC-CFR)算法的原理与实现方法。该算法通过检测信号中超出设定门限的峰值,生成对应的抵消脉冲来降低信号峰值因子。关键步骤包括:1)峰值检测,通过比较采样点幅度与相邻样点和门限值来识别峰值;2)计算复数峰值因子,保持信号相位不变;3)脉冲分配器动态分配抵消脉冲生成资源;4)设计匹配信号带宽的抵消脉冲滤波器。该算法需要多次迭代处理,通过减去频谱匹配的抵消脉冲,可在不产生带外泄露的情况下有效抑制信号峰值。硬件实现涉及峰值检测、复数乘法、脉冲分配和抵消脉冲生成等模块的协同工作。

2025-11-30 17:44:08 807

原创 CPRI 帧结构

摘要:CPRI接口用于连接基站REC和RE单元,是一个同步系统,要求两端时钟同源。它采用8B/10B编码,支持9830.4Mbit/s线速率,基帧长度为260.42ns。CPRI数据包括IQ数据和控制数据,通过超帧结构传输。初始化过程涉及速率协商和协议设置,状态机从A到G逐步完成同步。最终在F或G状态实现链路正常运行,完成层1同步和主从端口功能对齐。该系统通过GT模块恢复时钟,配合外部PLL实现时钟同步,确保数据传输的稳定性。

2025-11-29 19:38:06 924

原创 FPGA rgmii/gmii

摘要:GMII和RGMII是以太网接口标准,GMII采用8位125MHz单沿传输实现1000Mbps,而RGMII通过4位DDR双沿传输减少引脚数。两者转换需处理数据位宽与时序,FPGA中需使用IDDR/ODDR源语实现单双沿转换。为实现精确时序,需使用IDELAYE3/ODELAYE3延时模块,并通过级联扩展延时范围,配合IDELAYCTRL模块工作。RGMII接口设计中,PHY芯片在双沿分别传输数据高低位,FPGA通过专用源语处理时序对齐,确保数据传输可靠性。

2025-11-29 19:29:32 917 1

原创 Jesd204b 仿真设计

摘要:本文介绍了一个基于JESD204B接口的ADC/DAC系统架构设计。系统包含4个ADC和4个DAC,采用122.88MHz采样率64bit数据位宽。详细阐述了数据转换流程,包括TX端通过FIFO实现61.44MHz/128bit到122.88MHz/64bit的转换,以及RX端的反向转换。重点分析了Lane与ADC/DAC的数据映射关系,说明了JESD204B IP核的32bit Lane如何对应16bit采样数据。

2025-11-28 18:05:54 959

原创 Jesd204b 架构

摘要:JESD204B是一种高速串行接口协议,用于ADC/DAC与逻辑器件间的数据传输,最大支持12.5Gbps线速率。相比LVDS,它节省IO资源和PCB面积。协议采用SERDES技术,通过CDR恢复时钟,支持确定性延迟同步(子类1使用SYSREF)。文章详细介绍了线速率计算方法、物理层架构和AD9371芯片的初始化配置过程,包括Lane对齐、数据映射关系等关键技术要点,并给出FPGA接口的数据排列示例。

2025-11-28 18:04:14 1085

原创 PCIe 大页内存DMA与SGDMA

摘要:大页内存通过分配更大的内存页(如2MB/1GB)来减少TLB未命中率和管理开销,特别适用于需要连续大内存块的DMA操作。在嵌入式系统中,大页内存可预留专用内存供DMA使用,解决传统4KB分页难以申请大块连续内存的问题。结合SGDMA(分散-聚集DMA)技术,可高效处理非连续内存块的传输:驱动程序构建sglist描述非连续物理内存布局,通过BlockDMA获取该列表后,设备能一次性完成多块内存的DMA操作。这种组合方案显著提升了内存访问效率和DMA吞吐量,尤其适合高速数据传输场景。

2025-11-26 17:58:15 1009

原创 PCIe H2C DMA中Tag 乱序重排算法

摘要:本文介绍了FPGA与PC端数据传输中的乱序处理机制。当FPGA发送多个MRD请求包时,PC返回的CPLD包可能存在Tag乱序问题。系统通过32个FIFO模块实现乱序写入顺序读出,每个FIFO对应一个TagID(0-31)。核心设计包括:1)Tag分配与指针管理;2)CPLD包接收与Tag匹配;3)数据重排序输出。当写指针追上读指针时表示Tag资源耗尽。系统通过比较数据长度和Last信号判断传输完成,确保最终按正确顺序输出数据。该机制有效解决了多请求并发时的数据乱序问题。

2025-11-26 17:56:15 1427

原创 xilinx FPGA 原语介绍

摘要:本文介绍了FPGA中常用的数据转换和信号处理原语。IDDR/ODDR实现双沿与单沿数据的相互转换,用于PHY与FPGA接口;IBUFDS/OBUFDS处理LVDS差分信号的单端转换;IOBUFDS支持双向差分信号传输。IDELAYE3/ODELAYE3提供可编程信号延迟功能,配合IDELAYCTRL实现精确校准。ISERDESE3和OSERDESE3分别实现串并转换和并串转换功能,支持SDR和DDR模式,适用于高速数据传输场景。这些原语在FPGA设计中对于接口转换、信号对齐和高速数据传输至关重要。

2025-11-22 18:20:31 1626

原创 PCIe H2C MRD组包RTL设计

摘要:本文介绍了PCIE DMA过程中上位机向FPGA板卡传输数据的MRD机制。详细说明了MRD组包的RTL设计方法,包括地址计算、传输次数判断等关键步骤,其中address和length字段需根据MaxReadReqSize和DMA总长度动态计算。

2025-11-22 15:36:40 987

原创 PCIe H2C DMA的流量控制

本文阐述了PCIe系统中基于信用额度的流量控制机制,重点分析了H2C(主机到FPGA)方向的DMA传输过程。核心机制包括:1)通过信用通告、检查和更新实现缓冲区管理;2)针对MRD请求的特殊处理,允许未处理读请求提高吞吐量;3)CPLD/CPLH分离缓冲设计及信用计算方式。文章详细解释了信用额度与缓冲区剩余空间的映射关系,以及RCB边界对CPLD包分割的影响。特别指出在无限信用模式下,DMA引擎可近乎无限制地发起读请求,确保高持续吞吐率。该机制有效防止了因缓冲区溢出导致的数据丢失问题。

2025-11-21 12:33:51 905 3

原创 PCIe TLP包的仲裁分流RTL设计

摘要:实现对不同TLP包的仲裁和分流传输。

2025-11-20 19:03:06 1425

原创 PCIe Block DMA TLP组包

摘要:本文主要介绍了PCIe事务层数据包(TLP)的组成与传输机制,重点分析了MWR(Memory Write)包的封装与传输过程。通过三种典型传输情景阐述了基于MPS(Max Payload Size)的数据分包策略,包括包头生成、长度计算和地址增量等关键操作。文中详细说明了如何根据传输数据量计算所需MPS次数和最后包的有效数据量,并给出了相应的时序分析和地址转换方法,最终实现完整的Mwr数据包构建和传输至PCIe IP核的流程。

2025-11-19 22:22:42 1356

原创 PCIe Block DMA中断机制

Block DMA相关介绍

2025-11-19 22:19:31 1112

原创 PCIe BAR到AXI寄存器转换的RTL设计

摘要:本文介绍了PCIe设备中BAR(基地址寄存器)的作用与实现。

2025-11-18 21:35:55 1037

原创 FPGA PCIE 包解析

本文主要介绍了PCIe IP核的AXI-Stream接口与TLP包的解析方法。

2025-11-17 21:59:14 776

原创 PCIE Type0空间

介绍PCIE Type0配置空间

2025-11-17 21:25:44 977

原创 8B/10B编码解码

本文主要介绍8B10B码的编码原理及实现方法

2025-11-10 11:39:51 982

原创 PCIE TLP包解析

摘要:本文详细介绍了PCIE的四种命令包(Mrd、Mwr、Cpl、Cpld)及其TLP包结构。阐述了TLP包头中各字段的含义和作用。文章还分析了Mrd和Mwr事务的特点,以及Cpld包的组成和参数设置。通过两个具体例题,详细说明了在不同参数配置下如何计算和构建Mrd请求包以及对应的Cpld响应包,包括数据长度、地址、字节计数等关键参数的计算方法。这些内容对理解PCIE协议的数据传输机制和实现PCIE接口设计具有重要指导意义。

2025-11-05 17:03:34 1102

原创 PCIE简介

简要介绍PCIE架构,包结构和通信方式。

2025-11-05 11:44:10 412

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除