文档视界 最新最全的文档下载
当前位置:文档视界 › FPGA验证简介

FPGA验证简介

FPGA验证简介
FPGA验证简介

这篇文章有EDA论坛deve所作:

第一编 验证的重要性

验证,顾名思义就是通过仿真、时序分析、上板调试等手段检验设计正确性的过程,在FPGA/IC开发流程中,验证主要包括功能验证和时序验证两个部分。为了了解验证的重要性,我们先来回顾一下FPGA开发的整个流程。FPGA开发流程和IC的开发流程相似,主要分为以下几个部分:

1)设计输入,利用HDL输入工具、原理图输入工具或状态机输入工具等把所要设计的电路描述出来;

2)功能验证,也就是前仿真,利用Modelsim、VCS等仿真工具对设计进行仿真,检验设计的功能是否正确;常用的仿真工具有Model Tech公司的ModelSim,Synopsys公司的VCS,Cadence公司的NC-Verilog 和NC-VHDL,Aldec公司的Active HDL VHDL/Verilog HDL等。仿真过程能及时发现设计中的错误,加快了设计进度,提高了设计的可靠性。

3)综合,综合优化是把HDL语言翻译成最基本的与或非门的连接关系(网表),并根据要求(约束条件)优化所生成的门级逻辑连接,输出edf和edn等文件,导给CPLD/FPGA厂家的软件进行实现和布局布线。常用的专业综合优化工具有Synplicity公司的synplify

/Synplify Pro、Amplify等综合工具,Synopsys公司的FPGA Compiler II综合工具(Synopsys公司将停止发展FPGA Express软件,而转到FPGA Compiler II平台),Exemplar Logic公司出品的LeonardoSpectrum 等综合工具。另外FPGA/CPLD厂商的集成开发环境也带有一些综合工具,如Xilinx ISE中的XST等。

4)布局布线,综合的结果只是通用的门级网表,只是一些门与或非的逻辑关系,与芯片实际的配置情况还有差距。此时应该使用FPGA/CPLD厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。这种实现与布局布线工具一般要选用所选器件的生产商开发的工具,因为只有生产者最了解器件内部的结构,如在ISE的集成环境中完成实现与布局布线的工具是Flow Engine。

5)时序验证,其目的是保证设计满足时序要求,即setup/hold time符合要求,以便数据能被正确的采样。时序验证的主要方法包括STA(Static Timing Analysis)和后仿真。在后仿真中将布局布线的时延反标到设计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真,能较好地反映芯片的实际工作情况。仿真工具与综合前仿真工具相同。

6)生成并下载BIT或PROM文件,进行板级调试。

在以上几个主要开发步骤当中,属于验证的有功能仿真和时序验证两个步骤,由于前仿真和后仿真涉及验证环境的建立,需要耗费大量的时间,而在STA中对时序报告进行分析也是一个非常复杂的事情,因此验

证在整个设计流程中占用了大量的时间,在复杂的FPGA/IC设计中,验证所占的时间估计在60%~70%之间。相比较而言,FPGA设计流程的其他环节由于需要人为干预的东西比较少,例如综合、布局布线等流程,基本所有的工作都由工具完成,设置好工具的参数之后,结果很快就可以出来,因此所花的时间精力要比验证少的多。

一般而言,在验证的几个内容中功能验证最受重视,研究讨论得最多,特别是现在FPGA/IC设计都朝向SOC(System On Chip,片上系统)的方向发展,设计的复杂都大大提高,如何保证这些复杂系统的功能是正确的成了至关重要的问题。功能验证对所有功能进行充分的验证,尽早地暴露问题,保证所有功能完全正确,满足设计的需要。任何潜在的问题都会给后续工作作带来难以极大的困难,而且由于问题发现得越迟,付出的代价也越大,这个代价是几何级数增长的。这里将以功能验证为主说明验证方法、工具、验证环境的建立。

做功能验证时,需要建立验证环境,以便对设计(DUT/DUV,Design Under Test/ Verification)施加特定的输入,然后对DUT的输出进行检查,确实其是否正确。在实际验证工作中,一般采用由TESTBENCH 和DUT(design under test)组成的Verification体系,如图1所示。

这是验证系统普遍适用的模型,Testbench为DUT提供输入,然后监视输出,从而判断DUT工作是否正确。注意到这是一个封闭的系统,没有输入也没有输出。验证工作的难度在于确定应该输入何种激励,相应的正确的输出应该是怎样的。下一篇我们看个具体的例子。

补充sta:

STA的意思是静态时序分析(Static Timing Analysis),做FPGA设计时是必须的一个步骤,事实上大家一般都已经做了这一步,我们在FPGA加约束、综合、布局布线后,会生成时序分析报告(在ISE中可以运行Timing Analyzer生成详细的时序报告), 设计人员会检查时序报告、根据工具的提示找出不满足setup/hold time的路径,以及不符合约束的路径,这个过程就是STA。

细致全面的STA可以保证设计的时序符合要求,只要代码robust(综合结果符合设计原意),可以省略后仿真。

