如果“西贝”也做FPGA开发

最近西贝莜面村因为使用预制菜被骂上热搜,大家都知道,餐饮行业现在一个热词就是“预制菜”,很多流程不再从头做,而是拿现成的半成品再加工,既省时间又保证了口味稳定。

其实 FPGA 开发也有点类似,十多年前可能还有很多人从零开始写HDL,也就导致FPGA“难”学的困境,现在谁还从零撸 Verilog/VHDL 啊?更多人早就学会用 IP 核 来“现成加料”,效率直接起飞。

 

 

为什么要用 IP 核?

如果用一句话来总结:

别再重复造轮子,把精力放在真正的创新上。

IP 核就像厨房里的预制菜包,别人已经帮你把复杂的工序做好了,你只需要“开袋即用”。优势很明显:

省时间:常见功能不用自己从 RTL 开始写。

省精力:协议栈、DSP 模块这种复杂度极高的东西,使用现成的 IP 核就行。

稳定性高:经过验证的 IP 核 bug 少,可靠性比自己现写强。

可扩展:很多 IP 核支持参数化配置,可以根据需求生成不同规格版本。

常用的几类 IP 核

通讯类

AXI 总线接口:Xilinx/AMD 提供 AXI4、AXI-Lite、AXI-Stream 等。

Ethernet MAC:千兆/万兆以太网,直接接网口,免去自己写协议栈的噩梦。

PCIe 核:支持多 lane、高速传输,移植起来非常省心。

存储与接口类

DDR 控制器:MIG(Memory Interface Generator),几乎必用。

SPI/I2C/UART:嵌入式开发常见接口,IP 核现成可拖拽。

高速串行接口(SerDes):用来跑高速数据传输。

算法类

FFT、FIR、IIR:做信号处理的常用加速器。

DSP Slice 封装 IP:乘加、矩阵运算打包成模块。

图像处理模块:边缘检测、缩放、滤波都有现成 IP。

开源 IP 库推荐

LiteX:基于 Python 的 FPGA SoC 生成框架,自带 UART、Ethernet、DDR 控制器等。

https://github.com/enjoy-digital/litex

OpenCores:老牌开源 IP 仓库,从 CPU 内核到通信接口应有尽有。

https://opencores.org/

VexRiscv:开源 RISC-V CPU 内核,高度可配置,HLS/RTL 项目都能用。

https://github.com/SpinalHDL/VexRiscv

FPGA_Library:该库包含诸多IP,包括图像处理、数字信号处理、接口等。

https://github.com/suisuisi/FPGA_Library

Open Logic:这个开源 VHDL 库提供了各种专注于 IP 外设创建的 IP 核。它提供了用于CDC、内存、FIFO、仲裁器、时分复用和其他功能(如 PRBS、延迟和桶形移位器)的模块。对于 AXI 支持,Open Logic 包括 AXI 主设备、从设备和流水线。它还提供用于 UART、SPI、I2C 等的接口 IP,使其成为 AXI 端点的宝贵资源。

https://github.com/open-logic/open-logic

HDL 模块:该库提供一系列 AXI IP,包括interconnects 和 crossbars,以及 FIFO 等基本基础设施。为了支持仿真,HDL 模块还包括总线功能模型和通用组件,例如环形缓冲区、LFSR、数学函数和正弦发生器。通过阅读文档可以很好地了解它。

本文来源于微信公众号:土人观芯

FPGA芯片的开发方法与实际应用案例

一、FPGA芯片的开发方法

FPGA芯片的开发流程是一个高度系统化的过程,涵盖了从设计构思到最终实现的多个关键步骤。首先,设计者需采用“自顶向下”的设计方法,将复杂系统分解为多个子系统、模块和功能单元,通过高层次抽象逐步细化为具体的硬件描述。例如,在开发一个数字信号处理系统时,顶层模块可能包括数据采集、滤波、调制解调等子模块,每个模块可独立开发、测试和验证,确保系统稳定性和开发效率。

 

 

硬件描述语言(HDL)是实现FPGA设计的核心工具,其中VHDL和Verilog是最常用的语言。设计者通过编写HDL代码,定义逻辑功能和时序行为,例如创建一个简单的4位计数器模块,代码中需明确时钟输入、复位信号和计数输出,综合工具会将此类代码映射为FPGA内部的查找表(LUT)和触发器结构。开发流程还包括功能仿真和时序仿真,前者验证逻辑正确性,后者评估布局布线后的时序性能,确保设计满足时钟约束。

综合工具将HDL代码转换为网表文件,随后布局布线工具在FPGA内部配置逻辑块(CLB)和互连资源,生成比特流文件。最终,通过配置芯片或通用微控制器将比特流加载到FPGA中,实现动态重构。这一流程的灵活性允许设计者快速迭代,适应不同应用场景的需求。

二、FPGA芯片的实际应用案例

FPGA芯片的并行处理能力和可编程性使其在多个领域展现出卓越性能。在通信领域,FPGA用于实现高速接口协议如DisplayPort(DP),通过自定义IP核替代通用方案,显著减少资源占用。例如,开发DP接口时,设计者需完成链路训练(包括时钟和均衡训练)、视频流发送及物理层编码,这种定制化设计能以较低成本实现高清视频输出,适用于嵌入式显示系统。

在人工智能边缘计算中,FPGA加速深度学习算法,如图像识别和实时推理。其硬件并行性优于传统GPU,尤其在低功耗场景下表现突出。例如,自动驾驶感知系统利用FPGA处理多传感器数据,实现低延迟决策,提升系统响应速度。

工业控制是另一典型应用,FPGA用于精确运动控制和数据采集。在自动化生产线上,它实时响应传感器信号,执行预设逻辑,确保设备稳定运行。例如,机械臂控制系统通过FPGA处理编码器反馈,实现高精度定位,减少生产误差。

三、开发挑战与未来趋势

