- 博客(17)
- 收藏
- 关注
原创 IP核使用(二):FIFO 与 Block RAM 配置详解(附异步 FIFO 跨时钟域实操)
本文是《FPGA入门到实战》专栏第17篇,重点讲解FPGA开发中两个高频使用的IP核:FIFO Generator和Block Memory Generator。文章首先介绍FIFO的基本概念、同步/异步FIFO的区别及其在跨时钟域传输、流量缓冲等场景的应用;随后详细说明Vivado中FIFO IP核的配置步骤,包括接口类型、读写模式等关键参数设置,并分析Standard和FWFT两种模式的读写时序差异。接着讲解Block Memory Generator的配置方法,包括RAM/ROM类型选择及COE文件初
2026-04-03 09:41:11
429
原创 流水线设计 Pipeline:提升时序性能的核心技巧(附3级流水线乘法器实操)
本文介绍了FPGA设计中提升时序性能(Fmax)的关键技术——流水线(Pipeline)。首先分析了组合逻辑路径对工作频率的限制,指出流水线通过分割长路径来提高吞吐率。接着详细讲解了流水线的基本原理、插入方法、数据对齐技巧和valid信号传递。文章还讨论了流水线设计的代价,包括资源消耗增加和延迟增大。最后通过一个3级流水线乘法器的实例,展示了如何将Fmax从80MHz提升到200MHz以上,并提供了完整的Verilog代码实现。流水线是FPGA高性能设计的核心技术,需要权衡吞吐率提升与资源/延迟代价。
2026-04-03 09:39:58
613
原创 有限状态机 FSM:FPGA 设计的核心方法(一段式/二段式/三段式全对比)
本文系统讲解了FPGA设计中有限状态机(FSM)的核心方法论。首先对比了Moore型和Mealy型状态机的特点,推荐优先使用输出稳定的Moore型。重点分析了三种状态机实现方式:一段式(状态转移与输出混杂,不推荐)、二段式(组合输出易产生毛刺)和三段式(寄存器输出无毛刺,工程推荐)。通过交通灯实例代码,详细展示三段式状态机将状态寄存器、次态逻辑和输出逻辑分离的实现优势,包括代码可读性好、时序分析简单、输出稳定等特性。最后强调在工程实践中,三段式FSM因其可靠性和可维护性成为主流设计方案。
2026-04-02 09:30:44
636
原创 FPGA 复位设计:同步复位 vs 异步复位,异步复位同步释放最佳实践
本文系统讲解了FPGA复位设计的核心要点:同步复位与异步复位的区别、异步复位同步释放(ARSR)原理及Xilinx器件复位建议。同步复位消耗更多LUT资源但时序简单,异步复位更高效但对释放时机敏感。推荐采用ARSR方案,通过两级触发器同步释放复位信号,兼顾异步复位的高效性和同步释放的安全性。Xilinx 7系列器件内置异步复位端口,建议优先使用ARSR而非同步复位。文中提供了可直接复用的复位模板代码,并强调多时钟域需独立同步、避免复位组合逻辑等设计原则。
2026-04-02 09:29:38
773
原创 Verilog 代码规范
本文系统梳理了企业级FPGA工程中的Verilog代码规范标准。主要内容包括:1)信号与模块命名规则,采用前缀体系区分信号类型;2)注释规范要求文件头、段落和行内注释;3)模块化设计原则强调单一职责和标准接口;4)可综合代码禁用写法清单,如禁止initial、延时语句等。这些规范旨在提升代码可读性、可维护性和团队协作效率,避免常见设计陷阱。通过对比规范写法和错误写法,帮助开发者编写高质量FPGA代码。
2026-04-01 22:52:52
739
原创 lwip211 BSP Settings 完整中文版总表
本文介绍了lwIP 2.1.1 BSP设置的中文参数总表,包含9大类关键配置项。主要内容包括:1)顶层参数如工作模式选择(RAW/Socket API)、TCP保活等;2)网络基础协议配置(ARP、ICMP、IGMP);3)IP层选项(TTL、分片、转发);4)调试选项(各层调试开关);5)内存管理(堆大小、PBUF数量等);6)IPv6支持选项。表格详细列出了各参数的默认值、类型及使用建议,为嵌入式网络开发提供配置参考,特别适合Xilinx Zynq平台开发者。
2026-03-10 09:37:00
567
原创 实战:SPI Master 设计——四模式支持、奇偶分频与多通道并行采集
本文介绍了SPI Master控制器的FPGA实现方案,支持四种SPI工作模式、可配置时钟分频和32路并行采集。设计采用模块化架构,分为时序控制器、延时补偿和数据接收三个子模块。时序控制器通过四状态机实现四种模式下的精确时序控制,重点解决了奇偶分频时的延时补偿问题。奇数分频时利用双沿寄存器组合实现半周期延时,保证时钟对称性。接收端采用32个并行SPI接口,支持AXI-Stream输出,适用于高速数据采集场景。该设计兼顾了灵活性和可靠性,可作为SPI主设备的通用解决方案。
2026-03-08 16:20:08
1049
原创 实战:按键消抖——从硬件原理到Verilog实现
本文是《FPGA入门到实战》专栏第12篇。本篇聚焦一个看似简单但初学者必踩的坑——。机械按键为什么会抖动?软件如何消除?如何检测按键的上升沿和下降沿?读完本篇,你将彻底掌握按键消抖模块的设计原理,并能独立写出工程级的消抖代码。
2026-03-07 21:36:10
903
原创 时序分析入门:建立时间、保持时间与XDC约束完整指南
本文介绍了FPGA开发中的时序分析基础知识,重点讲解了建立时间、保持时间的概念及其在同步电路中的重要性。文章详细解释了时序路径的组成和Slack指标的含义,并提供了Vivado时序报告的关键指标解读方法。此外,还全面介绍了XDC约束文件的写法,包括时钟约束、输入/输出延迟约束、多周期路径和虚假路径约束等实用技巧,帮助开发者正确进行时序约束和优化。通过本文,读者可以掌握FPGA时序分析的基本原理和实践方法。
2026-03-06 13:35:20
489
原创 IP核使用(一):Vivado Clocking Wizard 配置 PLL 时钟 IP 核全流程
本文介绍了FPGA中PLL时钟IP核的配置与使用,重点讲解了Vivado Clocking Wizard工具的操作流程。文章首先阐述了PLL的必要性,它能解决单晶振无法满足多频率时钟需求的问题,具备倍频、分频、相位调整等功能。随后详细说明了Xilinx 7系列FPGA中的PLL和MMCM两种时钟资源特性,并通过图文展示了Vivado配置步骤,包括时钟选项设置、输出频率配置等关键环节。最后给出了IP核的Verilog例化方法和XDC约束规则,强调只需约束输入时钟,输出时钟会由工具自动推导。本文为FPGA开发者
2026-03-04 08:59:11
896
1
原创 FPGA内部资源详解:LUT、FF、BRAM、DSP、PLL是什么?综合报告怎么看
本文深入解析了FPGA的五大核心硬件资源:LUT(实现组合逻辑的查找表)、FF(存储状态的触发器)、BRAM(片内大容量存储器)、DSP(高效乘加运算单元)和PLL(时钟管理模块)。通过实例说明了这些资源的工作原理、Verilog代码映射规则以及优化技巧,例如LUT的双输出模式、FF的时钟使能用法、BRAM的同步读特性、DSP的乘累加优势等。掌握这些底层资源特性是编写高质量FPGA代码、分析综合报告和解决时序问题的关键基础,能帮助开发者从"黑盒编程"进阶到精准的硬件资源控制。
2026-03-03 09:21:26
1975
原创 第一个FPGA项目:LED闪烁与流水灯(Vivado完整下板全流程)
本文是《FPGA入门到实战》专栏第7篇,主要讲解LED闪烁和流水灯两个基础项目的实现方法。文章详细介绍了从Verilog代码编写到Vivado下板运行的全流程,重点包括:1) 分频计数器的设计原理,将100MHz时钟分频为1Hz;2) LED闪烁和流水灯的Verilog实现代码;3) XDC约束文件的编写要点,包括时钟约束和IO管脚配置;4) 常见下板失败问题的排查方法。通过这两个项目,读者可以掌握FPGA开发的基本流程,为后续更复杂的项目打下基础。文中还提供了参数化设计建议,便于代码复用和功能扩展。
2026-03-03 09:20:14
1375
原创 Verilog语法入门(三):条件语句、循环、时序逻辑与组合逻辑区别
Latch(锁存器)是一种电平敏感的存储单元,与时钟无关,使能电平有效时输入直接透传到输出。FPGA 设计中 Latch几乎所有情况下都应该避免对毛刺(glitch)敏感,使能信号有毛刺时就会采样错误数据时序分析工具对 Latch 路径的约束非常困难大多数情况下 Latch 的出现是代码错误的信号,而非有意设计Vivado 综合完成后,如果 Messages 窗口出现,说明你的代码中意外产生了 Latch,必须检查修复。维度组合逻辑时序逻辑时钟无有(posedge/negedge)
2026-03-02 08:54:22
1021
原创 Xilinx Vivado 工具安装
本文详细介绍了Xilinx Vivado 2022.1开发工具的安装流程。主要内容包括:从AMD官网下载安装包、使用命令行解压、管理员身份运行安装程序、选择安装组件(Vitis/Vivado等)和目标芯片平台、设置安装路径、加载License文件等步骤。文章还提供了License管理和移除的方法。整个安装过程图文并茂,适合FPGA开发初学者参考使用Xilinx工具链。
2026-03-02 08:53:35
2939
原创 Verilog语法入门(二):数据类型、运算符、赋值语句
本文是《FPGA入门到实战》专栏第4篇,重点讲解Verilog语法中的数据类型、运算符和赋值语句。文章首先介绍Verilog的四值逻辑系统(0/1/X/Z),分析其含义和应用场景。然后详细讲解位宽定义、向量操作、位拼接等关键语法,特别强调位宽扩展规则。最后全面梳理Verilog运算符体系,包括算术、逻辑、移位等各类运算符的用法和注意事项,并指出运算符优先级关系。文中通过大量代码示例演示语法要点,帮助读者掌握组合逻辑和时序逻辑的正确描述方法。
2026-03-01 13:08:47
1115
原创 Verilog语法入门(一):基本结构、模块定义、端口声明(附简单代码实操)
本文介绍了Verilog硬件描述语言的基础知识,重点讲解了模块结构、端口声明、wire/reg区分等核心概念。主要内容包括:1) Verilog在FPGA开发中的作用及版本简史;2) 完整的Verilog模块结构示例;3) 模块内部结构的规范书写顺序;4) 端口方向(input/output/inout)的声明方法;5) wire和reg类型的区别及使用场景判断。文章采用Verilog-2001的ANSI风格写法,强调硬件描述与软件编程的本质差异,帮助初学者建立正确的Verilog编程思维框架。
2026-03-01 13:07:31
1504
原创 什么是FPGA?和单片机/CPU的本质区别
本文介绍了FPGA的基本概念及其与CPU、MCU、ASIC的区别。FPGA是一种可编程硬件,能够通过代码定义并行电路,适用于实时性要求高的场景。文章详细解析了FPGA的内部架构(LUT、FF、BRAM等)、主流厂商对比(Xilinx与Intel)以及典型应用领域(通信、图像处理等)。同时指出FPGA不适合复杂操作系统或大批量低成本产品的局限性。作为《FPGA入门到实战》专栏的首篇,本文为零基础学习者提供了清晰的学习路线图,后续将逐步深入FPGA开发实践。
2026-02-28 18:46:25
1056
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