功能仿真加STA(静态时序分析)并不能涵盖后仿真的作用,因为后仿真事实上有检验综合结果是否正确的作用,而功能仿真正确并不能保证综合结果和RTL设计人员的原意一样,综合器能正确综合的前提是RTL 代码编写具有良好的代码风格,例如if-else语句完整、case语句完整、组合逻辑敏感列表完整,只有在这样的条件下,综合结果才有保障,否则即使功能仿真正确,综合出来的电路的功能不一定正确。对于综合过程出现的偏差,后仿真可以发现,因为后仿真实质上门级仿真,可以同时检验功能和时序是否正确,后仿真验证能保证实现结果是正确的。后仿真的不足之处在于仿真速度比较慢,因此如果不想做后仿真,对FPGA设计来说,可以做功能仿真、综合后仿真和STA,对IC设计可以做功能仿真、形式验证和STA。 另外需要注意的是,加时序约束要完整,因为STA根据时序约束做检查,如果约束不正确,STA结果就不准确.经常会出现功能验证正确而后仿真结果不正确的问题,一般是由setup time/hold time不满足等时序问题引起的,说明在综合与布局布线过程中没有进行约束或者约束条件不完全,导致STA分析结果不准确、不完全。

例如设计存在两个时钟域,一个快、一个慢,附加约束时一般要最设计整体附加较松的约束,再对局部附加较紧的约束,然后再对慢时钟和快时钟之间的路径进行约束,这一般也是较紧的约束,如果忘了最后一部分约束,那么STA会认为设计人员对这部分路径没有要求,因而不分析这部分路径,这样即使这部分路径的延迟非常大,STA也不会提示错误,但是后仿真就会出现问题。

总而言之,对FPGA设计来说,只有正确地完成综合后仿真(以保证综合结果正确)和STA,才能省略后仿真,否则后仿真仍然是必要的.

读写task等内容,初始化部分主要完成复位信号、CLK信号等的初始化工作,读写task把读写、delay等操作模块化,方便使用。这里主要介绍一下验证initial块,也可以说是验证的主程序,如下所示。

initial begin

delay; //保证验证环境正确复位

writeburst128; //写入512个数,Full信号应该在写入511个数后变高

writeburst128;

writeburst128;

writeburst128;

read_enable = 1; //读出一个数,Full信号应该变低

writeburst128; //同时读写,检查FIFO操作是否正确

read_enable = 0; //读操作结束

endwriteburst; //写操作结束

delay;

readburst128; //连续读512次,Empty信号应在读出511个数后变高

readburst128;

readburst128;

readburst128;

endreadburst;

end

这段程序首先延迟5个时钟周期,等初始化完成之后再开始验证工作。验证时,首先写入512个数,使用波形观察器可以检查写入的过程是否正确,以及Full信号在写入511个数后是否变高;然后read_enable = 1,读出一个数,Full信号应该变低,这样写操作和Full信号的验证就基本完成了;程序接着也启动了写操作,由于此时read_enable仍然为高,即读写同时进行,这是对实际情况的模拟,可以对FIFO的功能进行更严格的验证;最后,连续读FIFO 512次,用波形观察器检查读操作是否正确,Empty信号是否在读出511个数后变高,如果这些操作都是正确的,那么FIFO的功能就基本正确了。

需要注意的一点是,以上的程序是不可综合的,因为不是RTL级描述,而是行为级描述(Behavioral Description)。行为级描述的特点是直接描述对象的功能,具有比较高的抽象层次,开发、运行速度都比RTL代码要会,因此testbench都是用行为级描述写的。关于行为级描述的特点、写法以后将有专门的章节论述。

这个testbench的特点是,输入激励由testbench产生,输出响应的检查人工完成,这样的testbench编写相对容易,可以加快开发速度,作为开发人员自己验证是非常好的选择。有些testbench能完成输入激励和输出检查,不用观察波形也能完成验证工作,这样的testbench具有更高的自动化程度,使用方便,可重复性好,当设计比较复杂而且团队中有专门的验证工程师时,一般会有验证工程师建立一套这样的testbench,用于验证开发工程师的RTL级代码,如果发现问题,开发工程师修改后在testbench再运行一次所花的时间非常少,开发复杂项目时这样做可以比用波形观察器节省很多时间。

3.总结

验证一般要通过写testbench实现,从《FPGA验证》第一篇我们知道,testbench要完成向DUT施加激励和检查DUT相应是否正确的功能,这就要求我们非常清楚待验证模块(DUT)的功能,这样才知道需要验证什么、如何施加激励和如何检查响应是否正确。写testbench时, 首先要列出需要验证的功能,让后再编写testbench,这样可以做到有的放矢,避免遗漏。

思考:

1.Testbench中有“write_enable = #2 1”一行代码,为什么要2ns的延迟?

第三篇 验证工具介绍

我们做FPGA/IC开发会用到很多工具,包括代码输入、仿真、综合、布局布线、时序分析等各种各样工具,熟悉这些工具是成功完成设计的关键,因为我们的设计思想需要通过这些工具来实现,只有清楚的知道工具的用法、如何设置参数、如果检查工具的输出结果,才能使设计者的想法变为显示,对验证来说也是如此。

验证的工具很多,有些是验证必不可少的,例如仿真器,有些工具可以代替人完成最繁琐的工作,并能提高功能验证的可信度,例如linting和代码覆盖率工具。这里我们介绍常用验证工具的特点和用途,以便为工具的使用提供参考。