FPGA开发面临的主要挑战包括设计复杂性和编程门槛。HDL语言的学习曲线陡峭,且大型算法实现需大量结构设计和仿真验证,增加了开发周期。此外,时序收敛和功耗优化是工程难点,尤其在先进制程芯片中更为突出。

未来,FPGA技术将向更高集成度发展,结合AI工具简化设计流程。例如,新型开发平台可能集成自动化时序分析功能,降低人工干预需求。同时,FPGA与ASIC的融合趋势将增强性能与成本平衡,推动其在5G通信和物联网等领域的广泛应用。

FPGA世界里的“芯片对芯片”通信及Chip2Chip IP 核带来的效率提升

你有没有遇过这种情况:系统里有两块 FPGA 或者 FPGA + CPU + FPGA,需要它们之间高速、低延迟、可靠地互传数据,甚至需要像访问本地内存那样访问对方的寄存器与 BRAM?这时候传统的 SPI / UART /以太网通信带来的延迟、带宽与开销就显得捉襟见肘。

 

 

什么是 Chip2Chip + Aurora 通信?

先说两个组件:

Aurora 协议:Xilinx 提供的一种轻量级串行高速链路协议,适合 FPGA 间用高速串行收发器(GT 或 GTY / SERDES)连接。好处是延迟低、链路效率高。

Chip2Chip IP 核:Chip2Chip(AXI Chip2Chip)是一款由 Xilinx (AMD) 公司提供 的低引脚数、高性能AXI协议软核IP,主要用于实现多设备SoC系统中的FPGA与SoC之间的高效通信。它通过通道复用、数据宽度转换和支持多种物理层接口(如SelectIO和Aurora),能够将AXI4和AXI4-Lite接口透明地桥接起来,可以让一个 FPGA 向另一个 FPGA(或一个拥有对应 IP 的芯片)发起 AXI 或 AXI-Lite 总线访问,就好像对方走在自己的地址图里那样,读写对方的内存或寄存器。

接下来我们就使用Chip2Chip + Aurora 实现一个简单的DEMO。

实际用例

在这个例子里,用的是 Aurora 64b/66b,速率 10.3125Gbps。

Chip2Chip 的 主端会对外提供 AXI 接口(如果启用了,还会有 AXI-Lite 接口)。这样一来,不管是片上的处理器、MicroBlaze,还是其他的 AXI master,都能通过这个 IP 发起读写操作,去访问对端设备的 AXI 地址空间。

把 Chip2Chip IP 接到 Aurora 上其实很简单,主要就是连上复位、初始化逻辑,还有一些状态信号(比如 channel_up)。

在测试的时候,主端这边挂了一个 AXI Traffic Generator 来制造读写流量,通过 Chip2Chip 传过去。

在 从端这边,随便接个 BRAM,让它当成内存映射的目标。

时钟这块,两边的配置保持一致:初始化时钟 50MHz,AXI 时钟 200MHz,GT 参考时钟用的是 156.25MHz。

这些子模块(BDCs)最后会组合在顶层 IP Integrator 里,里面还会连收发器(GTs)和时钟管理模块(比如 Clocking Wizard 之类的)。

要注意的一点是:主从两边的地址映射一定要对齐,否则互相访问时就会错位。

先在主端这边发起 AXI 写操作

过一小会儿,就能在从端那边看到对应的写入

我比较喜欢这个 IP,原因是有些场景确实很实用。比如在工业应用里,经常需要不同模块之间保持电气隔离,这时候用光纤 + Aurora + Chip2Chip 就特别合适,可以很方便地在设备之间传数据。

它让我们不必把所有交互都扔给软件来完成,也不必忍受传统通信方式那么多中间层的折损。对于追求低延迟、高确定性、模块化重用的工程项目,这一对组合确实能“提速不少”。

FPGA芯片:数字时代的核心引擎

在现代电子设备中,FPGA(现场可编程门阵列)芯片逐渐成为重要的组成部分。这种灵活、可重配置的硬件平台不仅在数据处理速度上表现卓越,还在功能多样性和应用广泛性上具有无可比拟的优势。本文将深入探讨FPGA芯片的定义、结构、工作原理、应用领域,以及未来的发展趋势。

 

 

什么是FPGA芯片?

FPGA是一种可以根据需要进行编程和配置的半导体设备。与传统的ASIC(专用集成电路)不同,FPGA的硬件设计可以在出厂后通过编程进行修改。它由大量的逻辑单元、存储单元以及可编程的互连网络组成,允许设计者根据项目需求进行高度自定义。这种灵活性使得FPGA在许多领域中成为理想的解决方案,尤其是在快速原型开发、数据处理和实时系统中。

FPGA芯片的结构与工作原理

FPGA的基本构成包括逻辑块、I/O单元、互连资源和配置存储器。逻辑块是FPGA中最基本的计算单元,通常由查找表(LUT)、触发器和多路选择器组成。查找表负责实现逻辑函数,触发器用于存储和传递数据,而多路选择器实现数据的选择和流动。

I/O单元则处理外部信号与内部逻辑结构之间的交互,通过配置其行为,FPGA能够连接到各种外设和通信接口。互连资源是用于连接不同逻辑块的网络,其设计的灵活性决定了FPGA的效率和性能。

FPGA的工作原理可以简单理解为将设计师编写的硬件描述语言(HDL)代码通过综合、布局与布线等步骤转化为FPGA能够识别的格式。通过下载配置文件到FPGA,设计者可以在现场实现产品的功能改动,而无需物理更换硬件。

FPGA的优势与劣势

FPGA具有多种优点,首先是其灵活性。由于FPGA可以在设计完成后,甚至在产品投放市场后继续修改,这使得开发周期显著缩短。此外,FPGA的并行处理能力使其在数据处理速度上优于许多传统的处理器。

其次,FPGA的可重构性极大地降低了风险。设计者可以在测试阶段灵活修改设计,节省资源和时间。当市场需求或技术标准变化时,FPGA可以快速适应。

