可编程逻辑器件基础
1、数字逻辑设计历史-------了解历史进展
开始时:有复杂的逻辑关系,是我们初学者刚刚接触的数电方面的基础应用,设计一个基础的ttl逻辑,根据真值表-----卡诺图-----简历函数式逻辑表达式,举个例子:x=ab+cd+bd+bc+ad+ac,需要很多的基础逻辑单元,但是如果利用异或关系,可转换成:
利用这样的组合逻辑,这样可以将数量众多的基本逻辑单元简化,硬件相对变简单了。
如果逻辑功能和寄存器组合到一个部件,通过布线(布线相当于一种控制)就可以得到一个简单的pal---可编程阵列逻辑,一种简单的可编程控制单元,器件中的数量变少,占用更少的电路板,设计灵活,可防止逆向剖析,容易更新设计。
针对pal的编程技术实质(当前闪存技术的关键):阵列交叉(跨线)上的浮栅型晶体管(含有第二个栅极,浮动栅极)在加上编程电压后,不会导通。以下两种晶体管不做任何设置,都可用作n型晶体管,栅极接地时,源级和漏极导通。当栅极设置电压后,电子被限制在浮动栅极,纵使浮动栅极设置电压值,晶体管依旧不导通,这样总是关断,相当于一个开关。
2、可编程逻辑基本技术
了解器件本身:
从pal到可编程逻辑器件pld,在单个器件中排列多个pal阵列,存在可变的可乘积项分配和全面可编程宏单元。
可变的可乘积项分配:简单的想法,改变或门、与门的数量,不会浪费逻辑门,不需要复杂的延时网络。
灵活的可编程宏单元(主要进步):提供多种可编程选择,实现乘积和输出。
pld进一步发展形成复杂的pld(cpld)-----在一个器件中,采用可编程互联和i/o,连接多个pld:
cpld的特性:
cpld逻辑模块通常被称为逻辑阵列模块(lab),每个lab相当于一个pld,含有4-20个宏单元,该宏单元还存在扩展项,提供可操控的乘积项分配和扩展,代价是额外的延时。即,建立一次乘积项就可以使用,大大减少了逻辑浪费。
lab之间的互联称为可编程互联阵列(pi或pia),和pal可编程阵列相同的编程技术(两种晶体管,eprom、eeprom或者闪存技术编程),配置更高级,实现灵活的可编程关键,全局布线连接器件中的任何信号和任何目的位置。
单独的i/o控制模块,由pi将i/o引脚与lab分开,i/o都有专用逻辑提供控制以及更多的功能,三态缓冲控制实现任意引脚的输入、输出和双向功能。
采用jtag进行在系统编程(isp)
由于可编程逻辑越来越大、越来越复杂,必须放在特定的条件下编译,器件放在特殊的单元,或者器件上加一些特殊装置,不能在线编译,故设计了一种和i/o分开的编程接口,几乎所有的fpga都使用jtag接口,简单的4、5线串行接口,构成单个器件长1位寄存器或者多个器件的jtag链,可用于器件自检测或者系统编程(isp),当pld硬件生成eprom编程电压,由jtag接口进行控制,简化了实验室自编程。
从cpld到fpga:理论上我们可以一直增加lab,但是这样大大增加了额外的全局布线,但是如果lab本身重新排列一个阵列中呢?这就是fpga的由来。
现场可编程门阵列(fpga):lab排列在大型阵列中,器件可以现场编程或重新编程,行列可编程互联,通过这中互联方式(在行列之间设置互联布线)可以跨越所有或者部分的阵列。
fpga的lab设计和cpld不同,没有乘积项和宏单元,fpga-lab由逻辑单元(le)构成,le级联更容易建立复杂的功能,le实质是一个4位查找表(lut)、进位逻辑、输出寄存器逻辑构成。
4位查找表 lut替代了cpld中的乘积项阵列,lut是由一系列级联复用的器件构成,lut输入作为选择线,复用输入作为高或者低逻辑电平,之所以逻辑被称作查找表,通过差找正确的编程级,来选择输出,根据输入的值通过复用输入,将输出送到正确的位置,编程级的选择基于函数真值表,故可以灵活的建立一个组合函数(级联复用器),减少逻辑资源浪费。
le同步部分来自可编程寄存器,该寄存器和cpld宏单元相似,但配置灵活,配置为d\t\jk或者sr触发器工作,一般由全局的时钟来驱动时钟,任何时钟可驱动任何le,可通过其他逻辑或者io进行寄存器的异步控制,器件还可以反馈回lut,产生严格的组合逻辑功能,这种寄存器只使用存贮、同步功能,这种灵活的le输出级适合所有类型的逻辑操作。
le和宏单元不同之处在于进位逻辑和lab寄存器链逻辑,le之间存在进位bit链,这种进位可以输出到别的le,也可以输出到互联中,寄存器输出可以链接至lab中的其他le寄存器,形成和lut无关的移位寄存器(适合dsp峰作),增强资源管理。
更高级的fpga使用自适应逻辑模块(alm)代替le,提高性能和资源利用率,使用自适应的lut(alut)可以任意划分,智能资源管理。
fpga布线
所有器件资源都可以和器件中的任何布线连接,分为本地互联(le之间互联、相邻lab直接连接)、行列互联(固定长度布线、跨过多个lab)。
fpga io单元
高级可编程模块可直接连接至行或者列互联,具有多种优良特性,同时存在特殊的逻辑。
其他典型fpga特性
采用专用功能硬件模块代替某些lab,存储器模块、嵌入式乘法器、高速收发器。(多查一下手册,看是否满足要求)
fpga编程
大部分fpga使用sram单元技术(基本是个锁存器)对互联和lut功能进行编程,必须在上电时进行编程,数据易丢失。fpga编程信息必须存储在某一位置,以便在上电时对器件进行编程。主动编程方式:上电时fpga自动控制编程顺序;被动编程:智能主机(cpu)控制编程;jtag编程:实验室pc端编程。
3、对比cpld和fpga
印刷图像传感器技术成熟度现状
如何简单的买卖比特币
集成电路的优缺点有哪些
台积电计划投资120亿美元在当地兴建工厂
迪文科技与北京理工大学校企合作项目签约
可编程逻辑器件基础
智慧环保物联网大数据监控平台建设方案
美国参议员提议效仿欧盟统一充电接口,这下苹果不得不服了
区块链对于教育有怎样的影响
LED发光二极管的工作原理、应用、分类及检测
贾跃亭夫妇及乐视系3家公司的12.37亿资产于上周被司法冻结
聚焦博鳌:各大企业大佬谈论5G技术
SC1642模数转换器(ADC)可pin对pin兼容ADS1258
传输网基础知识:光纤、光缆、光模块区别
欧洲智能手机Q2出货量同比下降24% 华为智能手机出货下降OPPO和小米补位
MOTO新旗舰moto z2 Play发布时间与配置确定,搭载骁龙835,联想要将模块化的道路走到底?
JASMINER在众多出海企业中脱颖而出,逆境中见真章
如何解决RS-485自动收发电路应用异常的问题呢?
通用与丰田双擎混动技术有哪些不同的独到之处?
默克尔为什么支持德国车企转向电动化