1)代码检查工具

常用的代码检查工具有nlint等,nlint根据设计的RTL描述代码结构做静态分析,推断描述代码存在的逻辑错误,但无法决定描述代码是否能够现实设计要求的功能。代码检查工具可用于强制代码遵从编写规

范,由于代码检查工具工具是静态验证工具,因此运行速度快,可以节省时间。由于Verilog不是强类型语言,使用代码检查工具非常必要,可以检测race conditions 及数据宽度不匹配,可保证Verilog正确描述数据处理过程,避免造成数据的弃位及增位现象,这种错误通过仿真并不一定发现。因为verilog 语言的特点, 对Verilog描述的设计,Linting tool是一种有益的验证工具。因为VHDL 语言的特点,对VHDL使用Linting tool的作用不如对Verilog语言那么明显,但Linting tool还是能发现一些潜在的问题。

2)仿真器

仿真器是常用的验证工具,它通过忽略及简化设计的物理特性,对设计的实现进行模拟。仿真器通过执行RTL级的设计描述,模拟设计的物理实现,它无法确定设计真实的物理实现与设计描述之间的区别。仿真的结果取决于设计描述是否准确反映了设计的物理实现。仿真器不是一个静态工具,需要编写激励和检查输出响应。激励由模拟设计工作环境的testbench 产生,响应为仿真的输出,由设计者确定输出的有效性。

仿真器的类型分为3种类型,Event-driven Simulator(事件驱动仿真器)、Cycle-Based Simulator(基于周期的仿真器)、Co-Simulator(联合仿真器),分别介绍如下:

1.Event-driven Simulator

事件驱动仿真器是最常用的仿真器,例如modelsim/VCS等都是事件驱动仿真器,它将信号的变化定义为一个事件,该事件驱动仿真执行,事件驱动仿真器能准确地模拟设计的时序特征,可模拟异步设计。 2.Cycle-based simulator

Cycle-based simulator仿真器的特点是忽略设计的时序,假定所有flip_flop的setup和hold时间都满足要求,在一个时钟周期,信号仅更新一次,从而信号必须与时钟同步。仿真速度比事件驱动仿真器高。基于周期的仿真器的工作过程步骤是,首先编译电路,将组合逻辑压缩成单独的表达式,根据该表达式可确定flop的输入,然后执行仿真,遇到时钟的有效沿, flip_flop 的值被更新。基于周期的仿真器的缺点是不能仿真异步电路,不能进行验证设计的时序。

3.Co-Simulators

联合仿真器对同一设计各个部分,分别用不同的仿真器仿真,如即含有同步设计又含有异步设计的电路,可用Event-driven Simulator对异步设计仿真,用Cycle-based Simulator对异步设计仿真。联合仿真器中各个Simulator 的操作是locked-step的,类似于电路的pipeline 操作。其缺点是由于不同仿真器之间需要同步和相互通讯,Co-Simulators的仿真速度受到最慢Simulator的限制,因而影响仿真器的性能,而且在各仿真器传送的信息会产生多义性。

4.Hardware modeler

硬件模拟器创建一个物理芯片的逻辑模型,向仿真器提供该芯片的行为信息,芯片和仿真器的通信过是首先将物理芯片插入硬件仿真器,然后格式化来自仿真器的数据,作为该芯片的输入,最后将该芯片输出的数据,包含时序信息,送往仿真器。硬件模拟器可以提供很高的仿真速度,但是设备价格高昂。需要注意的是,硬件模拟器做的仍然是功能仿真,而不是时序仿真,因为芯片是降频运行的。

3)波形观察器

仿真调试的过程中波形观察器是必不可少的工具,它能提供信号状态和变化的详细信息,但是波形观察器不能用来判断一个设计是否通过验证,因为波形是不可重复的且无法用于递归仿真。

波形观察器的优点是可以观察仿真的整个过程,有利于设计及testbench 的诊断,缺点是由于要输出波形,影响了仿真的速度,因此应尽可能限制在波形图中显示的信号数量及时间长度。波形观察器的另一个作用

是波形比较,主要用于redesign,保证设计具有cycle-accurate的后向兼容性。在波形比较中,不能仅看表象,需仔细分析,确认波形之间存在的差别是有意义的。例如,有时我们仅关心波形transitions之间的相对位置,而不关心它的绝对位置。

以上是比较常用的验证工具,另外可能用到的验证工具有:形式验证工具、静态时序分析工具以及Vera、SpecmanE、SystemC等高级语言验证工具,这些工具在复杂的IC/FPGA设计中用得比较多。

Actel FPGA结构简介

