首页> 中国专利> 具有分布RAM并提高了单元利用率的现场可编程门阵列

具有分布RAM并提高了单元利用率的现场可编程门阵列

摘要

一种现场可编程门阵列,具有可编程逻辑单元(11;12)和本地和直快总线(19,21,23,25)总线网络。总线网络有效地把矩阵分成单元块(15),每个块具有其自己不同的本地总线。直快总线利用中继开关单元(27)延伸过一个以上的单元块,中继开关单元(27)还把本地总线连接到直快总线上。把单元分成块,中继器在块之间边界(13)上以行和列对齐,从而在块的角上产生空间,可以用RAM块(83)、其它存储结构、特殊逻辑结构或连接到总线网络上的其它专用功能元件填充。RAM块(图13)可以是单端或双端SRAM(85),通过总线(86;178,179)寻址。RAM块中相邻的列对可以用同一组总线(图14)来寻址。其它特殊或专用逻辑也可以填充这些角空间。逻辑单元直接连接到相邻单元,包括对角相邻的单元(图3),还连接到本地总线上。直快总线的结构最好是交叉的,这样,它们以另一种方式连接到非连续中继器(27)上(图11)。I/O端口(17)连接到矩阵周边的单元和总线网络上。较佳的是端口连接到一个以上的单元和一根以上的总线行或列上,每个周边单元可以连接到几个I/O端口的任何一个上(图16,18,19)。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-07-28

    未缴年费专利权终止 IPC(主分类):G06F9/455 授权公告日:20030416 申请日:19970509

    专利权的终止

  • 2008-04-02

    专利权人的姓名或者名称、地址的变更 变更前: 变更后: 申请日:19970509

    专利权人的姓名或者名称、地址的变更

  • 2003-09-24

    发明专利公报更正更正 卷:19 号:16 页码:428 更正项目:发明名称 误:具有分布RAM的现场可编程门陈列 正:具有分布RAM的现场可编程门阵列 申请日:19970509

    发明专利公报更正

  • 2003-09-24

    发明专利说明书更正更正 卷:19 号:16 页码:扉页 更正项目:发明名称 误:具有分布RAM的现场可编程门陈列 正:具有分布RAM的现场可编程门阵列 申请日:19970509

    发明专利说明书更正

  • 2003-04-16

    授权

    授权

  • 1999-03-17

    实质审查请求的生效

    实质审查请求的生效

  • 1998-09-30

    公开

    公开

查看全部

说明书

技术领域

本发明涉及一种称为现场可编程门阵列(FPGA)类型的可编程多功能数字逻辑阵列集成电路,尤其涉及对这种FPGA的可配置逻辑单元的结构的改进,以及直接单元至单元连接和这种FPGA的互连总线网络,这种设计改善了执行逻辑功能的单元利用率和功能性。本发明还涉及其内包括用户可访问的存储器单元的FPGA,以综合一些存储器的存储容量,供FPGA装置的逻辑单元使用。

背景技术

数字逻辑可以利用几种可得到的集成电路构造来实现,包括硬接线专用集成电路(ASIC)、掩膜或熔断编程定制门阵列(CGA)、可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)和通常使用非易失性EPROM或EEPROM存储器单元技术的,由用户来配置的其它可编程逻辑器件(PLD)以及一般使用在芯片每次加电期间设置的SRAM配置位的现场可编程门阵列(FPGA)。在这些各种构造中,具有用户可编程、可擦除和可再编程能力的构造一般优于固定或仅可编程一次功能的构造。FPGA能实现大规模高复杂性逻辑功能,它不需要转换成两电平积之和形式,以对这些器件进行编程。SRAM受控开关不仅可以装载不同的功能,以极容易地再配置器件,而且被优化以高速地工作。

现在可以得到很多种FPGA,它们在部件逻辑单元的复杂性以及提供的互连资源上不同。在例如美国专利4,706,216;4,758,985;4,758,985;5,019,736;5,144,166;5,185,726;5,231,588;5,258,688;5,296,759;5,343,406;5,349,250;5,352,940;5,408,434以及其它许多专利中揭示了FPGA。

通常的FPGA构造由两维阵列或者可配置的矩阵组成,用可编程的互连结构在相邻逻辑单元与总线网络之间提供两直接连接以及在矩阵的单元行和列之间分配连接的开关可以有选择地把它连接在一起。在矩阵周边附近,一组输入/输出端连接到总线网络、周边逻辑单元或者两者之上,使信号传入和传出芯片。对每个单独的逻辑单元进行编程,以实现较简单的逻辑功能。每个逻辑单元通常包括输入和输出选择逻辑(MUX)、组合逻辑、以便同步操作的一个或多个存储单元(触发寄存器)以及可能的进行后继逻辑的一个或多个内部反馈线。一些FPGA单元的组合逻辑是固定功能逻辑门的形式,可以具有可选择输入的配置。然而,较佳的FPGA单元使用查找表存储器(配置的SRAM)以提供多种逻辑功能。查找表的存储器单元存储一组数据位,它们的值对应于特定功能的真值表。存储器的地址线上表现出的一组输入信号使存储器提供一位输出,该输出是存储在这些输入信号指示的址上的值。因此,查找表存储器实现了存储器内存储的真值确定的功能。这种互连结构提供了每个单元与在矩阵的同一行或同一列上最相邻单元之间的直接连接。美国专利No.5,296,759另外提供了一种单向对角连接到相邻的单元上。除了单元到单元的直接连接之外,还有一组“逻辑”总线线路在单元与总线网络之间进行连接。在规则地间隔的可配置开关(称为中继单元)把短本地总线段连接到长直快总线上。中继器通常在行和列上对齐,从而把整个阵列分成单元块。一种通常的布置是把64逻辑单元组组织成8×8的块,每个块具有一组相关的本地总线部分。与本地总线部分不同,直快总线穿过中继器跨越一个以上的单元块,使信号在不同的单元块之间传送。直快总线线路仅通过本地总线部分访问逻辑单元,以减少直快线路上信号的传播延时。

