Veloris.
PREVIEW:
Pinned
概念基础2026-02-11

FPGA 是什么?一个嵌入式 FPGA 工程师的入门解读

从零理解 FPGA:什么是 FPGA、它的内部由哪些资源组成、与 CPU/GPU/ASIC 有什么本质区别。本文以嵌入式工程师视角,解读 FPGA 的并行处理能力和可重构特性,分析其优势(并行、灵活、实时性强)与局限(成本高、功耗大、开发门槛高),并梳理 FPGA 在通信、工业控制、图像处理、航空航天等领域的典型应用场景,帮你建立对 FPGA 的第一印象。

4 min read · 1.2k words · 3072 glimpses阅读全文
概念基础2026-02-11

回顾可编程逻辑器件 40 年的技术演进:从最早的 PLA、PAL,到 GAL、CPLD,再到如今的 FPGA。本文梳理每一代器件的架构特点与局限性,解释为什么 PLA 太贵、PAL 不够灵活、CPLD 容量不足,以及 FPGA 如何凭借查找表(LUT)架构和 SRAM 编程技术脱颖而出,最终成为数字电路设计的主流平台。理解这段进化史,能帮你真正理解 FPGA 架构设计背后的工程取舍。

4 min read · 1.2k words · 3072 glimpses阅读全文
概念基础2026-02-11

面向 FPGA 初学者的芯片选型指南。本文介绍全球主流 FPGA 厂商——AMD(Xilinx)和 Intel(Altera)的产品线划分,包括 Xilinx 7 系列(Spartan/Artix/Kintex/Virtex)和 UltraScale 系列,以及 Intel 的 Cyclone/Arria/Stratix 系列。同时梳理紫光同创、高云半导体、安路科技等国产 FPGA 厂商现状,并给出从需求分析到型号确认的选型方法论,帮你在琳琅满目的 FPGA 产品中找到最适合的那颗芯片。

10 min read · 3.6k words · 3077 glimpses阅读全文
概念基础2026-02-11

拆开一颗 FPGA,逐一认识它的内部资源:可配置逻辑块(CLB)中的 LUT、触发器、MUX 和进位链,负责芯片与外界通信的 IOB,实现灵活互连的可编程布线资源,以及 Block RAM、DSP Slice、时钟管理单元(PLL/MMCM)等专用硬核资源。本文用直观的类比和结构图帮你建立对 FPGA 内部架构的整体认知,为后续深入学习 CLB 架构、时序分析和资源优化打下基础。

8 min read · 3.0k words · 3082 glimpses阅读全文
概念基础2026-02-11

完整梳理 FPGA 开发的全流程:从需求分析、架构设计、RTL 编码,到功能仿真、综合、布局布线、时序分析、生成比特流,最后下载到开发板进行在线调试。本文以 Vivado 工具链为例,讲清每个阶段做什么、用什么工具、容易踩什么坑,并强调仿真验证和时序约束这两个初学者最容易忽视的关键环节。掌握完整开发流程,是从 Verilog 语法学习过渡到实际工程的第一步。

9 min read · 3.3k words · 5080 glimpses阅读全文
概念基础2026-02-11

硬件描述语言(HDL)入门第一课:理解 Verilog 与 C 语言的本质区别。本文从「描述硬件」而非「编写程序」的视角出发,讲解 Verilog 的核心概念——模块(module)、线网(wire)、寄存器(reg)、并发执行与时间概念,并介绍数据流、行为级、结构化三种描述风格。同时给出 Verilog 编码规范和命名建议,帮你从软件思维切换到硬件思维,避免初学者常犯的「用写 C 的方式写 Verilog」的错误。

5 min read · 1.9k words · 3067 glimpses阅读全文
概念基础2026-02-23

深入 Verilog 的模块与信号系统:理解 wire 和 reg 的真实含义(wire 是连线、reg 不一定是寄存器)、模块端口的声明与连接方式、模块例化的具名连接与顺序连接、以及 parameter 参数化设计。本文结合综合后的电路图,揭示信号声明与实际硬件之间的对应关系,帮你摆脱对 wire/reg 的常见误解,写出结构清晰、可复用的 Verilog 模块。