Actel FPGA结构简介 这篇关于Actel不同种类设备系列的综述涵盖了在充足细节上的主要结构特征,以确保读者相当熟悉Actel的设备,从而能从本节其余部分获取尽量多的应用笔记。关于每个产品功能的细节同样可以用在个别设备的产品说明上。 FPGA结构要求 数字化系统设计正在变得越来越难。系统要求不断增加的复杂性和性能,但是上市时间的紧迫性依旧限制发展周期。系统花费也是一个重要的限制,因此必须要找到一个满足严格财政指标的解决办法。这些相互矛盾的需求要求(我们)找到一个最优化的数字逻辑设计解决办法,以同时满足容量、性能、和上市时间的要求。一个最优化的结构必须能平衡全部相互矛盾的要求。Actel的结构通过提供容量、性能、耗费和使用舒适度之间的合适平衡来满足了这些全部要求,这期间使用了一个在最优逻辑单元、丰富又相互联系的资源、有效的硅使用量和强力的软件设计工具这四者之间的革新组合。 Actel设备结构 一个Actel FPGA的基础结构与一个传统的门阵列的是非常相似的。这个设备的核心是由被用于执行被需求的逻辑门和存储元素的简单逻辑单元组成。这些逻辑单元与大量分割的路由磁道相互联系。与门阵列不同,片段长度是被预先定义和能与低阻抗交换元素联系来建立相互联系信号所要求的准确路由长度。周围的逻辑核心是;连着设备的I/O衰减器。这个接口是由负责传输和相互连接从设备核心发到FPGA输出衰减器间的信号的I/O模块组成。一个一般的Actel FPGA 的一个模型图表如图1所示。 Actel FPGA结构的主要元素是I/O单元,相互联系的资源,定时资源和逻辑单元。每个Actei FPGA系列都有一个稍稍不同的资源组合,但都是在不同耗费、性能、密集要求之间的优化。列表1显示每种Actel FPGA系列的能力。每种能力都在列表1下面的章节里面被精确解释。 逻辑模块描述 最优的逻辑模块应该为用户提供性能,效率,和要求执行申请的设计舒适度的正确组合。如果逻辑模块提供了性能而没有提供效率,那设计的花费和容量要求也许就不能达到。同样地,如果在性能消耗和使用舒服度的基础上花费和容量要求达到了,那么设备可能就不能使用。最优逻辑模块必须能严格平衡这些交易,以确保能达到设计者的一些冲突的目标。 简单逻辑模块 最初的Actel逻辑模块就是用于ACT1系列上的简单逻辑模块,如图2所示。它是以多

FPGA验证(介绍FPGA设计流程,STA,后仿真)

验证,顾名思义就是通过仿真、时序分析、上板调试等手段检验设计正确性的过程,在FPGA/IC 开发流程中,验证主要包括功能验证和时序验证两个部分。为了了解验证的重要性,我们先来回顾一下FPGA开发的整个流程。FPGA开发流程和IC的开发流程相似,主要分为以下几个部分: 1)设计输入,利用HDL输入工具、原理图输入工具或状态机输入工具等把所要设计的电路描述出来; 2)功能验证,也就是前仿真,利用Modelsim、VCS等仿真工具对设计进行仿真,检验设计的功能是否正确;常用的仿真工具有Model Tech公司的ModelSim,Synopsys公司的VCS,Cadence公司的NC-Verilog和NC-VHDL,Aldec公司的Active HDL VHDL/Verilog HDL等。仿真过程能及时发现设计中的错误,加快了设计进度,提高了设计的可靠性。 3)综合,综合优化是把HDL语言翻译成最基本的与或非门的连接关系(网表),并根据要求(约束条件)优化所生成的门级逻辑连接,输出edf和edn等文件,导给CPLD/FPGA厂家的软件进行实现和布局布线。常用的专业综合优化工具有Synplicity公司的synplify/Synplify Pro、Amplify等综合工具,Synopsys公司的FPGA Compiler II综合工具(Synopsys公司将停止发展FPGA Express软件,而转到FPGA Compiler II平台),Exemplar Logic公司出品的LeonardoSpectrum等综合工具。另外FPGA/CPLD厂商的集成开发环境也带有一些综合工具,如Xilinx ISE中的XST等。 4)布局布线,综合的结果只是通用的门级网表,只是一些门与或非的逻辑关系,与芯片实际的配置情况还有差距。此时应该使用FPGA/CPLD厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。这种实现与布局布线工具一般要选用所选器件的生产商开发的工具,因为只有生产者最了解器件内部的结构,如在ISE的集成环境中完成实现与布局布线的工具是Flow Engine。 5)时序验证,其目的是保证设计满足时序要求,即setup/hold time符合要求,以便数据能被正确的采样。时序验证的主要方法包括STA(Static Timing Analysis)和后仿真。在后仿真中将布局布线的时延反标到设计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真,能较好地反映芯片的实际工作情况。仿真工具与综合前仿真工具相同。 6)生成并下载BIT或PROM文件,进行板级调试。 在以上几个主要开发步骤当中,属于验证的有功能仿真和时序验证两个步骤,由于前仿真和后仿真涉及验证环境的建立,需要耗费大量的时间,而在STA中对时序报告进行分析也是一个非常复杂的事情,因此验证在整个设计流程中占用了大量的时间,在复杂的FPGA/IC设计中,验证所占的时间估计在60%~70%之间。相比较而言,FPGA设计流程的其他环节由于需要人为干预的东西比较少,例如综合、布局布线等流程,基本所有的工作都由工具完成,设置好工具的参数之后,结果很快就可以出来,因此所花的时间精力要比验证少的多。 一般而言,在验证的几个内容中功能验证最受重视,研究讨论得最多,特别是现在FPGA/IC 设计都朝向SOC(System On Chip,片上系统) 的方向发展,设计的复杂都大大提高,如何保证这些复杂系统的功能是正确的成了至关重要的问题。功能验证对所有功能进行充分的验证,