FPGA设计者继续在尝试进行改进,以提供器件的速率和功能灵活性。例如,一种设计目的是提高各逻辑单元的功能能力,同时保持作为FPGA构造主要特性的单元小型和简单。需要改进的另一个方面是电路的所有单元的利用率。尤其是,由于总线网络和单元总线接口中权衡的数量和低效率,FPGA单元常常仅用作“接线单元”,以在其它单元之间传送信号,提供右转角、交错连接和信号扇出。这种信号路由低效率地使用了逻辑单元。理想的路由应仅由直接的连接和总线网络提供,而把逻辑单元仅用于逻辑。而且,因为各单元实现的功率较简单,一些设计提供了一些专用于进行特定功能的单元,例如编码和快速运送操作。不幸的是,如果不需要该特定的功能,则该单元就被浪费了。单元设计本身有助于全面利用阵列中的单元。较佳的是,单元具有镜象并相对于其多个输入和输出可以得到的功能旋转对称,以减少对信号旋转的需要,简化单元阵列的功能布线。最后,在大多数的FPGA中,需要有用户可访问的随机存取存储器(RAM)。各制造商使用不同的方案来提供这种需要的片上存储器。例如,Altera公司在阵列的外边缘上设置RAM,而Actel公司设置逻辑单元和RAM的交叉带。Xilinx公司由用户在器件工作期间更新逻辑单元内的查找表存储器,以改变这些单元提供的功能。

本发明的目的在于提供一种FPGA,它提高了逻辑单元的功能性,改善了单元的利用率,通过总线网络和单元至单元的直接连接使信号路由更有效,在器件中综合了用户可访问的存储器能力。

发明内容

该目的是通过这样一种FPGA矩阵来实现的,即在这种FPGA矩阵中,在中继开关单元的行和列交错点上逻辑单元每个块的角上形成的空间内提供用户可访问的存储结构(或专用逻辑),即可看作“专用功能元件”的存储结构和专用逻辑。一种存储结构可以是随机访问存储器,即,RAM结构。与RAM的写允许和输出允许控制端一样,RAM的地址和数据线连接到总线上。RAM可以是单端或双端SRAM。相邻RAM列的对可以由同一组总线寻址。存储结构还可以是非易失性存储结构。

该目的还可以通过这样一种FPGA矩阵来实现,在这种FPGA中,连接到与逻辑单元相关的本地总线部分的中继开关单元按每N个逻辑单元均匀地间隔,因而把单元分成N×N单元块,每个块中的单元仅连接到关联的本地总线部分组上,而不连接到与另一单元块关联的本地总线部分上。中继开关单元把每个本地总线部分连接到块相对端部的直快总线上,中继器以交错结构布置,所以每根直快总线与中继单元的常常相遇少于与本地总线,例如每2.N个逻辑单元,之后相遇。

该目的还可以通过这样一种FPGA来实现,在这种FOGA中,逻辑单元矩阵有至同一单元行和单元列内的四个最邻近的逻辑单元的第一组直接连接,还具有至其它对角相邻的逻辑单元的第二组直接连接。

该目的还可以通过这样一种FPGA来实现,在这种FPGA中,每个逻辑单元包括以对形式的组合逻辑,它们可以起到查找表、用户可访问存储元件或这两者的作用。这些结构都是可由同一组输入来寻址的,其输出可选择地用于同一组输出,其中一个输出具有选择接入到寄存器中,另一对单元的输入可以有选择地输出一个或者其它存储元件输出,以有效地把两个存储元件组合成一个更大的全面的可寻址存储单元。该两个存储元件地址输入可以接收从四个直接连接输入或本地总线输入中任何输入选出的输入。

而且,单元的每列可以有许多全局时钟信号,这些全局信号可以根据单元列中的多个单元扇区,具有极性和允许选择。全局设置或复位信号也可以根据不同扇区具有极性并允许选择。

I/O端口可以在单元矩阵的周边连接到多个逻辑单元,还可以连接到多行或多列总线上。每个周边逻辑单元和每行或每列总线可以连接到几个I/O端口的任何端口上。可以有额外的I/O端口,仅连接到总线上。

附图概述

图1是本发明FPGA电路的俯视平面图。

图2是图1的FPGA电路的四个逻辑单元的俯视平面图,示出了单元之间的直接连接。

图3是本发明FPGA电路的四个逻辑单元的俯视平面图,示出了直接单元至单元连接的另一种实施例。

图4是图1的FPGA电路的4×4逻辑单元块的俯视平面图,连接了总线网络和RAM。

图5是图1的FPGA电路的一个逻辑单元块的逻辑电路图。

图6是图5的逻辑单元的单元-总线接口的示意性电路图。

图7和8是本发明FPGA电路的两种逻辑单元实施例的逻辑电路图。

图9和图10是图1的FPGA电路的部分平面图,示出了本发明时钟和复位信号分配。

图11是图4的四个单元块的俯视图,示出了本发明的FPGA电路中继开关单元的交错结构。

图12是图1和图4的FPGA的3×3组单元块的俯视平面图,示出了专用功能元件(DEF)的位置,例如在中继行和列之间每个块角上的RAM。

图13是本发明FPGA电路的RAM和RAM-总线接口的逻辑电路图。

图14是本发明FPGA电路的部分平面图,含有八个逻辑单元块和与它们相关的RAM块,示出了如图4所示的另一种RAM到总线网络的连接方案。

图15是图14的虚线150中的RAM块的放大图。

图16是图1的FPGA电路周边上的一组逻辑单元的部分示意图,示出了单元到电路的一组I/O端口的连接。

图17是根据本发明一个实施例的FPGA的角上逻辑单元和单元至端口接口的逻辑电路图。

图18是图1的FPGA电路周边上的一组逻辑单元的部分示意图,示出了这种单元至图16所示的电路的I/O端的另一种连接。

图19是图18所示的连接的单元-端接口的逻辑电路图。

图20和21是根据第三个连接实施例的两种类型的I/O端的单元-端口接口的逻辑电路图。

本发明的实施方式

参照图1,本发明的现场可编程门阵列(FPGA)集成电路包括一个矩阵或有多行和多列的可编程逻辑单元11的两维阵列。可以对各逻辑单元11中的每个单元实行配置或编程,以实现具体的逻辑功能。这些单元连接在一起,如图2或3所示,双向连接相邻单元,并且,如图4所示,通过总线线路网络连接开关,使所有FPGA器件或芯片实现更复杂的整体逻辑功能,FPGA器件或芯片是由每个单独的单元提供的很多简单的功能组成的。因此,在FPGA器件中,该功能不需要计算成两级积之和,因为这种互连结构使它可以把任一逻辑单元的输出馈送到任一其它逻辑单元的输入端。从而形成逻辑单元链,可以产生具有多级逻辑的功能。

