EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一.基于乘积项(Product-Term)的PLD结构
) o8 q7 p8 O2 s& i3 K2 @* j! g
! ?: X8 v' s7 `( j0 M$ i T# L- x 4 p: N& \5 b; l. f5 r
采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺) ; [2 l1 f, m4 c9 s8 W
我们先看一下这种PLD的总体结构(以MAX7000为例,其他型号的结构与此都非常相似): 2 m0 W0 s7 c: L
![]()
+ j1 F9 P; R$ y% k* ] O) i$ o& N# P Y5 E# p
. F+ c3 `! o9 m) V, U) e S$ [* ~3 Q$ z% Y, S! b) X2 C6 n' R
* x! g* A- Y. i4 n: h9 B% ^
e* g7 u9 m. C/ R6 _' D
) f/ @' V6 L. L: a: A图1 基于乘积项的PLD内部结构 0 `6 ^! p$ Q, }3 O. h! u+ |6 s
这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。 宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图1中兰色部分是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。 图1 左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局时钟,清零和输出使能信号,这几个信号有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。 8 E' Y) ~; Y* m: i- M# ~3 e
宏单元的具体结构见下图:
6 E; a, h7 C' w
![]()
+ w+ g7 d% v/ @图2 宏单元结构
8 b) d- s( k# i' ^6 [( q0 s* K5 J左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。图右侧是一个可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I/O脚。
: C& E$ T8 d, x) z! |5 W/ r) E
( @$ F0 }% a- ]
4 Q" {( c. @7 Q3 ^5 U0 Q
1 x! A8 G: D. x. r0 m6 [8 S: d0 u " T, D/ T/ `* y, r, L5 p
二.乘积项结构PLD的逻辑实现原理
' z! [0 A6 ?) b# U4 v6 w) Y9 n9 U" f" B+ ?: L! V
/ w. c4 ~; H& b* |$ [. ?下面我们以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑的,电路如下图:
1 l8 Z! G" Z" u/ _- h( _% G u5 S 4 u( y) Q0 G1 k. ^' {! b1 Z j) |
图3 2 y+ V# j5 ~: e
假设组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我们以!D表示D的“非”)
0 B; f" v, U' X( F9 dPLD将以下面的方式来实现组合逻辑f:
9 P; |+ g3 W$ h2 r8 @. z![]()
& M6 z/ b, [5 ~, z" ~. e/ @+ }图4
- w( v/ [) S H- A" m' s$ ^- ]A,B,C,D由PLD芯片的管脚输入后进入可编程连线阵列(PIA),在内部会产生A,A反,B,B反,C,C反,D,D反8个输出。图中每一个叉表示相连(可编程熔丝导通),所以得到:f= f1 + f2 = (A*C*!D) + (B*C*!D) 。这样组合逻辑就实现了。 图3电路中D触发器的实现比较简单,直接利用宏单元中的可编程D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。可编程触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预) 7 k+ d' l$ G6 L% u4 H. T
图3的电路是一个很简单的例子,只需要一个宏单元就可以完成。但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再做为另一个宏单元的输入。这样PLD就可以实现更复杂逻辑。 " W" d; e9 z6 t- Z1 T/ {1 }
这种基于乘积项的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。 |