FPGA验证简介

这篇文章有EDA论坛deve所作: 第一编 验证的重要性 验证,顾名思义就是通过仿真、时序分析、上板调试等手段检验设计正确性的过程,在FPGA/IC开发流程中,验证主要包括功能验证和时序验证两个部分。为了了解验证的重要性,我们先来回顾一下FPGA开发的整个流程。FPGA开发流程和IC的开发流程相似,主要分为以下几个部分: 1)设计输入,利用HDL输入工具、原理图输入工具或状态机输入工具等把所要设计的电路描述出来; 2)功能验证,也就是前仿真,利用Modelsim、VCS等仿真工具对设计进行仿真,检验设计的功能是否正确;常用的仿真工具有Model Tech公司的ModelSim,Synopsys公司的VCS,Cadence公司的NC-Verilog 和NC-VHDL,Aldec公司的Active HDL VHDL/Verilog HDL等。仿真过程能及时发现设计中的错误,加快了设计进度,提高了设计的可靠性。 3)综合,综合优化是把HDL语言翻译成最基本的与或非门的连接关系(网表),并根据要求(约束条件)优化所生成的门级逻辑连接,输出edf和edn等文件,导给CPLD/FPGA厂家的软件进行实现和布局布线。常用的专业综合优化工具有Synplicity公司的synplify /Synplify Pro、Amplify等综合工具,Synopsys公司的FPGA Compiler II综合工具(Synopsys公司将停止发展FPGA Express软件,而转到FPGA Compiler II平台),Exemplar Logic公司出品的LeonardoSpectrum 等综合工具。另外FPGA/CPLD厂商的集成开发环境也带有一些综合工具,如Xilinx ISE中的XST等。 4)布局布线,综合的结果只是通用的门级网表,只是一些门与或非的逻辑关系,与芯片实际的配置情况还有差距。此时应该使用FPGA/CPLD厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。这种实现与布局布线工具一般要选用所选器件的生产商开发的工具,因为只有生产者最了解器件内部的结构,如在ISE的集成环境中完成实现与布局布线的工具是Flow Engine。 5)时序验证,其目的是保证设计满足时序要求,即setup/hold time符合要求,以便数据能被正确的采样。时序验证的主要方法包括STA(Static Timing Analysis)和后仿真。在后仿真中将布局布线的时延反标到设计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真,能较好地反映芯片的实际工作情况。仿真工具与综合前仿真工具相同。 6)生成并下载BIT或PROM文件,进行板级调试。 在以上几个主要开发步骤当中,属于验证的有功能仿真和时序验证两个步骤,由于前仿真和后仿真涉及验证环境的建立,需要耗费大量的时间,而在STA中对时序报告进行分析也是一个非常复杂的事情,因此验

FPGA芯片介绍

Arria II GX FPGA器件 高无忌 2012511009 Arria?II 器件系列专为易操作性而设计。经过成本优化的40-nm 器件系列体系结构具有低功耗、可编程逻辑引擎、以及一体化的收发器和I/O 等特性。像PhyscialInterface for PCIExpress?(PCIe?)、Ethernet 和DDR3 存储器这样的公共接口在您的设计中可以很容易地通过Quartus?II 软件、SOPC Builder 设计软件以及Altera 所提供的多种硬/ 软知识产权(IP) 解决方案来实现。对于要求收发器运行在高达6.375 Gbps的应用程序设计而言,Arria II GX FPGA 器件系列能够使设计变得更快更容易。 Arria II GX FPGA器件特性 Arria II GX FPGA器件的关键特性如下: ■40-nm 低功耗FPGA 引擎 ■自适应逻辑模块(ALM) 实现了业界最高的逻辑效率 ■八输入分段查找表(LUT) ■存储器逻辑阵列模块(MLAB),用于小型FIFO 的有效实现 ■高达550 MHz 的高性能数字信号处理(DSP) ■可配置成9 x 9 位、12 x 12 位、18 x 18 位和36 x 36 位全精度乘法器,以及 18 x 36 位高精度乘法器 ■硬编码的加法器、减法器、累加器和求和功能 ■通过Altera 的MATLAB 和DSP Builder 软件实现的完全集成的设计流程 ■最大系统带宽 ■多达24个基于全双工时钟数据恢复(CDR)的收发器,支持600 Mbps到6.375 Gbps 的数据速率 ■专用电路,支持用于常用串行协议的物理层功能,这些串行协议包括:PCIeGen1 与PCIe Gen2、Gbps Ethernet、Serial RapidIO?(SRIO)、通用公共无线电接口(CPRI)、OBSAI、SD/HD/3G/ASI 串 行数字接口(SDI), XAUI 和ReducedXAUI(RXAUI)、HiGig/HiGig+、SATA/ 串行附加SCSI(SAS)、GPON、SerialLite II、光纤通道、SONET/SDH、Interlaken、串行数据转换器(JESD204) 和SFI-5。■采用嵌入式硬核IP模块的完整PIPE协议解决方案,嵌入式硬核IP模块提供了物理层 和介质存取控制(PHY/MAC) 层,数据链路层和传输层功能性 ■针对高带宽系统接口进行的优化 ■多达726个用户I/O管脚分布在支持多种单端和差分I/O标准的多达20个模块化的 I/O bank 中 ■高速LVDS I/O 支持,具有串化器/ 解串器(SERDES) 和运行在150 Mbps 到 1.25 Gbps数据速率上的动态相位对齐(DPA) 电路 ■低功耗 ■体系结构的功耗降低技术 ■100 mW @ 3.125 Gbps的物理介质附加子层(PMA) 的典型功耗 ■集成到Quartus II 开发软件的功耗优化 ■高级实用性和安全特性 ■并行和串行配置选项

