找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 2|回复: 0
打印 上一主题 下一主题

[硬件] 逻辑2——PLD/FPGA 结构与原理初步(一)

[复制链接]

551

主题

1470

帖子

3万

积分

EDA365管理团队

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

积分
39487
跳转到指定楼层
1#
发表于 2019-9-27 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一.基于乘积项(Product-Term)的PLD结构

% L% w' k/ L) {2 h- ~
. e( `0 w1 V  {7 y& F

: k2 @6 }6 }/ t. F9 ~# `5 D5 x
采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)
' q0 q0 b  E; Y8 i  W0 ?8 [
我们先看一下这种PLD的总体结构(以MAX7000为例,其他型号的结构与此都非常相似):
( `3 a2 g4 i, @7 \9 M5 J  y4 v
0 p+ f" R0 S- {# z8 L$ N0 ]* n

' Z: ?5 C4 S( q  {1 Z
, ?& S$ N, h- m/ Z  G
- L7 o4 g1 s; y
! R' R* K# M' i' i# a( a
, A- V2 ]3 O( Y$ e2 P! _
2 L- j1 o0 I1 v$ {1 ]; |/ b
图1 基于乘积项的PLD内部结构

/ q2 b$ A9 l0 W' t2 B6 I
这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。         宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图1中兰色部分是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。         图1 左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2         是全局时钟,清零和输出使能信号,这几个信号有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。
3 @# V- I8 W3 Q5 X7 p/ H7 T
宏单元的具体结构见下图:
# O8 u5 G( Q9 p( i6 l4 e7 d- z

0 a/ _) x7 \* b' V- w8 {1 F/ Y
图2 宏单元结构

! }% p' l3 ]+ F, P
左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。图右侧是一个可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I/O脚。
9 `. S, K9 n) {* x' g
( ^4 L1 C: D/ r0 @" a3 Y5 ]- j) I  q: A

" c) V6 o/ o4 M& S1 m! {" y. Q7 j

: `  W; }3 e/ e2 t

% x' A5 n9 X( T
二.乘积项结构PLD的逻辑实现原理
' Y  |/ V# \! {; @% q( w
, {; [. h/ a' o" \9 v4 i
% L% X: N0 K* z% _7 u% ^3 x8 a
下面我们以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑的,电路如下图:

% ]6 S6 q: D( W2 U* H2 K+ v9 \4 Q0 O' u% J- y
图3

/ w  a6 O' ^! y4 Y+ l) w2 v0 h5 Q$ m3 R
假设组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D +         B*C*!D ( 我们以!D表示D的“非”)

7 Y. Z3 Z! ?* D7 T4 B
PLD将以下面的方式来实现组合逻辑f:
0 O, c; x8 e9 i2 T% ?

5 s/ \' s* @- A8 W2 Y. A$ o
图4
" S& M* H: t( n" _, [! Y( j3 D
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所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)

' [9 o& C! Q6 T2 _
图3的电路是一个很简单的例子,只需要一个宏单元就可以完成。但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再做为另一个宏单元的输入。这样PLD就可以实现更复杂逻辑。
# _9 k# `7 r2 e
这种基于乘积项的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-4-19 03:11 , Processed in 0.058978 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表