5 min read · 1.6k words · 1069 glimpses阅读全文
概念基础2026-02-23

从硬件视角理解 Verilog 运算符:算术运算符如何映射到加法器和 DSP、逻辑运算符对应什么门电路、位运算与缩减运算的区别、移位运算的资源开销、拼接运算符的实际用途,以及关系运算符和条件运算符的电路实现。本文强调每个运算符背后的硬件代价,帮你在写表达式时就能预判资源消耗和时序影响,养成「写代码即画电路」的工程思维。

6 min read · 2.4k words · 2063 glimpses阅读全文
概念基础2026-02-23

理解 Verilog 的三种描述方式和两种赋值机制:数据流描述(assign/连续赋值)、行为级描述(always 块/过程赋值)、结构化描述(模块例化),以及阻塞赋值(=)与非阻塞赋值(<=)的关键区别。本文通过代码示例和综合电路对比,讲清每种描述风格适合什么场景、两种赋值在仿真和综合中的行为差异,帮你建立正确的赋值使用习惯,避免因混用赋值方式导致的仿真与实际硬件不一致问题。

4 min read · 1.4k words · 4071 glimpses阅读全文
概念基础2026-02-23

系统讲解 Verilog 行为级语句及其硬件映射:if-else 条件语句与优先级编码器、case 语句与多路选择器、for 循环的硬件展开规则、generate 语句的参数化例化能力。本文重点揭示行为级语句背后的硬件本质——if-else 会产生优先级链、case 默认并行选择、for 循环不是「执行」而是「展开」,并详细讲解组合逻辑中未完全赋值导致锁存器推断的常见陷阱及其规避方法。

8 min read · 2.8k words · 1059 glimpses阅读全文
概念基础2026-02-23

从代码到电路的思维转换:本文以 MUX(多路选择器)、D 触发器和锁存器三种基本电路为核心,演示 Verilog 代码如何被综合工具翻译为实际硬件。通过 assign 语句与 MUX 的对应关系、always @(posedge clk) 与 D 触发器的映射规则、以及组合逻辑中不完整赋值导致锁存器推断的机制,帮你建立「脑中有电路」的硬件设计直觉,理解综合工具的推断逻辑,从此告别「代码能仿真但上板出错」的困境。

5 min read · 1.7k words · 2068 glimpses阅读全文
概念基础2026-02-23

系统区分组合逻辑电路与时序逻辑电路:组合逻辑的输出仅取决于当前输入(无记忆),时序逻辑的输出还取决于历史状态(有记忆)。本文讲解两类电路的 Verilog 实现方法、典型应用场景,以及组合逻辑中常见的两个陷阱——组合逻辑环路(combinational loop)和意外生成锁存器。理解这两类电路的本质区别,是掌握数字电路设计、正确使用 always 块和 assign 语句的基础。

3 min read · 1.0k words · 1074 glimpses阅读全文
概念基础2026-02-23

深入理解组合逻辑电路中的竞争(Race)与冒险(Hazard/Glitch)现象:信号经过不同路径到达同一节点时存在时间差(竞争),可能导致输出出现短暂的错误脉冲(毛刺)。本文分析竞争冒险的产生原因、静态冒险与动态冒险的区别、毛刺对下游时序逻辑的潜在危害,并介绍加冗余项、插入缓冲、输出端加寄存器等消除方法,强调同步设计在 FPGA 中规避毛刺问题的核心作用。

4 min read · 1.2k words · 3072 glimpses阅读全文
概念基础2026-02-23

对比同步时序电路与异步时序电路的设计理念:同步电路所有触发器共享统一时钟,状态转换可预测、时序可分析;异步电路没有全局时钟,速度更快但设计验证极其困难。本文解释 FPGA 为什么几乎只采用同步设计——EDA 工具链基于同步假设、时序约束依赖时钟周期、异步设计的竞争冒险难以控制,并讨论异步信号进入同步系统时需要的同步器处理。

4 min read · 1.4k words · 4071 glimpses阅读全文
概念基础2026-02-23