FPGA介绍

2.1 FPGA介绍。 2.1.1FPGA简介 FPGA的英文全称为 Field- Programmable Gate Array,其英文名称的含义是现场可编程门阵列。它具体指的是通过软件的手段去改变和配置器件内部连接结构和逻辑单元以完成指定设计功能的所有数字集成电路。它的发展经历了PAL,GAL,CPLD和其他可编程器件等历史。它的出现主要是用于专用集成电路领域中的一种特殊定制的电路。它的优点可以分为两部分:一部分是解决了原有的可编程器件的门电路数不足;另一部分是弥补了定制电路的限制性。FPGA是一种采用CMOS,SRAM工艺制造的单元结构的PLD器件,但同时又与与PLD的阵列结构形式不同,它是由多个独立的可以灵活地相互连接可编程逻辑单元组成,同时还具有高密度,高速度,灵活编程,并且可以重新配置等优点,这些优势的集结使得FPGA已成为当前主流的PLD器件之一。 FPGA的主要优点有: (1)可编程灵活性高; (2)开发周期短; (3)并行计算可编程灵活性高。 FPGA与ASIC的电路有所不同,ASIC是属于全定制电路而FPGA则是属于半定制电路。从理论上讲,如果FPGA提供的门电路可以满足,任何ASIC和DSP 的逻辑功能都可以通过编程来实现。此外,编程的内容也是可以根据需求重复进行更改,它不像ASIC设计的编程固化后不能在进行修改。因此,FPGA的应用也更灵活。在实际编程设计上,FPGA具有的可编程性能够使得开发人员使用软件升级包,通过软件升级包在芯片上运行,进行修改芯片原来的程序,从而避免了更换硬件芯片。更方便的是FPGA,也可以通过互联网进行远程升级。FPGA拥有的并行计算效率非常的高效。FPGA采用的是可以一次性执行多条指令的并行计算算法。而一般生活当中应用的ASIC,DSP甚至CPU芯片都采用的是串行计算方式,处理指令的方式只能是单独进行。如果在电路设计当中需要对ASIC和CPU 的运行速度需要加快,一般都是采用增加频率的方式,所以在设计当中ASIC和CPU的电路当中频率一般较高。虽然FPGA的通用频率都普遍较低,但对于一些特殊要求的设计,大量相对较低速的并行单元比一些高效率单元更有效率。而且,从其他方面来看,并没有所谓的“计算”存在于在FPGA芯片内部。处理的到最终结果的方式是和ASIC“电路直给”效果非常相似的,所以大大的提高了执行效率。 在以后的发展当中,如果FPGA价格低廉,它将取代大多数ASIC芯片成为主流。然而,现在由于成本、功耗和编程设计三个方面的制约,FPGA的发展仍旧

Xilinx FPGA 引脚功能详细介绍

XilinxFPGA引脚功能详细介绍 注:技术交流用,希望对大家有所帮助。 IO_LXXY_# 用户IO引脚 XX代表某个Bank内唯一的一对引脚,Y=[P|N]代表对上升沿还是下降沿敏感,#代表bank 号 2.IO_LXXY_ZZZ_# 多功能引脚 ZZZ代表在用户IO的基本上添加一个或多个以下功能。 Dn:I/O(在readback期间),在selectMAP或者BPI模式下,D[15:0]配置为数据口。在从SelectMAP读反馈期间,如果RDWR_B=1,则这些引脚变成输出口。配置完成后,这些引脚又作为普通用户引脚。 D0_DIN_MISO_MISO1:I,在并口模式(SelectMAP/BPI)下,D0是数据的最低位,在Bit-serial模式下,DIN是信号数据的输入;在SPI模式下,MISO是主输入或者从输出;在SPI*2或者SPI*4模式下,MISO1是SPI总线的第二位。 D1_MISO2,D2_MISO3:I,在并口模式下,D1和D2是数据总线的低位;在SPI*4模式下,MISO2和MISO3是SPI总线的MSBs。 An:O,A[25:0]为BPI模式的地址位。配置完成后,变为用户I/O口。 AWAKE:O,电源保存挂起模式的状态输出引脚。SUSPEND是一个专用引脚,AWAKE是一个多功能引脚。除非SUSPEND模式被使能,AWAKE被用作用户I/O。 MOSI_CSI_B_MISO0:I/O,在SPI模式下,主输出或者从输入;在SelectMAP模式下,CSI_B是一个低电平有效的片选信号;在SPI*2或者SPI*4的模式下,MISO0是SPI总线的第一位数据。 FCS_B:O,BPI flash 的片选信号。 FOE_B:O,BPI flash的输出使能信号 FWE_B:O,BPI flash 的写使用信号 LDC:O,BPI模式配置期间为低电平 HDC:O,BPI模式配置期间为高电平 CSO_B:O,在并口模式下,工具链片选信号。在SPI模式下,为SPI flsah片选信号。 IRDY1/2,TRDY1/2:O,在PCI设计中,以LogiCORE IP方式使用。 DOUT_BUSY:O,在SelectMAP模式下,BUSY表示设备状态;在位串口模式下,DOUT提供配置数据流。 RDWR_B_VREF:I,在SelectMAP模式下,这是一个低电平有效的写使能信号;配置完成后,如果需要,RDWR_B可以在BANK2中做为Vref。 HSWAPEN:I,在配置之后和配置过程中,低电平使用上拉。 INIT_B:双向,开漏,低电平表示配置内存已经被清理;保持低电平,配置被延迟;在配置过程中,低电平表示配置数据错误已经发生;配置完成后,可以用来指示POST_CRC状态。 SCPn:I,挂起控制引脚SCP[7:0],用于挂起多引脚唤醒特性。 CMPMOSI,CMPMISO,CMPCLK:N/A,保留。 M0,M1:I,配置模式选择。M0=并口(0)或者串口(1),M1=主机(0)或者从机(1)。 CCLK:I/O,配置时钟,主模式下输出,从模式下输入。 USERCCLK:I,主模式下,可行用户配置时钟。 GCLK:I,这些引脚连接到全局时钟缓存器,在不需要时钟的时候,这些引脚可以作为常规用户引脚。

