您的位置:首页 > 编程语言

FPGA学习笔记5-可编程逻辑基础

2012-01-24 15:58 357 查看
数字逻辑设计的历史

开始时...TTL逻辑设计

-分立的芯片设计逻辑功能:NAND,OR,复用器,触发器等

-著名的TI7400系列

-通常由成本和可用的器件来决定选择

采用TTL逻辑进行数字设计流程

真值表->卡若图->函数逻辑表达式->最终实现

从TTL到可编程逻辑

-逻辑实现的一般特性

--乘积和(AND-OR门;组合逻辑)

--存储结果(寄存输出)

--连在一起

-如果...会怎样

--逻辑功能固定不变(像TTL),但是组合到一个器件中?

--走线(布线)连接在一定程度上可以进行控制(编程)?

可编程阵列逻辑(PAL)

-可编程逻辑最简单的实现

-逻辑门和寄存器固定

-可编程乘积和阵列以及输出控制

-可编程阵列->乘积项->宏单元:大部分器件中,所有三部分构成宏单元

可编程逻辑的优点

-需要的器件数量减少

-占用更少的电路板

-低成本

-节省功耗

-测试和调试简单

-设计安全性(防止逆向剖析)

-设计灵活性

-自动工具简化,合并了设计流程

-在系统重新编程!(在某些情况下)

PAL编程技术

-阵列交叉上浮栅晶体管(FAMOS,FLOTOX)在加上编程电压后,不会导通

-可编程晶体管保持"关断"

-FAMOS,用来制作EPROM,需要紫外强光进行擦除

-FLOTOX,用来制作EEPROM,置反编程Vgd(漏-栅电压)来擦除

从PAL到可编程逻辑器件PLD

-在单个器件中排列多个PAL器件

--可变乘积项分配,可编程宏单元

基本可编程宏单元

-输出选择

-乘积项阵列输入/反馈选择

从PLD到复杂PLD(CPLD)

-在一个器件中,采用可编程互联和I/O,连接多个PLD(逻辑模块)

普通CPLD逻辑模块的特性

-一般是指逻辑阵列模块(LAB),每一个LAB就像一个PLD

-含有多个宏单元(通常是4到20个)

-本地可编程互联,类似PLD

-宏单元中的扩展乘积项逻辑提供可控乘积项分配和扩展,缺点是额外的时延

其他体系结构特性

-可编程互联阵列(PI或者PLA)

--和PAL可编程阵列相似

--全局布线连接器件中的任何信号和任何目的位置

--采用EPROM,EEPROM或者闪存基础进行编程

I/O控制模块

--由PI将其和逻辑分离

--I/O专用逻辑提供控制以及其他更多的功能

--三态缓冲控制实现任意I/O引脚的输入,输出或者双向功能

采用JTAG进行在线系统编程(ISP)

-简单的4线或者5线接口

-移位数据,通过电路板上的一个或者多个器件(JTAG链)

-用于器件自调试,或者ISP

-PLD硬件生成EEPROM编程电压,有JTAG接口进行控制

通用CPLD的优点

-丰富的逻辑和高级可配置I/O

-可编程布线

-瞬时接通

-低成本

-非易失配置

-可重新编程

-Altra CPLD

--MAX II 和 IIZ器件

--MAX 3000系列

--MAX 7000系列

从CPLD到FPGA

-高密度CPLD需要额外的全局布线,不够灵活

-LAB本身重新排列到一个阵列中,LAB以更好的组织方式,将LAB排列在网络中

现成可编程门阵列FPGA

-LAB排列在阵列中

-行列可编程互联,没有采用中心或者全局互联,采用行互联,列互联的形式,组织成分段互联的形式,类似于BLOCK

-互联可以跨过所有或者部分阵列

CPLD LAB和FPGA LAB对比

-CPLD LAB由宏单元构成,包括自己本地宏单元阵列

-FPGA LAB由逻辑单元(LE)构成,而不是乘积项和宏单元,而且本地互联和阵列分开

-通过LE级联很容易建立复杂功能,减少逻辑资源的浪费

-LE包括三个组成部分,查找表(LUT),进位逻辑,输出寄存器

查找表(LUT)

-替代乘积项阵列

-可编程"表"建立的组合函数(级联复用器)

-LUT输入时复用选择线

可编程寄存器

-配置为D,T,JK或者SR触发器工作

-一般由全局时钟来驱动时钟

-通过其他逻辑或者I/O进行异步控制

-反馈回LUT

-旁路寄存器或者LUT

进位和寄存器链

-LE之间的进位比特链

-寄存器输出可以链接至LAB中的其他LE寄存器,形成和LUT无关的移位寄存器

寄存器封装

