5000字!FPGA开发必须知道的五件事 FPGA(Field Programmable Gate Array 现场可编程门阵列)是一种可以重构电路的芯片,是一种硬件可重构的体系结构。它是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 鉴于其可编辑,更灵活;产品上市时间短,节省了ASIC流片周期;避免一次性工程费用,用量较小时具有成本优势等特点,FPGA现已广泛应用于原型验证、通信、汽车电子、工业控制、航空航天、数据中心等领域。
一、FPGA的技术发展历程 FPGA技术从发明到现在已经经历了三十多年的发展历程,其核心价值是可编程性和灵活性。随着工艺技术、系统设计和应用创新的不断进步,FPGA技术也在不断创新和集成,实现了从逻辑器件到系统平台的转变。 根据智慧芽研发情报库生成的技术路线图可见,在近十多年间,随着5G、人工智能、云计算等新技术的快速发展和广泛应用,对于FPGA等可编程逻辑器件的需求也越来越大,代表性技术详见下图: 为了解决系统设计问题,FPGA越来越多地整合系统模块:高速收发器、存储器、DSP处理单元和完整处理器。同时还进一步集成了重要控制功能:比特流加密与验证、混合信号处理、电源与温度监控以及电源管理等。这些特性在Xilinx的Zynq系列和Intel的Arria系列中得到了充分体现。同时,器件也推动了工具的发展。系统FPGA需要高效的系统编程语言,现可利用OpenCL和C语言以类似软件的流程来编程。FPGA正在越来越多地取代传统上ASIC,在小批量、个性化的产品市场方面具有明显优势。
二、FPGA的基本架构 自Xilinx公司于1984年发明了世界首款基于SRAM可编程技术的FPGA至今,FPGA的基本架构已经确定,主要包括以下几个部分: 可编程输入输出单元(IOB):IOB是FPGA与外部设备进行信号交互的接口,可以支持多种电气标准和协议,如LVCMOS、LVDS、PCIe等。IOB可以配置为输入、输出或双向模式,可以实现信号缓冲、锁存、延迟等功能。 可配置逻辑块(CLB):CLB是FPGA实现逻辑功能的基本单元,每个CLB由两个SLICE组成,每个SLICE包含4个LUT(查找表)、8个寄存器、3个MUX(多路选择器)和一个CARRY4(进位链)。LUT可以实现任意6输入1输出的布尔函数,也可以用作分布式RAM或移位寄存器。寄存器可以实现数据锁存和同步功能。MUX可以将LUT扩展为7输入或8输入的选择器。CARRY4可以实现高速的加法、减法、比较等算术运算。 嵌入式块RAM(BRAM):BRAM是FPGA内部提供的大容量存储资源,可以用作数据缓存、队列、FIFO等应用。BRAM有18K和36K两种规格,可以配置为不同的位宽和深度,支持单口或双口模式,也可以级联成更大的存储空间。 布线资源:布线资源是FPGA内部连接各种资源的网络,包括水平布线、垂直布线、长线、超长线等不同类型和长度的布线。布线资源通过开关矩阵(switch matrix)进行连接和分配,开关矩阵由可编程的开关组成,可以实现灵活的布线方案。 底层内嵌功能单元:底层内嵌功能单元是FPGA内部提供的一些特殊功能模块,如数字时钟管理(DCM)、相位锁定环(PLL)、延迟锁定环(DLL)、全局时钟网络(GCLK)、全局置位网络(GRST)等。这些功能单元可以实现时钟生成、分频、相位调整、延迟补偿、时钟分配、复位分配等功能,提高了FPGA的性能和稳定性。 内嵌专用硬核:内嵌专用硬核是FPGA内部集成的一些专用功能模块,如乘法器、除法器、DSP(数字信号处理器)、微处理器、PCIe控制器、以太网控制器等。这些硬核可以提供高效的计算和通信能力,降低了FPGA的逻辑资源消耗和功耗。
三、FPGA开发流程 FPGA的开发流程是利用EDA(Electronic Design Automation)开发软件和编程工具对FPGA芯片进行开发的过程,主要步骤如下: 1)功能定义/器件选型:这个步骤主要进行方案验证、系统设计和FPGA芯片选型等准备工作。根据任务要求,评估系统的指标和复杂度,对工作速度和芯片本身的资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。这个阶段往往会花费大量的时间,这个阶段之后一般已经完成了系统建模,功能划分,模块划分以及设计文档的撰写等工作。 2)设计输入:这个步骤是将划分好的各功能模块用硬件描述语言(HDL)表达出来,常用的硬件描述语言有Verilog HDL和VHDL。以后的教程中我们主要讲解如何使用Verilog HDL进行FPGA设计。设计输入方式有三种形式:IP核、原理图、HDL。IP核是实现一定功能的模块,可以形成一个项目。原理图是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画出原理图。HDL是利用文本描述设计,可以分为普通HDL和行为HDL。普通HDL有ABEL、CUR等 ,支持逻辑方程、真值表和状态机等表达方式, 主要用于简单的小型设计 。而在中大型工程中,主要使用行为HDL,其主流语言是Verilog HDL和VHDL 。这两种语言都是美国电气与电子工程师协会 (IEEE)的标准,其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。 3)功能仿真:这个步骤是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量 (即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。 更多精彩,请看下篇
|