FPGA内部结构(Xilinx)

FPGA内部结构(Xilinx)
本⽂主要以Xilinx Virtex Ⅱ系列为例,对FPGA内部结构作简要介绍,其内容主要来⾃Xilinx Virtex Ⅱ datasheet、user guide、以及其它来⾃Xilinx⽹站上的资料。
内部结构概述
FPGA内部⽐较复杂,根据Datasheet上的分类,主要包括以下⼏个部分:
l 输⼊/输出模块 Input/Output Blocks (IOB)
l 可配置逻辑单元 Configurable Logic Blocks (CLB)
l Bram Block SelectRAM
l 18 x 18 乘法器 (18-Bit x 18-Bit Multipliers)
l 全局时钟⽹络 (Global Clock Mux)
l 数字时钟管理模块 (DCM)
l 布线资源 Routing Resources
图表 1 FPGA内部结构
计算机软件保护条例输⼊/输出模块 Input/Output Blocks (IOB)
IOB 模块两个⼀组或者4个⼀组分布在芯⽚的周边部分,如图表 1所⽰。光纤电流互感器
淮北赵斌每⼀个IOB模块都可以⽤作输⼊或者输出;两个IOB可以组成⼀组差分信号(Differential Pair);IOB同交换矩阵(Switch Matrix)相连。
图表 2 IOB 和Switch Matrix
IOB⽀持的I/O标准IOB能够⽀持多种I/O标准,包括:
l LVTTL, LVCMOS (3.3V, 2.5V, 1.8V, and 1.5V)
l PCI-X compatible (133 MHz and 66 MHz) at 3.3V
l PCI compliant (66 MHz and 33 MHz) at 3.3V
l CardBus compliant (33 MHz) at 3.3V
l GTL and GTLP
l HSTL (Class I, II, III, and IV)
l SSTL (3.3V and 2.5V, Class I and II)
l AGP-2X
IOB还能够⽀持差分信号I/O标准:
l LVDS
l BLVDS (Bus LVDS)
l ULVDS
l LDT
l LVPECL
如图表3所⽰,在FPGA中,所有的IOB分成8组(Bank),每⼀边有两组。
⼀些I/O标准需要外部的参考电压VCCO或者VREF,这些外部电压必须同FPGA引脚相连。每个组(B
ank)中都有多个VCCO引脚,在相同的Bank中所有VCCO引脚必须与相同电压连接。电压⼤⼩由使⽤的I/O标准决定。在⼀个组内部,如果所有I/O标准都使⽤相同的VCCO,则它们可以兼容。
每⼀组IOB中,能够使⽤的时钟⽹络只有两个,也就是说在每⼀组中,⾄多可以同时使⽤两组不同时钟的输⼊输出。
氢化可的松
图表 3 I/O 组(I/O Bank)
图表 4 IOB模块的逻辑资源
如图表4所⽰IOB模块中包括6个存储单元(Reg),每个单元即可以配置成为边沿触发的D寄存器(flip-flop,FF),也可以配置能电平触发的锁存器(latch)。
IOB中,每条路径上都有两个寄存器⽤来进⾏DDR(double data rate)数据传送,两个寄存器的时钟需要保持反相,可以通过DCM来达到这⼀点。
图表 5 DDR寄存器
可配置逻辑单元 Configurable Logic Blocks (CLB)
CLB是FPGA中的基本逻辑单元,其结构⽐较复杂。在Xilinx Virtex Ⅱ系列FPGA中,⼀个CLB单元由,四个结构类似的Slice模块组成。在FPGA 内部,所有CLB单元排列成阵列,并于交换矩阵(Switch Matrix)相连,如图表6所⽰:
图表 6 Virtex-II 中的CLB 单元
图中,“X1Y1”、“X1Y0”、“X0Y1”、“X0Y0”是Slice在FPGA中的位置编号,在FPGA中每⼀个Slice都会根据⾃⼰的横纵坐标有⼀个独⼀⽆⼆的编号。
每⼀个Slice模块中包含2个4输⼊LUT(Look Up Table,查表)和2个1bit的存储单元。其中,LUT能够根据设计需要配置成为:组合逻辑、单⼝RAM、双⼝RAM、ROM、移位寄存器和多路选通器;存储单元可以配置成为边沿触发的寄存器或者电平触发的锁存器。
图表 7 Slice 的配置⽅式
LUT
LUT本质上讲就是⼀个16bit的SRAM(静态随机存储器),4个输⼊实际上就是SRAM的地址。对于⼀个4输⼊得组合逻辑来说,他的结果最多只可能有16种,那么,我们完全可以把所有的16种结果事前全部计算出来,存放在⼀块16bit的区域中,再将组合逻辑的输⼊作为SRAM的读取地址,这样我们就可
以通过LUT的⽅式实现了任意4输⼊的组合逻辑功能。⽽且,使⽤这样的实现⽅法,电路延迟同组合逻辑⽆关,只取决于SRAM 的读写速度。
Distributed SelectRAM Memory
既然LUT本质上就是⼀⼩块RAM,那么在实际的设计过程中,我们也可以把LUT配置成为RAM来使⽤。LUT作为RAM来使⽤的时候也有两种配置⽅式:单⼝RAM和双⼝RAM。⼀个LUT配置成为⼀块16bit x 1的RAM,⽽双⼝RAM要多占⽤⼀倍的资源,既需要两个LUT才能配置成⼀块16bit x 1的RAM。图8所⽰配置成RAM所占⽤资源的情况,其中“S”代表单⼝RAM;“D”代表双⼝RAM。
⽆论是LUT配置成的单⼝RAM还是双⼝RAM都可以通过并联或者串联来增加RAM的数据位宽度和地址位深度(容量)。
图表 8 LUT配置成RAM占⽤资源情况
通RAM类似,LUT还能够配置能ROM。图表9所⽰为LUT配置成ROM的情况。
图表 9 配置能ROM的情况
移位寄存器
LUT还有⼀种⾮常重要的配置⽅式是移位寄存器。LUT的输⼊A[3:0]⽤来选择移位寄存器输出长度,对于单个LUT构成的移位寄存器来说,最⼤程度为16bit。移位寄存器即可以配置成固定长度的、静态移位寄存器,也可以配置成动态的移位寄存器。
在每个时钟(CLK)的上升沿,移位寄存器从D(BY)读取⼀位数据。信号Output作为移位寄存器的输出,输出的位置由A[3:0]的值决定。
加拿大飞蓬移位寄存器有两种⼯作模式:静态模式和动态模式。
静态模式中,地址A[3:0]都是定值(static value),移位寄存器的长度的范围为1bit到16bit。可以由以下公式确定:
Length = (8XA3) +(4XA2) + (2XA1) + A0 +1
丁度.巴拉斯如果输⼊全部为零,则移位寄存器的长度为1;如果输⼊全部为1,则移位寄存器长度为16。
在动态模式中,移位寄存器的长度可以根据A[3:0]变化,计算公式同静态模式中相同。
需要注意的是,尽管我们可以动态的配置移位寄存器的长度,但是对于⼀个LUT来说,它本质上讲还是⼀个16bit的移位寄存器,⼀位寄存器的长度仅仅是指出了数据出⼝的位置。例如,当我们将移位寄存器的长度从12改为8的时候,输出的是第8个数据,但移位寄存器并没有将后⾯的数据丢掉,如果我们这个时候再把长度设为10还是能够得到正确的数据。
图表 10 为移位寄存器的结构,这⾥需要指出的是在上⾯的讨论中都是没有寄存器的情况下,如果移
位寄存器包含了寄存器,既输出为Registered Output,则在静态模式下移位寄存器的长度要加1,动态模式下的情况⽐较复杂,请读者⾃⼰分析。
图表 10 移位寄存器
移位寄存器,还可以级联以进⾏扩展。在FPGA内部,有⼀条专⽤联线,⽤于移位寄存器的级联扩展,既图表6种的“SHIFT”,它将前级移位寄存器的输出同后级移位寄存器的输⼊相连。在⼀个CLB单元中⾄多可以构成⼀个256bit的移位寄存器。
寄存器/锁存器 (Register/Latch)
Slice中的存储单元即可以配置成边沿触发的寄存器,也可以配置成电平触发锁存器。
寄存器的输⼊即可以使LUT的输出,也可以是来⾃交换矩阵(Switch Matrix)的数据。
可以通过设置属性的⽅式设置寄存器的初值和清零⽅式,INIT1表⽰初值为1;INIT0表⽰初值为0。设定SRHIGH时,在“SR”有效时寄存器值为“1”;设定SRLOW时,在“SR”有效时寄存器值为“0”。
在默认情况下,设定SRHIGH即表⽰了INIT1;设定SRLOW即表⽰了INIT0;当然,这两组属性也可以分别独⽴设置。
每个Slice都可以配置成同步清零或者异步清零。
在图11种,CLK为时钟信号;SR为清零信号;CE为时钟有效信号(Clock Enable);DY、BY、DX、BX都是寄存器的输⼊。
可以看出,在同⼀个Slice中的CLK、SR、CE信号都是共⽤的。
图表 11 寄存器
多路选通器 (Multiplexers)
在图表7中,有两个选通器:MUXF5和MUXFx。其中,MUXF5在每⼀个slice中都是完全⼀样的,MUXFx则略有区别,分别对应于MUXF6、

本文发布于:2024-09-23 03:11:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/190824.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   移位   配置   长度   逻辑   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议