FPGA
FPGA设计与应用 FPGA设计与应用第1章 FPGA概述 FPGA概述1.1 FPGA的发展历程 FPGA的发展历程 1.2 FPGA的基本原理 FPGA的基本原理 1.3 FPGA的设计方法 FPGA的设计方法 1.4 FPGA的设计流程 FPGA的设计流程 1.5 总结与结论
FPGA
FPGA设计与应用 FPGA设计与应用1.1 FPGA的发展历程 FPGA的发展历程可编程逻辑器件(PLD) 可编程逻辑器件(PLD)
早期 FPGA
可编程逻辑阵列 (PLA)
可编程阵列逻辑 (PAL)
Altera的 Altera的CPLD
Xilinx的 Xilinx的FPGA
FPGA
FPGA设计与应用 FPGA设计与应用1.2 FPGA的基本原理 FPGA的基本原理基于查找表的FPGA的基本结构及逻辑实现原理 ◆基于查找表的 的基本结构及逻辑实现原理◆基于乘积项的 基于乘积项的FPGA的基本结构及逻辑实现原理 的基本结构及逻辑实现原理
◆FPGA的配置应用 的配置应用
FPGA
FPGA设计与应用 FPGA设计与应用1.2 FPGA的基本原理 FPGA的基本原理基于查找表的FPGA的基本结构及逻辑实现原理 ◆基于查找表的 的基本结构及逻辑实现原理查找表( Table,LUT)本质上就是一个RAM 目前FPGA RAM。 FPGA中 查找表(Look Up Table,LUT)本质上就是一个RAM。目前FPGA中 多使用4输入的LUT 所以每一个LUT可以看成一个有4位地址线的16╳1 LUT, LUT可以看成一个有 多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16╳1 RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开 HDL语言描述了一个逻辑电路以后 的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开 发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM RAM。 发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM。 这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表, 这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找 出地址对应的内容,然后输出即可。 出地址对应的内容,然后输出即可。
FPGA
FPGA设计与应用 FPGA设计与应用1.2 FPGA的基本原理 FPGA的基本原理
基于乘积项的FPGA的基本结构及逻辑实现原理 ◆基于乘积项的 的基本结构及逻辑实现原理
INPUT/GCLK1,INPUT/GCLRn, , , INPUT/OE1,INPUT/OE2是全局 , 是全局 时钟、清零和输出使能信号, 时钟、清零和输出使能信号,这 几个信号有专用连线与器件中每 个宏单元相连, 个宏单元相连,信号到每个宏单 元的延时相同并且延时最短。 元的延时相同并且延时最短。
这种FPGA的结构可分为三块:宏单元 的结构可分为三块: 这种 的结构可分为三块 )、可编程连线 控制块。 (Macrocell)、可编程连线(PIA)和I/O控制块。 )、可编程连线( ) 控制块 宏单元是器件的基本结构, 宏单元是器件
的基本结构,由它来实现基本的逻辑 功能;可编程连线负责信号传递, 功能;可编程连线负责信号传递,连接所有的宏单 控制块负责输入输出的电气特性控制, 元;I/O控制块负责输入输出的电气特性控制,比如 控制块负责输入输出的电气特性控制 可以设定集电极开路输出,摆率控制,三态输出等。 可以设定集电极开路输出,摆率控制,三态输出等。
FPGA
FPGA设计与应用 FPGA设计与应用1.3 FPGA的设计方法 FPGA的设计方法FPGA的常用设计方法包括“自顶向下”和“自下而上”,目前大规模 的常用设计方法包括“自顶向下” 的常用设计方法包括 自下而上” 目前大规模 FPGA设计一般选择“自顶向下”的设计方法。 设计一般选择“ 设计一般选择 自顶向下”的设计方法。 所谓“自顶向下”设计方法 简单地说,就是采用可完全独立于芯片厂商及 所谓“自顶向下”设计方法, 简单地说 就是采用可完全独立于芯片厂商及 其产品结构的描述语言,在功能级对设计产品进行定义 并结合功能仿真技术, 在功能级对设计产品进行定义, 其产品结构的描述语言 在功能级对设计产品进行定义 并结合功能仿真技术 以确保设计的正确性,在功能定义完成后 利用逻辑综合技术,把功能描述转换成 以确保设计的正确性 在功能定义完成后,利用逻辑综合技术 把功能描述转换成 在功能定义完成后 利用逻辑综合技术 某一具体结构芯片的网表文件,输出给厂商的布局布线器进行布局布线 输出给厂商的布局布线器进行布局布线。 某一具体结构芯片的网表文件 输出给厂商的布局布线器进行布局布线。布局 布线结果还可反标回同一仿真器, 进行包括功能和时序的后验证,以保证布局布 布线结果还可反标回同一仿真器 进行包括功能和时序的后验证 以保证布局布 线所带来的门延时和线延时不会影响设计的性能。 线所带来的门延时和线延时不会影响设计的性能。
FPGA
FPGA设计与应用 自顶向下” FPGA设计与应用 “自顶向下” 第一步:按照“ 第一步:按照1.4 FPGA的设计流程 FPGA的设计流程的设计方法进行系统划分。 的设计方法进行系统划分。 第二步: 第二步:输入 VHDL/Verilog HDL代码 代码 第三步: 第三步:将以上的设计输 入编译成标准的 VHDL/Verilog HDL文件, 文件, 文件 第四步:利用综合器对源 然后将文件调入HDL仿真 然后将文件调入 仿真 代码进行综合优化处理, 软件进行功能仿真 生成门级描述的网表文件 第五步:如果整个设计超 出器件的宏单元或I/O单 元资源,可以将设计划分 到多片同系列的器件中。 第六步:将试配器产生的 器件编程文件通过编程器 或下载电缆载入到目标芯 片FPGA
中
FPGA
FPGA设计与应用 FPGA设计与应用1.5 总结与结论FPGA是近几年集成电路中发展最快的产品。本章主要对FPGA的发展历 FPGA是近几年集成电路中发展最快的产品。本章主要对FPGA的发展历 是近几年集成电路中发展最快的产品 FPGA 结构原理和设计方法与流程做了介绍。 程、结构原理和设计方法与流程做了介绍。随着可编程逻辑器件的高速发 可编程逻辑器件将进一步扩大其领地。 Insights的数据显示 的数据显示, 展,可编程逻辑器件将进一步扩大其领地。据IC Insights的数据显示,可 编程逻辑器件市场从1999年的29亿美元增长到2004 56亿美元 1999年的29亿美元增长到2004的 亿美元, 编程逻辑器件市场从1999年的29亿美元增长到2004的56亿美元,几乎翻了 一番。可编程逻辑器件将继续向着更高密度和更大容量方向迈进。 一番。可编程逻辑器件将继续向着更高密度和更大容量方向迈进。
FPGA
FPGA设计与应用 FPGA设计与应用第2章 硬件描述语言入门2.1 VHDL入门 VHDL入门 2.2 Verilog HDL入门 HDL入门 2.3 总结与结论
FPGA
FPGA设计与应用 FPGA设计与应用2.1 VHDL入门 VHDL入门◆VHDL的模块组织 的模块组织
基本的数据类型及常量、变量、 ◆基本的数据类型及常量、变量、信号◆运算符及表达式 ◆VHDL基本语句 基本语句 ◆典型电路的设计
FPGA
FPGA设计与应用 FPGA设计与应用2.1 VHDL入门 VHDL入门◆VHDL的模块组织 的模块组织 在应用VHDL描述数字系统结构时,我们使用实体(entity) 在应用VHDL描述数字系统结构时,我们使用实体(entity)-结构 VHDL描述数字系统结构时 )结构 结构。 体( architecture )结构。 实体描述了数字系统的输入输出接口, 实体描述了数字系统的输入输出接口,同时还定义了一些全局常量 以及与其他电路(程序模块或逻辑图模块)之间必要连接的拓扑结构。 以及与其他电路(程序模块或逻辑图模块)之间必要连接的拓扑结构。 但在实体中,我们并不对电路的逻辑做任何描述, 但在实体中,我们并不对电路的逻辑做任何描述,可将其看成是一个所 谓的逻辑“黑盒子” 很明显,VHDL遵循EDA解决方案中自顶向下的设 遵循EDA 谓的逻辑“黑盒子”。很明显,VHDL遵循EDA解决方案中自顶向下的设 计原则,并能够保持良好的接口兼容性。 计原则,并能够保持良好的接口兼容性。
FPGA
FPGA设计与应用 FPGA设计与应用2.1 VHDL入门 VHDL入门基本的数据类型及常量、变量、 ◆基本的数据类型及常量、变量、信号信号 变量 常量 数据类型 在电路中,连线将元器件连接起来组成系统,在VHDL语言中, 变量作用是对数据进行暂时存储,书写格式为: VHDL标准数据类型包括整数(INTEGER)、实数 信号就起着连
线的作用,书写格式为: (REAL)、位(BIT)、位矢量(BIT_VECTOR)、标准逻辑 常量在设计中不会发生变化,可以增加程序的可读性,书写格式 为: (STD_LOGIC)、标准逻辑矢量(STD_LOGIC_VECTOR)、 VARIABLE 变量名 [,变量名…]:数据类型 [:= 表达式]; 布尔量(BOOLEAN)、字符(CHARACTER)、字符串 SIGNAL 信号名 [,信号名…]:数据类型 [:= 表达式]; 例如:VARIABLE rd_en : STD_LOGIC : = ‘1’; CONSTANT 常量名 [,常量名…] INTEGER [:= 表达式]; (STRING)及时间(TIME)类型。: :数据类型; VARIABLE cnt 例如: 为了给设计者提供自由度和灵活性,VHDL语言允许用户自 SIGNAL wr_en : STD_LOGIC: = ‘0’; 20ns; 例如:CONSTANT WAIT:TIME:= 定义数据类型,命令为:TYPE 数据类型名 [,数据类型名…] IS 在变量说明中,可以直接赋给变量初始值,也可以不赋初始值, CONSTANT LEN:INTEGER:= 16; SIGNAL num1 , num2 : STD_LOGIC_VECTOR( 如果没赋初始值,它默认为变量数据类型的最小值。 7downto 0 ); 数据类型定义
FPGA
FPGA设计与应用 FPGA设计与应用2.1 VHDL入门 VHDL入门VHDL语言的运算符有四类:逻辑运算符、 本节中主要通过例子程序使读者初步理 算术运算符、并置运算符和关系运算符 解VHDL的语法构成,书中介绍的是一个加 法器完整的VHDL语句描述,包括注释、库 文件说明、实体、结构体、进程语句、条 件语句、例化语句等。2个4位输入信号a和 b,进位输入cin,输出4位结果sum,输出 向下一极进位信号cout,整个程序都由组 合逻辑实现。 传统的设计方式,设计者在他的CAD 工作站上以基本的电路组件来组织并构成 一个完整的逻辑功能,这些最基本的电路 组件如AND逻辑门、OR逻辑门或缓存器在 CAD工作站的屏幕中以线条和图案来表示, 每个组件都必须清楚定义输出入信号和功 能。在VHDL的语言中,这种所谓的 SYMBOL不复存在,VHDL以实体的描述 来表示一个传统线路中的SYMBOL。
◆运算符及表达式
◆VHDL基本语句 基本语句
◆典型电路的设计
FPGA
FPGA设计与应用 FPGA设计与应用2.2 Verilog HDL入门 HDL入门◆Verilog
HDL的模块组织 的模块组织
基本的数据类型及常量、变量、 ◆基本的数据类型及常量、变量、信号◆运算符及表达式 ◆ Verilog
HDL基本语句 基本语句
◆典型电路的设计
FPGA
FPGA设计与应用 FPGA设计与应用2.3 总结与结论这一章我们主要学习了一些HDL语言的基本语法与我们以往学习的C 这一章我们主要学习了一些HDL语言的基本语法与我们以往学习的C语 HDL语言的基本语法与我们以往学习的 言等、PASCAL等都有相似之处 要注意的是在学习中要有意识地把HDL 等都有相似之处, HDL语言 言等、PASCAL等都有相似之处,要注意
的是在学习中要有意识地把HDL语言 的语句与硬件结构模块联系起来,通过理解物理意义,牢牢掌握。 的语句与硬件结构模块联系起来,通过理解物理意义,牢牢掌握。
FPGA
FPGA设计与应用 FPGA设计与应用第3章 简单电路的HDL设计 简单电路的HDL HDL设计3.1 基本组合逻辑运算 3.2 基本时序器件—寄存器 基本时序器件— 3.3 基本简单数学运算 3.4 总结与结论