FPGA的基础知识

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第一章FPGA概述1、数字集成电路的发展数字集成电路由最初的电子管、晶体管、中小规模集成电路、超大规模集成电路(VLSIC)发展到专用集成电路(ASIC),专用集成电路的出现降低了设计的成本、提高了可靠性、缩小了物理尺寸,但ASIC的设计周期长、改版投资大、灵活性差。例如0.18um的芯片,如果集成的芯片超过100万门,其成本超过200万元人民币以上,其风险是显而易见的。为了避免这种风险,就出现了可编程逻辑器件,包括现场可编程门阵列FPGA(FieldProgrammableGateArray)器件和复杂可编程逻辑器件CPLD(ComplexProgrammableLogicDevice),可编程逻辑器件能够在实验室中进行设计、更改、研制并马上投入使用。和ASIC相比,PLD的集成度更高,设计的个性化更浓,且具有可修改性,开发成本也较低。FPGA由Xilinx公司在1985年首家推出,采用CMOS-SRAM工艺制作。FPGA的结构一般分为三部分:可编程逻辑块CLB(configurableLogicBlock)、可编程I/O模块(I/OBlock)和可编程内部连线,FPGA出现后受到电子设计工程师的普遍欢迎,发展十分迅速。Xilinx、Altera和Actel等公司都提供高性能的FPGA芯片。2、FPGA技术的发展现状及发展趋势FPGA在1985年由Xilinx公司首家推出至今已有近30年的历史,不过过去十多年时间内FPGA都未受到太多的重视,原因是FPGA的功耗用电、电路密度、频率效能、电路成本等都不如ASIC,在这十多年时间内,FPGA多半只用在一些特殊领域,例如芯片业者针对新产品测试市场反应,即便初期产品未达量产规模,也能先以FPGA制成产品测试。或者有些芯片设计公司承接了小型的设计项目,在量产规模不足下也一样使用FPGA,或如政府、军方的特殊要求,不期望使用开放、标准性的芯片与电路,也会倾向使用FPGA。随着工艺技术的发展,FPGA在电路密度及频率效能方面逐渐逼近ASIC,而其独有的现场可编程特性是ASIC无法比拟的。目前FPGA的应用主要有三个方向:第一个方向,也是传统方向主要用于通信设备的高速接口电路设计,这一方向主要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。这类应用通常要求采用具备高速收发接口的FPGA,同时要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。第二个方向,可以称为数字信号处理方向或者数学计算方向。例如早在2006年美国就将FPGA用于金融数据分析,后来又出现将FPGA用于医学数据分析的案例。在这一方向要求FPGA设计者有一定的数学功底,能够理解并改进较为复杂的数学算法,并利用FPGA内部的各种资源使之变为实际的运算电路。第三个方向就是SOPC(可编程片上系统)方向。利用FPGA平台搭建一个嵌入式系统的底层硬件环境,然后由设计者在上面进行嵌入式软件开发。进入21世纪,随着集成工艺的发展,生产规模的提高及应用成本的下降,使FPGA的应用越来越广泛。比如说高效运算方面,将一些重复性的常用函数式改用FPGA的硬件线路执行,以硬件线路方式来执行运算,将比以前用纯软件方式执行快数十倍甚至数百倍的效能;再如在芯片开发时的逻辑功效验证方面,将新芯片的逻辑电路加载到FPGA,让FPGA充当新芯片来执行,不仅加速验证程序,也可以节省验证成本;此外,由于FPGA同时间可平行执行的数字信号运算量比DSP大,当数字信号运算的需求量足够大时,FPGA在价格效能比上足以远超DSP,因此可取代DSP进行数字信号处理。2随着新一代FPGA芯片工艺和设计方法的进步及新的应用领域和市场需求的变化,跨越器件、学科甚至跨公司的设计应用越来越多,针对不同领域优化的多平台FPGA以其革命性的能力促使FPGA技术加速进入更多的应用领域中,并大大缩短了产品的上市时间。随着器件复杂性的增加,设计人员需要更精密复杂的工具,定位在FPGA设计上的EDA工具也面临着更大的发展契机。第二章Verilog-HDL概述§2.1综述1、硬件描述语言(HDL)概述硬件描述语言(HardwareDescriptionLanguage)是硬件设计人员和电子设计自动化(EDA)工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用VerilogHDL或VHDL建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路,然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后,用于制造ASIC芯片或写入EPLD和FPGA器件中。在EDA技术领域中把用HDL语言建立的数字模型称为软核(SoftCore),把用HDL建模和综合后生成的网表称为固核(HardCore),对这些模块的重复利用缩短了开发时间,提高了产品开发率,提高了设计效率。随着PC平台上的EDA工具的发展,PC平台上的VerilogHDL和VHDL语言的综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。随着电子系统向集成化、大规模、高速度的方向发展,HDL语言将成为电子系统硬件设计人员必须掌握的语言。2、使用硬件描述语言的优点传统的用原理图设计电路的方法已逐渐消失,HDL语言正逐渐为人们广泛接受,这主要是由硬件描述语言的以下优点决定的。电路设计将继续保持向大规模和高复杂度发展的趋势。随着科学技术的大幅度提高,芯片的集成度和设计的复杂度都大大增加,芯片的集成密度基本超过百万个晶体管以上,为使如此复杂的芯片变得易于人脑的理解,用一种高级语言来表达其功能而隐藏具体实现的细节是很必要的,这也就是在大系统程序编写中高级程序设计语言代替汇编语言的原因。工程人员将不得不使用HDL进行设计,而把具体实现留给逻辑综合工具去完成。电子领域的竞争越来越激烈。提高逻辑设计的效率,降低设计成本,缩短设计周期将是电子企业所面临的主要课题。有效的HDL语言和主计算机仿真系统可以在设计完成之前检测到设计中的可能错误,这样就能够将设计错误的数目减少到最低限度,并使第一次投片便能成功地实现芯片的功能成为可能。探测各种设计方案将变成一件很容易、很便利的事情。因为只需要对描述语言进行修改,这比更改电路原理图原型要容易实现得多。3、HDL语言的主要特征HDL语言采用自顶向下的数字电路设计方法,主要包括三个领域五个抽象层次,如表2-1所示:3HDL语言是并发的,即具有在同一时刻执行多任务的能力。HDL语言有时序的概念,因此HDL除了可以描述硬件电路的功能外,还可以描述其时序要求。4、VerilogHDL与VHDL的比较(1)、VerilogHDL拥有广泛的设计群体,成熟的资源比VHDL丰富,容易掌握,而VHDL设计技术比较困难。(2)、VerilogHDL较适合算法级(Alogrithem)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)设计,而VHDL适合特大型的系统级(System)设计。§2.2VerilogHDL设计流程及设计方法简介1、设计流程(见图2-2-1)图2-2-1VerilogHDL设计流程注:1、总体方案是芯片级的;2、软件仿真用来检测程序上的逻辑错误;3、硬件仿真要根据需要搭成硬件电路,检查逻辑和时序上的错误。使用FPGA(现场可编程门阵列)速度比正常慢10倍以上,而且只能检查逻辑错误,不能检查时序错误。2、设计方法(1)、自下而上的设计方法自下而上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存在的基本单元出发的,设计树最末枝上的单元要么是已经制造出的单元,要么是其他项目已开发好的单元或者是可外购得到的单元。这种设计方法与只用硬件在模拟实验板上建立一个系统的步骤有密切联系。优点:设计人员对于用这种方法进行设计比较熟悉;实现各个子块电路所需的时间短。4缺点:一般来讲,对系统的整体功能把握不足;实现整个系统的功能所需的时间长,因为必须先将各个小模块完成。使用这种方法对设计人员之间相互进行协作有比较高的要求。2、自上而下的设计方法自上而下的设计是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的元件来实现为止。优点:在设计周期伊始就做好了系统分析;由于设计的主要仿真和调试过程是在高层次完成的,所以能够早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑仿真的工作量。自顶向下的设计方法方便了从系统划分和管理整个项目,使得几十万门甚至几百万门规模的复杂数字电路的设计成为可能。并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。缺点:得到的最小单元不标准;制造成本高。3、综合设计方法复杂数字逻辑电路和系统的设计过程通常是以上两种设计方法的结合。设计时需要考虑多个目标的综合平衡。在高层系统用自上而下的设计方法来实现,而在低层系统使用自下而上的方法从库元件或数据库中调用已有的单元设计。这种方法兼有两种设计方法的优点,而且可以使用矢量测试库进行测试。§2.3程序结构1、程序结构作为高级语言的一种,VerilogHDL语言以模块集合的形式来描述数字系统,其中每一个模块都有接口部分,用来描述与其它模块之间的连接。一般来说,一个文件就是一个模块,这些模块是并行运行的,通过高层模块来定义和调用的。VerilogHDL语言的模块结构如下:module模块名(端口列表);定义模块条目endmodule其中,模块名是模块唯一性的标识符;端口列表是输入、输出和双向端口的列表,这些端口用来与其它模块进行连接;定义一段程序用来指定数据对象为寄存器型、存储器型、线型以及过程块,诸如函数块和任务块;而模块条目可以是initial结构、always结构、连续赋值或模块实例。例1:二输入与非门的行为型描述如下:moduleNAND(in1,in2,out);inputin1,in2;outputout;//连续赋值语句assignout=~(in1&in2);5endmodulein1、in2和out端口指定为线型的。assign连续赋值语句不间断地监视等式右端变量,一旦其发生变化,右端表达式被重新赋值后结果传给等式左端进行输出。连续赋值语句用来描述组合电路,一旦其输入发生变动,输出也随之而改变。例2:由两个与非门构成一个与门的结构型描述如下:moduleAND(in1,in2,out);inputin1,in2;outputout;wirew1;NANDNAND1(in1,in2,w1);NANDNAND2(w1,w2,out);endmodule这个模块含有两个NAND模块实例,分别是NAND1和NAND2,通过内部连线w1连接起来。调用模块实例的一般形式为:模块名参数列表实例名(端口列表);在此,参数列表是传输到模块实例的参数值。2、时延信号在电路中传输会有传播延时,如线延时、器件延时等,时延就是对延时特性的HDL描述。例如在每个文件头均添加有如下语句:`timescale1ns/1ps其中,timescale是VerilogHDL提供的预编译处理命令,1ns表示时间单位是1ns,1ps表示时间精度是1ps。根据该命令,语句:assign#2B=A;表示B信号在2个时间单位,即2ns后得到A信号的值,如图2-2-2所示:图2-2-2B信号在2个时间单位后得到A信号的值3、三种建模方式以上两个实例分别用到了VerilogHDL语言的行为型描述方式和结构型描述方

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功