图11总线网络的逻辑和直快总线线路以及它们的连接中继开关的图形把逻辑单元的基本阵列分成更小的直线单元块。图1中看到的虚线集表示了这种划分布置,在这种布置中,把16个逻辑单元组组织成4×4正方形单元块。每个块15具有其自已的相关本地总线部分集,专用于该特定逻辑单元组,如下面参照图4和图11所看到的,而直快总线线路延伸过1个以上的块,以在不同逻辑块之间传送信号。虽然图1所示的电路具有32行和32列单元(总计1024个逻辑单元),组织成4×4单元块的8×8矩阵,但其它器件一般可以具有小到16行和列的单元或者多到64(或更多)行和列单元。在整个FPGA器件上,逻辑单元11的块15的大小并不需要相同。例如,器件的不同的象限可以含有4×4、6×6或8×8的正方块,或者4×6、4×8、6×6、6×12或8×16的矩形块等。

FPGA电路还具有输入/输出(I/O)端17,沿单元矩阵的周边连接到总线线路和逻辑单元上,使信号传输进入芯片和从芯片传输出端。下面将参照图16-21详细描述输入/输出端的连接。

图2示出了该电路的一个实施例的单元至单元直接连接。每个逻辑单元11具有每一组相同的A输出端和第二组相同的B输出。任一单元的A输出端连接到同一行或列上的所有四个相接的最邻近的逻辑单元上作为输出单元。同样,该单元的B输出端也连接到所有四个最邻近的单元上。每个逻辑单元还具有一组A输入端(标为An,Ae,As,Aw),接收四个最邻近的单元的各A输出端的信号输出。每个逻辑单元具有一组B输入端(这里标为Bn,Be,Bs,Bw),接收四个最邻近单元的各B输出端的信号输出。因此,在同一行或列上的任两个最邻近单元之间,有四条连接信号路径,在每个方向上有两条路径。

图3示出了根据本发明的FPGA电路的另一实施例的单元至单元直接连接。在该实施例中,每个单元12具有第一组相同的A输出端和第二组相同的B输出端。任一单元的A输出端连接到同一行或列上相接的所有四个最邻近的逻辑单元,作为输出单元,但该单元的B输出端连接到四个对角相邻的单元上。每个逻辑单元还具有一组A输入端(标为An,Ae,As,Aw),接收同一行或列上的四个最邻近的单元的各A输出端的信号输出,作为接收单元,以及一组B输入端(这里标为Bnw,Bne,Bse,Bsw),接收四个最邻近单元的各B输出端的信号输出。因此,每个逻辑单元连接到所有八个相邻单元上,并且在任两个单元之间,有两条连接信号路径,每个方向一条。

图4示出了FPGA电路的单元至总线的连接。在一个块中的4×4组逻辑单元11具有总线线路,分布在单元的行与列之间。尤其,邻接到逻辑单元的每列上可以有五组三条垂直总线线路19,邻接到逻辑单元的每行上可以有五组三条水平总线线路21。每组三条总线线路包括一条本地总线线路23和两条直快总线线路25。逻辑单元11仅直接连接到本地总线线路23上,对直快总线线路25的访问是直接通过连接中继单元27上的本地总线线中,连接中继单元27位于每个单元块的周边。如下面参照图11所示解释的,中继器27具有交错的总线连接,以使每个直快总线线路仅每8个单元与一个中继器相交,而不是每四个单元。每个逻辑单元11具有10条双向数据总线线路29,把逻辑单元连接到与特定逻辑单元位于其内的单元的各行和列相邻的5条水平本地总线线路和5条垂直本地总线线路上。这些10条双向线路29(在图6中标为V0-V4和H0-H4),以下面将参照图6更详细描述的这样一种方式连接到它们相应的逻辑单元上,以提供数据信号路径,通过该路径,单元输入端(图5和图6中的AL、BL、CL和DL)和单元输出端(图5和图6中的L)可以在逻辑单元与总线网络之间进行通信。

参照图5,本发明的FPGA内的逻辑单元的一个实施例具有四组输入端,包括那些标为A的输入端(从相邻单元来的直接连接An,Ae,As,Aw和本地总线输入AL)、第二组标为B的输入端(从相邻单元来的直接连接Bn,Be,Bs,Bw以及本地总线输入BL)、标为CL的第三本地总线输入端以及标为DL的第四本地总线输入端。逻辑单元还具有三组输出端,包括连接到四个相邻单元的各A输入端和B输入端的A输出端和B输出端,还包括本地总线输出端L、A和B输出端和直接A和B输入端如上述参照图2所述的一样连接。如前面参照图4所描述的一样,单元的本地总线输入端(AL、BL、CL、DL)和本地总线输出端(L)通过连接信号路径29连接到十个相邻的水平和垂直本地总线线路23上(在图6中将更详细地描述)。尤其是,在图6中,每条本地总线连接信号路径(H0-H4和V0-V4)通过相应的传递门31到达单元内的五条中间信号线330-334中之一。每条中间信号线330-334可以由传递门耦连到两条本地总线之一上,连接信号路径,它们中之一来自相应垂直总线(通过路径V0-V4),另一来自水平总线线路(通过路径H0-H4)。接着,这些五个中间信号线330-334中的每条线路连接到四个总线输入选择多路复用器35A-35D上。因此,每个多路复用器35A-35D具有五个输入端,每个用于各中间信号线330-334。每个多路复用器35A-35D的输出形成单元的四个本地总线输入(AL、BL、CL、DL)。因此,由于传递门31的配置和多路复用器35A-35D的选择作用,逻辑单元连接的十条相邻本地总线中的任一条可以向四个本地总线输入端中的任一输入端提供输入信号。逻辑单元的本地总线输出端L还通过一组传递门37连接到五条中间信号线330-334上。因此,由于传递门37和31的配置,输出端L可以连接成向十个相邻本地总线线路中任一条线提供输出信号。如果有要求,把两个相应的连接传递门31打开,也可以把输出端L同时连接到水平总线线路和垂直总线线路上。虽然,通常一个传递门37选择中间信号线中的一条线用于本地总线输出L,另四条中间信号线33由多路复用器35A-35D选择(并关闭相应的输出传递门37)以接收本地总线输入信号,但如果需要额外的反馈路径,则用户可以选择对输出传递门37和输入选择多路复用器35A-35D,把本地总线输出L的反馈路径提供给本地总线输入AL、BL或DL之一。(如图5所示,内部单元结构已经允许用多路复用器39对CL本地总线输入选择反馈。)