然而,FPGA也存在一些不足之处。首先是功耗问题,由于FPGA通常由多种逻辑元素构成,其静态和动态功耗都可能高于专用芯片。其次,FPGA的性能往往无法与ASIC相提并论,尤其是在深度集成和高速处理方面。最后,FPGA的开发工具相对复杂,新手设计者需要一定时间才能驶入正轨。

FPGA芯片的应用领域

FPGA的多功能性使其在多个领域得到了广泛应用。以下是一些主要的应用领域:

1. 通信设备:在通信系统中,FPGA常用于数据包处理、信号编码和调制解调等任务。例如,5G和物联网设备中广泛采用FPGA,以实现高数据速率和复杂信号处理。

2. 图像处理:随着图像处理需求的增加,FPGA被越来越多地应用于视频编码、图像分析和实时处理。由于其并行计算能力,FPGA能够有效提升图像处理的速度和质量。

3. 汽车电子:在现代汽车中,FPGA用于汽车控制系统、传感器融合和自动驾驶功能。它的可重构性使得汽车生产商在硬件平台上能灵活应对新的技术要求。

4. 医疗设备:在医疗技术中,FPGA被广泛应用于医学成像、信号处理和生物监测设备。FPGA的实时处理能力对于实时数据分析和反馈至关重要。

5. 工业自动化:FPGA在工业控制系统中也有着重要作用,为PLC(可编程逻辑控制器)、运动控制和数据采集提供了强大的处理能力。

FPGA的未来发展趋势

随着技术的不断进步,FPGA面临着诸多新的发展机遇。首先,随着人工智能和机器学习的普及,FPGA在边缘计算和智能应用方面展现出巨大潜力。针对特定算法的FPGA加速器正不断研发,以提高处理效率和响应速度。

其次,FPGA与云计算的结合可使其在大数据处理和相对灵活的硬件资源利用上脱颖而出。通过在云平台上提供FPGA资源,企业可以按需使用,无需在基础设施上投入过多资金。

此外,量子计算的逐渐发展可能也会对FPGA的设计产生影响,未来可能出现对FPGA进行量子编程和优化的新方法,这将为计算领域带来新的革命。

结论

FPGA作为一种灵活、强大的硬件解决方案,在数字时代的深远影响愈发显著。从通信到医疗,从航空航天到汽车,FPGA的应用场景几乎无处不在。了解FPGA的结构、工作原理及其应用潜力,将有助于推动数字化转型和技术创新。随着FPGA技术的不断发展与升华,我们有理由相信,它将在未来的科技浪潮中,继续发挥不可替代的重要作用。

商务合作  

有兴趣的客户可扫描下面二维码加工曾是微信(加的时候备注下公司名),立即获得原厂工程师技术支持。

如需了解更多,请联系我们

手机号:15800607785

邮件:sales@agmcn.com

扫码加官方工程师微信咨询。

FPGA与MCU:新一代嵌入式系统开发的完美结合

在现代电子工程领域,嵌入式系统的设计和开发不断面临新的挑战与机遇。随着技术的进步,FPGA(现场可编程门阵列)和MCU(微控制器单元)作为两种重要的处理器架构,正在广泛应用于各类项目中,为工程师们提供更大的灵活性和性能。本文将深入探讨FPGA与MCU的特点、应用和未来发展,同时分析它们在嵌入式系统开发中的结合带来的潜在优势。

 

 

什么是FPGA与MCU?

FPGA是一种数字集成电路,能够被用户在现场进行配置和编程。它的结构由许多逻辑门、触发器以及其他电路元素组成,这些元件可以根据设计需要被重新连接和配置。FPGA的灵活性使得它广泛应用于信号处理、图像处理、通信和控制系统等领域。由于FPGA可以并行处理多个信号,因此在高性能计算需求的场合,FPGA常常能够提供比传统处理器更快的运算速度。

而MCU是一种小型的计算机,通常集成了处理器内核、内存(RAM和ROM)和输入输出接口。MCU以其低功耗、低成本和高度集成的特点,广泛应用于家电、汽车电子、工业控制等领域。MCU通常以程序控制为主,适合处理简单的逻辑和控制任务。

FPGA与MCU的主要特点比较

FPGA和MCU在功能、性能、开发周期等方面存在显著差异。以下是两者的主要特点比较:

– 灵活性:FPGA的最大优势在于其可编程性和重构能力。工程师可以根据需要改变设计,而无需更换硬件。MCU的功能较为固定,虽然可通过软件更新进行扩展,但硬件上的灵活性远远逊色于FPGA。

– 性能:在高速或者并行处理需求上,FPGA具有天然的优势。由于其硬件结构可以针对特定任务进行优化,FPGA在处理多路并行数据时的效率远超MCU。而MCU通常适合用于处理串行数据和较为简单的任务。

– 功耗:MCU通常设计为低功耗设备,非常适合电池供电的应用。而FPGA由于其高性能和复杂性,可能在一些场合下会消耗较高的功率。因此,在设计选择上,工程师需要根据应用需求合理选择。

– 开发周期:针对FPGA的开发,涉及硬件设计和复杂的编程语言(如VHDL或Verilog),因此开发周期相对较长。而MCU开发通常使用高层次的编程语言(如C/C++),可以大大缩短开发时间,提高工程效率。

FPGA与MCU的应用领域

FPGA与MCU在各自的领域都展现出独特的价值,以下是它们应用的一些典型领域:

FPGA的应用

1. 通信系统:FPGA在无线通信中被广泛应用,例如用于信号调制、解调以及信号处理算法。其并行处理能力能够实时处理大量数据,满足高速通信的需求。

2. 图像处理:在图像传感器应用中,FPGA可以进行实时图像处理和数字信号处理,常用于监控摄像头、无人机等设备中。

3. 工业控制:FPGA可以用于实时系统中的数据采集与控制,如自动化生产线的监控、机器视觉等。

MCU的应用

1. 智能家居:MCU广泛应用于智能家居设备中,如智能灯泡、温控器、智能门锁等,提供控制和通信功能。

