THE ARCHIVE / KAIYO NAN

Writing & notes

Start with a question. Follow it through technology, industry and practice.

Articles are written in Chinese. Automatic translation is available on article pages.

L1-A4|为什么热阻测试最终绕不开流体力学:边界条件与散热路径

一句话重点:** `RθJA` 天然包含了流场——同一颗器件在不同姿态、风速和腔体条件下的热阻可以差出数倍,这不是测量误差,是物理。读完你应该能判断:** 为什么台架测试和装机后的热表现会有出入,如何判断 Zth(t) 曲线后段的差异是器件问题还是边界条件问题,以及什么情况必须引入流体分析。

光源器件:从 VCSEL、DFB、EML 到可调谐激光器

专栏:光通信模组技术深度解析 · 第 05 篇任何一条光通信链路,都从一个光子开始。而制造这个光子的,就是光源器件——激光器。光源的选择几乎决定了光模块的全部设计约束:调制速率、传输距离、功耗、成本、封装体积,以及能否在 WDM 系统中精确对准频率栅格。没有合适的光源,再好的接收端和 DSP 都无从

第 06 篇:光探测器与接收链路——从光子到比特

系列导读**:本文是《光通信模组设计》系列第 06 篇。光信号经光纤传输后,需要被高效、低噪声地转换为电信号,再经过放大、均衡、判决等处理,最终恢复出数字比特流。这一过程涉及光探测器(PIN、APD)、跨阻放大器(TIA)和后端 DSP 等关键模块。本文系统梳理接收链路的工作原理与设计要点。

第 08 篇:无源光器件——光路的"管道工程师"

系列导读**:本文是《光通信模组设计》系列第 08 篇。无源光器件不需要外部供电即可工作,却在光通信系统中承担着信号分路、合路、波长选择、方向控制等不可或缺的功能。本文重点介绍 WDM 滤波器、阵列波导光栅、PLC 分路器、光隔离器和环形器的工作原理与应用,并梳理硅光平台上的无源器件集成趋势。

第 10 篇:光学封装与耦合——从材料到可靠性

系列导读**:本文是《光通信模组设计》系列第 10 篇。光学封装是将光芯片、光学元件与电气接口可靠组装在一起的工程学科,横跨精密机械、材料科学、光学工程与微电子制造。它是光通信模组良率和可靠性的核心决定因素。本文系统梳理主动/被动对准工艺、关键材料选择、硅光封装特殊挑战,以及可靠性测试体系。

第11篇:高速光模块 PCB 设计——SI、PI 与 EMI 的三角平衡

系列:光通信模组技术专栏 · 第11篇 | 难度:中高级工程师光模块内的印制电路板面积不大,却需要同时承载高速差分信号(PAM4/NRZ)、多路低噪声模拟电源、数字控制总线,以及对电磁辐射极为敏感的光电器件。当单通道速率进入 400G PAM4 区间,符号速率达到 53 Gbaud,信号奈奎斯特频率

第19篇:数据中心、5G 与长距传输——不同场景下的光模块设计取舍

本文是「光通信模组设计」系列第19篇。光模块没有"万用型"最优解,每种应用场景都有其独特的约束条件,驱动截然不同的设计取舍。本文从数据中心内部互连、5G 前传/中传/回传、长距陆缆传输和海底电缆系统四个典型场景出发,系统梳理各场景的需求特征与对应的技术选择,以 IEEE 802.3、OIF、ITU-

第20篇:如何读懂光模块规格书——从参数到工程判断的实用指南