-LUT和寄存器输出分开,形成一个LE的两路输出

-节省了器件资源

自适应逻辑模块(ALM)

-基于LE,但是包括专用资源和自适应LUT(ALUT)

-ALUT与LUT相似,但是可以对其进行划分,以适应简单和复杂的算术函数

-提高了性能和资源利用率

-ALM输入->自适应LUT->加法器->寄存器

FPGA布线

-所有器件资源都可以和器件中的任何布线连接

-针对时序调整不一致的固定长度

-随着密度增加而线性增长

-本地互联

   LE之间的连接,或者LAB中的ALM之间的连接

   可以包括邻近LAB的直线连接

-行列互联

   固定长度布线段

   跨过多个LAB或者整个器件

FPGA I/O单元

-高级可编程模块直接连接至行或者列互联

-控制I/O特性

--输入/输出/双向

--多种I/O标准

--差分信号

--电流驱动能力

--摆率

--片内匹配/上拉电阻

--PCI总线使用的钳位二极管

--开漏/三态

--等等

典型的I/O单元逻辑

器件引脚-输入通道-输出通道-输出使能控制

其他典型的FPGA特性

-采用专用功能硬件模块替代某些LAB

-存储器模块

--建立板上存储器结构,以支持设计:单端口/双端口RAM,ROM,移位寄存器或者FIFO缓冲

--上电时初始化RAM或者ROM内容

-嵌入式乘法器

--适用于DSP

--高性能乘法器/加法器/累加器操作

-高速收发器

FPGA时钟

-特殊结构控制并向器件中的同步逻辑扇出时钟

--专用输入时钟引脚

--锁相环(PLL)

--延迟锁相环(DLL):控制DQS延迟,使用与外部存储器接口

--时钟控制模块:选择时钟,送入时钟布线网络,上电/断电时使能/禁止时钟

--时钟布线网络

---特殊布线通道保留给PLL或者时钟控制模块驱动的时钟

---全局时钟网络送入整个器件

---局部或者分层网络送入某些器件区域,例如:区域块等

FPGA PLL

-基于输入时钟,产生时钟的可编程模块(时钟域)用于整个器件中,具有最小的斜移

FPGA编程

-大部分FPGA使用SRAM单元技术对互联和LUT功能级进行编程

-易失!必须在上电时进行编程!

-FPGA编程信息必须存储在某一位置,以便上电时候对器件编程

-使用外部EEPROM,CPLD或者CPU编程

-两种编程方法

   主动:上电时FPGA自动控制编程顺序

   被动:智能主机(一般是CPU)控制编程

-还可以通过JTAG连接进行编程

FPGA的优点

-高密度,可实现很多复杂逻辑功能

-高性能

-低成本

-多种功能的集成

-支持多种I/O标准和特性

-快速编程

-Altra FPGA:Cyclone(低成本高性能),Arria(含有收发器的中档产品),Stratix(高性能,高速收发器,能够实现复杂的系统)

MAX II器件:独特的CPLD

-配置性很强,基于LUT的LE

-LAB排列在网格阵列中

-行列互联

-多功能I/O单元

-基于SRAM单元的编程

-采用板上闪存ROM来存储配置数据

-不需要外部配置器件

-瞬时接通

ASIC

-上电时不需要配置

-采用FPGA器件建立并测试设计

-将设计移植到引脚兼容,功能等价的ASIC

-降低了ASIC设计总成本,实现了快速周转

-Altra ASIC:HardCopy系列器件

CPLD和FPGA硬件对比

 CPLDFPGA
基本逻辑组成LAB由宏单元组成LAB由LE后者ALM组成
建立逻辑功能乘积项(乘积和)LUT或者ALUT
逻辑布局LAB围绕全局互联LAB排列在网格阵列中
互联LAB本地和全局PI  LAB本地和行/列/分段/整个芯片
板上存储器N/A 存储器模块,可使用互联
板上DSPN/A 专用乘法器/加法器/累加器,可使用互联
编程技术EPROM,EEPROM或者闪存 SRAM
特性对比 

 CPLDFPGA
性能低端到高端高端,高速
用户逻辑足以用于小型和中等设计数千个LE,可建立大型复杂设计
I/O 可编程:支持多种I/O标准可编程:支持很多I/O标准和其他特性
高速通信N/A某些器件为很多协议提供收发器支持
功耗从低/高,取决于所使用的功能和优化措施
ASIC移植N/A 直接移植,功能匹配,性能提高
编程  非易失瞬时接通,不需要外部器件易失:每次上电时需要进行编程
典型的可编程逻辑设计流程

设计规范->设计输入/RTL编码->RTL仿真->综合(映射)->布局布线(适配)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息