CPLD和FPGA的编程和配置都有哪些方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPLD和FPGA的编程和配置都有哪些方式相关的知识,希望对你有一定的参考价值。

对CPLD/FPGA芯片进行编程配置的方式有多种
1、按使用计算机的通讯接口划分,有:
(1)串口下载(BitBlaster或MasterBlaster)、
(2)并口下载(ByteBlaster)、
(3)USB接口下载(MasterBlaster或APU)等方式。

2、若按使用的CPLD/FPGA器件划分,有:
1)CPLD编程(适用于片内编程元件为EPROM、E2PROM 和闪存的器件);
2)FPGA下载(适用于片内编程元件为SDRAM的器件)

3、按CPLD/FPGA器件在编程下载过程中的状态划分,有:
1)主动配置方式。
在这种配置方式下,由CPLD器件引导配置操作的过程并控制着外部存贮器和初始化过程;
2)被动配置方式。
在这种配置方式下,由外部CPU或控制器(如单片机)控制配置的过程。
CPLD/FPGA器件按照正常使用和下载的不同过程其工作状态分为三种:
1、用户状态(User mode)
即电路中CPLD器件正常工作时的状态;
2、配置状态(Configuration mode )
指将编程数据装入CPLD/FPGA器件的过程,也可称之为下载状态;
3、初始化状态(Initialization)
此时CPLD/FPGA器件内部的各类寄存器复位,
让I/O引脚为使器件正常工作作好准备。
ALTERA公司的开发系统MAX+PLUSⅡ可以生成多种格式的编程数据文件。对于不同系列器件, 所能生成的编程/配置文件类型有所不同, 但大致可有下面几种类型:

①SRAM Object格式(.sof):
SOF格式文件用于FLEX器件的Bit Blaster或Byteblaster被动配置方式。
MAX+PLUS II编译综合工具会在编译综合过程中自动为FLEX系列器件生成SOF数据格式文件, 其它数据格式均可由该种格式转化而成。

②Programming Object格式(.pof):
POF格式文件用于对MAX系列器件编程配置, 也可以用于对采用EPROM配置方式的FLEX器件进行配置。POF文件也是由MAX+PLUS II软件在编译综合过程中自动产生。

③十六进制格式(.hex):
HEX格式文件是使用第三方编程硬件对并行EPROM编程的数据文件,从而可以将并行EPROM作为数据源, 用微处理器对FLEX器件进行被动串行同步(PS)配置或被动串行异步(PSA)配置。

④ASCII码文本格式(.ttf):
TTF格式文件适用于被动串行同步(PS)配置和被动串行异步(PSA)配置类型, 它在配置数据之间以逗号分隔。

编程一般会用:Verilog和VHDL两种来完成,也用用电路直接搭的,那种比较高端,需要很丰富的设计经验,和对数字电路的了解
参考技术A 看你用哪个公司的片子了,每个公司都有自己的集成开发环境。
以上回答你满意么?

全面解析FPGA的基础知识

1、FPGA 的简介