本文是「光通信模组设计」系列第20篇,也是本专栏的收官之作。一份光模块的 Datasheet(规格书)往往密布着缩写、条件脚注和相互关联的参数表格,初学者很容易迷失。本文从工程实践角度,系统讲解规格书的结构、核心参数的物理含义、关键参数之间的关联逻辑,以及如何结合标准规范(IEEE 802.3、OI

Zynq 实战 02|开发环境搭建:Vivado / Vitis / PetaLinux 2023.2 一次装好不踩坑

从零搭 Zynq-7000 工具链的真实记录:Vivado 2023.2 裁剪安装省 70GB 空间、WebPack 免 License 激活流程、Vitis Unified vs Classic 的取舍、PetaLinux 2023.2 在 Ubuntu 22.04 上 5 个高频依赖坑(dash/bash、locale、libtinfo5 等)、USB-JTAG cable_drivers 安装、Pynq-Z2 上电首次 xsdb 握手验证,以及让工程目录不乱的组织方案。

Zynq 实战 03|Vivado 基础设计流程:从空工程到点亮 LED 全流程手册

不绕弯子,直接上手。本文覆盖 Vivado 2023.2 工程类型的真实取舍(RTL Project vs Tcl 可重现 flow),Pynq-Z2 board file 安装路径与坑点,IP Integrator 搭最小 PS + AXI GPIO 系统的完整步骤,真实 Pynq-Z2 LED 引脚 XDC 约束(R14/P14/N16/M14),Synthesis vs Implementation 的底层差异与 log 解读,以及最重要的 write_project_tcl 重建脚本让工程可被版本控制。

Zynq 实战 04|PS 配置详解:时钟链、DDR timing、MIO 管脚映射全解

从 Vivado Block Design 里双击 ZYNQ7 PS IP 开始,逐 tab 拆解:ARM_PLL 如何把 33.333MHz 变成 666MHz CPU 时钟;Pynq-Z2 上两片 MT41K256M16 的 DDR3-1066 timing 参数怎么填(CL=7, tRCD=7, tRP=7, tRFC=260ns);Bank 500/501 电压差异与 MIO 真实管脚映射;IRQ_F2P 16-bit Concat 的 GIC ID 陷阱;以及 Pynq-Z2 没有官方 Board Preset 时该怎么办。

Zynq 实战 05|AXI 协议深度解析:握手时序、Burst 对齐与 PS-PL 总线全通

不背协议定义,拆开 AXI4 的五大独立通道和 VALID/READY 握手机制,讲清楚 burst alignment、4KB 边界约束、WRAP burst 的真实用途。重点澄清 Zynq-7000 特有坑:PS 端 HP/GP 接口是 AXI3(burst 最大 16 拍),PL 端才是 AXI4(burst 最大 256 拍),AXI Interconnect IP 在中间负责协议转换。包含 Pynq-Z2 AXI 端口地址映射、AXI4-Lite 寄存器读写最小代码,以及 crossbar vs shared 拓扑的选取判断。

Zynq 实战 06|自定义 IP 核开发:从 AXI4-Lite 模板到可跑的 PWM 控制器

用 Vivado 2023.2 的 Create and Package New IP 向导生成 AXI4-Lite Slave 骨架,逐行拆解 Vivado 真实生成的 slv_reg0~3 模板,然后在此基础上实现一个可寄存器读写的 PWM 控制器 IP(周期/占空比/使能/状态 4 个寄存器),完整演示 IP Packager 端口配置、component.xml 路径、Block Design 实例化、Address Editor 地址分配,以及 Vitis 软件端用 Xil_Out32/In32 驱动的全流程。

Zynq 实战 07|硬件平台设计与验证:IP Integrator 全流程,从搭 Block Design 到导出 .xsa

手把手走完 Pynq-Z2 的 Block Design 全流程:ZYNQ7 PS + AXI GPIO + AXI Timer + 自定义 PWM IP 的搭建细节;Run Block Automation 内部干了什么;FCLK 时钟分发的两种方案;Concat IP 合并中断的唯一正确方式(IRQ_F2P 直接连多路会出什么问题);Address Editor 地址段分配逻辑;Validate Design 红色错误真实含义;out-of-context 综合与 global 综合区别;完整 Pynq-Z2 .xdc 约束编写;最终生成 .bit 和 .xsa 给 Vitis。

Zynq 实战 08|PetaLinux 嵌入式 Linux 系统构建:从 XSA 到 BOOT.BIN 的完整踩坑指南

在 Ubuntu 22.04 上用 PetaLinux 2023.2 为 Pynq-Z2(XC7Z020)构建嵌入式 Linux 的完整流程:依赖安装、bash/dash 陷阱、内核配置(UIO_PDRV_GENIRQ / CMA / Xilinx DMA)、system-user.dtsi 设备树定制、rootfs 裁剪(dropbear SSH / python3)、petalinux-build 全流程、BOOT.BIN 打包结构、SD 卡启动与串口第一次登录。

Zynq 实战 09|FSBL 与 U-Boot 启动流程详解:从上电到 Linux 登录提示符的每一步

拆解 Zynq-7000 的四阶段启动链路:BootROM 读 Boot Mode Pins 决定启动源,FSBL 在 OCM 里完成 DDR/PLL/MIO 初始化并通过 PCAP 加载 PL bitstream,U-Boot 接管后加载 DTB 和内核。给出真实可用的 image.bif(含 destination_cpu=a9-0)、完整 U-Boot console 命令序列、以及在 Vitis 里定制 FSBL hooks 的具体改法。板子:Pynq-Z2(XC7Z020)。工具链:Vivado / Vitis 2023.2。

Zynq 实战 10|Linux 设备驱动开发基础:从字符设备骨架到 PWM IP 驱动上板

不讲'驱动框架很灵活'这种废话。本篇从 bus/device/driver 三角出发,写一个能编译能跑的字符设备驱动骨架,再对接第 06 篇的 PWM IP——probe() 里 platform_get_resource + ioremap,ioctl 设置周期/占空比/使能,remove() 正确释放;附完整 .bb recipe 把模块集成进 PetaLinux rootfs;覆盖 insmod/rmmod/dmesg 调试流、udev 权限规则、printk 等级。代码基于 PetaLinux 2023.2 / Linux 6.1,全部能编译。

Zynq 实战 13|VDMA + VTC + HDMI:搭一条 1080p 视频流水线

在 Pynq-Z2 上从零搭建 1080p60 视频流水线:Vivado Block Design 里串接 Test Pattern Generator、AXI VDMA、VTC 和 HDMI Tx 子系统;配置 VTC 时序参数(H total 2200 / V total 1125 / pixel clock 148.5 MHz);搞清楚 VDMA Free-running 和 Frame-locked 两种模式;用裸机或 Linux 控制 VDMA 寄存器;分析带宽核算(373 MB/s);以及撕裂、画面偏移、Genlock 三大常见故障的排查方法。

Zynq 实战 14|AXI-Stream 实战:高速 ADC 采集与流式 DSP

从协议握手到完整系统:详解 AXI4-Stream 五条信号线的时序,自己写一个 sin 波 Stream Master IP 模拟 ADC 输出(可替换 LTC2308/AD9226),经 FIFO Generator 缓冲后用 AXI DMA S2MM 写进 DDR;分析 100 Msps × 16-bit = 200 MB/s 的可行性和 HP 端口必要性;实现 TLAST 切包逻辑;背压测试;在流上串 FIR 滤波器 IP(Xilinx FIR Compiler)做实时 DSP;实测吞吐和丢样统计。

Zynq 实战 15|Vitis HLS:用 C 写硬件 IP 的正确姿势

以一个 5 阶 FIR 低通滤波器为主线,完整走一遍 Vitis HLS 2023.2 工作流:C 仿真 → 综合 → C/RTL 联合仿真 → 导出 IP → 集成进 Vivado Block Design。覆盖 #pragma HLS PIPELINE / ARRAY_PARTITION / INTERFACE axis 的实际用法,分析综合报告里的 II=1、Latency、LUT/FF/DSP 数字,对比手写 RTL 的资源差距,以及 HLS 真实局限:什么任务用 HLS 划算,什么任务应该直接写 Verilog。

Zynq 实战 16|PYNQ 框架:Jupyter 里 Python 控 PL

PYNQ v3.0 完整上手指南:从 SD 卡烧录到 Jupyter Notebook 里用 3 行 Python 加载 Overlay,控制第 06 篇 PWM IP 和第 12 篇 AXI DMA IP。详解 Overlay/MMIO/AxiGPIO/allocate/pynq.lib.dma API,给出一个完整的 LED 控制 + PWM 状态读取 Notebook,以及自己从 Vivado 工程生成 PYNQ Overlay 的完整步骤(导出 .bit + 复制 .hwh)。同时给出 PYNQ vs 原生 PetaLinux 的取舍判断——不是所有项目都该用 PYNQ。

Zynq 实战 17|lwIP + 千兆以太网:一个能用的 HTTP Server

Pynq-Z2 的千兆 PHY(RTL8211E)接到 PS GEM0,在 Vitis 裸机环境下用 lwIP 2.1.x 的 RAW API 实现一个 HTTP Server,端口 8080,返回板子实时状态 JSON(温度/PWM 占空比/运行时间)。覆盖 PHY reset 时序、MIO 配置、GEM0 DMA buffer 配置、RAW vs Sequential API 选择、实测千兆吞吐(940 Mbps RX/880 Mbps TX),以及 Linux 侧对比方案(Python http.server / C socket)和常见踩坑。

Zynq 实战 18|OpenAMP 多核:Linux + 裸机同时跑(双核非对称)

Zynq-7000 的两颗 Cortex-A9 核不必都跑 Linux——本篇把 CPU0 留给 Linux,CPU1 跑 FreeRTOS 裸机实时任务,用 OpenAMP / RPMsg 在两核之间传消息。覆盖内存划分(三段式 0-512-768-1024MB)、设备树 reserved-memory 写法、remoteproc 加载裸机 elf、RPMsg echo 通信例程、SGI 跨核中断,以及消息延迟 < 4 µs 的实测数据。适合需要同时跑 Linux 网络栈 + 实时电机控制 / CAN 协议栈的场景。

Zynq 实战 19|安全启动:FSBL 加密 + RSA 签名 + eFuse 编程

Zynq-7000 的 BootROM 内置 AES-256 解密引擎和 RSA-2048 签名验证,本篇从威胁模型出发,用 Bootgen 生成密钥对、配置 .bif 文件对 FSBL / bitstream / U-Boot 加密 + 签名,再把 PPK hash 一次性烧进 eFuse 锁定信任根。覆盖完整 secure boot 链验证流程、bbram 暂存测试方法、PPK hash 算错救砖、JTAG 锁定后的处置预案,以及产品化密钥管理和 HSM 生产线烧录建议。

Zynq 实战 20|综合实战 Capstone:音频采集 → 实时 FFT → Web 频谱仪

系列收官篇。用 Pynq-Z2 板载 ADAU1761 音频 codec 采集麦克风信号,经 PL 自定义 I2S RX → Xilinx FFT v9.1(1024 点定点 16-bit)→ AXI DMA → DDR,Linux 用户态 mmap 读取频谱数据,通过 WebSocket 推到浏览器 Canvas,实现端到端延迟 < 30 ms 的实时 Web 频谱仪。整合前 19 篇:PL 自定义 IP、AXI DMA、Linux 驱动、以太网通信、安全启动。文末给出系列回顾表和后续学习路线(UltraScale+ MPSoC、Versal、Vitis AI)。

Zynq 实战 22|系统可靠性设计:看门狗、ECC 内存保护与故障恢复

面向工业控制和汽车电子场景,在 Pynq-Z2 上实现多级可靠性机制:XScuWdt 多级看门狗(任务级+系统级)、BRAM ECC 内存保护(含 Pynq-Z2 DDR 不支持 ECC 的原因分析)、PL 侧 TMR 三模冗余设计、以及 watchdog 触发后热重启到安全状态的分级恢复策略。含完整可编译 C 代码、真实 SEU 概率数据和 3 处高频踩坑。

Zynq 实战 23|混合关键性系统:TrustZone 隔离 + FreeRTOS + Linux 并存

在 Pynq-Z2 单片 SoC 上同时运行 ASIL-D 级实时任务(FreeRTOS on CPU1)和通用 Linux(CPU0),通过 ARM TrustZone TZPC/TZASC 实现内存硬隔离、OP-TEE 安全世界部署、FSBL 唤醒 CPU1 的完整流程。FreeRTOS 任务最坏情况响应时间 < 10µs,与 Linux 完全隔离,不共享调度器。含完整可编译代码、TrustZone 寄存器配置、3 处高频踩坑。

Zynq 实战 27|项目实战二:机器视觉平台(摄像头采集 + FPGA 预处理 + OpenCV)

用 Pynq-Z2 + OV5640(MIPI CSI-2)或 USB UVC 摄像头搭建完整机器视觉平台:PL 实现双线性缩放 IP(1920→640,Verilog 完整代码),V4L2 驱动设备树配置,PetaLinux rootfs 编译 OpenCV 4.x,OpenCV DNN 跑 YOLOv3-tiny 目标检测(ARM 裸跑 ~500ms/frame,配合第 21 篇 DPU 降至 ~25ms/frame)。含 VDMA frame buffer 对齐、OV5640 MIPI 初始化、OpenCV 裁剪编译三处避坑。

Zynq 实战 28|项目实战三:工业通信网关(Modbus + EtherCAT + MQTT 边缘计算)

用 Pynq-Z2 构建工业通信网关:南北向 MQTT(mosquitto + AWS IoT / 阿里云,QoS 2 + TLS);东西向 Modbus RTU/TCP(libmodbus,RS-485 收发器电路)+ EtherCAT(SOEM 移植,1ms 循环时间);PL 实现 IEEE 1588 硬件时间戳 IP;边缘计算 Z-score 异常检测。含 EtherCAT 独占网卡、MQTT TLS 编译、RS-485 终端电阻三处避坑。

Zynq 实战 29|系列收官:30 章知识体系回顾 + 常见问题排查 + 进阶路线

《Zynq FPGA 嵌入式系统设计实战》系列完结篇:用一张大表回顾全 29 篇知识体系(硬件基础 / Linux 系统 / 驱动开发 / 高级特性 / 工程化与应用五层架构),五大常见问题排查指南(Bitstream 下载失败 / AXI 总线超时 / PetaLinux 启动卡住 / DMA 数据乱序 / 时序违例),PS/PL 性能优化技巧,以及从 Zynq-7000 到 UltraScale+ MPSoC 再到 Versal ACAP 的完整进阶路线图。