2. 汽车电子:在汽车电子系统中,MCU用于车身控制、发动机管理、仪表盘显示等多个方面,提高汽车的安全性和舒适性。

3. 消费电子:各种消费电子产品如电视、蓝牙耳机和游戏机等都依赖于MCU的控制。

FPGA与MCU的结合

近年来,FPGA与MCU的结合逐渐成为一种趋势。这种组合可谓“强强联手”,可以充分发挥FPGA和MCU各自的优点,以满足更为复杂的嵌入式系统需求。

1. 设计灵活性与高效性

将FPGA与MCU结合,工程师可以通过FPGA处理高带宽信号,而MCU则负责控制和管理任务。这种分工可以有效提升系统的性能和效率。例如,在智能相机系统中,FPGA可以高速处理图像数据,而MCU负责图像处理算法的实现和用户交互。

2. 减少开发时间

FPGA与MCU的结合可以通过硬件加速降低系统的响应时间。与单独开发FPGA或MCU的方案相比,工程师可以通过集成硬件加速功能,从而减少系统设计和验证的时间。

3. 降低成本与功耗

在某些应用场景中,将FPGA与MCU结合使用能够优化整体系统的功耗与成本。例如,通过FPGA可以减少MCU需要处理的数据量,从而降低MCU的功耗,达到经济高效的设计效果。

未来发展趋势

随着嵌入式技术的快速发展,FPGA与MCU的结合将会越来越普遍。随着边缘计算、物联网(IoT)和人工智能(AI)等新兴技术的兴起,工程师需要设计更加复杂和高效的系统,这就要求FPGA与MCU之间的协同工作愈发紧密。

– 集成度提升:未来的FPGA和MCU将会朝着高度集成化的方向发展,更多功能将被集成到单一的芯片上,提高系统的可靠性和性能。可以预见,未来会出现更多兼具FPGA和MCU特性的混合器件。

– 智能化:人工智能的普及将推动FPGA与MCU在深度学习和数据处理中的应用。例如,FPGA可以用于加速神经网络计算,而MCU则可以进行数据采集与预处理,二者协同工作将大大提升系统智能化水平。

– 可编程性:FPGA的可编程特性将继续向更高层次发展,未来工程师可能会使用更为简便的高层次编程语言进行FPGA设计,提高开发效率。

总结

FPGA与MCU的结合为现代嵌入式系统开发打开了新的大门,这两者在灵活性、性能和成本等方面形成了良好的互补,适用于多种应用场合。随着技术不断进步,FPGA与MCU的整合将日益紧密,为更多创新的电子产品和系统设计提供强大支持。

无论是移动设备、智能家居、汽车电子还是医疗设备,FPGA与MCU的结合都在推动嵌入式技术的未来发展。只有通过不断探索和创新,才能在这场快速发展的科技浪潮中站稳脚跟,迎接未来的挑战与机遇。

商务合作  

有兴趣的客户可扫描下面二维码加工曾是微信(加的时候备注下公司名),立即获得原厂工程师技术支持。

如需了解更多,请联系我们

手机号:15800607785

邮件:sales@agmcn.com

扫码加官方工程师微信咨询。

零起步的 FPGA 学习圣经:Project F 开源项目深度解读

在 FPGA 学习过程中,你是否也曾遇到过这些问题:

教材晦涩难懂,电路图和代码脱节?

找不到既系统又实战的开源学习资料?

工具链配置复杂,不知从何下手?

如果你点头了,那么今天推荐的开源项目 Project F,可能就是你期待已久的答案。

什么是 Project F?

Project F 是一个完全开源的、面向学习者的 FPGA 教程项目,由英国开发者 Will Green 维护,旨在帮助开发者从零开始学习数字逻辑和硬件设计。

 

 

项目口号非常朴素:“People who are really serious about software should make their own hardware.”

Project F 的特色在于:

✅ 清晰的结构

✅ 基于 Verilog 语言

✅ 配套图文教程

✅ 开源工具链优先支持(如 Yosys/NextPNR)

✅ 支持多个开源开发板:iCEBreaker、ULX3S、Tang Nano 9K、Nexys A7 等

Project F 是一个系统性的教程集合,涵盖多个方面的数字设计知识:

入门篇:基础逻辑

👉 适合初学者快速上手 FPGA 开发流程。

图形篇:像素级硬件乐趣

👉 用 HDL 实现复古风游戏图形,学习时钟控制、缓冲区与同步技术。

数学篇:在电路中运算

👉 适合工程专业的计算机图形学/算法硬件化设计课题实践。

还有很多中高级教程可以自己去探索~

为什么值得推荐?

✅ 学术 + 实战结合

作者本身具备工程背景,所有设计都可直接运行在实板上,不是“空中楼阁”。

✅ 不依赖昂贵软件

教程默认基于开源工具链(Yosys + NextPNR),也支持 Vivado,让学习不再被 EDA 软件绑架。

✅ 项目结构清晰

每一个例子都有独立的目录、Makefile 构建系统、README 指南和 Block Diagram 图。

✅ 社区友好

项目作者更新频繁,回复 issues 积极,也推荐大量其它优秀资源。

开发板FPGA芯片是否支持

iCEBreakeriCE40UP5K✅

ULX3SECP5✅

Tang Nano 9KGW1NR-9C✅

Nexys A7Artix-7✅

如果你有一块 Lattice 或 Xilinx 开发板,几乎可以无缝上手。

写在最后:让 FPGA 不再“高不可攀”

Project F 不是另一个纸上谈兵的教学框架,而是一整套“能跑起来”的真实工程逻辑项目。它就像嵌入式开发的 STM32CubeMX 或 Arduino IDE —— 帮助你快速构建出第一个作品。

如果你是一位:

数电/嵌入式专业的学生

想入门 FPGA 的程序员

高校老师/训练营主理人

爱好 DIY 的创客

那么请不要错过这个宝藏项目,它正是你通向硬件世界的桥梁。

FPGA 上实现电机矢量控制:一个开源 FOC 项目的硬核解析

