- 博客(94)
- 收藏
- 关注
原创 写给上位机同事:FPGA不是你的调试器
最近自己写了个远程升级上位机,突然发现——原来可以写一个,用来验证上位机代码。跑在127.0.0.1上,发命令,收响应,Wireshark抓包验证。一个终端运行上位机程序,另一个终端运行模拟下位机程序。
2026-07-06 23:17:00
227
原创 基于FPGA实现LVDS_7to1接口显示屏显示
本文介绍了基于Xilinx Ultrascale KU5P FPGA实现的LVDS 7:1接口显示屏驱动方案。
2026-06-28 14:53:47
241
原创 1000BASE-X 的 PCS_PMA 设计原理
本文分析了1000BASE-X的PCS_PMA设计原理,重点比较了1000BASE-T、1000BASE-X和1000BASE-KX的关键特性差异,包括传输介质、编码方式和应用场景等。文章详细解析了1000BASE-X的同步状态机设计,包括7个状态转换流程(LOSS_OF_SYNC→SYNC_ACQUIRED_1),说明了每个状态的进入条件、执行动作和转移条件。通过rx_even标志位控制码组对齐,确保/C//I/同步,最终实现1Gbps全双工通信。该同步机制是1000BASE-X物理层实现的核心技术。
2026-06-12 13:55:12
226
原创 1G&10&25G眼图调试总结
本文总结了10G/25G GTY收发器的眼图调试方法,重点分析了均衡参数调节依据和IBERT眼图评价标准。在配置方面,10G与25G的主要区别在于线速率和QPLL分频系数。调试过程中需根据链路损耗调整TXDIFFCTRL摆幅,并通过TXPRECURSOR/TXPOSTCURSOR补偿高频损耗。IBERT眼图评价以电压codes和时间UI为坐标轴,当眼图蓝色区域大于标准临界值时满足信号完整性要求。最后展示了25G速率下不同光模块的实际调试结果,验证了参数调节对眼图质量的改善效果。调试经验表明,合理设置预加重/
2026-06-06 09:55:55
375
原创 基于QMI8658B的碰撞检测功能设计
本文介绍了基于QMI8658B惯性测量单元的碰撞检测功能设计。QMI8658B是一款6轴IMU芯片,集成了3轴陀螺仪和加速度计,通过I2C接口通信。文章详细说明了芯片的寄存器配置方法,包括复位、ID识别、控制寄存器等关键参数。系统设计包含两个主要模块:qmi8568_init模块负责芯片初始化流程,包括软复位、延时和寄存器配置;collision_detect模块以400Hz频率检测IMU数据,通过计算前后数据差值并与预设阈值比较来判断设备移动。当检测到超过阈值时,模块会输出中断信号。
2026-05-26 10:20:04
243
原创 基于脚本的ModelSim自动化仿真(Xilinx FPGA篇)
本文介绍了基于Tcl脚本实现ModelSim自动化仿真的方法,特别针对Xilinx FPGA开发场景。传统GUI仿真存在重复操作耗时、易遗漏步骤等问题,而脚本仿真可实现一键自动化、提高可复现性。文章详细讲解了Xilinx仿真库的编译配置步骤,包括Vivado环境设置和ModelSim库映射方法。通过计数器模块的实例演示,展示了从RTL设计、Testbench编写到Tcl脚本自动化的完整流程,包括库路径设置、库创建映射、文件编译等关键步骤。该方法特别适合包含Xilinx IP核的设计验证,能显著提升FPGA开
2026-05-23 23:47:42
509
原创 vitis2021.1使用LWIP配置RTL8211F时 Phy setup error
摘要:本文解决了LWIP配置RTL8211F时出现的Phy setup error问题。RTL8211E(商业级)和RTL8211F(工业级)的状态寄存器地址及定义不同,可通过查询PHY_IDENTIFIER_2_REG(0X03)寄存器辨别。修改Vitis安装路径下的xemacpsif_physpeed.c文件,在get_Realtek_phy_speed函数中增加对RTL8211F/RTL8211E的识别逻辑,根据芯片型号重新定义寄存器地址和掩码,从而正确获取PHY速度。修改后代码能自动适配两种芯片版本
2026-05-18 17:31:50
147
1
原创 USB设备导致Windows重启卡顿问题
摘要: Windows系统重启时出现卡顿,原因是USB设备无法正确处理SCSI协议的TEST UNIT READY命令。当使用微软默认驱动时,设备因固件仅支持8字节自定义命令而无法响应31字节CBW格式的命令,导致Windows多次重试(每次30秒)直至超时。解决方案有两种:1)修改设备固件支持SCSI命令响应;2)通过修改设备类标识规避标准驱动。方案二仅需调整配置描述符的一个字节,避免驱动加载和SCSI命令交互,实施更简便。最终采用方案二成功解决问题,同时保持与原有驱动的兼容性。
2026-04-24 17:32:35
383
原创 Vitis工程搭建、编译、固化、调试
本文详细介绍了Vitis工程的搭建与编译流程,以及生成固化文件和JTAG烧录方法。主要内容包括:1)使用Vivado生成的xsa文件创建Vitis工程;2)配置平台和应用程序工程,包括lwip211网络协议栈设置;3)解决编译错误并进行工程优化;4)生成BOOT.bin固化文件;5)通过JTAG烧录程序到Flash的详细步骤。此外还提供了一个自动化烧录脚本,支持一键完成文件校验、设备检测和烧录流程。该文档为Zynq系列SoC开发提供了完整的软件编译与烧录指南,特别适合需要网络功能的嵌入式系统开发。
2026-04-21 15:54:28
872
原创 ZYNQ 程序固化与升级指南
摘要 ZYNQ程序烧录的核心是BOOT.bin文件,包含FSBL(引导程序)、.bit(FPGA配置)和.elf(用户程序)三部分。FSBL由BootROM加载,负责初始化硬件和加载用户程序。启动流程为:上电→BootROM→FSBL→用户程序。开发时需注意:硬件变更需重新生成FSBL,而仅修改应用代码或PL逻辑通常不需重新烧录FSBL。Linux系统启动还需额外内核镜像和文件系统。理解这一分层启动机制是ZYNQ开发的关键。
2026-04-21 15:41:48
686
原创 UDP协议
TCP是"电话"(建立连接、可靠传输),UDP是"明信片"(扔出去不管,可能丢失)。UDP校验和不仅覆盖UDP头部和数据,还覆盖一个。,用于验证数据是否正确到达目标。的传输服务,最小化协议开销。这些特性在某些场景下是。
2026-04-12 15:11:27
510
原创 ICMP协议
ICMP协议是IP协议的辅助协议,主要用于传递网络控制信息和错误报告。它封装在IP数据报中传输,帮助诊断网络问题并提供错误反馈。ICMP报文包含类型、代码和校验和字段,常见类型包括回显请求/应答(ping)、目标不可达、超时等。ICMP错误报文会附加引发错误的IP数据报头部信息,便于定位问题。该协议弥补了IP协议无连接不可靠的缺陷,是网络故障排查的重要工具。
2026-04-12 15:02:28
761
原创 ARP协议
答案就在这个流程里:第一个ping包触发ARP解析,在等待响应的过程中,ping包本身可能已经被发送或丢弃。当封装在以太网帧中时,以太网头部占14字节,尾部有4字节的FCS校验,所以总长度为14+28+4=46字节。这个流程对上层应用是透明的。响应包的目标MAC是请求方的单播地址,操作码为2,所有字段都有明确值。ARP通过在局域网内广播询问、单播响应的方式,动态地将IP地址解析为MAC地址,让通信得以顺利进行。这种双层地址设计是网络分层思想的体现:IP负责跨网络的路由寻址,MAC负责同一链路内的实际传输。
2026-04-07 10:34:51
558
原创 Windows10/11永久关闭自动更新
本文介绍了通过修改注册表实现Windows系统更新延迟100年的方法。具体步骤包括:1)使用Win+R打开注册表编辑器;2)定位到WindowsUpdate相关路径;3)新建名为"FlightSettingsMaxPauseDays"的32位DWORD值;4)将其十进制数值设为36500(100年);5)最后在系统更新设置中选择最长暂停时间。这种方法可以极大延长Windows更新的暂停期限。
2026-03-30 17:03:59
59
原创 多版本Vivado,怎么设置默认运行版本
本文介绍了通过修改注册表设置Vivado默认版本的方法:1)使用Win+R打开注册表编辑器;2)搜索"vivado.project.1"定位相关项;3)在Shell/Open/Command路径下修改数值数据,将其指向目标Vivado版本的vvgl.exe和vivado.bat文件路径。该操作可指定默认启动的Vivado版本,适用于需要切换不同版本Vivado的用户。
2026-03-04 09:33:36
117
原创 不建Vivado工程,查看Device视图
时钟的拓扑结构的质量直接影响到设计后期的时序收敛,在多die芯片中,这一点尤为重要。例如:某个芯片是3个die,设计中的一个时钟要给这3个die使用,那么最好将该时钟分配在中间那个die上,这样跨die次数最小,比较时钟跨die会增加Clock Skew。这样就打开了Vivado,之后选择Window,点击Device即可打开Device视图,点击Package即可打开Package视图。例如:PCIE的位置,高速收发器的位置,因为这些位置直接影响到PCB设计以及FPGA内部的数据流。
2026-03-04 09:30:45
134
原创 Vivado如何生成网表
本文介绍了在Vivado工具中封装网表文件的详细步骤:首先打开工程并进入综合设置,修改层次结构选项为full,添加out_of_context模式参数;然后将目标文件设为顶层,运行综合;完成后可选择生成Verilog或VHDL接口文件;最后根据是否使用Xilinx官方IP,分别使用不同指令生成EDF网表文件。整个过程涵盖了从综合设置到最终网表生成的关键操作流程。
2026-03-04 09:28:22
276
原创 Vivado IP拷贝后出现多个.gen文件夹问题分析与解决
Vivado 2020+版本IP管理采用xci文件与OOC综合结果分离存储机制,导致跨工程IP拷贝时产生多个.gen文件夹问题。
2026-03-03 17:59:44
625
原创 基于FPGA的日志及参数文件存储设计
本文设计了一种基于FPGA的日志及参数存储系统,采用W25Q256JVEIQ Flash芯片和SPI总线(25MHz时钟速率)实现。系统具备日志记录(双32KB缓存设计,支持10年以上存储)、上位机读写擦除、本地信息查询和多设备参数管理功能。
2026-03-03 16:59:04
1394
原创 CAN及CANFD协议
本文参考 ISO11898、BOSCH-CAN Specification 2.0、BOSCH-CAN with Flexible Data-Rate 1.0 标准以及瑞萨科技的CAN入门书。
2025-03-18 23:59:31
2672
原创 SENT接口
本文参考标准《SAE J2716_201604》。SENT(Single Edge Nibble Transmission)协议是SAE协会推出的一种点对点、单向传输方案,被用于车载传感器和ECU之间的数据传输。SENT采样单线连接,无需请求命令即可连续接收数据,是具有更高传输精度和更强抗电磁干扰性的低成本车载通信方案。下图为SENT标准的结构和传输层的关系图,分为物理层、数据链路层和应用层。物理层:物理层定义了信号的电气特性、时钟容差和传输速率。数据链路层:定义了帧结构、消息格式和错误检测方法。
2025-03-18 22:22:42
3233
原创 PSI5接口
本文参考标准《110601_psi5_spec_v20_base》PSI5(Peripheral Sensor Interface)通信是由奥托利夫(Autoliv)、博世(Bosch)、大陆集团(Contimental)协同协会两大飞思卡尔半导体和TRW等共同制定。PSI5是一种开放标准,基于用于外设气囊传感器的现有传感器接口,目前已在数百万个气囊系统中得到验证。传感器数据可通过双线接口同时进行同步和异步传输。PSI5通信协议的技术特性和低实施成本,使它同样适合许多其他汽车传感器应用。
2025-03-18 22:15:11
1808
原创 AK 接口
本文参考KMI25/2产品手册(High performance rotational speed sensor)AK协议是一种轮速传感器(WSS)和电子控制单元(ECU)的标准接口,单线接口,用于数据信号的传输。传感器产生的信号经过信号调制单元处理,产生速度信号和数据信号。I_CCH(High-level supply current),一般取28吗A,用于速度脉冲;I_CCM(MID-level supply current),一般取14mA,用于数据协议位;
2025-03-18 22:01:01
1943
原创 LIN接口
本文参考标准《LIN Specification Package-Revision 2.2A》。LIN是一种基于UART/SCI传输协议的总线标准,作为一种串行通信协议,其具有低成本的特点,常用于传输速度要求不高的场合中。LIN总线的工作模式为单主多从模式,工作时无需仲栽机制;LIN 协议基于UART/SCI接口标准,兼容多数微控制器,具有成本低的特点;为单总线结构,物理层建设成本极低,符合ISO9141国际标准;总线电平分为显性和隐性,其中‘0’为显性电平,“1’为隐性电平;
2025-03-18 00:08:24
1879
原创 RGB与YCbCr转换算法
为了研究RGB模型,我们需要从光线的底层物理组成开始分析。光也属于电磁波,有着同样的特性,电磁波光谱图。在电磁波波段中,400-700nm范围内为可见光波段,即人眼可见的光,大自然的色彩均是由可见光组成的。红、绿、蓝三色被称为三原色。饱和度均为100%的RGB能组合8种颜色,那么当RGB饱和度在0~100%(色彩深度)变化时,就能细分组合出更多的颜色。计算机处理的BMP图片为24bit的位图,即每一通道的颜色可以细分为28。
2024-11-17 17:26:34
1997
原创 AXI4-Full 接口
AXI4-Full 是 AMBA AXI (Advanced eXtensible Interface) 协议的完整版本,它是一种高性能、可扩展的接口协议,用于嵌入式系统中的片上总线。AXI4-Full 设计用于连接多个主设备(如处理器核心)和从设备(如内存控制器和外设接口),以实现高效的数据传输和系统控制。通道(Channels)读地址通道(Read Address Channel):用于传输读事务的地址和控制信息。读数据通道(Read Data Channel):用于从从设备向主设备传输数据。
2024-10-15 13:59:10
2141
2
原创 AXI4-Lite 接口
AXI4-Lite 是 AMBA AXI4 协议的一个简化版本,专为简单的控制寄存器访问和不需要完整 AXI4 协议复杂性的场景而设计。它提供了一个轻量级的接口,适用于不需要高速数据传输或复杂内存管理单元(MMU)操作的设备和外设。简化的信号集:AXI4-Lite 只包含了 AXI4 协议中最基本的信号,以支持简单的读写操作。不支持突发传输:与完整的 AXI4 协议不同,AXI4-Lite 不支持突发(burst)传输,所有事务都是单拍(burst length 为 1)。固定数据宽度。
2024-10-15 13:49:06
2275
LIN接口协议标准 LIN Specification Package-Revision-2.2A
2025-03-18
SDRAM 相关手册及专栏参考资料
2024-10-17
《高速收发器 GTP-GTX-GTH(参考ug482/ug476)》参考资料
2024-10-17
MultiBoot 和 QuickBoot 参考资料
2024-07-29
axi-quad-spi 示例工程
2024-01-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