嵌入式开发
逻辑开发与软件开发,皆为高度专业化的技术领域,能在两者之间自由穿梭、解决复杂问题的工程师,凤毛麟角。
然而,“精通”本身并无边界。在实际工程中,无论是算法实现、高速接口,还是雷达系统、电机控制,每一个方向都深邃如海,足以让人终身钻研。
真正重要的,从来不是“掌握一切”,而是在关键问题域中,构建起可闭环的解决路径,持续迭代,稳步积累。
因为:
- 再庞大的系统,也由一个个“可掌握的知识点”组成;
- 再高的门槛,也能被“目标明确+持续积累”所跨越。
“精通”或许遥远,但问题所需的知识是清晰、有限、可攻克的。
一旦识别了问题域,路径便不再模糊;
只要开始积累,掌控力终将悄然生长。
PL
1. 数字电路与 Verilog 编程基础(难度:0-40)
数字电路基础
- 理解 与、或、非 逻辑门的工作原理和应用。
- 学习 组合逻辑:如加法器、乘法器、选择器、译码器。
- 设计 半加器 和 全加器。
- 学习 时钟分频器,生成不同频率的时钟信号。
- 设计 4 位加法器 和 8 位加法器,进行二进制加法。
- 学习 时序逻辑:触发器(如 D 型、T 型、JK 型)。
- 学习如何设计 二进制乘法器。
- 理解 时钟管理 和 复位管理,进行时序电路设计。
- 学习 多路复用器(MUX) 和 解码器。
- 设计 二进制计数器,并优化时序。
- 设计 数字滤波器,如低通、高通滤波器。
- 设计 去抖电路,消除按钮输入的噪音。
- 学习 有限状态机(FSM),设计 Moore 状态机 和 Mealy 状态机。
- 设计 时序控制模块,如时钟分频器、计数器等。
- 设计 多位加法器,如 8 位加法器。
- 学习 数字信号处理(DSP):滤波器、快速傅里叶变换(FFT)等。
- 理解 组合逻辑 和 时序逻辑 的综合设计方法。
- 学习 同步时序电路,如 D 型触发器。
- 设计 分频器,将高频时钟转换为低频时钟。
- 理解 时钟域跨越,解决时钟同步问题。
Verilog 编程基础
- 学习 Verilog 语法:模块定义、数据类型(
reg
、wire
)、常用运算符。 - 编写 加法器、乘法器、选择器 模块。
- 学习 Verilog 时序控制,编写 同步 和 异步电路。
- 编写 Testbench,进行模块验证。
- 使用 Vivado 或 ModelSim 进行 功能仿真。
- 编写 状态机 模块,实现 Moore 和 Mealy 状态机。
- 学习 时序仿真,进行时序分析和时序优化。
- 优化 Verilog 设计,进行 时序优化 和 资源优化。
- 编写 时序电路,如 D 型触发器、JK 触发器。
- 理解 多任务编程,设计 并行处理 电路。
- 使用 Verilog 实现 数据缓存 和 FIFO 队列。
- 学习如何优化设计的 时序性能。
- 使用 Verilog 编写 数字滤波器,如低通滤波器。
- 学习如何使用 Verilog 实现 硬件加速模块。
- 学习 Verilog 的模块化设计,提高复用性。
- 使用 Vivado 进行 硬件综合,并生成比对。
- 学习 时钟同步,解决时钟域跨越问题。
- 编写 多模块设计,进行模块化硬件设计。
- 使用 Verilog 实现 PWM 控制器。
- 学习 测试台编写,进行时序仿真。
2. FPGA 设计与综合(难度:40-70)
FPGA 基础设计
- 理解 FPGA 架构:LUT、触发器、时钟、I/O。
- 使用 Vivado 创建、综合和实现 FPGA 项目。
- 学习如何配置 FPGA I/O,并进行 外设连接。
- 设计 LED 控制器,在 FPGA 上控制 LED 点亮。
- 设计 按键消抖 电路,处理按钮信号。
- 学习 FIFO 队列 设计,进行数据缓存管理。
- 设计 双端口 RAM,进行数据存储与传输。
- 学习 AXI 总线协议,进行 PS 和 PL 部分的数据交换。
- 使用 Vivado 进行 硬件调试,分析信号和时序。
- 设计 PWM 控制器,控制 LED 亮度 或 电机速度。
- 学习 I2C 协议,与外设进行通信。
- 设计 串口通信(UART),与外设进行数据交换。
- 使用 Verilog 实现 时钟分频器,控制时钟频率。
- 实现 数据缓存机制,使用 FIFO 和 RAM。
- 设计 数字时钟,显示 当前时间。
- 学习 FPGA 时序优化,减少逻辑延迟和功耗。
- 学习如何进行 时序分析 和 资源分配。
- 使用 Vivado 进行 时序仿真,确保设计稳定。
- 实现 Zynq SoC 中的硬件加速模块,如加密运算。
- 配置 FPGA I/O,连接外设,进行 数据传输。
FPGA 高级设计与优化
- 学习 Vivado HLS(高层次综合),将 C/C++ 代码转化为硬件。
- 使用 AXI 总线协议,实现 PS 和 PL 部分 的协同工作。
- 深入学习 AXI-Lite 协议,用于 低带宽控制。
- 学习 VIO(Virtual Input Output),进行硬件状态监控。
- 使用 ILA(Integrated Logic Analyzer),调试和分析 FPGA 设计。
- 优化 硬件加速器,减少功耗和提高性能。
- 实现 深度学习加速器,如 CNN 加速器。
- 设计 硬件加速模块,如 AES 加密、图像处理加速。
- 优化 数据流管理,提高数据传输效率。
- 设计 多核硬件系统,进行任务并行化。
3. Zynq SoC 与 PetaLinux(难度:50-80)
Zynq SoC 基础
- 学习 Zynq SoC 架构,理解 ARM Cortex-A9 和 FPGA(PL) 部分的协同工作。
- 配置 Zynq SoC PS 和 PL 部分,进行协同工作。
- 配置 AXI 总线协议,在 PS 和 PL 部分 之间传输数据。
- 使用 zynq开发板,搭建 Zynq SoC 开发环境。
- 在 Zynq SoC 上实现 硬件加速模块,如加密运算、图像处理。
- 配置 Zynq SoC 中的硬件外设(如 GPIO、SPI、I2C)。
- 使用 Vivado 配置 AXI 总线,确保 PS 与 PL 部分的协同工作。
- 学习 FreeRTOS,实现 实时任务调度。
- 配置 Zynq SoC 内核,加载和运行 Linux 应用。
- 配置 设备树(Device Tree),确保硬件正确识别。
PetaLinux 系统与外设控制
- 使用 PetaLinux 构建 嵌入式 Linux 系统,并与 Zynq SoC 配合工作。
- 配置 I2C 驱动,与 外设 进行通信。
- 配置 SPI 驱动,与 外设 进行通信
- 使用 UART 驱动,实现串行通信。
- 配置 USB 驱动,与外设进行数据交换。
- 学习如何使用 FreeRTOS 管理 实时任务调度。
- 使用 PetaLinux 调试系统,分析性能瓶颈。
- 学习如何优化 内存管理 和 带宽控制。
- 配置 Zynq SoC 的 I/O 管理,进行外设连接。
- 配置 Zynq SoC 的中断管理,处理硬件中断。
4. 高级硬件设计与优化(难度:70-90)
硬件加速设计
- 设计 硬件加速模块,如 AES 加密、图像处理加速、FFT 加速 等。
- 使用 Vivado HLS 工具,将 C/C++ 代码转化为硬件。
- 优化 硬件加速模块,减少延迟和功耗。
- 设计 AI 硬件加速器,加速 深度学习推理。
- 优化 AI 加速模块,减少内存使用并提高吞吐量。
- 使用 FPGA 实现 机器学习加速,并进行 性能评估。
- 深入学习 AI 硬件加速,设计 自定义硬件加速器。
时序与资源管理
- 使用 AXI 总线,实现 PS 和 PL 部分 之间的高效数据传输。
- 优化 内存分配,提升 带宽 和 响应速度。
- 优化 DMA 控制器,提高 数据吞吐量 和 内存带宽。
- 学习 Zynq SoC 的多核调度器,提高 并行计算效率。
- 配置 Zynq SoC 多任务调度,进行实时任务分配。
- 学习如何 优化多核计算,提高 计算效率。
5. 高级系统设计与 AI 硬件加速(难度:80-100)
AI 加速设计
- 设计 卷积神经网络(CNN)加速器,实现 深度学习推理加速。
- 设计 AI 硬件加速模块,提高 推理性能 和 吞吐量。
- 在 Zynq SoC 上实现 AI 推理加速,进行 硬件加速 和 并行计算。
- 使用 FPGA 实现 机器学习加速,并进行 性能评估。
- 深入学习 AI 硬件加速,设计 自定义硬件加速器。
系统级设计与集成
- 设计并集成 多核系统,提高计算效率。
- 优化 异构计算平台,结合 CPU、GPU 和 FPGA。
- 集成 多个 FPGA、CPU 和 GPU 设计,进行大规模并行计算。
- 设计 量子计算加速器,探索 量子计算硬件 与传统计算的结合。
- 优化 多核处理 和 数据流管理,提升 大规模计算任务的性能。
- 学习如何在 Zynq SoC 上实现 多核协同工作。
多核与任务调度
- 设计 多核调度系统,提高 任务调度效率。
- 学习 Zynq SoC 多核调度器,优化任务管理。
- 在 Zynq SoC 上实现 负载均衡,确保任务分配均匀。
- 学习 多任务调度算法,优化 实时任务响应时间。
- 设计 高效的内存共享机制,保证数据一致性和高效传输。
6. 系统调试与性能优化(难度:80-100)
调试工具与技术
- 使用 Xilinx SDK 进行 硬件调试 和 系统集成验证。
- 使用 JTAG 调试器 进行 硬件调试,确保设计正常工作。
- 使用 OpenOCD 进行 硬件调试,验证系统功能。
- 使用 ILA 进行实时硬件信号监控。
- 使用 VIO 监控 FPGA 模块状态,进行 状态检查。
性能优化
- 使用 硬件性能分析工具,对系统进行 性能测试 和 优化。
- 优化 内存带宽 和 数据吞吐量,提升系统性能。
- 优化 功耗管理,减少硬件设计的功耗。
- 优化 FPGA 设计时序,确保设计稳定运行。
- 优化 Zynq SoC 系统性能,提高计算效率。
7. 系统集成与硬件加速(难度:90-100)
- 设计并实现 多核异构计算平台,提高 计算任务并行化。
- 在 Zynq SoC 上实现 AI 硬件加速器,加速 深度学习推理。
- 设计 大规模并行计算平台,实现 多处理器并行计算。
- 优化 AI 加速,实现低延迟和高吞吐量的 深度学习加速器。
- 集成 多个计算单元(CPU、GPU、FPGA),设计 异构计算系统。
8. 高级 AI 硬件加速与量子计算(难度:90-100)
AI 硬件加速设计
- 设计 AI 推理加速器,如 CNN 或 RNN 加速器。
- 使用 FPGA 提供 深度学习加速,提高推理速度。
- 优化 AI 加速器 的 吞吐量 和 延迟。
- 设计 加密算法硬件加速器,如 AES 和 RSA 加速器。
- 学习如何使用 Zynq SoC 加速 深度学习推理。
- 设计 量子计算加速器,用于优化计算任务。
多核与异构计算
- 实现 多核处理系统,在 Zynq SoC 上优化任务调度。
- 学习如何进行 多任务并行化,提升 计算效率。
- 集成 多个 FPGA 和 CPU,进行大规模计算。
- 学习 分布式计算,设计多个 FPGA 计算节点。
- 优化 任务调度,提高 实时响应时间。
- 在 Zynq SoC 上实现 负载均衡,优化任务分配。
PS
一、PS 硬件架构理解(难度:40-60)
- Zynq 架构总体认识
- PS 与 PL 的连接结构(AXI-GP、HP、ACP)
- PS 中的主要模块(DDR、I/O Mux、SD、USB、Ethernet、GPIO、SPI、I2C、CAN 等)
- Cortex-A9 架构
- ARMv7-A 指令集基础
- MMU、TLB 和 Cache 机制
- TrustZone 安全架构基本了解(可选)
- 时钟与复位管理
- PS 时钟结构(CPU_CLK, DDR_CLK, FCLK)
- PS_RST_CTL 寄存器理解
- 如何分配 FCLK 给 PL 子系统使用
- PS 外设控制器
- UART 控制器(16550 兼容)
- I2C 控制器
- SPI 控制器
- SD 卡控制器(SDIO)
- USB OTG 控制器
- Ethernet MAC(GMAC)控制器
- GPIO 控制器(EMIO)
二、PS 裸机编程与 BSP(难度:50-70)
- 裸机开发环境搭建
- 使用 Xilinx SDK(或 Vitis)生成 FSBL 和裸机工程
- 初始化 DDR、PL 配置、I/O
- 常见裸机接口驱动
- UART 打印与接收(XUartPs)
- GPIO 控制(XGpioPs)
- I2C 通信(XIicPs)
- SPI 通信(XSpiPs 或 XSpi)
- 中断系统管理
- GIC(Generic Interrupt Controller)架构
- 注册中断服务程序(ISR)
- 使用
XScuGic
控制器管理中断
- Timer 及定时调度
- 使用 TTC(Triple Timer Counter)
- 使用 Watchdog Timer(WDT)
- 实现定时器中断 + LED 闪烁
- DMA 控制器
- 使用 Xilinx PS-DMA 控制器传输内存数据(Mem2Mem)
- 简单 DMA 和中断 DMA 实例
三、PS + Linux 应用开发(难度:60-80)
- Linux 启动流程理解
- FSBL -> U-Boot -> Device Tree -> Kernel -> RootFS
- U-Boot 命令行操作、bootargs 设置、自动启动配置
- 设备树理解与编写
- 修改设备树使能 UART、SPI、I2C、GPIO 等设备
- 添加用户自定义节点
- 用户空间 C 程序开发
- 使用 mmap 访问
/dev/mem
与 PL 寄存器交互 - 使用
ioctl
控制驱动程序 - 使用
/dev/uio
读取硬件中断状态
- 使用 mmap 访问
- 串口通信
- 使用 termios 编写串口通信程序
- 设置波特率、校验、阻塞/非阻塞模式
- 编写 PC ↔ Zynq 的串口通信交互程序
- 驱动调试
- 查看
/sys/class
,/proc/interrupts
,/dev
- 使用
dmesg
,lsmod
,insmod
,modprobe
,rmmod
等工具调试驱动
- 查看
四、PS 与 PL 通信机制(难度:70-90)
- AXI 接口理解
- AXI-GP(General Purpose)PS master → PL
- AXI-HP(High Performance)PL master → PS DDR
- AXI-ACP(Accelerator Coherency Port)缓存一致性通道
- 用户空间与 PL 寄存器交互
- 使用 mmap
/dev/mem
映射 AXI 寄存器 - 使用
/dev/uio
实现 PL 模块中断
- 使用 mmap
- DMA 数据传输(Zynq DMA/AXI DMA)
- 配置 AXI DMA 并在用户空间控制
- 通过 mmap 和 DMA 缓冲区交互数据
- 利用 Scatter-Gather 方式优化大数据块传输
五、PS 性能与调度控制(80-90)
- FreeRTOS on PS
- 替代 Linux,使用实时调度器
- FreeRTOS 下控制串口、GPIO、SPI、Timer
- Cache 与 MMU 调优
- 配置和使用 L1/L2 Cache(尤其是裸机程序中)
- 禁用 cache 的访问控制方式(可调)
- 性能测试与优化
- 使用
perf
,top
,htop
查看资源使用 - 编写多线程程序测试多核负载均衡
- 使用
- 多核控制与调度(Zynq 双核)
- 控制 CPU0、CPU1 启动与任务分配
- 编写多核协同裸机程序
- 在 Linux 下使用 CPU Affinity 控制核绑定
六、常用调试与工具链支持(60-80)
- JTAG 调试与 OpenOCD
- 使用 JTAG 加载裸机程序调试中断与外设
- 使用 OpenOCD + GDB 调试 ARM 应用
- 串口调试工具
- 使用 minicom / picocom / gtkterm / serial studio
- 配合调试输出日志与日志重定向(syslog)
- SD 卡与 eMMC 操作
- 分区/格式化/挂载设备
- 在裸机中直接使用
XSdPs
驱动读写 SD
- 网络与以太网控制器
- Linux 下配置
eth0
、MAC 地址、静态 IP - 裸机下通过
XEmacPs
实现 UDP 通信
- Linux 下配置
LINUX应用
一、C/C++ 语言基础与构建系统(40~60)
🧠 1. C 语言基础
- 数据类型、指针与数组、结构体与联合
- 函数与作用域、函数指针
- 内存管理(malloc/free)
🧠 2. C++ 基础
- 类、对象、继承、虚函数、模板类
- STL:vector、map、string、queue 等
- RAII 原则,智能指针(shared_ptr、unique_ptr)
🧠 3. 编译与构建
- 编译流程(预处理/编译/汇编/链接)
- Makefile 编写
- CMake 使用与跨平台构建
- 静态库(.a)/动态库(.so)生成与调用
二、Linux 系统编程(用户态)(50~80)
🗂️ 4. 文件与目录操作
- open/read/write/lseek
- stat/access/opendir/readdir
- chmod/chown/umask
- inotify 实时监测文件变更
⚙️ 5. 进程管理
- fork/exec/wait/waitpid
- system()/popen()
- 环境变量 getenv/setenv
- 守护进程 daemonize
🧵 6. 多线程与同步
- pthread_create/join
- 互斥锁 mutex、条件变量、读写锁
- sem_open/sem_post/sem_wait 信号量
- barrier、pthread_cancel
🕰️ 7. 定时与信号
- alarm/setitimer/nanosleep
- signal/sigaction
- timerfd 定时器文件描述符
- 实现定时任务框架
🧩 8. IPC(进程间通信)
- 匿名管道/命名管道(pipe/fifo)
- 消息队列(System V msg)
- 共享内存(shmget/shmat)
- POSIX 共享内存(shm_open)
- 信号量机制(semget/semop)
三、网络与通信开发(60~80)
🌐 9. Socket 网络通信
- socket/bind/listen/accept/connect/send/recv
- TCP vs UDP 通信机制
- sockaddr、inet_pton、网络字节序
🔁 10. 网络并发模型
- select/poll/epoll 原理与使用
- 多线程 + epoll 模型实现聊天室/终端系统
📦 11. 网络高级通信
- Unix 域 socket(AF_UNIX)
- 非阻塞 I/O、阻塞队列、事件驱动模型
- 心跳机制、重连策略、连接池封装
四、Linux 硬件交互与驱动接口(60~85)
📁 12. 与设备文件通信
/dev/xxx
字符设备访问- open/ioctl/read/write 控制外设
🧠 13. UIO 驱动用户空间中断
/dev/uio
中断处理机制- mmap() 映射 PL 寄存器
- UIO 实现与自定义中断服务程序
🧩 14. GPIO/I2C/SPI 控制
- 操作
/sys/class/gpio
实现 IO 控制 /dev/i2c-*
,/dev/spidev*
通信- termios 控制 UART 收发
🛠️ 15. PL 寄存器交互(AXI 接口)
- 通过
/dev/mem
+ mmap 访问 PL 自定义模块寄存器 - 用户态访问 AXI DMA
- 使用中断通知机制实现高效通信
五、系统服务与后台管理(65~85)
🧭 16. 守护进程开发
- 双 fork 技术、关闭标准流
- 通过 PID 文件管理进程唯一性
🧾 17. 系统日志与日志管理
- syslog()/logger 工具使用
- 使用 rsyslog 管理日志分类与重定向
- 日志轮转(logrotate)
📜 18. 系统服务集成
- 编写 Systemd 服务文件
- systemctl 管理服务启动/重启/守护
- 服务依赖与日志审计管理
六、调试优化与工具链(60~85)
🧪 19. 调试技术
- GDB 调试:断点、观察点、回溯栈
- core dump 使用与分析
- strace/ltrace 跟踪系统调用
📉 20. 性能分析
- top/htop/free/vmstat/iostat
- perf 分析热点函数
- valgrind 检测内存泄漏
- gprof 分析程序瓶颈
七、安全机制与权限管理(60~80)
🔐 21. 权限管理
- 文件权限、用户权限管理(chown, chmod, sudo)
- 设置 setuid 程序、提权与降权
🚫 22. 安全机制
- ptrace 防护、进程隔离
- chroot/jail 限制运行环境
- watchdog 守护机制防崩溃
八、嵌入式与交叉编译实践(70~90)
🛠️ 23. 交叉编译工具链
- 配置 arm-linux-gnueabihf-gcc / aarch64-gcc
- 使用 CMake + Toolchain.cmake 跨平台构建
- 在 Xilinx SDK/Vitis 中编写并部署 C 应用
📦 24. RootFS 相关操作
- 制作自定义 rootfs(busybox/rootfs.ext4)
- 添加动态库依赖(ldd, readelf, chrpath)
- Strip 可执行文件减少空间
🔌 25. 与硬件系统集成
- C 应用调用 FPGA 控制模块(IO 映射)
- 控制 DMA/Camera/Audio 模块
- 系统监测软件 + 数据展示终端
九. 实战项目
专业英语
- Zynq SoC:Xilinx 公司推出的可编程片上系统,集成 ARM 处理器(PS)和 FPGA(PL)。
- PS(Processing System):Zynq 中的处理系统,包含 ARM Cortex-A 系列处理器等。
- PL(Programmable Logic):Zynq 中的可编程逻辑部分,即 FPGA 逻辑资源。
- Cortex-A9:Zynq-7000 系列 PS 中常用的 ARM 处理器内核。
- Cortex-A53:部分 Zynq UltraScale + 系列 PS 采用的 ARM 处理器内核。
- FPGA(Field-Programmable Gate Array):现场可编程门阵列,PL 部分的核心。
- LUT(Look-Up Table):查找表,FPGA 中的基本逻辑单元。
- FF(Flip-Flop):触发器,FPGA 中用于存储数据的基本单元。
- BRAM(Block RAM):块 RAM,FPGA 中的嵌入式存储器资源。
- DSP48:FPGA 中的数字信号处理单元,用于高速数学运算。
- AXI(Advanced eXtensible Interface):ARM 推出的片上总线协议,Zynq 中 PS 与 PL 通信的主要接口。
- AXI4:AXI 协议的一个版本,面向高性能地址映射通信。
- AXI4-Lite:AXI4 的简化版本,适用于低带宽、简单控制的通信。
- AXI4-Stream:AXI 协议中面向流数据传输的版本,无地址线。
- GPIO(General-Purpose Input/Output):通用输入输出接口,用于外设控制。
- UART(Universal Asynchronous Receiver/Transmitter):通用异步收发传输器,用于串行通信。
- SPI(Serial Peripheral Interface):串行外设接口,一种同步串行通信协议。
- I2C(Inter-Integrated Circuit):集成电路总线,一种两线制串行通信协议。
- DDR(Double Data Rate):双倍数据速率同步动态随机存储器,Zynq 常用的外部存储器。
- DMA(Direct Memory Access):直接内存访问,无需 CPU 干预的数据传输方式。
- FIFO(First In First Out):先进先出存储器,用于数据缓冲。
- JTAG(Joint Test Action Group):联合测试行动组,用于芯片调试和编程的接口标准。
- SDK(Software Development Kit):Xilinx 的软件开发套件,用于 Zynq PS 部分的程序开发。
- Vivado:Xilinx 的 FPGA 设计工具,用于 Zynq PL 部分的逻辑设计、综合、实现等。
- Vitis:Xilinx 新一代统一软件开发平台,替代 SDK,支持嵌入式软件和加速应用开发。
- HLS(High-Level Synthesis):高层次综合,将 C/C++ 等高级语言转换为 FPGA 可执行的硬件逻辑。
- IP(Intellectual Property):知识产权核,预设计的可复用电路模块(如 UART、DMA 控制器等)。
- PL fabric:PL 部分的逻辑结构,包括 LUT、FF、BRAM 等资源的整体。
- Clock Constraint:时钟约束,用于指定 FPGA 设计中的时钟频率、相位等信息,确保时序收敛。
- Timing Closure:时序收敛,指 FPGA 设计满足所有时序约束的状态。
- Bitstream:比特流文件,用于配置 FPGA 逻辑的二进制文件。
- FSBL(First Stage Boot Loader):第一阶段引导加载程序,负责 Zynq 的初始化和引导。
- U-Boot:通用引导程序,用于加载操作系统内核。
- Linux Kernel:Linux 操作系统的内核,Zynq PS 部分常运行的操作系统核心。
- Device Tree:设备树,描述硬件信息的数据结构,用于 Linux 内核与硬件的适配。
- Bare-Metal:裸机,指不运行操作系统的嵌入式程序开发模式。
- AXI GPIO:基于 AXI 总线的通用输入输出 IP 核。
- AXI DMA:基于 AXI 总线的直接内存访问 IP 核。
- MIO(Multiplexed I/O):PS 部分的复用 I/O 引脚,可配置为多种外设接口。
- EMIO(Extended MIO):扩展 MIO,将 PL 的引脚连接到 PS,扩展 PS 的 I/O 能力。
- PLL(Phase-Locked Loop):锁相环,用于生成稳定的时钟信号,调节频率和相位。
- MMU(Memory Management Unit):内存管理单元,用于虚拟内存管理和内存保护。
- Cache:高速缓存,位于 CPU 与主存之间,提高数据访问速度。
- OCM(On-Chip Memory):片上存储器,Zynq PS 内部的高速 RAM。
- FMC(FPGA Mezzanine Card):FPGA 夹层卡标准,用于扩展 Zynq 开发板的外设。
- LVDS(Low-Voltage Differential Signaling):低压差分信号,一种高速数据传输技术。
- SERDES(Serializer/Deserializer):串并 / 并串转换器,用于高速串行数据传输。
- JTAG 链:由多个 JTAG 设备串联形成的调试链路。
- Synthesis:综合,将 HDL 代码转换为门级网表的过程。
- Implementation:实现,包括布局(Place)和布线(Route),将网表映射到 FPGA 物理资源。
- Simulation:仿真,验证 FPGA 逻辑设计的功能正确性,包括行为级、 RTL 级、门级仿真。
- RTL(Register Transfer Level):寄存器传输级,硬件描述语言(Verilog/VHDL)设计的常用层次。
- Verilog:一种硬件描述语言,用于 FPGA 和数字电路设计。
- VHDL(Very High-Speed Integrated Circuit Hardware Description Language):超高速集成电路硬件描述语言,另一种常用的硬件描述语言。
- C/C++:用于 PS 部分嵌入式软件开发、HLS 设计的高级编程语言。
- Boot Image:启动镜像,包含 FSBL、比特流、U-Boot 等,用于 Zynq 的启动。
- Secure Boot:安全启动,确保 Zynq 仅加载经过认证的启动镜像。
- Vivado HLS:Vivado 中的高层次综合工具。
- Xilinx SDK:Xilinx 的软件开发工具(已被 Vitis 替代)。
- Zynq UltraScale+:Zynq 系列的高端型号,性能更强,集成更多资源。
- Zynq-7000:Zynq 系列的早期主流型号,广泛应用于各类场景。
- PL-PS Interface:PL 与 PS 之间的接口,包括 AXI 总线、中断信号等。
- Interrupt Controller:中断控制器,管理 PS 和 PL 产生的中断信号。
- GIC(Generic Interrupt Controller):通用中断控制器,ARM 架构中的中断管理组件。
- S_AXI:从 AXI 接口,作为 AXI 总线上的从设备。
- M_AXI:主 AXI 接口,作为 AXI 总线上的主设备。
- AXI Lite IP:使用 AXI4-Lite 协议的 IP 核。
- AXI Stream IP:使用 AXI4-Stream 协议的 IP 核。
- Memory Mapped:内存映射,将外设寄存器映射到 CPU 的地址空间,便于软件访问。
- Block Design:块设计,在 Vivado 中通过图形化方式搭建 PL 部分的 IP 核连接。
- HDL Wrapper:HDL 封装器,将块设计转换为可综合的 HDL 代码。
- Static Region:PL 中的静态区域,设计固化后不改变。
- Dynamic Region:PL 中的动态区域,支持部分重配置(Partial Reconfiguration)。
- Partial Reconfiguration:部分重配置,在不停止系统运行的情况下重新配置 PL 的部分区域。
- Timing Analysis:时序分析,评估 FPGA 设计的时序性能,如建立时间、保持时间。
- Setup Time:建立时间,数据在时钟沿到来前保持稳定的最小时间。
- Hold Time:保持时间,数据在时钟沿到来后保持稳定的最小时间。
- Slack:时序裕量,实际时序与约束时序的差值,正值表示满足约束。
- Cross Clock Domain:跨时钟域,信号在不同时钟频率或相位的时钟域之间传输。
- Synchronizer:同步器,用于跨时钟域信号的同步,避免亚稳态。
- Metastability:亚稳态,数字电路中信号在时钟沿附近跳变导致的不稳定状态。
- FIFO Depth:FIFO 的深度,即 FIFO 可存储的数据量。
- FIFO Full/Empty:FIFO 的满 / 空标志,用于控制数据读写。
- AXI Interconnect:AXI 互连 IP 核,实现多个 AXI 主设备与从设备之间的连接。
- SDRAM(Synchronous Dynamic Random Access Memory):同步动态随机存取存储器,一种常见的外部内存。
- eMMC(Embedded MultiMediaCard):嵌入式多媒体卡,用于存储程序和数据。
- SD Card(Secure Digital Card):安全数字卡,常用于 Zynq 系统的启动和数据存储。
- Ethernet:以太网,用于网络通信的标准。
- MAC(Media Access Control):媒体访问控制,以太网协议的底层部分,Zynq 中常集成以太网 MAC。
- PHY(Physical Layer):物理层,负责以太网信号的收发,通常为外部芯片。
- USB(Universal Serial Bus):通用串行总线,用于外设连接。
- SPI Flash:采用 SPI 协议的闪存,常用于存储启动镜像。
- I2S(Inter-IC Sound):集成电路内置音频总线,用于音频数据传输。
- PWM(Pulse Width Modulation):脉冲宽度调制,用于电机控制、灯光调节等。
- ADC(Analog-to-Digital Converter):模数转换器,将模拟信号转换为数字信号。
- DAC(Digital-to-Analog Converter):数模转换器,将数字信号转换为模拟信号。
- DMA Transfer:DMA 传输,通过 DMA 控制器实现的数据传输过程。
- Scatter-Gather DMA: scatter-gather DMA,一种 DMA 传输模式,可处理非连续内存块。
- Cache Coherency:缓存一致性,确保 CPU 缓存和主存中数据的一致性。
- MMIO(Memory-Mapped I/O):内存映射 I/O,通过访问内存地址控制外设。
- PIO(Programmed I/O):程序控制 I/O,通过 CPU 指令直接控制外设的数据传输。
- Zynq Development Board:Zynq 开发板,用于 Zynq 开发的硬件平台(如 ZedBoard、Zybo 等)。
- Carrier Board:载板,用于搭载 Zynq 核心板的电路板。
- Core Board:核心板,集成 Zynq 芯片及基本电源、内存等电路的模块。
- JTAG Debugger:JTAG 调试器,用于通过 JTAG 接口调试 Zynq 系统。
- Logic Analyzer:逻辑分析仪,用于捕获和分析 FPGA 逻辑信号。
- Oscilloscope:示波器,用于观察模拟信号和高速数字信号的波形。
- Power Management:电源管理,对 Zynq 系统各部分电源进行控制和优化。
- PMIC(Power Management IC):电源管理芯片,用于 Zynq 的电源供给和管理。
- Thermal Management:热管理,控制 Zynq 芯片的温度,确保正常工作。
- FPGA Configuration:FPGA 配置,将比特流加载到 PL 部分的过程。
- Master Device:主设备,在总线通信中发起数据传输的设备。
- Slave Device:从设备,在总线通信中响应主设备请求的设备。
- Bus Arbitration:总线仲裁,决定多个主设备对总线的使用权。
- Latency:延迟,数据传输或处理所需的时间。
- Throughput:吞吐量,单位时间内处理的数据量。
- Parallel Processing:并行处理,FPGA 的核心特性,同时处理多个任务。
- Pipeline:流水线,将处理过程分为多个阶段,提高数据处理效率。
- Hardware Acceleration:硬件加速,利用 FPGA 的并行性加速特定算法(如图像处理、AI 推理)。
- CNN Accelerator:卷积神经网络加速器,基于 FPGA 实现的 CNN 算法硬件加速模块。
- Image Processing:图像处理,利用 Zynq PL 部分实现图像滤波、边缘检测等算法加速。
- Video Codec:视频编解码器,用于视频的压缩(编码)和解压缩(解码)。
- Industrial Ethernet:工业以太网,适用于工业控制场景的以太网协议(如 Profinet、EtherCAT)。
- Real-Time System:实时系统,能够在规定时间内响应事件并完成处理的系统。
- RTOS(Real-Time Operating System):实时操作系统,用于实时系统的软件平台。
- Bare-Metal Driver:裸机驱动程序,直接操作硬件的底层软件。
- Linux Driver:Linux 驱动程序,在 Linux 系统中控制硬件的软件。
- Device Tree Overlay:设备树覆盖,动态修改设备树以适配硬件配置变化。
- FPGA Fabric Utilization:FPGA 逻辑资源利用率,衡量 LUT、FF、BRAM 等资源的使用比例。
- Maximum Frequency(Fmax):最大频率,FPGA 设计能够稳定工作的最高时钟频率。
- Placement:布局,将逻辑单元分配到 FPGA 的物理位置。
- Routing:布线,连接 FPGA 中已布局的逻辑单元,实现设计的电路连接。
- Clock Tree Synthesis:时钟树综合,生成分布均匀的时钟网络,确保时钟信号同步。
- Reset Synchronization:复位同步,确保电路在复位时的稳定状态,避免亚稳态。
- Testbench:测试平台,用于仿真验证 HDL 设计的代码。
- Assertion:断言,在仿真中用于检查设计是否满足预期条件。
- Formal Verification:形式化验证,通过数学方法证明设计的正确性。
- Lint Check:代码检查,分析 HDL 代码的语法和风格问题。
- IP Integrator:IP 集成器,Vivado 中用于图形化搭建 IP 核连接的工具。
- Block Design Validation:块设计验证,检查块设计中 IP 核连接和配置的正确性。
- Generate Output Products:生成输出产品,为块设计生成综合和实现所需的文件。
- Create HDL Wrapper:创建 HDL 封装器,将块设计转换为 Verilog 或 VHDL 代码。
- Synthesis Options:综合选项,设置综合过程中的参数(如目标器件、优化策略)。
- Implementation Options:实现选项,设置布局布线过程中的参数。
- Report Generation:报告生成,生成综合、实现、时序等分析报告。
- Timing Report:时序报告,包含建立时间、保持时间、裕量等时序信息。
- Utilization Report:利用率报告,显示 FPGA 各资源的使用情况。
- Power Report:功耗报告,分析 Zynq 系统的功耗分布。
- Bitstream Generation:比特流生成,将实现结果转换为可配置 FPGA 的比特流文件。
- Bitstream Configuration:比特流配置,设置比特流的加密、压缩等属性。
- Boot Mode:启动模式,Zynq 的启动方式(如 JTAG、SD 卡、QSPI Flash 等)。
- QSPI Flash(Quad Serial Peripheral Interface Flash):四线 SPI 闪存,常用于存储启动镜像。
- NAND Flash:一种非易失性闪存,容量较大,用于数据存储。
- NOR Flash:一种非易失性闪存,读取速度快,常用于存储程序。
- FPGA Configuration Mode:FPGA 配置模式,包括主模式(Master)和从模式(Slave)。
- JTAG Programming:JTAG 编程,通过 JTAG 接口下载比特流或程序到 Zynq。
- USB Blaster:Altera(现 Intel)的 JTAG 调试器,也可用于部分 Zynq 开发板调试(需兼容)。
- Xilinx Platform Cable:Xilinx 官方的 JTAG 下载电缆。
- Virtual Cable(Vivado Virtual JTAG):虚拟 JTAG 电缆,通过网络或 USB 模拟 JTAG 接口。
- AXI Performance Monitor:AXI 性能监控器,用于分析 AXI 总线的传输性能(带宽、延迟)。
- FPGA Debug Core:FPGA 调试核,如 ILA(Integrated Logic Analyzer)和 VIO(Virtual Input/Output)。
- ILA(Integrated Logic Analyzer):集成逻辑分析仪,Vivado 中用于实时捕获 PL 部分的信号。
- VIO(Virtual Input/Output):虚拟输入输出,Vivado 中用于与 PL 部分进行交互调试。
- ChipScope:Xilinx 早期的 FPGA 调试工具,功能类似 ILA 和 VIO。
- Trace Buffer:跟踪缓冲区,用于记录 CPU 的执行轨迹,辅助软件调试。
- GDB(GNU Debugger):GNU 调试器,用于调试 C/C++ 程序,支持 Zynq 的裸机和 Linux 应用。
- OpenOCD(Open On-Chip Debugger):开源片上调试器,支持多种处理器和调试接口。
- Linux Application:Linux 应用程序,运行在 Zynq PS Linux 系统上的用户态程序。
- Kernel Module:内核模块,Linux 内核的可动态加载模块,用于扩展内核功能。
- Device Driver Model:设备驱动模型,Linux 内核中管理设备驱动的框架。
- Platform Driver:平台驱动,Linux 中用于支持片上外设或平台设备的驱动。
- Character Device:字符设备,按字符流方式访问的设备(如 UART、GPIO)。
- Block Device:块设备,按块方式访问的设备(如 SD 卡、eMMC)。
- File System:文件系统,用于管理存储设备上的文件和目录(如 ext4、FAT32)。
- Root File System:根文件系统,Linux 启动时挂载的第一个文件系统,包含系统运行必需的文件。
- BusyBox:一个集成了多种 UNIX 命令的工具集,常用于嵌入式 Linux 的根文件系统。
- Buildroot:一个用于构建嵌入式 Linux 系统的工具,可生成根文件系统、内核等。
- Yocto Project:一个开源协作项目,用于构建定制的嵌入式 Linux 发行版。
- Petalinux:Xilinx 推出的基于 Yocto 的嵌入式 Linux 开发工具,专为 Zynq 等 Xilinx 器件优化。
- Petalinux Project:Petalinux 项目,用于配置和构建 Zynq 的 Linux 系统。
- FPGA Manager:FPGA 管理器,Linux 内核中用于控制 FPGA 配置的框架。
- Remote Debugging:远程调试,通过网络连接调试目标 Zynq 系统上的程序。
- Cross-Compilation:交叉编译,在主机上为 Zynq 目标平台编译程序。
- Toolchain:工具链,用于交叉编译的编译器、链接器等工具集合(如 ARM GCC)。
- Makefile:编译脚本,用于自动化程序的编译和链接过程。
- CMake:跨平台构建工具,用于生成 Makefile 等构建脚本。
- Git:分布式版本控制系统,用于管理代码版本。
- SVN(Subversion):集中式版本控制系统,用于代码管理。
- Continuous Integration(CI):持续集成,自动化代码构建、测试和部署的过程。
- Requirements Analysis:需求分析,明确 Zynq 系统的功能、性能等需求。
- Architecture Design:架构设计,规划 Zynq 系统的软硬件架构(PS 与 PL 分工、接口设计等)。
- Detailed Design:详细设计,具体设计软件模块和硬件逻辑。
- Prototype Validation:原型验证,基于开发板验证设计方案的可行性。
- Design Review:设计评审,对设计方案进行评估和改进。
- Productization:产品化,将原型设计转化为可量产的产品。
- EMC(Electromagnetic Compatibility):电磁兼容性,确保 Zynq 系统不受电磁干扰且不对其他设备造成干扰。
- ESD(Electrostatic Discharge):静电放电,防止静电损坏 Zynq 芯片及周边电路。
- Reliability:可靠性,系统在规定条件下长时间稳定工作的能力。
- MTBF(Mean Time Between Failures):平均无故障时间,衡量系统可靠性的指标。
- DFT(Design for Testability):可测试性设计,便于系统生产和维护阶段的测试。
- Boundary Scan:边界扫描,基于 JTAG 的测试技术,用于检测芯片引脚和连接。
- Hardware-in-the-Loop(HIL):硬件在环测试,将实际硬件接入仿真环境进行测试。
- FPGA Emulation:FPGA 仿真,用 FPGA 模拟其他芯片或系统,加速验证过程。
- Technical Documentation:技术文档,包括设计文档、用户手册、调试指南等。
- Data Sheet:数据手册,芯片的官方技术文档,包含电气特性、引脚定义等信息。
- Reference Manual:参考手册,详细描述芯片功能和使用方法的官方文档。
- User Guide:用户指南,指导开发板或软件工具使用的文档。
- Application Note:应用笔记,Xilinx 发布的针对特定应用场景的技术文档。
- White Paper:白皮书,关于技术趋势、解决方案的专题文档。
- Community:社区,Zynq 开发者交流的平台(如 Xilinx 官方论坛、GitHub、Stack Overflow)。
- Xilinx Support:Xilinx 技术支持,提供 Zynq 相关的技术咨询和问题解答。
- FPGA Forum:FPGA 论坛,开发者讨论 FPGA 设计和 Zynq 应用的社区。
- Workshop:研讨会,关于 Zynq 技术的培训或交流活动。
- Webinar:网络研讨会,在线举办的 Zynq 技术讲座。
- Certification:认证,如 Xilinx 官方的 Zynq 相关认证,证明工程师的专业能力。
🧠 一、Zynq SoC 架构类表达
⚙️ 二、PS 外设 / 驱动表达
💻 三、Linux 应用开发术语(用户空间)
/dev/uart1
)mmap
)dlopen
)&
)🧩 四、进程通信与系统服务
.service
)strace
)🌐 五、Socket 网络编程
🧪 六、调试、测试与构建工具
valgrind
)🔌 七、嵌入式 Linux 术语(Zynq 场景)
.ko
)✅ 八.常用表达句式(技术写作/开发交流)
/dev/mem
and mmap()
epoll
ioctl()
to configure device parameterstermios
structure