|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
现场可编程门阵列(FPGA)可以实现任意数字逻辑,从微处理器到视频生成器或加密矿机,一应俱全。FPGA由许多逻辑模块组成,每个逻辑模块通常由触发器和逻辑功能以及连接逻辑模块的路由网络组成。FPGA的特殊之处在于它是可编程的硬件:您可以重新定义每个逻辑块及其之间的连接,用来构建复杂的数字电路,而无需物理上连接各个门和触发器,也不必花费设计专用集成电路的费用。
; v: Q; M4 h" v, b& K, I& A8 V, X9 e
# `1 r5 |& T8 Q; R7 ]7 i% Y
2 o" w( I- e$ i4 l5 i
6 O- H0 e. K g# E( K% k j6 t' }6 E8 E m' B
内部裸片显微照片 ( B9 u! \) A% e7 m" D; l) b1 `% D. C
. z. y1 u9 \+ E9 B
. i0 y6 I$ T' j, W; V/ Y; O/ f+ r" M8 v, K: h
FPGA是由Ross Freeman发明的,他在1984年共同创立了Xilinx,并推出了第一款FPGA——XC2064。这种FPGA比现代FPGA简单得多,它只包含64个逻辑块。而现代FPGA中的逻辑块有几千个或数百万个,但它导致了目前价值数十亿美元的FPGA产业。由于其重要性,XC2064被列入芯片名人堂。在这篇文章中,我们对Xilinx的XC2064进行了逆向工程,解释了它的内部电路(上图)以及 "比特流 "是如何对它进行编程的。
' d+ \( y9 C3 G$ Q2 }
6 T- |8 \* E- v5 c- J
/ [0 h/ w$ k$ K* e c/ A! Y2 ]% D1 O6 A
) S' I, Z% j+ N1 M. N% P& e( S, i x+ C
第一款FPGA芯片-Xilinx XC2064
6 f4 V) C2 n8 T7 W8 O3 J; c7 X3 V; k8 X) s7 l; U8 v4 m
7 b/ K6 x0 Y9 T C
9 _7 k4 R: o$ V- X
如今,FPGA是采用Verilog或VHDL之类的硬件描述语言编程的,但当时Xilinx提供了他们自己的开发软件XACT,运行在MS-DOS操作系统之下,价格高达12,000美元。XACT自然无法与现在的FPGA开发工具相比,XACT通过用户定义了每个逻辑块的功能(如下面的屏截图所示)以及逻辑块之间的连接,对连接进行布线连接,并生成可加载到FPGA中的比特流文件。
' h3 x7 J2 @, {6 O- V" g. ~8 _+ w+ z" b+ e8 v5 d6 a
: l; O! Z) e! s7 o% j
* @7 e U) k7 J* n' C
! S: e. y' u1 @1 V9 t) a4 {. K9 p0 `: t" H( a
XACT的屏幕截图* x0 Y, { G3 e" K
$ }# @2 W* Z& j. E两个查找表F和G在屏幕底部实现逻辑运算,上面部分显示该逻辑的卡诺图
9 _2 H/ K8 T3 ?4 a$ X* o% I1 X8 X/ b( C+ N |+ \! w; A6 J a& B
1 B1 o. v% c: ?9 Z1 K3 l1 A
8 a- Z% A+ ~" R/ n; h. L7 [
通过位流(具有专有格式的位序列)配置FPGA。如果您查看XC2064的比特流(如下所示),那是令人费解的混合模式,这些模式不规则地重复,并散布在比特流中。XACT中的功能定义与位流中的数据之间没有明确的联系。但是,研究FPGA的物理电路可以揭示比特流数据的结构,并且可以理解。
) E/ w8 ]4 u' ], k. }5 m' P+ t1 C( U9 H/ C* z$ v$ G9 |1 s' j. C1 J
7 ^9 N% D# b( _# a/ P% R# d: u, O
1 K8 N( u% n' M; ` B1 L3 b通过位流(具有专有格式的位序列)配置FPGA。如果您查看XC2064的比特流(如下所示),那是令人费解的混合模式,这些模式不规则地重复,并散布在比特流中。XACT中的函数定义与位流中的数据之间没有明确的联系。但是,研究FPGA的物理电路可以揭示比特流数据的结构,并且可以理解。7 c' L7 `& g& `7 \" {
! ?2 B- P& K3 z& T! Z' f" M, t3 X3 R& r$ a
8 H, _/ b5 u, r3 N! m( \( T
1 w! D2 e) `1 B& o+ E( d' T3 [' L$ ?; m3 K }+ ^# d" C- \
XC2064的比特流
1 h' I# ^' _* m* w, r! W9 q' V |
|