FPGA各管脚简介

用户I/O:不用解释了。 配置管脚: MSEL[1:0] 用于选择配置模式,比如AS、PS等。 DATA0 FPGA串行数据输入,连接到配置器件的串行数据输出管脚。 DCLK FPGA串行时钟输出,为配置器件提供串行时钟。 nCSO(I/O)FPGA片选信号输出,连接到配置器件的nCS管脚。 ASDO(I/O)FPGA串行数据输出,连接到配置器件的ASDI管脚。 nCEO 下载链期间始能输出。在一条下载链中,当第一个器件配置完成后,此信号将始能下一个器件开始进行配置。下载链上最后一个器件的nCEO悬空。 nCE 下载链器件始能输入,连接到上一个器件的nCEO,下载链的最后一个器件nCE接地。 nCNFIG 用户模式配置起始信号。 nSTATUS 配置状态信号。 CONF_DONE 配置结束信号。 电源管脚: VCCINT 内核电压。130nm为1.5V,90nm为1.2V VCCIO 端口电压。一般为3.3V,还可以支持多种电压,5V、1.8V、1.5V VREF 参考电压 GND 信号地 时钟管脚: VCC_PLL PLL管脚电压,直接连VCCIO

VCCA_PLL PLL模拟电压,截止通过滤波器接到VCCINT上 GNDA_PLL PLL模拟地 GNDD_PLL PLL数字地 CLK[n] PLL时钟输入 PLL[n]_OUT PLL时钟输出 特殊管脚: VCCPD 用于寻则驱动 VCCSEL 用于控制配置管脚和PLL相关的输入缓冲电压 PROSEL 上电复位选项 NIOPULLUP 用于控制配置时所使用的用户I/O的内部上拉电阻是否工作 TEMPDIODEN 用于关联温度敏感二极管 ******************************************************************************** ****************************************************1/1.I/O, ASDO 在AS 模式下是专用输出脚,在PS 和JTAG 模式下可以当I/O 脚来用。在AS 模式下,这个脚是CII 向串行配置芯片发送控制信号的脚。也是用来从配置芯片中读配置数据的脚。在AS 模式下,ASDO 有一个内部的上拉电阻,一直有效,配置完成后,该脚就变成三态输入脚。ASDO 脚直接接到配置芯片的ASDI 脚(第5 脚)。 2/2.I/O,nCSO 在AS 模式下是专用输出脚,在PS 和JTAG 模式下可以当I/O 脚来用.在AS 模式下,这个脚是CII 用来给外面的串行配置芯片发送的使能脚。在AS 模式下,ASDO 有一个内部的上拉电阻,一直有效。这个脚是低电平有效的。直接接到配置芯片的/CS 脚(第1 脚)。 3/3.I/O,CRC_ERROR 当错误检测CRC 电路被选用时,这个脚就被作为CRC_ERROR 脚,如果不用默认就用来做I/O。但要注意,这个脚是不支持漏极开路和反向的。当它作为CRC_ERROR 时,高电平输出则表示出现了CRC 校验错误(在配置SRAM 各个比特时出现了错误)。CRC 电路的支持可以在setting 中加上。这个脚一般与nCONFIG 脚配合起来用。即如果配置过程出错,重新配置. 4/4.I/O,CLKUSR

FPGA的配置引脚说明