返回到图5,每个逻辑单元的内部逻辑可以包括两个8比特的查找表(L.U.T.)45和47,它们由A、B和C输入端来寻址。查找表通常由工作成只读存储器的静态RAM存储单元组成,即在FPGA器件初始配置期间装载,在工作期间不进行动态再编程。A组输入端(An,Ae,As,Aw,AL)由多路复用器41接收,并选择它们中的一个输入。把该A多路复用器所选的输出连接到第一L.U.T.45的a0地址输入和第二L.U.T.47的a1地址输入。同样由B输入选择多路复用器43选择B组输入(Bn,Be,Bs,Bw,BL),并把所选的输出连接到第二L.U.T.47的a0地址输入和第一L.U.T.45的a1地址输入。第三多路复用器39在反馈线40上接收本地总线输入CL和内部反馈信号,并把这些信号之一输出到第一和第二L.U.T.45和47的a2地址输入。本地单元使用两个8比特相找表45和47,以提供多种组合逻辑。两L.U.T.45和47的SRAM存储单元存储一组数据位,其值对应于特定逻辑功能的真值表。当一组输入信号出现在在每个L.U.T的三个地址输入(a0-a2)时,两个表读取存储在这些输入信号指示的地址上的各位值。因此,每个L.U.T.45和47把该组输入的特定功能的一位输出信号表示在其各输出端49和51上,其中,由存储的真值确定存储器实现的功能。

查找表45和47的输出49和51分成多路信号路径,把它们导入到单元A和B以及本地总线输出L。尤其,L.U.T.输出49和51连接到各数据线52和53上,各数据线52和53可以由各第一和第二输出多路复用器54和55耦连到输出线56和57上,以把输出信号提供给各A和B输出。L.U.T.输出49和51还连接到各第二数据线59和60上,导入到第三输出多路复用器61。多路复用器61的控制信号从本地总线输入DL或从固定逻辑电平信号(“0”或“1”)由多路复用器62选择取得。当选择逻辑“0”信号时,第三输出多路复用器61把通过第二数据线59接收到的第一查找表45的输出传输到其输出端63,但当选择逻辑“1”信号时,第三输出多路复用器61把通过另一第二数据线60接收到的第二查找表47的输出传输到其输出端63。当选择本地总线输入DL时,对第三输出多路复用器61的控制是动态的。实际上,两个8比特查找表45和47一起起到一个16比特查找表的作用,其中本地总线输入DL用作第四地址输入,以访问存储在组合查找表中所要求的数据位。把选出的第三多路复用输出63分成两个并行的路径,一路是组合或非寄存路径65,另一路是含有触发器66的寄存路径。第四输出多路复用器67把这两路径中的一路连接到其输出69。第四多路复用器输出69还分成几路并行的路径。这些路径的一路70连到可能选择以耦连到单元的A输出上的第一输出多路复用器54上,这些路径中的另一路71连到可能选择的以耦连到单元的B输出上的第二输出多路复用器55。第三路径通过输出缓存器73连到输出线75上,把输出信号提供给单元的本地总线输出L。输出缓存器73可以是三态缓存器,受再一个多路复用器74提供的允许信号控制。可选项包括缓存器73总是允许的逻辑“1”信号和两从专用的总线线路上接收到的动态输出允许信号OEH和OEV。第四多路复用器输出69的第四路径是反馈路径40,连到本地总线输入CL处可能选择的输入多路复用器39上。

这种单元结构为它提供了显著的灵活性,同时保持了较简单的结构和小型的体积。A和B输入多路复用器41和43与四个最邻近单元完全对称。同样,图6的本地总线输入电路为所有十个单元的本地总线连接提供了完全相同的选项。在单元的输出端,A和B输出设置有匹配的选项。非寄存地通过直接信号线52或寄存地通过第二信号线59以及寄存器66和信号线70,可以为A输出设置第一查找表45的输出。或者,通过第二信号线60和信号线70,再寄存或非寄存地为它提供第二查找表47的输出。或者当多路复用器62选择本地总线输入DL作为第四地址输入时,可以寄存或非寄存组合的16位L.U.T.提供输出。同样,可以为B输出提供第二查找表47、第一查找表45或组合16比特查找表的输出,这些输出的任一数据都可以寄存或者不寄存。相同的项可用于单元的本地总线输出L。

除了对称和灵活的输入和输出选项之外,单元结构还产生较快的从输入到单元的直接单元至单元输出的通过率。由于单元结构简单,所以在单元的输入和输出之间可以有少至三个电路电路元件。尤其是,A、B、C和D输入信号在到达地址输入a0、a1、a2或集中控制对存储在查找表45和47内的数据位进行访问的多路复用器61的控制输入之前,仅通过一个选择电路,即多路复用器41、43、39和62之一。同样,在查找表45和47的输出侧,查找表输出线49和51提供的信号可以仅通过一个多路复用器54或55,以到达单元的A或B输出。