在自动驾驶、电动滑板车、无人机甚至工业自动化领域,高性能电机控制是不可或缺的核心技术。而如果你对硬件有足够的热情,你会发现:传统用 MCU 实现 FOC(Field-Oriented Control,磁场定向控制)也能“搬”到 FPGA 上运行,并大大提升实时性和可扩展性。

 

 

今天我们介绍一个硬核开源项目:FPGA-FOC,它使用 Verilog 在 FPGA 上实现了完整的 FOC 电机控制系统。

项目简介

基于 FPGA 的磁场定向控制 (FOC),用于驱动永磁同步电机 (PMSM) 或无刷直流电机 (BLDC)

FOC控制算法对传感器采样速率和处理器算力提出了一定的要求,使用 FPGA 实现的 FOC 可以获得更好的实时性,并且更方便进行多路扩展和多路反馈协同。

本库实现了基于角度传感器(也就是磁编码器)的有感 FOC,即一个完整的电流环,可以进行扭矩控制。借助本库,你可以进一步使用 纯FPGA 或 MCU+FPGA 的方式实现更复杂的电机应用。

项目名称:FPGA-FOC

实现语言:Verilog

控制目标:永磁同步电机(PMSM)

什么是 FOC?

磁场定向控制(FOC)是一种现代矢量控制算法,通过将三相电机电流变换到旋转坐标系,实现对电机转矩和磁通的独立控制,就像控制直流电机一样平滑、精确。

核心流程通常包括:

Clarke 变换(三相 → 两相 αβ)

Park 变换(静态 αβ → 动态 dq)

PI 控制(对转矩与磁通分量独立调节)

逆 Park 和 SVPWM 波形生成

而 FPGA 相比 MCU 在这些高频率、高并发的运算中具有天然优势。

项目结构简析

该项目主要分为以下模块:

从结构上来看,该项目构建了一个模块化、可独立仿真的完整电机控制架构,具备良好的教学与工程参考价值。

亮点特性

✅ 全流程仿真支持

项目内置了多个 testbench,包括对 Park/IPark、SVPWM 及整体系统的测试,初学者可以非常方便地观察波形与理解运行机制。

✅ 控制器细节还原度高

包括 PI 控制器、速度环、电流环 等核心部分都有独立模块定义,清晰可读。

✅ Verilog 写法规范

模块接口统一,信号命名清晰,结构良好,便于移植到不同平台或用于 SoC 项目集成。

如何上手运行?

项目链接中有开源的硬件,方便移植使用

https://oshwhub.com/wangxuan/arduino-foc-shield

总结

FPGA-FOC 是一个兼具工程价值与学习意义的开源 Verilog 项目。如果你对电机控制感兴趣,或想亲手写出一个真实运行的 FPGA 控制系统,不妨从这个项目开始。

商务合作  

有兴趣的客户可扫描下面二维码加工曾是微信(加的时候备注下公司名),立即获得原厂工程师技术支持。

如需了解更多,请联系我们

手机号:15800607785

邮件:sales@agmcn.com

扫码加官方工程师微信咨询。

 FPGA与MCU的完美结合:未来智能硬件的新趋势

在现代电子设计的快速发展中,FPGA(现场可编程门阵列)和MCU(微控制器单元)作为两种重要的硬件处理器,正在逐渐得到广泛的应用。它们各自有着独特的优势和特点,而将它们结合在一起,则能够充分发挥两者的优点,为智能硬件的开发带来更多可能性。

 

 

什么是FPGA与MCU?

FPGA是一种由可编程逻辑门组成的集成电路,可根据不同需求进行配置和修改。设计者可以通过硬件描述语言(如VHDL或Verilog)定义FPGA的功能和结构,这种高度的灵活性使得FPGA在数字信号处理、图像处理和高性能计算等领域表现出色。

MCU则是由中央处理单元(CPU)、内存和外部设备接口组成的一种微型计算机。它通常集成了多种功能,例如模拟信号处理、定时控制和数据通信,广泛应用于家用电器、消费电子、汽车电子等领域。由于其低功耗和高性价比,MCU在嵌入式系统中占据了重要的地位。

FPGA与MCU的优势比较

1. 灵活性:FPGA通过可以重新编程的特性,允许开发者在产品生命周期内进行功能的修改或更新。这种灵活性使得FPGA非常适合快速变化的市场需求。而MCU则在固定的程序和相对稳定的功能中表现优异。

2. 性能:FPGA在处理并行计算时往往能够提供更好的性能,适合用于高带宽和低延迟的应用。MCU的处理能力通常较低,但其功耗控制和极简设计使其在许多低功耗应用中更具优势。

3. 开发周期:开发FPGA的系统通常需要更长的周期和更多的技术知识,因为需要使用硬件描述语言进行设计。而MCU的开发相对简单,许多开发工具和示例代码都有助于加快开发速度。

4. 成本:从单片机的角度来看,MCU一般来说在成本上更具优势,尤其是在大规模生产中,MCU的制造成本会更低。而FPGA的配置和生产过程相对复杂,尽管它的灵活性可能带来更高的价值,但初期投资则较高。

FPGA与MCU的结合应用

随着科技的发展,FPGA和MCU的结合成为了一种趋势。在许多应用场景中,单独使用FPGA或MCU可能无法满足所有需求,但将两者结合则能够为设计者提供一种更加灵活和高效的解决方案。

1. 图像处理:在图像处理领域,FPGA可以快速对图像进行并行处理,而MCU则可以控制图像的采集、存储和显示。例如,在智能监控系统中,FPGA可以实时对视频流进行处理,而MCU则负责管理数据流和用户交互。

2. 通信系统:在无线通信领域,FPGA可以实现复杂的信号处理算法,而MCU则用于设备控制和数据管理。这样的组合能够有效提高通信的带宽和稳定性。

3. 智能传感器:许多智能传感器需要进行快速的数据处理和复杂的算法计算,FPGA可以及时处理输入信号,而MCU则用于控制传感器的实时状态和配置。因此,这种组合使得传感器能具备更全面的功能。