FPGA是基于SRAM编程的,编程信息在系统掉电时会丢失,每次上电时,都需要从器件外部的FLASH或EEPROM中存储的编程数据重现写入内部的SRAM中。FPGA在线加载需要有CPU的帮助,并且在加载前CPU已经启动并工作。 FPGA的加载模式主要有以下几种: 1).PS模式(Passive Serial Configuration Mode),即被动串行加载模式。 PS模式适合于逻辑规模小,对加载速度要求不高的FPGA加载场合。在此模式下,加载所需的配置时钟信号CCLK由FPGA外部时钟源或外部控制信号提供。另外,PS加载模式需要外部微控制器的支持。 2).AS模式(Active Serial Configuration Mode),即主动串行加载模式。 在AS模式下,FPGA主动从外部存储设备中读取逻辑信息来为自己进行配置,此模式的配置时钟信号CCLK由FPGA内部提供。 3).PP模式(Passive Parallel Configuration Mode),即被动并行加载模式。 此模式适合于逻辑规模较大,对加载速度要求较高的FPGA加载场合。PP 模式下,外部设备通过8bit并行数据线对FPGA进行逻辑加载,CCLK信号由外部提供。 4).BS模式(Boundary Scan Configuration Mode),即边界扫描加载模式。 也就是我们通常所说的JTAG加载模式。所有的FPGA芯片都有三个或四个加载模式配置管脚,通过配置MESL[0..3]来选取不同的加载模式。首先来介绍下PS加载模式,各个厂商FPGA产品的PS加载端口定义存在一些差异,下面就对目前主流的三个FPGA厂商Altera, Xilinx,Lattice的PS加载方式进行一一介绍。Altera公司的FPGA产品PS加载接口如下图所示。 1).CONFIG_DONE:

FPGA的结构与组成

1.2.1 FPGA工作原理与简介 如前所述,FPGA是在PAL、GAL、EPLD、CPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。 由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。 根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。 查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有 4位地址线的的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。 下面给出一个4与门电路的例子来说明LUT实现逻辑功能的原理。 例1-1:给出一个使用LUT实现4输入与门电路的真值表。 表1-1 4输入与门的真值表 从中可以看到,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。 由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编程输入/输出单元、基本可

3.FPGA的作用与简介

入门教 程 行执行和闪电般的快速闭环控制性能。本文给出了关于可重配置的基于FPGA 的硬件目标平台简介、FPGA 技术的优势及基于LabVIEW 开发FPGA 测控系统的典型应用。 图1.NI CompactRIO 是一个小而坚固的基于FPGA 的控制系统 1. 什么是FPGA ? 一个FPGA 是一种包含有一个可重配置的门阵列逻辑电路矩阵的设备。通过配置,FPGA 的内部电路以一定方式相连接,从而创建了软件应用的一个硬件实现。与处理器不同,FPGA 使用专用硬件进行逻辑处理,而不具有操作系统。FPGA 在本质上是完全并行的,故不同的处理操作不必竞争相同的资源。因此,增加额外的处理时,应用某一部分的性能不会受影响。而且,多个控制循环可以以不同的速率在单个FPGA 设备上运行。基于FPGA 的控制系统可以加强关键互锁逻辑,也可以通过设计防止操作人员强夺I/O 。然而,不同于拥有固定硬件资源的硬连接的印制电路板(PCB )设计,基于FPGA 的系统可以完全重新连接其内部电路,以支持控制系统在现场部署后可以重新配置。FPGA 设备提供了专用硬件电路所特有的性能与可靠性。 单个FPGA 可以通过在单个集成电路(IC )芯片上集成数百万个逻辑门以代替数以千计的分立元件。一个FPGA 芯片的内部资源包括一个被I/O 组块环围的可配置逻辑组块(CLB )矩阵。在 FPGA 矩阵内,信号通过可编程的互连开关和连线传递。

入 门 教 程 图2.FPGA芯片的内部构造 2. 使用FPGA的五大优势 A.性能 传统的数字信号处理器(DSP)都基于串行执行指令的方式来完成数字信号处理, 但FPGA可以发挥其并行处理的优势,以超过DSP几倍甚至几十倍上百倍的速度 完成数字信号处理。 B.上市时间 在新产品上市时间即是企业生命的时代,FPGA技术以其灵活性可以大大缩短产品 的上市时间,提高产品的市场竞争力。通过FPGA技术您可以很快的将自己的一 个想法或某个课题放到硬件上进行验证,而不用像传统的ASIC技术那样需要经过 很长的一个处理周期。同时,与FPGA配套的开发软件都提供了强大的仿真功能, 可以在脱离硬件的条件下完成功能仿真和时序仿真,不用硬件也可以极大的提高成 功率,对于产品的更新换代起到了很大的推动作用。 C.成本 传统的ASIC设计是一个非重复性工程费用投资的过程,这个成本要远远超过基于 FPGA的硬件解决方案。对于设备制造商来说,功能一旦确定整个ASIC的硬件也 就确定,但对于终端用户来说,他们希望硬件具有传统的硬件功能。最好的方法就 是使用硬件设备具有可编程功能,这样在实际系统需求中用户可以根据自己的需要 不断的改进系统性能。而对于传统的ASIC来说这个成本是不可估量的,正是这样 的成本优势吸引越来越多的用户转向FPGA设计。 D.可靠性 尽管基于FPGA的系统设计是通过软件提供工具提供的编程环境来实现的,但其 实际运行是直接基于硬件实现。而基于处理器的系统往往经过数层抽象后才能帮助 用户实现设计任务,通过多处理器核实现资源共享。对于很多既定的处理器核,每

相关文档