图7示出了根据本发明的另一个逻辑单元。该单元包括一组输入多路复用器41′、43′、39′和62′,以接收和选择A、B、C和D输入。如图5所示,A输入包括与上述单元同行或同列内的最邻近逻辑单元来的直接单元至单元输入An,Ae,As和Aw,还包括逻辑总线输入AL。B输入也可以与图5所示的相同,或者另一情况除了本地总线输入BL之外还可以包括对角相邻逻辑单元的单元至单元输入Bnw,Bne,Bse和Bsw。因此,B输入可以对应于图3所示的单元至单元连接。输入多路复用器39′选择本地总线输入CL或逻辑“1”信号。其输出42′连接到与门44′的一个输入端。多路复用器38′选择反馈线34′上的反馈信号、逻辑总线输入DL或逻辑“1”信号,并把所选的信号放在其输出40′上,送到与门44′的另一输入端。因而,与门44′可以把本地总线输入CL或DL或反馈信号传送到其输出46′上,或者可以逻辑地组合(与)本地总线输入CL和DL(或把输入CL与反馈信号组合)以形成这两输入的逻辑积。具有与门44′的单元提供了可在单个单元内实现一个元件的阵列多路复用器的可能性。如图5所示,把所选的输入多路复用器41′和43′的输出连接到两个8比特查找表45′和47′的两个地址输入a0和a1。与门44′的输出46′连接到查找表45′和47′的第三地址输入a2

如图5所示,查找表45′和47′的输出通过多路复用器54′和55′的输出连接到逻辑单元的各A和B输出上。表45′和47′也连接到受固定“0”或“1”控制信号控制,或受再一多路复用器62′所选择的本地总线输入DL控制的第三多路复用器61′上。如前面所述,当选择本地总线输入DL时,两查找表45′和47′与作为第四地址输入的本地总线输入DL有效地组合成单一16比特表。所选的第三多路复用器61′的输出连接到由非寄存信号路径65′、寄存信号路径内的触发寄存器66′以及选择这两个信号路径中一路的多路复用器67′组成的寄存/非寄存电路。得到的输出69′通过多路复用器54′和55′连接到单元的A和B输出,通过输出缓存器73′连接到单元的本地总线输出L。再者,响应于多路复用器74′所选的输出允许信号,输出缓存器73′可以是三态缓存器。图7还示出了输出缓存器电路73′还可以包括通过再一多路复用器72′的输出极性控制。

参照图8,根据本发明的另一个逻辑单元用两个8×1的静态RAM,它们在器件工作期间通过从总线网络提供写允许和对单元的数据访问可以进行写入。这可以把单元用作片上存储器,或另一方面可以实现工作期间动态改变的预装载的和固定的查找表进行的逻辑功能,例如由该器件本身作为FPGA器件内其它单元进行的一些功能的结果来实现。在该实施例中,输入多路复用器44”、43”和39”连接到A、B和C直接和本地总线输入以及反馈线40”上,还与图5所示一样的方式连接到SRAM45″和47″的地址输入a0、a1和a2。SRAM45″和47″的输出49″和51″都分成非寄存路径64″和65″和含有触发器66″和68″的寄存路径,这些触发器分别连到输出复用器54″和55″。多路复用器54″和55″的输出沿信号路径56″和57″连接到逻辑单元的单元至单元直接A和B输出,还沿第二信号路径59″和60″连到受多路复用器62″选择的信号控制的本地总线输出选择多路复用器61″。该选择包括固定低电平(“0”)和逻辑高电平(“1”)以及分别从水平和垂直本地总线得到的动态本地总线输入DH和DV。如果选择动态本地总线输入DH或DV,来控制输出多路复用器61″,则高效地把该输入用作由两个8比特SRAM45″和47″组成的组合16比特SRAM的第四地址输入。输出多路复用器61″所选的输出69″连接到反馈线40″上,连接到输入多路复用器39″,还通过缓存器73″连接到本地总线L上。如前所述,缓存器73″可以具有通过多路复用器74″从本地总线OEH或OEV来的输出允许控制。另一方面,SRAM输出49″和51″之间的电路以及地址A和B输出和本地总线输出L可以与图5所示的一样。

通过连接到FPGA总线网络和两SRAM45″的47″的数据输入d0的DATA_IN(数据输入)线84″以及地址输入a0-a2,并通过向SRAM45″和47″之一提供写允许信号WE的写电路提供了本实施例单元独有的对SRAM45″和47″的写访问。写允许电路包括两个与门76″和77″,每个与门具有三个输入端78″-80″,并具有一个输出端,把写允许输入耦连到SRAM45″和47″之一上。与门输入78″之一接收与本地总线输出多路复用器61″相同的多路复用器62″所选的控制信号。即,输入78″有选择地接收固定逻辑低电平(″0″)或高电平(″1″),或动态本地总线输入信号DH或DV。在达到与门76″之前把输入78″反转,而在达到另一与门77″之前不反转。因此,在某一时刻,SRAM45″和47″中仅有一个SRAM将接收到写信号。如果输入78″为低逻辑电平,则左面的SRAM45″将被允许,而如果输入78″为高逻辑电平,则右边的SRAM47″将被允许。用本地总线输出多路复用器61″的相同控制信号可以确保在本地总线输出L上检验从数据输入线84″写入的数据。第二个与门输入79″向与门76″和77″提供了反转的时钟(CLOCK)信号,以保证要写入的输入数据在写允许信号WE传送到所选的SRAM45″和47″之前已在数据输入线84″上适当地建立了。第三与门输入80″通过多路复用器82″提供了写允许信号WE本身,它可以进行该逻辑单元(由固定逻辑低电平输入“0”)选择禁止的写操作。

参照图9和10,每个单元(各图5,6和8)内的触发寄存器(或寄存器)66、66′、66″和68″接收时钟输入和复位(或置位)输入。图9示出了本发明的FPGA的时钟分配电路。可以有多个全局时钟线CK0-CK7,以提供频率、相位或两者都彼此不同的时钟信号。其它可能的时钟分配结构可以包括一些其它的时钟线,部分总体多路复用器88等。逻辑单元11的每列可以设置有其自已的时钟选择多路复用器88,该多路复用器88的输入端分别连接到部分或全部全局时钟线CK0-CK7。因此,可以为逻辑单元11的每列提供与逻辑单元11其它列不同的时钟信号。每个时钟选择多路复用器88的输出形成主列线92,把所选的时钟信号分配给该列内的每个单元。可以把逻辑单元的列再分成4个或8个扇区,通常,每个为N个单元。在图9中,可以看出扇区14由4个单元组成。对于单元的每个扇区,从主列线92分出,提供有时钟极性选择和分配允许电路94。该电路94包括第一多路复用器106,其一个输入端连接到主列线92以接收时钟信号,另一输入端接收固定逻辑高电平(“1”)信号。如果多路复用器106选择了时钟信号,则把该信号分配给单元11相应的扇区14,但如果选择了固定信号,则不向该扇区14提供时钟信号。电路94还包括二分叉的信号路径(105和107),连到第二多路复用器108。第二多路复用器的一个输入直接来自第一多路复用器106的输出105,而另一输入首先通过反相器107。第二多路复用器108能使时钟信号的极性选择相应的扇区,因而可使逻辑单元11的同列中的其他扇区接收相反极性的时钟信号。最后,单元的一些扇区而不是最接近全局时钟线CK0-CK7的最上面的扇区组可以交替地接收同一列的相邻扇区内的单元的直接A输出110。

