
FPGA
文章平均质量分 93
电路_fpga
闻道有先后 术业有专攻
展开
-
整理及仿真Xilinx的SRIO示例工程(高速收发器三十)
本文介绍了Xilinx SRIO IP核的仿真和示例工程整理。仿真展示了维护端口配置、复位时序、初始化成功信号、流写事务和响应时序。整理示例工程时,建议将共享逻辑置于顶层以方便扩展,并展示了通道模块和时钟复位模块的RTL视图及参考代码。此外,还讨论了测试数据生成模块,该模块用于产生ireq通道数据并响应treq通道读请求,包括状态机设计和数据生成代码。原创 2025-02-14 20:26:38 · 1305 阅读 · 0 评论 -
2024年度总结
迟来的2024年度总结,本文主要包括创作经历的回顾、个人成长与突破、以及职业与生活的平衡。原创 2025-01-23 20:11:03 · 1413 阅读 · 14 评论 -
fpga通过uart向上位机传输ad7606采集数据
通过串口将AD7606采集的8路ADC数据传输至PC显示。AD7606模块将采集的16位补码数据转换为电压值,并转换为BCD码。系统设计包括数据处理模块和UART字节发送模块,前者负责数据转换,后者负责将数据以ASCII编码形式发送。原创 2025-01-21 20:07:37 · 968 阅读 · 0 评论 -
基于FPGA的AD7606并行接口驱动程序仿真及上板
本文介绍了AD7606并行接口驱动程序的仿真及上板测试过程。首先,使用Matlab生成200KHz采样率下的2KHz正弦波二进制文件。接着,在Altera开发板上,通过Quartus和Modelsim进行联合仿真,测试AD7606驱动代码。仿真中,使用readmemb函数读取二进制数据,模拟AD7606的输入数据。上板测试时,使用Signal Tap II逻辑分析器验证接口时序,确认采样率和数据采集正确。测试结果与预期一致,验证了驱动程序的正确性。最后提供了获取Quartus和Vivado工程文件的方式。原创 2024-12-25 11:30:00 · 964 阅读 · 0 评论 -
基于FPGA的AD7606并行接口驱动程序
本文介绍了基于FPGA实现AD7606并行接口数据采集的方法。首先,通过状态机和计数器实现AD7606的复位、采样锁存、数据读取等时序控制。在FPGA中,使用计数器确保信号持续时间满足AD7606要求,如RESET、CONVSTA/B的持续时间。状态机在检测到BUSY下降沿后读取数据,CS和RD信号的生成也通过计数器控制。原创 2024-12-18 11:30:00 · 1576 阅读 · 2 评论 -
详解AD7606引脚及接口时序参数
AD7606是一款8通道16位同步采样ADC芯片,支持200KSPS采样率,可选±5V或±10V输入电压范围,5V供电。具有并口和SPI串口通信接口,8通道同时采样,简化PCB设计。内部无配置寄存器,通过引脚配置功能。支持过采样,但通常不使用。数据可通过并行或串行接口读取,FPGA常采用并行模式。原创 2024-12-11 11:30:00 · 4217 阅读 · 0 评论 -
基于FPGA的WM8371从机模式驱动设计(含源码)
本文介绍了基于FPGA的WM8371从机模式驱动设计,包括系统框图、I2S模式时序、程序设计和工程仿真。在从机模式下,FPGA提供三个时钟信号,采用24位音频数据和可配置的采样率。详细描述了时钟分频、寄存器配置、数据接收和发送模块的设计。通过仿真验证了时钟分频、数据采集和输出的正确性,并展示了上板测试结果。用户可以根据需要修改顶层参数来设置采样率和数据位宽。原创 2024-12-04 11:30:00 · 713 阅读 · 0 评论 -
记录开发WM8371主机模式遇到的问题
本文描述了在编写WM8371驱动时遇到的问题及其解决过程,最初选择了主机模式和I2S左对齐数据传输模式,但在50MHz FPGA时钟下遇到了耳机输出噪声问题。通过硬件回环测试排除了硬件故障,确定问题在于FPGA代码。分析发现,由于系统时钟频率较低,导致DACDAT信号与BCLK上升沿重合,违反了WM8371的时序要求。解决方案是将系统时钟频率提高至100MHz,以满足BCLK的建立和保持时间要求,从而消除噪声。原创 2024-11-27 11:30:00 · 787 阅读 · 0 评论 -
基于FPGA的WM8371主机模式驱动设计(含源码)
本文介绍了基于FPGA的WM8371音频编解码器驱动模块,包括寄存器配置、音频采集和输出模块。音频采集模块通过I2S接口采集ADC数据,音频输出模块将数据通过DAC输出。文中详细描述了I2C配置过程、I2S左对齐模式时序、音频数据位宽参数化设计,以及如何同步和转换数据。最后提供了上板测试结果,包括麦克风输入和左右声道音频输入测试,并说明了如何修改ADC/DAC采样率。工程代码可在公众号后台获取。原创 2024-11-20 11:45:00 · 1094 阅读 · 0 评论 -
详解wm8371音频采集芯片的寄存器
本文详细介绍了WM8731编解码器的寄存器配置和电路设计。WM8731具有24位ADC和DAC,支持16至32位音频输入字长和8kHz至96kHz采样率。阐述了如何通过I2C或三线模式配置内部寄存器,并详细讲解了11个寄存器的功能,包括左右声道线路、耳机放大器、模拟音频路径控制、数字音频路径控制、省电模式、数字音频接口格式和复位寄存器。强调了省电模式、音频输入和DAC输出静音设置、I2S协议模式和格式设置、采样率设置的重要性。文档内容基于WM8731手册,提供了设计思路和配置参考。原创 2024-11-15 12:15:00 · 1789 阅读 · 0 评论 -
详解I2S协议
音频采集芯片WM8731的I2S协议包括ADCRC、DACRC、BCLK、ADCDAT和DACDAT五个信号。I2S协议有四种模式:左对齐、右对齐、I2S和DSP,推荐左对齐或I2S模式。WM8731音频数据可编程为16、20、24或32位。原创 2024-11-06 20:35:21 · 1763 阅读 · 0 评论 -
详解Xilinx的10G PCS PMA IP(万兆以太网二)
本文介绍了在Xilinx FPGA上实现万兆以太网通信的三种方法,重点讲解了使用10G PCS PMA作为PHY层的方案。详细阐述了10GBASE-R/KR的工作原理、XGMII接口时序、内核时钟分析及IP的功能信号与调试信号,为设计万兆以太网通信系统提供了理论基础和实践指导。原创 2024-10-30 18:00:00 · 3068 阅读 · 0 评论 -
idelaye布局布线引发的问题
详解[Place 30-650] Non IO buffer dclk_IBUF_BUFG_inst{BUFG} is driving IDATAIN pin of IDELAY instance u_IDELAYE2. This will lead to unroutable situation. IDATAIN pin of IDELAY instance should always get signal from IO buffer or GND.报错的根本原因原创 2024-10-24 12:00:00 · 2147 阅读 · 4 评论 -
万兆以太网接口演变(万兆以太网一)
万兆以太网遵循IEEE 802.3ae规范,最初使用XGMII接口与PHY芯片通信,但因时钟频率高导致布线困难。随后发展出XAUI接口,通过XGXS转换简化为8对差分信号线,支持更长布线。随着Serdes技术发展,FPGA内部可实现PHY层设计,简化硬件设计。现代FPGA使用GTX/GTH/GTY等技术构建高速接口,实现灵活且简单的设计。原创 2024-10-18 20:31:00 · 2210 阅读 · 0 评论 -
详解Xilinx JESD204B PHY层端口信号含义及动态切换线速率(JESD204B五)
Xilinx提供的JESD204B PHY IP,支持1.0至12.5 Gb/s的线速率,基于GTX/H架构。该IP具备丰富的内部寄存器,可通过axi_lite总线进行动态配置,包括QPLL和CPLL参数设置以实现线速率的调整。端口信号设计简化,方便与上层传输层逻辑集成。内部寄存器包括状态监测和GTX/H相关配置,如回环模式和预加重等。尽管IP封装了GTX/H,但缺少接收端对齐实现,需与JESD204B上层模块配合使用。通过分析端口信号和寄存器配置,用户可以灵活控制PHY层行为,适应不同的通信需求。原创 2024-10-09 18:08:50 · 2545 阅读 · 4 评论 -
Xilinx的JESD204B PHY层IP仿真及上板测试(JESD204B四)
本文详细介绍了在FPGA上配置和仿真JESD204B PHY IP的全过程。首先,在IP Catalog中配置了PHY参数,包括收发器数量和动态线速率范围。然后,通过分析示例工程,理解了时钟处理、数据生成和检测模块的功能,并重点观察了axi_lite配置接口的时序。仿真验证了配置过程和数据收发的一致性。最后,针对开发板上板测试,对端口信号和时钟处理进行了必要的修改,并使用ILA捕获关键信号,成功验证了PHY IP的通信功能。整个过程展示了从理论配置到实际验证的完整步骤。原创 2024-09-26 12:33:30 · 2151 阅读 · 0 评论 -
详解JESD204B子类一的确定性延时(JESD20B三)
JESD204B系统中,确定性延迟的实现依赖于精确的时钟同步和数据对齐。通过SYSREF信号同步发送端(TX)和接收端(RX)的本地多帧时钟(LMFC),确保所有通道在LMFC的相同边沿发送和接收数据。ILAS序列用于标注数据的开始和结束,帮助接收端识别帧边界。弹性buffer(RBD)调整数据输出点,以补偿通道间的延迟差异,保证数据对齐输出。若RBD设置不当,可能引入不确定性延迟。因此,需要通过实验确定RBD的最优值,以维持在不同条件下的延迟一致性,确保系统性能的可靠性和预测性。原创 2024-09-20 08:05:14 · 2112 阅读 · 1 评论 -
JESD204B数据链路建立过程(文末赠书)
JESD204B协议通过一系列同步过程确保数据链路的建立和数据传输的准确性。发送端首先进行时钟同步,然后接收端通过SYNC信号触发发送端发送K28.5字符进行码组同步。完成码组同步后,发送端在LMFC边沿发送初始通道对齐序列(ILAS),用于验证链路参数和对齐所有通道。接收端利用CDR技术恢复数据,并在ILAS的帮助下进行通道间数据对齐。数据链路层的8B10B编码和解码确保数据的准确性,而加扰技术用于减少电磁干扰。整个过程涉及精确的时序控制和参数匹配,以实现高效的数据同步和传输。原创 2024-09-11 08:36:49 · 2194 阅读 · 1 评论 -
初始JESD204B高速接口协议(JESD204B一)
JESD204B是用于高速ADC/DAC与逻辑器件通信的串行接口协议,通过减少数据线对和简化PCB布线,解决了LVDS接口在高速数据传输中的布线难度和时序问题。JESD204B支持多通道同步和确定性延时,适用于高速数据传输需求。然而,由于需要锁相环和缓冲器,JESD204B的功耗和数据传输延迟可能高于LVDS。JESD204B包含多种工作模式,其中子类1模式因其复杂性和广泛的应用而受到青睐。JESD204B的结构包括传输层、加扰、链路层和物理层,各层协同工作以实现高效的数据传输。原创 2024-09-06 17:34:34 · 2537 阅读 · 0 评论 -
Aurora 64B/66B IP的原理及示例工程分析(高速收发器二十四)
Aurora 64B/66B是一种高性能串行通信协议,与Aurora 8B/10B原理相似,支持全双工模式,提供AXI4-Stream和Stream两种接口。内核基于GTX封装,内部包含加扰、解扰模块,具备流控和CRC校验功能。时钟架构中,初始化时钟独立,复位信号包括Reset_pb和pma_init,前者仅复位内核逻辑,后者复位整个高速收发器。IP配置界面与Aurora 8B/10B类似,需要设置线速率、参考时钟等参数。原创 2024-08-07 20:12:14 · 3129 阅读 · 0 评论 -
详解Xilinx的SRIO IP的配置参数(高速收发器二十九)
本文指导了如何在Vivado中配置Xilinx SRIO IP核,包括选择数据链路、线速率、参考时钟频率等,并设置了缓冲区深度、设备ID和流量控制。接着分析了SRIO IP的示例工程,涉及发送和接收数据模块,说明了如何初始化、获取包头、发送数据以及解析和响应接收到的数据包。原创 2024-08-01 11:16:49 · 2306 阅读 · 7 评论 -
基于FPGA的数字信号处理导航
基于FPGA、matlab的数字信号处理及调制解调算法的仿真及实现原创 2024-07-26 10:40:08 · 969 阅读 · 0 评论 -
基于64B66B编码的自定义协议phy层上板测试(高速收发器二十三)
本文对64B66B自定义PHY进行了总体仿真和上板测试,验证了高速收发器模块、发送模块、接收模块的功能正确性。设计了测试数据生成模块,用于上板调试和控制尾端掩码信号。顶层模块包含两个高速收发器和自定义PHY层模块,通过光纤回环传输数据。仿真验证了接收端同步模块和收发数据的时序正确性。上板测试中,通过ILA调试信号,测试了不同尾端数据掩码情况下的收发数据,结果表明设计正确。原创 2024-07-23 12:07:48 · 1457 阅读 · 0 评论 -
基于GTX的64B/66B编码的自定义接收模块(高速收发器二十二)
本文完成了64B66B自定义PHY的顶层模块设计,包括发送、加扰、接收对齐、解扰和接收数据模块。重点设计了接收端同步模块,通过检测同步头状态调整串并转换起始位置实现数据对齐,并增加了同步失败的判断条件。接收数据模块负责解析数据输出到axi_stream。通过仿真验证了设计的正确性,准备进行上板测试。原创 2024-07-17 10:54:13 · 1204 阅读 · 1 评论 -
简要讲解Xilinx SRIO IP(高速收发器二十八)
本文概述了串行RapidIO(SRIO)技术,一种基于SERDES的高速串行总线,相较于传统并行总线在高速传输中具有优势。SRIO通过CRC和8B10B编码确保数据可靠性,并采用CDR技术进行时钟恢复。Xilinx提供的SRIO IP核支持1至4通道,建立在GT收发器之上,包含逻辑层、BUFFER层和PHY层。逻辑层支持多种事务类型和数据包格式。原创 2024-07-10 10:31:09 · 3549 阅读 · 5 评论 -
基于GTX的64B66B编码的自定义协议发送模块(高速收发器二十一)
本文介绍了64B66B组帧原理,包括数据帧和控制帧,以及以太网控制协议。接着整理了高速收发器示例工程,便于后续扩展。设计了自定义PHY发送模块,采用axi_stream接口,通过FIFO暂存数据,实现组帧发送。详细分析了模块代码,包括端口信号、FIFO设计、移位寄存器、计数器等关键部分。最后,通过仿真验证了模块的正确性,证明了设计无误。原创 2024-07-01 09:32:13 · 1949 阅读 · 3 评论 -
基于GTX的64B66B编码IP生成(高速收发器二十)
本文介绍了如何配置GTX IP实现64B66B编码,涉及共享逻辑设置、线速率与参考时钟频率配置、编码与时钟界面设置、数据位宽选择、Buffer同步、均衡模式选择、通道绑定与时钟纠正等。同时分析了示例工程中的模块,包括QPLL、复位、用户时钟生成、手动同步等,并讨论了64B66B编码与解码模块的应用。最后通过仿真验证了IP配置的正确性。原创 2024-06-17 10:07:41 · 2162 阅读 · 0 评论 -
详解GTX的64B66B编码(高速收发器十九)
本文介绍了GTX的64B66B编码原理和使用方法。64B66B通过加扰保证零一均衡,使用2位同步头指示帧类型,并通过Gearbox实现数据的串并转换。GTX内部不进行加扰和解扰,需要用户在外部完成。发送时使用外部计数器控制数据发送,接收时通过RX Gearbox实现数据输出,并通过RXGEARBOXSLIP信号和同步头状态实现手动对齐。与8B10B相比,64B66B编码的使用更为简单。原创 2024-06-13 17:58:38 · 3676 阅读 · 11 评论 -
基于FPGA的SM3加密算法优化(SM3加密算法三)
本文通过流水线优化,提升了FPGA实现的SM3加密算法性能。在消息扩展和迭代过程中,通过插入触发器将并行计算转换为串行,大幅提高时钟频率至200MHz。详细描述了代码实现,并经过仿真和上板测试验证了优化效果。原创 2024-06-11 11:14:06 · 1549 阅读 · 0 评论 -
整理Aurora8B10B官方示例工程(高速收发器十八)
本文介绍了如何封装和测试Xilinx Aurora 8B/10B IP的多通道收发功能。首先整理了官方示例工程,将共享逻辑和独立逻辑分离,简化了多通道收发器的例化。然后调用两个收发器进行仿真,验证了数据收发的正确性。最后在开发板上进行了测试,通过ILA抓取的发送和接收数据时序,验证了封装的双通道收发器功能正常,为后续高速收发器IP的封装提供了方法。原创 2024-06-11 11:13:30 · 1515 阅读 · 2 评论 -
xilinx的Aurora8B10B的IP仿真及上板测试(高速收发器十七)
本文介绍了Xilinx Aurora 8B/10B IP的配置、仿真和上板测试流程。首先在Vivado中配置IP参数,生成示例工程并进行模块仿真,验证数据收发正确性。然后修改工程以适应开发板,包括时钟和复位信号处理,设置回环模式,最后下载到开发板进行调试验证。通过ILA抓取发送和接收数据,确认IP收发数据时序无误。原创 2024-06-10 18:58:25 · 2583 阅读 · 3 评论 -
FPGA实现SM3加密算法(SM3加密算法二)
本文详细讲述了利用FPGA实现SM3加密算法的工程实践。首先分析了sm3_encrypt模块,包括消息填充、扩展和迭代运算三个子模块。消息填充将输入数据扩展到512比特,消息扩展模块生成132个字的扩展数据,迭代模块完成64轮加密运算。还介绍了模块的端口信号、数据存储和转换过程,以及迭代运算中使用的函数和布尔操作。通过仿真和上板测试,验证了设计的准确性和效率,最终得出在Zynq7030ffg676-2上以50MHz频率运行,每2个周期完成一次加密的结论。原创 2024-06-10 09:00:00 · 1506 阅读 · 0 评论 -
Xilinx的Aurora8B10B ip原理讲解(高速收发器十六)
Xilinx的Aurora 8B/10B IP基于Aurora 8B/10B协议,提供两种用户数据接口,支持流量控制,简化了数据传输。该IP内部完成组帧、字节对齐、时钟补偿等功能,用户不需直接操作GTX收发器。存在数据延迟,对延迟敏感的设计可能不适用。原创 2024-06-07 16:17:53 · 3110 阅读 · 0 评论 -
Aurora 8b/10b协议(高速收发器十五)
Aurora 8B/10B是一种高速串行链路层协议,支持点对点数据传输。它通过Padding、组帧、8B/10B编码、串行化等流程发送数据,并支持UFC和NFC流量控制机制,防止数据丢失。协议还包括通道初始化、绑定、验证等过程,以及时钟补偿序列,以适应发送端和接收端的时钟速率差异。Xilinx提供了基于该协议的Aurora 8B/10B IP,简化了用户的数据收发操作。原创 2024-06-07 09:49:33 · 2530 阅读 · 0 评论 -
基于GTX 8B10B编码的自定义PHY上板测试(高速收发器十四)
本文通过光纤回环对自定义PHY协议的GTX IP收发模块进行了上板测试。设计了测试数据生成模块,生成递增数据通过axi_stream接口发送。顶层模块集成了两个收发器通道和测试数据模块,设置了基于眼图扫描得到的加重和幅度参数。上板测试中,通过ILA观测了回环数据,验证了自定义PHY的正确性。测试了不同数据有效字节数的情况,结果表明发送和接收的数据一致,确认了自定义PHY模块的功能正常。测试加深了对GTX IP的理解。原创 2024-06-06 09:00:00 · 1532 阅读 · 8 评论 -
基于GTX 8B10B编码的自定义PHY接收模块(高速收发器十三)
本文详细介绍了自定义PHY协议接收模块的设计,重点解决了GTX IP接收通道的字节对齐问题。通过移位寄存器暂存数据,检测帧头帧尾,生成数据掩码和有效指示信号。设计考虑了起始位和停止位的多种分布情况,确保了对任意字节数据的正确处理。仿真验证了十六种接收格式,确认了模块功能的正确性。最终,该模块将与GTX IP和自定义发送模块综合,形成完整的PHY设计,为下一步的实际验证打下基础。原创 2024-06-03 09:00:00 · 2302 阅读 · 3 评论 -
基于GTX 8B10B编码的自定义PHY发送模块(高速收发器十二)
本文详细介绍了自定义PHY协议发送模块的设计方法,重点在于状态机的实现和FIFO的使用以提高数据发送效率。设计考虑了axi_stream接口与GTX IP小端对齐的差异,并在空闲时发送LFSR码以减少EMI。详细分析了状态机的编码逻辑、FIFO配置和计数器设置,并通过仿真验证了设计的正确性。设计思路清晰,代码实现简洁,为GTX IP的深入应用提供了实用指导。原创 2024-06-02 09:28:51 · 2335 阅读 · 17 评论 -
整理GTX收发器示例工程(高速收发器十一)
本文对Xilinx GTX IP示例工程进行了结构优化,创建了gt_channel模块,整合了复位、MMCM和GTX IP,同时简化了不常用的端口。通过在gt_module模块中多次例化gt_channel,实现了多通道收发器设计,便于共用QPLL时钟。优化后的模块易于复用和扩展,适合自定义PHY设计,提高了代码的可读性和可维护性。原创 2024-05-31 13:01:42 · 2121 阅读 · 9 评论 -
GTX示例工程分析及上板(高速收发器十)
本文分析了Xilinx GTX IP的官方示例工程,包括数据生成、校验和GTX IP处理模块。通过仿真验证了GTX IP的收发功能,然后对工程进行修改以适应上板测试,包括时钟输入和回环设置。强调了接收端数据字对齐的重要性,以确保数据的正确性。最后,说明了如何获取示例工程,并指出GTX IP的灵活性,适合自定义PHY设计。原创 2024-05-30 09:20:34 · 2773 阅读 · 20 评论 -
GTX IP生成及参数详解(高速收发器九)
本文详细介绍了7系列FPGA中GTX收发器的配置过程。首先,通过Transceivers Wizard选择GT收发器并配置QPLL。接着,在Line Rate界面设置线速率和参考时钟,选择收发器位置并启用通道。在Encoding界面配置数据编码、位宽和DRP时钟。讨论了加重、均衡和终端匹配设置,以及PCIE、SATA和PRBS配置,重点在于通道绑定和时钟校正功能。整个配置涉及多个步骤,但通过文章的逐步讲解,读者可以更好地理解每个参数的作用,对于自定义PHY功能至关重要。最终提供了IP配置汇总,展示了时钟配置原创 2024-05-27 11:34:08 · 3859 阅读 · 4 评论