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

数字逻辑设计的历史
开始时...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硬件对比
CPLD FPGA
基本逻辑组成 LAB由宏单元组成 LAB由LE后者ALM组成
建立逻辑功能 乘积项(乘积和) LUT或者ALUT
逻辑布局 LAB围绕全局互联 LAB排列在网格阵列中
互联 LAB本地和全局PI LAB本地和行/列/分段/整个芯片
板上存储器 N/A 存储器模块,可使用互联
板上DSP N/A 专用乘法器/加法器/累加器,可使用互联
编程技术 EPROM,EEPROM或者闪存 SRAM


特性对比

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

典型的可编程逻辑设计流程
设计规范->设计输入/RTL编码->RTL仿真->综合(映射)->布局布线(适配)


你可能感兴趣的:(嵌入式)