FPGA技术教程(通俗易懂).ppt
《FPGA技术教程(通俗易懂).ppt》由会员分享,可在线阅读,更多相关《FPGA技术教程(通俗易懂).ppt(167页珍藏版)》请在三一办公上搜索。
1、FPGA技术,第二章 CPLD/FPGA概述,第一章 可编程逻辑器件发展历程,第三章 硬件描述语言VHDL/Verilog HDL简介,第四章 Quartus II的Verilog HDL建模与仿真,第一章 可编程逻辑器件的发展历程,一、可编程逻辑器件的发展历程 二、可编程逻辑器件的分类,早期,FPGA,现在,一、可编程器件大致的发展过程如下:1)20世纪70年代,出现了熔丝编程的PROM 和PLA器件。70年代末,AMD 公司对PLA进行了改进,推出了PAL器件。2)20世纪80年代初,Lattice(莱迪思)公司发明了电可擦写的,比PAL更灵活的GAL通用阵列逻辑器件。3)20世纪80年代
2、中期,Xilinx公司提出现场可编程概念,生产出了世界上第一片FPGA器件。FPGA是改变内部连接的布线来编程。4)20世纪80年代末,Lattice公司又提出在系统可编程概念(ISP),并推出了一系列具有在系统可编程能力的CPLD器件。CPLD的设计是修改具有固定内部连接电路的逻辑功能来编程。5)20世纪90年代后期,可编程集成电路技术飞速发展,器件的可用逻辑门数超过了百万门,并出现了内嵌复杂功能模块(如加法器,乘法器,RAM,CPU核,DSP核等)的SOPC。,二、可编程器件的分类 1.按集成度来划分,分为高密度和低密度PLD器件。1)集成度小于1000 门/每片的LDPLD,又称简单PL
3、D。PROM(可编程只读存储器)PLA(可编程逻辑阵列,Programmable Logic Array)PAL(可编程阵列逻辑,Programmable Array Logic)GAL(通用阵列逻辑,Generic Array Logic)2)集成度大于1000门/每片的HDPLD FPGA(Field Programmable Gate Array)CPLD(Complex Programmable Logic Device),2.从结构上可分为:1)乘积项结构器件:为“与或”阵列结构,大部分简单PLD和 CPLD都属于这个范畴;2)查找表结构器件:由查找表组成可编程门,再构成阵列形式,F
4、PGA属于此类器件。,3.从编程工艺上分为:1)熔丝(Fuse)型器件:编程过程就是根据设计的熔丝图文件来烧断对应的熔丝,来达到编程的目的。编程后即使系统断电,它们中存 储的编程信息不会丢失。2)反熔丝(Antifuse)型器件:由Actel公司推出,在编程处通过击穿漏层使得两点之间获得导通。反熔丝PLD抗辐射,耐高低温,功耗低,速度快,在军品和宇航上有较大优势。前两种都属OTP器件。3)EPROM型:紫外线擦除电可编程逻辑器件,它用较高的编程电压进行编程,当需要再次编程时,用紫外线擦除。前三种较少使用。4)EEPROM型:电可擦除可编程逻辑器件。CPLD采用此编程工艺。5)SRAM型:SRA
5、M查找表结构的器件,大部分的FPGA采用此编程工艺。断电后编程信息会丢失,每次上电时,需从器件外部存储器将编程数据重新写入SRAM中。允许无限次编程。6)Flash(Fastflash)型:即闪存技术,由Actel公司推出。采用此编程工艺的器件,可以实现多次可编程,也可以做到掉电后不需要重新配置。CPLD采用此编程工艺。,第二章 CPLD/FPGA概述,一、简单的PLD 结构 二、FPGA/CPLD的结构 三、FPGA/CPLD的基本原理 四、FPGA的设计方法 五、FPGA设计流程,二维的逻辑块阵列,构成了PLD器件的逻辑组成核心。,输入输出块:连接逻辑块的互连资源,连线资源:由各种长度的连
6、线线段组成,其中也有 一些可编程的连接开关,它们用于逻辑块之间、逻辑块输入输出块之间的连接,一.简单PLD的结构 任何组合函数都可以表示为与-或表达式:如 F=AB+BCD。PLD由“与门阵列”和“或门阵列”加上输入输出电路构成。早期的PLD有些是“与”阵列可编程,有些是“或”阵列可编程,还有些是“与”和“或”阵列都可编程。,1.输入缓冲器 2.PLD的互补输入 3.PLD中与阵列表示,4.PLD中或阵列的表示 5.阵列线连接表示,编程前 编程后 6.PROM的PLD阵列图,二、FPGA/CPLD的结构 FPGA/CPLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的:1.逻辑阵列
7、块 LAB(Logic Array Block)或CLB(Configurable Logic Block),构成了PLD器件的逻辑组成核心。2.输入输出块 IOB(I/O Block)3.连接逻辑块的可编程连线阵列 PIA(Programmable Interconnect Array)或互连资源 IR(Interconnect Resources).它由各种长度的连线线段组成,也有一些可编程的连接开关,用于逻辑块之间、逻辑块与输入输出块之间的连接。,规模大,能够完成任何数字逻辑的功能,实现系统集成在投片前验证设计的正确性,开发成本低修改设计而不用改动硬件电路,开发周期短减少PCB面积,提高
8、系统可靠性,PLD(CPLD/FPGA)的优点:,CPLD和FPGA的区别,制造工艺不同,实现功能不同,FPGA:查找表技术,SRAM工艺,CPLD:乘积项技术,Flash/EEPROM工艺,FPGA:时序逻辑电路,CPLD:组合逻辑电路,三、CPLD/FPGA基本原理,基于查找表的PLD的基本结构及逻辑实现原理,基于乘积项的PLD的基本结构及逻辑实现原理,基于乘积项的PLD的基本结构及逻辑实现原理,这种FPGA的结构可分为三块:宏单元(Macrocell)、可编程连线(PIA)和I/O控制块。宏单元是器件的基本结构,由它来实现基本的逻辑功能;可编程连线负责信号传递,连接所有的宏单元;I/O控
9、制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。,INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2是全局时钟、清零和输出使能信号,这几个信号有专用连线与器件中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。,宏单元具体结构,与或阵列,每一个交叉点都是可编程熔丝,导通实现与逻辑,“或”阵列,可编程D触发器,乘积项结构的逻辑实现原理,f=f1+f2=A*C*!D+B*C*!D,查找表(Look-Up-Table)的原理和结构,查找表LUT实质上是一个RAM,n位地址线可以配置为n1的RAM。当用户描述了一个逻辑电路后,
10、软件会计算所有可能的结果,并写入RAM。每一个信号进行逻辑运算,就等于输入一个地址进行查表,找出地址对应的内容,输出结果,Xilinx Spartan-II内部结构,Altera的FLEX/ACEX等芯片的内部结构,查找表结构的逻辑实现原理,f=(A+B)*C*!D=A*C*!D+B*C*!D,选择FPGA还是CPLD?,CPLD组合逻辑的功能很强,一个宏单元就可以分解十几个甚至2030多个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因此,CPLD适合用于设计译码等复杂组合逻辑。但FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,CPL
11、D一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于CPLD。,四、FPGA的设计方法,FPGA的常用设计方法包括“自顶向下”和“自下而上”,目前大规模FPGA设计一般选择“自顶向下”的设计方法。,所谓“自顶向下”设计方法,简单地说,就是采用可完全独立于芯片厂商及其产品结构的描述语言,在功能级对设计产品进行定义,并结合功能仿真技术,以确保设计的正确性,在功能定义完成后,利用逻辑综合技术,把功能描述转换成某一具体结构芯片的网表文件,输出给厂商的布局布线器进行布局布线。布局布线结果还可反标回同一仿真器,进行包括功能和时序的后验证,以保证布局布线所带
12、来的门延时和线延时不会影响设计的性能。,自顶向下设计方法学,顶层模块,子模块1,子模块2,子模块3,叶单元,叶单元,叶单元,叶单元,叶单元,叶单元,五、FPGA设计流程,(1)设计定义,(2)设计输入,布尔等式设计,原理图设计,HDL语言设计,(3)功能仿真,RTL代码中引用的由厂家提供的宏模块/IP,(4)逻辑综合,(5)前仿真,(6)布局布线,(7)后仿真,(8)静态时序分析,(9)在系统测试,第三章 Verilog HDL语言,一、Verilog HDL设计模块的基本结构 二、Verilog HDL词法构成 三、Verilog HDL的语句 四、Verilog HDL描述方式 五、Ver
13、ilog HDL设计流程 六、用Verilog HDL描述数字电路的实例,硬件描述语言(HDL)就是可以描述硬件电路的功能、信号连接关系及定时(时序)关系的语言,也是一种用形式化方法来描述数字电路和设计数字系统的。常用的硬件描述语言有VHDL、Verilog HDL,已成为IEEE的工业标准硬件描述语言,得到了众多EDA公司的支持。,VHDL VHDL主要用于描述数字系统的结构、行为、功能和接口。Verilog HDL Verilog HDL是在C语言的基础上发展而来的硬件描述语言,具有简洁、高效、易用的特点。,Verilog HDL语言简介,能力 设计的行为特性、设计的数据流特性、设计的结构
14、组成以及 包含响应 监控和设计验证方面的时延和波形产生机制。提供 了编程语言接口,通过该接口可以在模拟、验证期间从设计 外部访问设计,包括模拟的具体控制和运行。,主要功能 基本逻辑门,例如and、or 和nand 等都内置在语言中 开关级基本结构模型,例如pmos 和nmos 等也被内置在语言中 可采用三种不同方式或混合方式对设计建模 两类数据类型 能够描述层次设计,可使用模块实例结构描述任何层次 能够使用门和模块实例化语句在结构级进行结构描述,一、Verilog HDL设计模块的基本结构 Verilog HDL程序设计由模块(module)构成的,设计模块的基本结构如图,一个完整的Veril
15、og HDL设计模块包括端口定义、I/O声明、信号类型声明和功能描述4个部分。1 模块端口的定义 模块端口定义用来声明电路设计模块 的输入/输出端口,端口定义格式如下:module 模块名(端口1,端口2,端口3,);在端口定义的括号中,是设计电路模块与外界联系的全部输入/输出端口信号或引脚,是设计实体对外的一个通信界面,是外界可以看到的部分(不包含电源和接地端),多个端口之间用“,”分隔。例如1位全加器adder模块的端口定义为module adder(S,CO,A,B,CI);模块名adder,2 信号类型声明 信号类型声明是声明设计电路的功能描述中所用的信号的数据类型和函数。信号的数据类
16、型主要有连线(wire)、寄存器(reg)、整型(integer)、实型(real)、和时间(time)等。信号声明格式如下:wire msb:lsb 端口1,端口2,端口3,;reg msb:lsb 端口1,端口2,端口3,;3 功能描述 功能描述是Verilog HDL程序设计中最主要的部分,用来描述设计模块的内部结构和模块端口间的逻辑关系,在电路上相当于器件的内部电路结构。功能描述可以用assign语句、元件例化(instantiate)方式、always块语句、initial块语句等方法来实现,通常将设计模块描述的方法称为建模。,用assign语句建模 用assign语句建模的方法很简
17、单,只需要在“assign”后面再加一个表达式。assign语句一般适合对组合逻辑进行赋值,称为连续赋值方式。例1 一位全加器的设计1位全加器的逻辑符号:S是全加器的和输出端,CO是进位输出端,A和B是两个加数输入端,CI是低位进位输入端。,全加器的Verilog HDL源程序如下:module adder1(S,CO,A,B,CI);input A,B,CI;output S,CO;wire S,CO,A,B,CI;assign CO,S=A+B+CI;endmodule“assign CO,S=A+B+CI;”语句实现1位全加器的进位输出CO与和输出S的建模。在语句表达式中,用拼接运算符“
18、”将CO、S这两个1位操作数拼接为一个2位操作数。,用元件例化(instantiate)方式建模 元件例化方式建模是利用Verilog HDL提供的元件库实现的。例如,用与门例化元件定义一个三输入端与门可以写为and myand3(y,a,b,c);and是Verilog HDL元件库中与门元件名,myand3是例化出的三输入端与门名,y是与门输出端,a、b、c是输入端。用always块语句建模 always块语句可以产生各种逻辑,常用于时序逻辑的功能描述。一个程序设计模块中,可以包含一个或多个always语句。程序运行中,在某种条件满足时,就重复执行一遍always结构中的语句。,例2 8位
19、二进制加法计数器的设计8位二进制加法计数器的逻辑符号如图。OUT是8位二进制计数器的输出端(8位向量);COUT是进位输出端(1位);DATA是并行数据输入端(8位向量);LOAD是计数器的预置控制输入端,当LOAD=1时,OUT=DATA;CLK是时钟控制输入端,上升沿为有效边沿;CLR是同步复位输入端,当CLK的上升沿到来时且CLR=1,则计数器被复位,OUT=00000000。,(逻辑符号图是由计算机对计数器电路的Verilog HDL源代码编译后产生的元件符号,图中的输入/输出标识符自动被改为大写,而源程序中的标识符都是小写。),8位二进制加法计数器的Verilog HDL 源程序如下
20、:module cnt8(out,cout,data,load,cin,clk,clr);input 7:0 data;input load,cin,clk,clr output 7:0 out;output cout;reg 7:0 out;always(posedge clk)begin if(load)out=data;else if(clr)out=b00000000;else out=out+1;end assign cout=”语句产生进位输出cout,在语句中“&out”是与的缩减运算式,只有out中数字全为1时,结果才为1。,用initial块语句建模Initial块语句与al
21、ways语句类似,不过在程序中它只执行1次就结束了。Initial块语句的使用格式:Initial Begin 语句1;语句2;:end例3 用Initial过程语句对测试变量赋值 initial begin for(addr=0;addrsize;addr=addr+1)memoryaddr=0;/对memory存储器进行初始化 end,从以上例子中可以看出 Verilog HDL程序设计模块的基本结构:Verilog HDL程序是由模块构成的。每个模块的内容都是嵌套在module和endmodule两语句之间,每个模块实现特定的功能,模块是可以进行层次嵌套的。每个模块首先要进行端口定义,并
22、进行I/O声明和信号类型声明,然后对模块的功能进行逻辑描述。Verilog HDL程序的书写格式自由,一行可以有一条或多条语句,一条语句也可以分为多行写。除了end或以end开头的关键字(如endmodule)语句外,每条语句后必须要有分号“;”。可以用/*/或/对Verilog HDL程序的任何部分注释。一个完整的源程序都应当加上必要的注释,以加强程序的可读性。,二、Verilog HDL词法构成Verilog HDL源程序一般包括:间隔符与注释符、操作符、数值常量、字符串、标识符和关键字等语法元素。(1)间隔符与注释符间隔符又称空白符,包括空格符、tab符号、换行符及换页符等。它们的作用是
23、分隔其他词法标识符。在必要的地方插入间隔符可以增强源文件的可读性。但在字符串中空格符和tab符号(制表符)是有意义的字符。Verilog HDL 有单行注释和多行段注释两种注释形式。单行注释以字符“/”起始,到本行结束;而段注释则以“/*”起始以“*/”结束,在段注释中不允许嵌套,段注释中单行注释标识符“/”没有任何特殊意义。(2)操作符Verilog HDL 中定义了操作符,又称运算符,按照操作数的个数,可以分为一元、二元和三元操作符;按功能可以大致分为算术操作符、逻辑操作符、比较操作符等几大类。,表1 Verilog HDL 的操作符及简要说明,同其他高级语言类似,各类操作符号之间有优先级
24、之分,如下表:,列表顶部是最高优先级,底部是最低优先级。列在同一行中的操作符具有相同的优先级。所有操作符(?:除外)在表达式中都是从左向右结合的。圆括号()用于改变优先级或使得表达式中运算顺序更加清晰,提高源文件的可读性。,(3)数值常量 Verilog HDL中的数值常量有整型和实型两大类,分为十进制、十六进制、八进制或二进制。若在前面加上一个正“+”或负“”号就表示有符号数,否则所代表的就是无符号数。在数值常量的任意位置可以随意插入下划线“_”以提高可读性。常量定义格式为:parameter 常量名1=表达式,常量名2=表达式,常量名n=表达式;parameter是常量定义关键字,常量名是
25、用户定义的标识符,表达式为常量赋值。例如 parameter Vcc=5,fbus=8b11010001;Verilog HDL中的整型数值常量就是整数,有两种书写格式:一种是无位宽的十进制表示法,如-132。第二种是定义位宽和进制的表示法,这种表示方法通常是无符号数。常数书写格式是:sizebase value 其中size是位宽,定义了数值常量的位数(长度);base 代表这个数据的进制,取值范围和相应的进制如下表;value是一个数值常量的值,书写格式与进制base相对应。例如 16h6a8c,表示一个4位十六进制数。8hf5 等于8b11110101;8b1111xxxx 等价2hfx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 技术 教程 通俗易懂

链接地址:https://www.31ppt.com/p-5431409.html