全面解析时序逻辑电路中的亚稳态(Metastability)问题:当触发器的建立时间或保持时间被违反时,输出可能进入一个既非 0 也非 1 的不确定状态。本文从亚稳态的物理成因讲起,分析跨时钟域(CDC)信号传输这一最常见的触发场景,详解亚稳态的严重后果(信号传播不确定、逻辑判断错误),并系统介绍多级触发器同步、格雷码编码、握手协议、异步 FIFO 等工程解决方案。

3 min read · 0.9k words · 5075 glimpses阅读全文
概念基础2026-02-23

深入剖析 Verilog 中阻塞赋值(=)与非阻塞赋值(<=)的本质区别:阻塞赋值按顺序立即更新,非阻塞赋值在时间步结束时统一更新。本文通过仿真波形和综合电路对比,演示两种赋值方式在组合逻辑和时序逻辑中的不同行为,解释为什么「组合逻辑用阻塞、时序逻辑用非阻塞」是黄金法则,以及违反这一原则会导致的仿真与综合不一致问题。

3 min read · 0.9k words · 5075 glimpses阅读全文
概念基础2026-02-23

用 1 个 bit 检测数据传输错误——奇偶校验(Parity Check)的原理与 Verilog 实现。本文讲解偶校验和奇校验的工作机制(通过约定数据中 1 的个数的奇偶性来检测单 bit 错误),给出基于异或运算的极简 Verilog 实现代码,并展示如何在 UART 发送模块中集成校验功能。同时对比奇偶校验、CRC、汉明码、RS 码等常用校验方案的适用场景,帮你根据误码率和资源约束选择合适的错误检测策略。

6 min read · 2.4k words · 2063 glimpses阅读全文
深入原理2026-02-19

以 Xilinx 7 系列为例,拆解 FPGA 芯片的六级层次化架构:BEL(最小功能单元)→ Site(BEL 的集合,如 Slice)→ Tile(Site 的集合,如 CLB)→ Clock Region(共享时钟网络的区域)→ SLR(独立硅片 Die)→ Device(整颗芯片)。本文用城市类比帮你理解每一层的角色与边界,并结合 Vivado Device View 实操演示,让你在看到 SLICE_X12Y34 这样的坐标时能立刻定位资源位置。

9 min read · 3.4k words · 1079 glimpses阅读全文
深入原理2026-02-19

深入 Xilinx 7 系列 CLB 的内部结构:4 个 LUT6(用查表代替计算的组合逻辑核心)、3 个专用 MUX(F7MUX/F8MUX,扩展逻辑宽度)、1 条 CARRY4 进位链(加速算术运算)、8 个触发器(存储时序数据)。本文还区分 SliceL 与 SliceM 的功能差异——SliceM 额外支持分布式 RAM 和 SRL 移位寄存器,并给出对 CLB 友好的编码建议:善用流水线、减少控制信号种类、让综合工具正确推断专用资源。

6 min read · 2.2k words · 1064 glimpses阅读全文
深入原理2026-02-19

深入 SRL(移位寄存器 LUT)的工作原理与触发器的设计陷阱:SRL 利用 SliceM 中 LUT 的 SRAM 单元实现高效移位寄存器,1 个 LUT 可替代 32 个触发器,4 个 LUT 级联最多 128 位。本文讲解 SRL 的正确使用姿势(不能带复位信号)、FPGA 触发器的四种类型(FDRE/FDSE/FDCE/FDPE)、同步复位与异步复位的选择策略,以及组合逻辑中意外产生锁存器和控制集过多导致资源浪费的常见设计陷阱。

5 min read · 1.6k words · 1069 glimpses阅读全文
深入原理2026-02-19

用 6 个典型 Verilog 代码示例,在 Vivado 中亲眼看到代码如何映射到 FPGA 底层资源:组合逻辑→LUT、多路选择器→LUT+专用 MUX、算术运算→Carry Chain、时序逻辑→FF、移位寄存器→SRL、存储器→分布式 RAM 或 Block RAM。本文带你走完从 RTL 分析到综合再到布局布线的三步旅程,并讲解如何读懂综合报告中的资源利用率、时序摘要和推断信息,建立「写代码时心中有硬件」的工程思维。

5 min read · 1.9k words · 3067 glimpses阅读全文