TA的每日心情 | 怒 2024-8-26 15:16 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、概述, V) T0 K; i$ f; ~7 F+ @
LUT中文名字叫查找表。以7系列的FPGA为例,每一个Slice里面有四个LUT。FPGA就是通过LUT实现大量的组合逻辑,以及SLICEM里面的LUT还可以构成RAM,Shift Register,以及Multiplexers。这篇文章我们一起来学习LUT如何构成组合逻辑。* h5 A3 O) z7 z* C2 L! d0 G1 z5 @" f0 @
二、LUT实现原理; H5 S/ [ H; l% E
LUT,中文名字叫做查找表,其原理其实也就是一个一个查找表,根据输入去找到相应位置的信号,然后做输出。说白了就好像一个小容量的ROM,把输入当作地址信号,对LUT里面预存的内容进行寻址。
, p u9 ~7 O+ ]: x( C$ k 7系列的FPGA的LUT有6个输入端口(A1-6),然后有两个输出端口(O5,O6)。下图是SLICEL里面的LUT。1 W# n$ X+ k6 M9 o! q8 w& A
; H( `2 g w+ }! d+ @& p. ?8 L 其可以实现6输入的布尔组合逻辑函数,输入信号为A1,A2,A3,A4,A5,A6,输出端口为O6。如下" _! s& b9 ]6 W
O6=f(A1,A2,A3,A4,A5,A6)
/ L# y# N# a0 t3 d/ M* B 其实现方式就是将输入(A1,A2...A6)对应的输出在LUT里面预存好(这一步在我们用bit文件配置FPGA时实现),然后把输入信号当作地址信号去把对应的输出信号调出来。7 b: S7 T B* y* C/ U
同样其还可以构成两个5输入的布尔组合逻辑函数,其中这两个函数共用5个输入信号(A1,A2,A3,A4,A5),A6被拉高,O5,O6分别是两个布尔逻辑的输出。+ M# I& t8 o5 i2 Z: N
O5=f(A1,A2,A3,A4,A5)- c: Z' |3 l9 Z9 I7 N, @. U9 m) I
O6=f(A1,A2,A3,A4,A5) S3 |# ]- [8 n! c# H" t
故这也相当于实现的是一个5输入2输出的逻辑函数。+ `4 P( }) w& p' a
[O5,O6]=f(A1,A2,A3,A4,A5)
% `" Z& p3 H& |3 Z' Q$ x8 u三、总结与提升
! P* {8 U5 b! `. A, y- q总结一下,就好比单个LUT里面可以预存 2^6=64个结果。那么单个LUT可以实现$ m [5 h- ~! i
(1)输入信号最多为6bit,输出信号为1bit的的布尔逻辑函数;
1 I5 }/ D3 l e3 B# M: T } (2)输入信号最多为5bit,输出信号为2bit的逻辑。
{" b7 B* h9 ?* ~. `* Y 一个SLICE里面有四个LUT故最多可以预存的输出信号个数为 2^6*4=2^8。1 _" J: B! Q2 x" s9 f4 V5 p
因此在一个SLICE里面,借助选择器将多个LUT进行互连,可以实现输入数,输出数最多为如下所示的逻辑。
, R( v' ]% t) k5 U5 U (1)2个LUT通过互连可以构成7bit输入,单bit输出的逻辑。实现方式为两个LUT的输入信号A1,A2,A3,A4,A5,A6接到一起,输出信号经过选择器选择输出,选择器的选择信号也是逻辑函数的一个输入信号。5 x; v" g5 I0 d% x8 y
将逻辑函数的输出送到Storage Element便可以形成同步时序逻辑。& |& s3 I- Z% A- V4 Z4 w3 y
! H0 M+ ]; z! |
(2)4个LUT通过互连可以构成8bit输入,单bit输出的逻辑。实现方式大家可以根据上面的实现方式自行推理。
, ?$ l8 ~' T/ H+ D1 d (3)2个LUT通过互连可以构成6bit输入,2bit输出的逻辑。实现方式自行推理。
# C/ z; V( m8 ]' d (4)4个LUT通过互连可以构成7bit输入,2bit输出的逻辑。实现方式自行推理。+ P/ i* j/ _) @" |
超过8输入的布尔逻辑就需要多个SLICE来实现。
: D; a- i; [: r2 m7 K% Q |
|