选择合适的组合

在选择FPGA和MCU的组合时,设计者需要根据具体的应用场景和需求来进行选择。以下是一些考虑因素:

1. 应用需求:首先考虑应用场景的需求,包括实时性、功耗和处理能力等。对于需要高性能处理的应用,可能更倾向于选择FPGA,而对于功耗敏感的应用,MCU会是更合适的选择。

2. 开发时间:如果项目时间紧迫,MCU的快速开发周期可以帮助项目加速上市。如果需要后期的功能升级和修改,FPGA提供的灵活性则不可或缺。

3. 成本分析:开发者需要在初始成本和长期维护成本之间进行权衡。尽管FPGA的初期投入较高,但如果后期需要频繁更新产品,那么FPGA的价值将逐步体现。

未来发展趋势

正如现代电子技术的快速发展,FPGA和MCU的结合也将充满着无限的可能性。随着人工智能和物联网的发展,FPGA将越来越多地应用于智能硬件的核心部分,而MCU则将在边缘计算的角色发挥重要作用。

在未来的智能城市、智能家居、智能医疗等众多领域,FPGA与MCU的结合将持续推动技术的进步与应用的创新。开发者需要不断适应新技术,从而在日新月异的市场中保持竞争力。

总结

FPGA与MCU作为电子设计中的两大核心组件,各自具备独特的优势与应用场景。通过将两者的优点结合,可以实现更高效、更灵活的智能硬件开发。随着技术的持续演进和市场需求的变化,FPGA与MCU的结合应用将不断深化,推动未来智能设备的创新和发展。

在这个快速发展的数字时代,准确掌握FPGA和MCU的特点、优势与应用,无疑是电子工程师和开发者应具备的重要技能。只有这样,才能在瞬息万变的技术浪潮中始终立于不败之地。

为什么FPGA厂商拥抱RISC-V?不继续发展RISC

Microsemi 于 2017 年开始在其 FPGA 中提供 RISC-V 软核,Lattice 于 2020 年开始提供,英特尔 (Altera) 于 2021 年开始提供,因此 Xilinx 是最后一家这样做的主要供应商(2024年5月30日)。

Microsemi 和 Gowin 的 FPGA 中也有 RISC-V 硬核,类似于 Zynq。对于 Microsemi 来说,由五个 64 位 SiFive U54/S51 内核组成的集群(四个支持 Linux,一个“real-time”),根据FPGA等级分别以 600 或 666 MHz 运行,基本上是 FPGA 中降级的 HiFive Unleashed。

所以目前FPGA厂商不管硬核或者软核都向RISC-V靠拢,对于一些“新”厂商,可以理解;对于像Xilinx或者Altera这种老牌厂商本身自己有基于RISC的软核,为什么也向RISC-V发展呢?

下面我们先简单看下RISC-V的发展,然后再分析一下这些FPGA厂商为什么选择RISC-V。

RISC-V 发展