在图10中,全局复位(RESET)线114提供的对列线115进行复位的复位(RESET)信号同样可以具有其极性,由逻辑单元的扇区通过以与时钟电路94相同方式构成的复位极性选择和分配允许电路116确定。

参照图11,逻辑单元11组织成4×4的单元块15,在其边界13上,设置有一组总线网络的连接开关,称为“中继器”27。如前所述,总线网络包括在逻辑单元11的行之间运行的水平总线21组和在逻辑单元11的列之间运行的垂直总线19组。每组总线19或21包括限制到单元的一个块15的本地总线23和通过中继器27延伸通过单元的多个块的两条直快总线25。为简便起见,单元的每行和每列仅示出了一组三条总线23和25。然而,也与前面所提到的一样,如从图4中所看到的,单元的每行和每列通常有五组三条总线19和21。中继器27可以把本地总线23连接到直快总线25上。本地总线仅直接连接到本地单元11上。中继器27具有交错结构,其中,任一个中继器27都在本地总线23和该组内的两条直快总线25的仅一条之间提供可选择的连接,后面的中继器27连接到该组内的另一直快总线上。因此,每条直快总线25每隔8个单元11的行或列的与一个中继器27相遇,而不是每4行或列,而每条本地总线23每隔4个单元11的行或列与一个中继器27相遇。单元11的块15内的每条本地总线23在该块15的相反端上连接到其相应的每条直快总线25上。一种对中继器27布线以获得所要求的交错结构的方便方法是使中继器27的所有行或列能连接到各三条总线的组内的匹配直快总线上(例如,所有都连接到最左边或最上边的直快线上),使中继器27后续的行或列,四个远的逻辑单元等,都连接到该组内相对的匹配直快线上(例如,所有都连接到最右边或最下边的直快线上),等等。图11还示出了可以在总线的行和列相交的地方设置另外的开关81,以使信号在总线的行和列之间转90度。这些开关81把本地总线连接到其它本地总线,以及把直快总线连接到其它直快总线上。

参照图12,逻辑单元11的每块15的角上,在块15边界上的中继器27的行列交叉点上的空间上,是专用的功能元件83(DFE),它可以是存储器结构,例如随机存取存储器(RAM)块或者其它专用的或特殊的电路,例如多路复用器、移位寄存器、固定功能数字或模拟逻辑、微控制器、比较器以及模数或数模转换器等。由于角上的空间是由单元以及与它们相关的总线和中继器的块结构产生的,因此该空间内的存储器专用逻辑可以布置得较小或不消耗整个器件的硅面积。

每个专用功能元件83可以是RAM块或其它存储器结构(例如非易失性存储器),如图4和13所示,组织成32个4比特数据字,每块总计有128个比特。参照图13,每个RAM块83可以包含SRAM85,它具有五个同步地址输入a0-a4,通过一组触发寄存器87接收地址线860-864的地址信号,还具有四个双向数据端d0-d3。数据端d0-d3连接到各数据线890-893上,每根数据线再连接到一对输入和输出缓存器90和91上。输入缓存器90通过触发器93连接到数据线950-953上。输出缓存器91直接连接到数据线950-953上。通过触发寄存器97从写允许线96接收写允许信号WE。触发器97的寄存器输出Q通过第一分支连接到SRAM85的写允许输入端,通过第二分支99经各侧的分支990-993连接到每个数据端d0-d3的输入缓存器90的三态控制输入。还通过触发寄存器103从输出允许线102接收输出允许信号OE。寄存器103的输出104连接到与门101第一输入,而触发寄存器97输出的第三分支100连接到与门101的第二个补输入。与门101的输出105通过各侧分支1050-1053连接到每个数据端d0-d3的输出缓存器91的三态控制输入。

因此,为了把数据写入到SRAM85中,要在地址端90-94上从寄存器87的输出同步接收5比特地址,还在SRAM85的写允许端WE上通过第一分支98从触发寄存器97同步接收写允许信号。写允许信号也能通过侧面分支990-993允许输入缓存器90,通过与门101和侧面分支1050-1053禁止输出缓存器91。因此,在数据线950-953上接收到的数据比特通过输入缓存器90和数据线890-893传输到各数据端d0-d3,并在地址端a0-a4接收到的地址端口上写入到SRAM85。为了从SRAM85读取存储的数据,在地址端a0-a4以及与门101上分别通过寄存器87和103同步接收地址和输出允许信号OE。寄存器97传输的写允许信号WE为低电平,通过分支线990-993禁止输入缓存器90,通过分支线1050-1053允许输出缓存器91。把存储在接收到的地址上的数据通过数据端d0-d3输出到数据线950-953。另一方面,可以适当地改动RAM块83,使写允许和输出允许信号为低电平有效。

回到图4,图13的RAM块83可以连接到总线网络上,使五根地址线86中的每根连接到对应于单元11一列的五根垂直本地总线23不同的一根上,写允许和输出允许线96和102连接到对应于单元同一列的两垂直直快总线25上,四根数据线95中的每根连接到对应于邻接于该RAM块83的4×4单元组内的单元中的四行的每一行的不同水平本地总线上。也可以采用其它连接方法。

另一方面,不用图4和图13所示的结构,以如图14和图15所示的方式,可以把RAM块83连接到总线网络上。图14示出了八个4×4逻辑单元11块15以及一些在单元11之间运行和在块15之间的垂直和水平直快总线19和21。转动开关81把所选的垂直和水平总线19和21在它们交错的地方彼此连接。在逻辑单元11的每个块15的右下角是RAM块83。如图15所示,每个RAM块83可以是双端SRAM,具有写允许端WE、写地址端Ain和数据输入端Din,以对SRAM进行写操作,还具有读允许端OE、单独的读地址端Aout以及单独的数据输出端Dout,以从SRAM进行读数据。因此,读和写操作可以独立进行,甚至在单独的地址和数据线上同时进行。