(1)FPGA(Field- Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展出来的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 (2)FPGA 普遍用于实现数字电路模块,用户可对 FPGA 内部的逻辑模块和 I/O 模块重新配置,以实现用户的需求。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。FPGA 如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。 (3)FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块 RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。FPGA 的设计流程包括算法设计、代码仿真以及设计、板级调试,设计者以及实际需求建立算法架构,利用 EDA 建立设计方案或 HD 编写设计代码,通过代码仿真保证设计方案符合实际要求,最后进行板级调试,利用配置电路将相关文件下载至 FPGA 芯片中,验证实际运行效果。

2、FPGA 整体结构

(1)FPGA 架构主要包括可配置逻辑块 CLB(Configurable Logic Block)、输入输出块 IOB(Input Output Block)、内部连线(Interconnect)和其它内嵌单元四个部分。 (2)CLB 是 FPGA 的基本逻辑单元。实际数量和特性会依器件的不同而改变,但是每个 CLB 都包含一个由 4 或 6 个输入、若干选择电路(多路复用器等)和触发器组成的可配置开关矩阵。 (3)FPGA 可支持许多种 I/O 标准,因而可以为系统设计提供理想的接口桥接。FPGA 内的 I/O 按 bank 分组,每个 bank 能独立支持不同的 I/O 标准。目前最先进的 FPGA 提供了十多个 I/O bank,能够提供灵活的 I/O 支持。 (4)CLB 提供了逻辑性能,灵活的互连布线则负责在 CLB 和 I/O 之间传递信号。布线有几种类型,从设计用于专门实现 CLB 互连(短线资源)、到器件内的高速水平和垂直长线(长线资源)、再到时钟与其它全局信号的全局低 skew 布线(全局性专用布线资源)。 (5)内嵌硬核单元包括 RAM、DSP、DCM(数字时钟管理模块)及其它特定接口硬核等,FPGA 器件内部结构如下示意图。

3、FPGA 开发流程

(1)FPGA 的设计流程就是利用 EDA 开发软件和编程工具对 FPGA 芯片进行开发的过程。FPGA 的开发流程一般如下图所示,包括功能定义/器件选型、设计输入、功能仿真、逻辑综合、布局布线与实现、编程调试等主要步骤。 (2)功能定义/器件选型:在 FPGA 设计项目开始之前,必须有系统功能的定义和模块的划分,另外就是要根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本、以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。 (3)设计输入:设计输入指使用硬件描述语言将所设计的系统或电路用代码表述出来。最常用的硬件描述语言是 Verilog HDL。 (4)功能仿真:功能仿真指在逻辑综合之前对用户所设计的电路进行逻辑功能验证。仿真前,需要搭建好测试平台并准备好测试激励,仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。常用仿真工具有 Model Tech 公司的 ModelSim、Sysnopsys 公司的 VCS 等软件。 (5)逻辑综合:所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供 FPGA 布局布线软件进行实现。就目前的层次来看,综合优化是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。 (6)布局布线与实现:布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告);实现是将综合生成的逻辑网表配置到具体的 FPGA 芯片上。由于只有 FPGA 芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。 (7)编程调试:设计的最后一步就是编程调试。芯片编程是指产生使用的数据文件(位数据流文件,Bitstream Generaon),将编程数据加载到 FPGA 芯片中;之后便可进行上板测试。最后将 FPGA 文件(如.bit 文件)从电脑下载到单板上的 FPGA 芯片中。 ++目前 FPGA 的两大主要厂商为 xilinx 和 altera。++ (1)Xilinx:公司网址为:http://www.xilinx.com/。FPGA 市场的龙头老大,市场份额接近 50%,其主要产品包括:Sparten 系列、Virtex 系列、Artix 系列、Kintex 系列、Virtex 系列等。开发工具:其第六代及以前的产品的开发工具为 ISE ,从第七代产品开始,已全部转移到 vivado 平台。 (2)Altera:公司网址为:http://www.altera.com/,FPGA 市场的二当家,市场份额 40%以上,2015 年 6 月被 Intel 以 167 亿美元收购。主要产品包含:Max 系列、Cyclone 系列、Arria 系列、Stratix 系列等。主要开发工具:Quartus

4、FPGA 内部结构

(1)XC6SLX4-2TQG144 芯片 (2)输入输出块 (3)ILOGIC、OLOGIC、IODELAY部分 (4)Slice (5)block ram资源 (6)时钟管理单元 (7)时钟驱动

5、FPGA 专业术语

  • ASIC,通常所说的 ASIC 主要指门阵列、嵌入式阵列、标准单元 ASIC、结构化 ASIC 等。
    
  • ASSP,相对于 ASIC 这种为特定顾客定制的 LSI,ASSP 是面向某一特定领域或应用的通用 LSI。
    

-CPLD,复杂可编程逻辑器件 -DLL,延迟锁定环 -IP,设计资产 -LUT,查找表 -LVDS,低电压差分信号 -PLD,可编程逻辑器件 -PLL,复杂可编程逻辑器件 -SerDes,串行器-解串器

6、范例

==八输入与门== 逻辑表达式 y = a[7] & a[6] & a[5] & a[4] & a[3] & a[2] & a[1] & a[0]; 其电路图为: Verilog 代码: 语法说明: a[7]:可将一个多位宽信号中的一位或多位以此种方式进行单独处理 & :按位与、归并与操作,如该操作符只有一个操作数时,则将该操作数的所有位进行相与操作,可以实现与注释部分相同的功能,但写法更简洁。

以上是关于CPLD和FPGA的编程和配置都有哪些方式的主要内容,如果未能解决你的问题,请参考以下文章

iMPACT学习记录

需要cpld和fpga的详细说明

CPLD和FPGA的区别

什么是FPGA CPLD?

问一个关于FPGA配置的问题:书上说,FPGA上电后,nCONFIG管脚被拉低,请问是怎么拉低的?这是一个输入管脚

什么叫FPGA的配置模式?FPGA的器件有哪几种配置模式?每一种配置模式有什么特点?FPGA的配置流程如何?