RISC-V(英语发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为与开源软件运动相对应的一种“开源硬件”。该项目于2010年在加州大学伯克利分校启动,但许多贡献者是该大学以外的志愿者和行业工作者。(来源:维基)

目前已经有很多大公司加入到RISC-V“大家庭”中了,下面列举了部分厂商:

RISC-V VS RISC VS ARM

乍一看,很多人可能会认为 RISC-V 是 RISC 的变体,而 RISC 是一种指令集架构。毕竟,它们的名称相似,因此很容易造成混淆。但这与事实相去甚远。下面我们简单介绍一下RISC-V和RISC,就会明白他们真正的区别。

什么是 RISC?其实 RISC 是一个广义术语,意为“精简指令集计算机”。基本上,RISC 计算机本质上是为运行更简单的单个指令而设计的。与 CISC(复杂指令集计算机)相比,RISC 处理器对几乎所有指令都使用统一的指令长度。相比之下,CISC 指令更复杂,可以执行低级和多步骤操作。

 

简单来说,RISC 处理器可以执行更简单、统一的指令,而 CISC 可以执行复杂度和范围各不相同的指令。每个 RISC 指令一次只能执行一件事,而 CISC 指令可以同时执行多件事。由于指令以更简单的代码编写,并且本质上更简单,因此 RISC 处理器通常需要更多指令才能完成与 CISC 处理器相同的任务。可以通过提高 RISC CPU 使用流水线执行这些任务的速度来抵消这种差异。由于它们更简单,RISC 处理器的设计速度也可以比 CISC 处理器更快,并且可以运行更高效的代码。

由于 RISC 本身不是一种架构,而是一个广义的术语,因此许多 CPU 架构都可以被视为 RISC。最著名的 RISC处理器架构之一是 ARM,它为我们的智能手机以及一些笔记本电脑和计算机提供支持。其他包括 PowerPC,它长期用于 Apple 电脑和游戏机。同时,x86 可以被视为 CISC 设计,因为它更复杂。

RISC 一词是由加州大学伯克利分校的 David Patterson 在 1980 年至 1984 年间领导的伯克利 RISC 研究项目创造的。事实证明,该项目非常成功,而“RISC”一词后来涵盖了所有精简指令集计算机 – 甚至斯坦福大学在同一时间开发的竞争性 MIPS 项目最终也被称为 RISC 架构。至于那个特定的伯克利项目,它后来被 Sun Microsystems 开发的 SPARC 微架构所采用 – 该架构最终成为我们智能手机中 ARM 架构的灵感来源。

什么是 RISC-V?

虽然 RISC 本身并不是一个特定的架构,但可能对一种使用 RISC 名称的架构感到困惑,那就是 RISC-V。它是由加州大学伯克利分校开发的指令集架构 (ISA),旨在体现 RISC 处理器的原理,同时也是一个开源标准。虽然最著名的 RISC 架构 ARM 是专有的,需要芯片制造商的许可,但 RISC-V 是免费的,一般来说,每个人都可以免费使用。

但与 ARM 不同的是,RISC-V 的开发和发布旨在推出一种开源、可扩展且可部署在任何设备上而无需支付任何版税的 CPU 设计。据设计人员称,拥有一个免费使用的 CPU 架构可以大大降低软件成本。

所以我们对比 RISC 和 RISC-V 并没有什么意义,我们简单对比一下ARM VS RISC-V。

RISC-V VS ARM

建模与架构

从历史上看,ARM 一直主导着微处理器市场,从低功耗设备到高性能处理器。这主要归功于其许可模式,该模式允许各公司授权 IP 并根据自己的应用进行定制。此外,ARM 还开发了多个处理系列,例如用于高性能应用的 Cortex-A、用于实时应用的 Cortex-R 和用于节能应用的 Cortex-M — 每个系列都成为各种应用的非官方认可的性能标准。

另一方面,RISC-V 架构的灵感来源于 ARM 的专有建模。伯克利的研究人员最初将该架构作为一种开源替代方案,以促进技术创新。自那以后,它受到了谷歌和 Nvidia 等多家大型科技公司的青睐。

ARM 拥有成熟的软件和硬件,可以帮助公司加快开发周期。它还拥有一系列具有成熟功能集的选择。另一方面,RISC-V 的架构提供了 ARM 设备无法提供的灵活性和一定程度的定制性。考虑到原始性能,ARM 将胜过任何 RISC-V 处理器。尽管 ARM 继续保持其性能领先地位,但事实证明 RISC-V 可以提供更高的计算密度。这意味着将获得具有相同性能的更小芯片。这在许多应用中都是有利的,例如智能手表等可穿戴设备。

开放性和许可RISC-V 和 ARM 都是指令集架构 (ISA)。但它们的主要区别在于 RISC-V 是开源 ISA,而 ARM 是私有 ISA (使用需要授权)。

指令集RISC-V 具有固定的指令集架构,其中包含基本整数指令集和可选扩展指令集,用于浮点运算、矢量处理等功能。ARM 具有多个指令集,包括 ARMv7、ARMv8 和各种扩展,如用于 SIMD(单指令、多数据)操作的 NEON。

灵活性和定制性RISC-V 具有更大的灵活性和定制性,因为它是开源的,使设计人员能够根据自己的特定需求定制 ISA。ARM 虽然通过其扩展提供了一定程度的可配置性,但由于其专有性质而受到限制。

生态系统和行业ARM 拥有完善的生态系统,包括各种处理器、开发工具和来自不同供应商的支持。它广泛应用于移动设备、嵌入式系统,并越来越多地用于服务器和数据中心。RISC-V 的生态系统仍在发展,但已获得显著的关注,尤其是在学术界、研究界和初创公司。它也在物联网、边缘计算和一些服务器应用中受到关注。

性能和能效ARM 一直将能效作为重点关注领域,并占据市场主导地位。他们已经提供了专注于低功耗设备的能效和易用性的选项。此外,他们还提供适用于手机等高端应用的硬件浮点和DSP 扩展选项。

还恰好有大量的节能功能可用。其中一些包括动态电压和频率调整,允许处理器根据实时要求降低或增加芯片的电压和时钟。另一方面,RISC-V 允许更小的硅片占用空间,这将使其具有功耗优势。此外,固定的 32 位指令格式和 16 位压缩指令扩展可以帮助其实现更节能的代码实现。总体而言,虽然 RISC-V 提供了降低功耗设备的潜力,但它还没有达到这个水平。在 RISC-V 开始从 ARM 手中夺取市场份额之前,仍需要投入大量工作和时间。

成本和可访问性由于无需支付与 ARM 相关的许可费用,因此实施 RISC-V 内核对公司而言可能更具成本效益。ARM 内核通常需要支付许可费用,这会增加采用 ARM 架构的设备的生产成本。

指令编码RISC-V 使用定长指令编码,简化了解码逻辑。ARM 采用可变长度指令编码,允许更紧凑的代码,但解码逻辑可能更复杂。

FPGA厂商拥抱RISC-V

首先,不论Altera的niso还是Xilinx 的 microblaze甚至Lattice的LatticeMico8/32 都是基于RISC的,那为什么目前主流FPGA厂商基本都推出了基于RISC-V的硬核或者软核,个人认为这些厂商主要从以下几点考虑:

创新和发展

RISC-V处于刚起步阶段,其发展潜力很大,可以在降低功耗、性能、安全等方面进行优化,同时又可以保持与其他设计的兼容性。同时RISC-V还支持需要加速和特殊功能的情况下自定义指令。当然,其未来怎么发展无从得知,现在加入这个领域,能占有一席之地。

RISC软核的疲态

不论NISO还是MicroBlaze都已经发展了很多年了,经过多年的发展,目前两者都是比较稳定的,但是FPGA本身的结构决定了其性能也有局限性,这个情况下,Altera采用多核化,而Xilinx也从PowerPC“进化”到 ARM 硬核,才逐渐被市场接受。

生态

对于处理器来说,生态才是最重要的,FPGA中的软核一直不温不火的另一个原因就是生态。之前所有的厂商都在“自建生态”,导致FPGA平台更换后就需要针对新的平台进行系统性的学习和适应,而且目前市场上得主流生态是ARM,想找一个会Nios II或者MicroBlaze的专职人员基本难于登天,所以目前都是FPGA人员兼职开发软核(这并不是一个好的发展方向)。

还有一个问题,生态不行或者使用的人员少,就意味着没有成熟的案例可以参考或者学习,更不用说是移植了,同时遇到问题没有人能够讨论或者协助解决。所以对于软核的使用大家都会遇到“新手期”长的问题。目前接入一个免费开源未来可能成为主流的ISA架构领域还是很有必要的。

RISC-V架构的特点

除了上面说到得一些特点外,RISC-V还有一个特点就是-冻结式ISA。基本说明被冻结,并且已批准的可选扩展名也被冻结。由于ISA的稳定性,因此可以放心地将软件开发应用于RISC-V。为RISC-V编写的软件可能在所有类似的RISC-V内核上运行。未来有可能你在NISO-V上开发的软件可以很方便的移植到MicroBlaze-V上。

FPGA的定制性

我们都知道RISC-V指令集采用了结构化的指令集定义方式,这种方式的特点就是非常方便的实现指令的裁剪和扩展。我们都知道FPGA的优势之一就是可编程性,这就非常适合RISC-V的裁剪和扩展,可以搭建出实现任意指令的软核。这时候我们可以针对特定的应用(目前FPGA的定制化),定制合适的指令,就可以以最小的逻辑实现低功耗适合我们应用的处理器。比如我们只实现串口或者SPI接口等简单的应用我们就不需要很复杂的指令,而针对复杂的处理架构就需要多一点的指令。

战略意义

之前传出Arm和NVIDIA正在擦除“火花”,Intel和Arm的关系正在从微妙走向诡异。所以Intel对于RISC-V指令集肯定心有所动。网上还流传出Intel要收购基于RISC-V指令集的处理器IP提供商SiFive的传闻(后被证明不实),所以这些巨头的动向会影响整个行业的风向,这意味着想要在行业内不被淘汰,追随或者超越这些行业巨头的脚步未尝不是一个好的选择。

总结目前主流FPGA厂商都推出了基于RISC-V的软核,表明软核处理器依然有着它独特的作用和强大的生命力。未来发展可期,未来基于RISC-V的硬核SOC-FPGA也并不遥远~

商务合作  

有兴趣的客户可扫描下面二维码加工曾是微信(加的时候备注下公司名),立即获得原厂工程师技术支持。

如需了解更多,请联系我们

手机号:15800607785

邮件:sales@agmcn.com

扫码加官方工程师微信咨询。

FPGA跨时钟域处理3大方法

跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者的必修课。如果是还在校生,跨时钟域处理也是面试中经常常被问到的一个问题。

这里主要介绍三种跨时钟域处理的方法,这三种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单bit和多bit数据的跨时钟域处理,学会这三招之后,对于FPGA相关的跨时钟域数据处理便可以手到擒来。

这里介绍的三种方法跨时钟域处理方法如下:

打两拍;

异步双口RAM;

格雷码转换。

01方法一:打两拍

大家很清楚,处理跨时钟域的数据有单bit和多bit之分,而打两拍的方式常见于处理单bit数据的跨时钟域问题。

打两拍的方式,其实说白了,就是定义两级寄存器,对输入的数据进行延拍。

 

 

应该很多人都会问,为什么是打两拍呢,打一拍、打三拍行不行呢?

先简单说下两级寄存器的原理:两级寄存是一级寄存的平方,两级并不能完全消除亚稳态危害,但是提高了可靠性减少其发生概率。总的来讲,就是一级概率很大,三级改善不大。

data是时钟域1的数据,需要传到时钟域2(clk)进行处理,寄存器1和寄存器2使用的时钟都为clk。假设在clk的上升沿正好采到data的跳变沿(从0变1的上升沿,实际上的数据跳变不可能是瞬时的,所以有短暂的跳变时间),那这时作为寄存器1的输入到底应该是0还是1呢?这是一个不确定的问题。所以Q1的值也不能确定,但至少可以保证,在clk的下一个上升沿,Q1基本可以满足第二级寄存器的保持时间和建立时间要求,出现亚稳态的概率得到了很大的改善。

如果再加上第三级寄存器,由于第二级寄存器对于亚稳态的处理已经起到了很大的改善作用,第三级寄存器在很大程度上可以说只是对于第二级寄存器的延拍,所以意义是不大的。

02方法二:异步双口RAM

处理多bit数据的跨时钟域,一般采用异步双口RAM。假设我们现在有一个信号采集平台,ADC芯片提供源同步时钟60MHz,ADC芯片输出的数据在60MHz的时钟上升沿变化,而FPGA内部需要使用100MHz的时钟来处理ADC采集到的数据(多bit)。在这种类似的场景中,我们便可以使用异步双口RAM来做跨时钟域处理。

先利用ADC芯片提供的60MHz时钟将ADC 输出的数据写入异步双口RAM,然后使用100MHz的时钟从RAM中读出。对于使用异步双口RAM来处理多bit数据的跨时钟域,相信大家还是可以理解的。当然,在能使用异步双口RAM来处理跨时钟域的场景中,也可以使用异步FIFO来达到同样的目的。

03方法三:格雷码转换

我们依然继续使用介绍第二种方法中用到的ADC例子,将ADC采样的数据写入RAM时,需要产生RAM的写地址,但我们读出RAM中的数据时,肯定不是一上电就直接读取,而是要等RAM中有ADC的数据之后才去读RAM。这就需要100MHz的时钟对RAM的写地址进行判断,当写地址大于某个值之后再去读取RAM。

在这个场景中,其实很多人都是使用直接用100MHz的时钟与RAM的写地址进行打两拍的方式,但RAM的写地址属于多bit,如果单纯只是打两拍,那不一定能确保写地址数据的每一个bit在100MHz的时钟域变化都是同步的,肯定有一个先后顺序。如果在低速的环境中不一定会出错,在高速的环境下就不一定能保证了。所以更为妥当的一种处理方法就是使用格雷码转换。

对于格雷码,相邻的两个数间只有一个bit是不一样的(格雷码,在本文中不作详细介绍),如果先将RAM的写地址转为格雷码,然后再将写地址的格雷码进行打两拍,之后再在RAM的读时钟域将格雷码恢复成10进制。这种处理就相当于对单bit数据的跨时钟域处理了。

代码使用的是函数的形式,方便调用,op表示编码或者译码,WADDRWIDTH和RADDRWIDTH表示位宽。

商务合作  

有兴趣的客户可扫描下面二维码加工曾是微信(加的时候备注下公司名),立即获得原厂工程师技术支持。

如需了解更多,请联系我们

手机号:15800607785

邮件:sales@agmcn.com

扫码加官方工程师微信咨询。