回到图14,从总线网络或器件的外部端接收对应于要写入8个数据位的RAM内的一组位置的6比特写地址(WRITE ADDR.)。六个比特中的两个比特输入到传统的2至4比特译码器171。译码器171根据它接收到的四个可能的两比特输入值中的一些值激活其四个输出173中的一个,并且仅仅激活一个。四个译码器输出173中的每个输出连接到四个或门175之一的一个输入上。在四个或门175的另一输入上接收全局写允许信号WE。或门输出177连接到对应于块15中四列的每一列的垂直直快总线19和RAM块83上与它们对应于的列上。这些RAM块的写允许端WE连接到这些特定垂直直快总线上,以从相应的或门输出177接收经译码的写允许信号。因此,对于两个写地址比特的任一种组合,如果全局写允许信号WE被激活,则将激活RAM块83的四列中的一列。6比特地址中的其它四位写地址连接到水平直快总线21上,然后通过转换开关81到垂直总线19,而这些总线19连接到每个RAM块83的写地址端Ain。8条数据输入线Din(0)-Din(7)通过相邻于逻辑单元11每行的水平总线19连接到RAM块83的数据输入端Din上,每个RAM块83从Din(0)-Din(3)或Din(4)-Din(7)接收四个平行的数据输入信号。因此,需要两行RAM块把数据的写信号字节写到任一指定的地址上。

同样,对于读操作,向6比特读地址(READ ADDRESS)提供连接到另一个提供四个输出174的2至4比特译码器172的两个地址比特,以及通过水平直快总线21和转换开关81连接到垂直直快总线19以连到RAM块的读地址端的四个余下的地址比特。再者,向所有8个RAM块提供四个地址比特,但仅向一列RAM块提供从输入到译码器172的两个地址比特得到的读允许信号。8根数据输出线Dout(0)-Dout(7)通过水平直快总线连接到两行RAM块83内的数据输出端Dout

一种有用的结构在RAM块83的相邻列内的读和写地址端Ain和Aout之间提供了镜象对称。当构筑了双端RAM元件时,减少了约一半地址信号需要的垂直总线资源。请注意,在图14中,前两列RAM块共用同一根读地址线176。同样,最后两列RAM块共用同一读地址线178。第二和第三列RAM块共用同一根写地址线179。在有更大组的存储器块中,诸如具有8列或16列RAM块和3至8或4至16比特译码器的存储器块中,用垂直总线资源把一列逻辑块15的读地址线用作下一列逻辑块15的写地址线。

逻辑单元每块角上的专用功能元件也可以是特定的逻辑结构,例如多路复用器。例如可以把4×4多路复用器用相同方式连接到总线网络上,作为图14和15中看到的双端SRAM,用一个四比特操作数代替一组地址输入,用每二个四比特操作数代替另一组地址输入。多路复用器的8比特积输出代替RAM数据输出线上的两个四比特数据。

参照图16,阵列边缘上的逻辑单元11能以多种方法中的任一种方法连接到输入/输出(I/O)端17上。这里所示的一种方法把每个逻辑单元,例如单元112通过I/O线121-123连接到三个相邻的I/O端117-119,还把每个I/O端,例如端118通过I/O线122、124和125连接到三个相邻的逻辑单元111-113。这种方法通常在阵列的角上和在端口线的端点上有例外。因此,端点的端口131通过I/O线132和133仅连接到两个逻辑单元134和135上。角上的逻辑单元135通过I/O线132和136-138连接到四个I/O端口,即I/O端口一条线上的端口130和131以及端口的另一条线上的端口139和140。也可能有其它的结构。

图17详细示出了角上的连接方式。其它逻辑单元和I/O端口的连接是相似的。从图17中看到的特定逻辑单元135是阵列的右下角单元,即,图1最下一行和最右一列的单元。如图16所示,该特定单元135连接到最下一行端口内的两个最右边的I/O端口139和140,还连接到电路最右一行端口内的两个最下面的I/O端口130和131。图17的单元135与阵列中所有其它单元一样连接到一组相邻的垂直和水平总线19和21上,通过本地总线23和可重复的开关27直接连接到本地总线23或间接连接到直快总线25上。如图4和图6所示,单元135与5根水平和5根垂直本地总线23之间的连接可以通过一组双向数据总线29来实现。角上的单元135还如图2所示与最近的相邻单元(未示出)直接连接。然而,由于单元135的右边和下面没有相邻的单元,所以把四个未用的A和B直接输入(AE,BE,AS和BS)以及四个未用的A和B直接输出(两个A′的和两个B′的)用于与I/O端口以及与某些直快总线25的方便的连接。

尤其是,不与端部中继单元27相交的5根直快线25中的每根连接到一对5至1多路复用器141和143和一对五单元开关组145和147。同样,不与总线列结束处的端部中继单元27相交的5根垂直直快线25连接到多路复用器142和144以及开关组146和148。多路复用器141和142的输出连接到各个直接B输入BE和BS,还连接到输出信号路径153和154上,以连接到I/O端口上。多路复用器143和144的输出仅连接到输出信号路径155和156上,以连到I/O端口上。开关组145和146把单元135的直接B输出连接到没有被中继器27结束的10根水平和垂直直快线25上。开关组147和148把I/O端口的输入信号路径169和170连接到相同的10根水平和垂直直快线25上。输入信号路径169和170还连接到单元135的各个直接A输入AE和AS

右侧输入信号路径151、153和155都进入到图16中右边的端口线上最下面的两个端130和131和底部端口线上最右边的端口139。底部输出信号路径152、154和156都进入到图16中下部端口线上的最右边两个端139和140和右边端口线上最底下在端口131。因此,利用四种可用的端口连接可以把每个输入信号路径151-156有选择地连接到三个不同的端口中的任一个端口。信号路径155和156还可以用来向路径151-154与I/O端口之间的输出缓存器提供三态允许信号。输入信号路径169和170同样可以连接到I/O端口。导线161、163和165连接到图16中看到的各端口130、131和139,而导线162、164和166连接到图16中看到的各端口131、139和140上。输入选择多路复用器167和168都把所选的导线161-166连接到输入信号路径169和170。

参照图18和19,增加了I/O端口的数量,从图16的每个周边逻辑单元11一个端口17增加到图18和19所示的每对周边逻辑单元12三个端口17′,或者如果要求的话,甚至可以多达每个周边逻辑单元2个端口。在图18中,与非角上周边逻辑单元187-190直接面对的I/O端口180、181、183、184等可以连接到三个周边逻辑单元和图16所示的与它们相关的总线上。例如,I/O端口181可连接一周边逻辑单元187-189和下面参照图19将看到的相关的总线上。除了I/O端口182、185等之外,如图19所示,与周边逻辑单元非直接面对但分别相对于逻辑单元188和189与逻辑单元190和191之间空间设置的通过与它们相关的总线被间接地连接到两个最近的周边逻辑单元上。同样,每个非角上的周边逻辑单元187-190等可连接到四个I/O端口上。例如,单元188可连接到I/O端口180-183。角上的单元191等连接到六个I/O端口184-186和192-194,三个来自每条端口线。

如图19所示,I/O端口181连接到输入缓存器201上,其输出202分成三条输入线203-205,连到逻辑单元187-189的直接单元输入206-208上。缓存器的输出202还通过可编程开关209连接到双向信号线210-212上,以在与包括单元187-189的三行逻辑单元的每行相关的水平总线端部上连到中继开关单元27上。与I/O端口181关联的是输出多路复用器213。该多路复用器213连接到来自与逻辑单元187-189关联的三行水平总线21的双向信号线210-212,还连接到来自逻辑单元187-189的直接单元输出217-219的单元输出线214-216上。这些信号线210-212和217-219中每条都连接到多路复用器213的输入,多路复用器至多选择它们中的一个信号用于通过输出缓存器220传输到I/O端口181。与单元187和189直接面对的I/O端口180和183以与I/O端口181相同的方式连接。

附加I/O端口182位于I/O端口181和183之间。当I/O端口181和183设置成直接面对周连逻辑单元188和189时,端口182不与任一逻辑单元面对,而是设置成与单元188和189相关并含有与单元189相关的水平总线21的行之间的空间相对。I/O端口182连接到输入缓存器221上,其输出可通过可编程开关222连接到双向信号线223和224上。这些信号线223和224还通过输出多路复用器耦连到输出缓存器226上,这输出缓存器连接到I/O端口182。双向信号线223和224连接到信号线210上,使信号线210连到和来自与单元188和189关联的水平总线21的端部中继开关。

参照图20和21,对两个I/O端口230和231,示出了本发明的FPGA的输入/输出接口的又一个实施例。为了能容易地观看到多路信号路径,图20仅示出了与直接面对逻辑单元228的一个I/O端口231关联的路径。该图在FPGA器件的单元矩阵周边周围的每个单元227、228、229等上重复。同样,图21仅示出了与设置成面对两逻辑单元227和228之间位置的一个I/O端口230关联的路径。虽然通常这些第二I/O端口230仅在单元之间的每个其它可用位置上出现,但该图也在FPGA周边周围上重复。如从图19的第二I/O接口实施例中所看到的,这两种类型的I/O端口,即直接面对逻辑单元的端口和面对单元之间的端口通常在FPGA中都可以找到。

如在图20和21中所看到的,I/O端口231和230具有上拉晶体管232和252,其栅极受可用户配置的比特控制(上拉)。这些晶体管232和252的主要功能是向未用的端口提供逻辑“1”。当晶体管232或252导通时,它对电源VCC来说约等效于10K的电阻器。每个端口231和230分别具有一个与其连接的输入缓存器234和254,还分别具有一个也与其连接的输出缓存器233和253。输入缓存器234和254具有可选择的阈值电平,TTL或CMOS,它由可用户配置的比特(TTL/CMOS)确定。输出缓存器233和253具有可选择的驱动电平,受另一个可用户配置的比特(HALF/FULLDRIVE)控制。各驱动电平在它们的直流电流吸收能力方面不同。另一方面,各缓存器具有可控制的旋转速率,或快或慢,具有相同的全直流电流吸收能力。对速率并非关键问题的输出来说,推荐使用半驱动或慢旋转速率(其中之一降低了噪声和接地振动)。“开放集电极”配置比特可选择地允许或禁止输出缓存器233或253的有效上拉。多路复用器235和255从多个选项中选出三态输出缓存器233和253的允许信号(TRI-STATE)。这些选项通常包括缓存器要么总是驱动,要么从不驱动的固定逻辑电平“0”和“1”以及阵列中产生的多个动态信号。与周边逻辑单元228直接面对的主I/O端口231具有与三个可用的输出单元227、228和229关联的三个动态信号选择(CELL1,CELL2,CELL3),而位于单元间位置上的次级I/O端口230具有与其两个可用的输出单元227和228关联的两个动态信号选择(CELL1,CELL2)。动态信号可以在各单元本身内产生,或者可以由与这些单元相关的总线247、248或249提供。

现在仅参照图20,I/O端口231通过输出选择多路复用器237和输出缓存器233利用线241-244连接到与三个相邻周边逻辑单元227、228和229(分别标为CELL1、CELL2和CELL3)关联的总线247、248和249上。请注意,两个信号选项可从与面对端口231的单元228关联的总线248上得到,而仅一个信号选项从相邻总线247和249得到。输出选择多路复用器237还从逻辑单元228接收直接单元输出245。I/O端口231通过输入缓存器234连接到直接单元输入250,并连到逻辑单元228上,还通过用户可配置开关251连接到同一线路组241-244上,以连到总线247-249上。

现在参照图21,设置成面对单元227和228之间位置的端口230通过输出选择多路复用器257和输出缓存器253利用线路261和262连接到与单元227和228相关的总线247和248上。多路复用器257还从单元227和228接收直接对角单元输出263和264。I/O端口230通过输入缓存器254连接到单元227和228的直接对角单元输入265和266上,还通过用户可配置开关267连接到线路261和262上,以连到总线247和248上。

FPGA器件也可以用如图16-21所示不同的其它I/O接口结构。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号