配置可编程设备的方法、可编程设备及机器可读存储介质与流程

文档序号:16547241发布日期:2019-01-08 20:55阅读:162来源:国知局
配置可编程设备的方法、可编程设备及机器可读存储介质与流程

本发明涉及使用高级语言来配置诸如现场可编程门阵列(FPGA)的可编程集成电路设备或其他类型的可编程逻辑设备(PLD)。



背景技术:

早期的可编程设备是一次可配置的。例如,配置可能已通过“烧断”——即断开——可熔链路来实现。备选地,配置可能已存储在可编程只读存储器中。这些设备一般为用户提供对设备进行配置以进行“乘积和”(或“P-TERM”)逻辑操作的能力。后来,结合了用于配置的可擦除可编程只读存储器(EPROM)的这种可编程逻辑设备变得可用,其允许设备被重新配置。

再后来,结合了用于配置的静态随机存取存储器(SRAM)元件的可编程设备变得可用。同样可以被重新配置的这些设备在诸如EPROM的非易失性存储器中存储其配置,当设备通电时将这些配置从这些存储器加载到SRAM元件中。这些设备一般为用户提供对设备进行配置以进行查找表类型的逻辑操作的能力。

这些设备在某个时间开始设置有随机存取存储器的嵌入块,该随机存取存储器可以被用户配置以用作随机存取存储器、只读存储器或逻辑(诸如P-TERM逻辑)。此外,随着可编程设备已变得越来越大,在针对各种常用功能的可编程设备上添加专用电路已变得更加普遍。这种专用电路可以包括用于时钟产生的锁相环或延迟锁定环,以及用于诸如加法或乘法的各种数学运算的各种电路。这通过配置可用的通用可编程逻辑而将用户从必须创建等效电路中解脱出来。

尽管已经可以简单地通过智力判断应当在何处布置各种元件来手动配置最早期的可编程逻辑设备,但是甚至结合这种较早期的设备来提供允许用户按需布置逻辑且然后将该逻辑转换为可编程设备的配置的编程软件也是常见的。利用当前较大的设备(包括上述专用电路的设备),试图在不使用这种软件的条件下布置逻辑是不切实际的。这种软件现在还通常包括通常为称为“核(core)”的预定义功能,以用于配置某些常用结构,且尤其用于结合上述专用电路来配置用于数学操作的电路。例如,可以提供用于各种三角或代数功能的核。

尽管可用的编程软件允许用户在被编程设备的能力内实现几乎任意所需逻辑设计,但是大多数这种软件需要诸如VHDL或Verilog这样的硬件描述语言的知识。然而,可编程设备的很多潜在用户并不是很精通硬件描述语言,而且可能更倾向于使用较高级编程语言来对设备进行编程。



技术实现要素:

可被采用以配置可编程设备的一种高级语言是OpenCL(开放运算语言),不过对其他高级语言且尤其是包括C、C++、Fortran、C#、F#、BlueSpec和Matlab的其他高级综合语言的使用也在本发明的范围内。

在OpenCL中,使用主机和内核(kernel)的组合执行计算,其中主机负责输入/输出(I/O)和建立任务,而内核根据独立输入执行计算。其中,存在内核的明确声明,且待处理的每组元件已知是独立的,每个内核可以实施为高性能硬件电路。基于在诸如FPGA的可编程设备上的可用空间的量,内核可以被复制以改善应用的性能。

内核编译器通过硬件产生、系统集成以及与主机计算机交互而从OpenCL描述将内核转换成实现应用的硬件电路。编译器可以基于扩展为能够实现对OpenCL应用的编译的开源低级虚拟机编译器。编译器对OpenCL内核进行解析、分析、优化并将其实施为适于在诸如FPGA之类的可编程设备上实施的高性能流水线电路。然后可以使用适用于特定可编程设备的编程工具来编译系统。该设备还可以具有嵌入式硬处理器,或可以配置有嵌入式软处理,以运行OpenCL(或其他高级)代码,或者可以使用外部处理器。可以通过在嵌入式或外部处理器上执行主机程序来运行OpenCL或其他高级代码。

根据本发明,提供一种使用高级语言配置可编程集成电路设备的方法。该方法包括:从高级语言的描述编译多个虚拟可编程设备;接收高级语言的针对可编程集成电路设备的用户配置的描述;使用编程处理器解析该用户配置,且作为解析结果,选择已编译的虚拟可编程设备其中之一。在可编程集成电路设备上实例化已编译的虚拟可编程设备其中所选择的设备,且使用该用户配置来配置已编译的虚拟可编程设备的实例化设备。

还提供了其中虚拟可编程设备已在先前已编译的相应方法以及使用用于执行这种方法的指令编码的非暂时性机器可读存储介质。也提供根据这些方法编程的设备。

附图说明

当结合附图考虑下面的详细描述时,将显见本发明的其他特征、其属性和各种优点,其中贯穿附图,相同的参考符号表示相同的部件,且附图中:

图1示出使用高级语言来配置可编程设备的已知方法;

图2示出根据本发明实施方式的基本虚拟结构(fabric)的示例;

图3示出根据本发明实施方式的在数学方面更为复杂的虚拟结构的示例;

图4示出根据本发明实施方式包括软微处理器块的虚拟结构的示例;

图5示出在包括根据本发明实施方式的方法的方法中使用的控制数据流图;

图6示出根据本发明的实施方式在虚拟结构中配置的虚拟布线开关的示例;

图7示出根据本发明的实施方式在虚拟结构中配置的具有虚拟FIFO的功能块的示例;

图8示出根据本发明的实施方式用于使用虚拟结构库来配置可编程设备的方法的实施方式的流程图;

图9示出根据本发明的实施方式用于使用虚拟结构库来配置可编程设备的另一方法的实施方式的流程图;

图10是磁性数据存储介质的剖面图,该磁性数据存储介质使用用于执行根据本发明的方法的机器可执行指令的集合编码;

图11是光学可读数据存储介质的剖面图,该光学可读数据存储介质使用用于执行根据本发明的方法的机器可执行指令的集合编码;以及

图12是采用结合了本发明的可编程逻辑设备的说明性系统的简化框图。

具体实施方式

在OpenCL中,应用在两个部分——主机和内核——中执行。主机是负责处理I/O请求且设置用于并行处理的数据的程序。当主机准备处理数据时,它可以在内核上载入线程集合,该内核表示将由每个线程将执行的计算单元。

每个线程通过从主机指定的存储器加载数据、处理这些数据且然后将结果存储回存储器以由用户或用户应用读取,来执行内核计算。在OpenCL术语中,内核和其上执行的数据被认为是线程。可以一次针对一组线程计算结果。线程可以分成工作组,这允许数据在工作组中的线程之间共享。通常,对于工作组中线程的执行顺序没有设置约束。

出于数据存储和处理目的,每个内核可以访问多于一种类型的存储器,例如供所有线程共享的全局存储器、供相同工作组中的线程共享的局部存储器以及仅供单个线程使用的私有存储器。

OpenCL应用的执行可以部分地在主机程序中且部分地通过执行一个或更多内核而进行。例如,在矢量加法中,表示矢量的数据阵列可以使用主机程序来建立,而实际加法可以使用一个或更多内核执行。可以通过主机程序中的OpenCL功能集合来促进应用的这两个部分之间的通信。这些功能定义了主机和内核之间的接口,允许主机程序控制处理什么数据以及处理何时开始,且检测处理何时结束。

可以通过以主机程序和内核的集合开始使用诸如OpenCL的高级应用来编程诸如FPGA的可编程设备。使用可以为此目的而扩展的低级虚拟机(LLVM)编译器,将内核编译成硬件电路表示。编译处理开始于针对每个内核产生中间表示的高级解析器,诸如C语言解析器。中间表示可以是指令及其间依赖性的形式。这种表示然后可以被优化成目标可编程设备。

优化的LLVM中间表示然后被转换成诸如控制数据流图(CDFG)(图5示出的CDFG500)的面向硬件数据结构。这种数据结构在低级别中表示内核,且包括关于其面积和最大时钟频率的信息。CDFG然后可以被优化以在产生每个内核的VerilogHDL描述的RTL发生之前改善系统的面积和性能。

编译的内核然后在优选地包含到主机的接口以及存储器接口的系统中被实例化。主机接口允许主机程序访问每个内核。这允许远程地设置工作空间参数和内核变量。存储器用作用于OpenCL内核的全局存储空间。这种存储器可以经由主机接口访问,允许主机程序设置用于内核的数据以进行处理和检索计算结果。最后,可以使用用于编写该主机程序所使用的高级语言(例如C++)的规则编译器来编译主机程序。

返回到处理的各个部分,为了将内核编译成硬件电路,从基本功能块模块来实现每个内核。每个基本块模块包括输入和输出接口,基本块模块使用该接口与其他基本块交流,且执行诸如加载、加法、减法、保存等指令。

将每个内核实施为硬件电路中的下一步骤是将每个基本块模块转换成硬件模块。每个基本块模块负责处理其内部的操作。为了恰当地工作,基本块模块还应当能够与其他基本块交换信息。确定每个基本块需要和产生什么数据可以使用活跃变量分析完成。

一旦分析了每个基本块,可以创建控制数据流图(CDFG)(图5中示出的CDFG 500)以表示该基本块模块的操作,从而基于活跃变量分析的结果显示基本块模块如何从内核变量或另一基本块获得输入。一旦被实例化,每个基本块根据包括在块中的指令处理数据,且产生可以被其他基本块或直接被用户读取的输出。

一旦每个基本块模块被表示为CDFG,块内的操作就可以被调度。可以为每个节点分配其完成操作所需要的寄存器和时钟循环的集合。例如,AND操作可能不需要寄存器,但是浮点加法可能需要至少7个时钟循环和相应寄存器。一旦每个基本块被调度,就可以插入流水线寄存器以平衡通过CDFG的每个路径的执行时间。这允许处理很多线程。

一旦每个内核描述为硬件电路,可以创建包括内核以及存储器和到主机平台的接口的设计。为了防止流水线过载,可以限制工作组中允许的线程的数目以及内核中同时允许的工作组的数目。

在图1中示意了上述一般方法100,其中路径101示出内核的执行而路径102示出主机程序的执行。

路径101开始于内核文件(kernel.cl)111。解析器前端121从内核文件111得出未经优化的中间表示131,该表示被优化器141转换成优化的中间表示151。优化处理包括例如循环展开、存储器-寄存器转换、死码删除等编译器技术以使得代码更加有效。寄存器时序语言(RTL)171发生器将优化的中间表示151转换成硬件描述语言表示171,该硬件描述语言表示171可以以诸如Verilog(所示)或VHDL之类的任意硬件描述语言编写。

路径102开始于主机程序文件(host.c)112,其使用运行时库132通过编译器122编译,其包括抽象主机和可编程设备之间的通信以创建可执行程序文件142的软件例行程序。

可执行程序文件142和(多个)内核的(多个)硬件描述语言表示171通过合适的软件103而编译成可编程设备配置。例如,对于可购自加利福尼亚州圣何塞的Altera公司的FPGA设备,软件103可以是Altera提供的 II软件。

结果是配置成在内核文件上运行主机程序以实例化内核表示的电路的可编程设备。可编程设备应当具有嵌入式处理器以执行可编程文件142,从而执行(多个)内核111以产生(多个)硬件描述语言表示171。如果嵌入式处理器是“软”处理器,则它还可以使用软件103配置。如果嵌入式处理器是“硬”处理器,软件103配置到该硬处理器的适当连接。

尽管上述一般方法可以用于使用诸如OpenCL的高级语言来创建用户逻辑设计的有效硬件电路实施,然而不幸的是,所需的编译时间可以与基于惯例硬件描述语言的编程所需的时间相当。取决于特定用户逻辑设计,与基于HDL编程的数秒或数分钟相比,编译可能要花费数小时或甚至数天。长编译时间的问题可能因需要尤其是在开发过程中周期性改变逻辑设计而放大。

因此,根据本发明,可以预编译“虚拟结构(virtual fabrics)”的多个高级语言表示。每个这种虚拟结构200(图2)可以是粗粒度虚拟FPGA的高级语言表示,该粗粒度虚拟FPGA包括总线211和布线开关221的互连网络201以及表示逻辑元件的组合的相对小数目的更复杂功能块202,该更复杂功能块在具有相对大数目的独立逻辑元件的物理FPGA的顶部上实施。例如,功能块202可以包括用于执行诸如固定或浮点加法或乘法的基本数学功能或三角功能的块以及复用逻辑或甚至“软”微处理器。

多个虚拟结构可以看作是虚拟结构库。库中的不同虚拟结构可以具有不同类型的功能块的不同分布。例如,库可以包括多个不同基本虚拟结构,其中结构200仅是一个示例,其中每个虚拟结构具有包括基本数学功能以及复用逻辑的功能块202的不同分布。还可以存在一些更复杂的结构,其中具有基本和复用功能202的结构300(图3)仅是一个示例,但是其中各个功能块301用于执行诸如三角功能之类的更复杂功能。在这些不同更复杂的虚拟结构之间,各种算术、三角和复用功能的数目和分布可以变化。甚至可以存在这样的虚拟结构:其中结构400(图4)仅是一个示例,其可以类似于结构200或结构300,只不过一个或更多功能块由软处理器块401代替。还可以提供附加类型的虚拟结构。

可能希望通过一定程度地流水线化来加速虚拟结构的性能。例如,可以在虚拟布线开关中提供寄存器级,每个虚拟布线开关可以被认为是跟随有寄存器的复用器。流水线中的任意元件优选地具有通过向上游发送停顿信号来停顿流水线——即停止数据流动——直到它准备接收更多数据的能力。否则,如果上游元件继续发送数据而下游软件太忙而不能处理数据,则数据可能丢失。

然而,如果元件向上游发送停顿信号,它可能迟一个时钟循环到达,使得可能丢失一个时钟循环的数据价值。因此,停顿信号优选地本身被流水线化,由此在虚拟结构内提供流水线化停顿信号网络。这可以通过在一些或所有布线开关中提供用于停顿信号的寄存器实现。然后,取代从停顿的组件送出停顿信号,可以从寄存器发送停顿信号。

示例在图6中示出。图6的所有组件均是虚拟的——即,它们从底层FPGA的基本元件或其他可配置或可编程设备被配置为虚拟结构的编译的一部分。

图6是布线开关600的一种可能的详细实现的示意图,其中信号在601从“西”进入且在602可路由到“北”,且在603路由到“南”,且在604路由到“东”。布线开关600需要能够在605向上游往回发送停顿信号,而在606从北、在607从南且在608从东接收停顿信号。

虚拟布线开关600包括输入复用器611和分别位于北输出、南输出和东输出上的输出复用器612、613、614。这种布线开关可能需要在输入到达的方向中往回发送停顿信号605以及从三个输出方向其中任意一个接收停顿信号606、607、608。根据本发明的实施方式,可以提供停顿信号寄存器615以输出停顿信号605,且可以提供停顿信号寄存器616、617、618以寄存接收的停顿信号606、607、608。停顿信号寄存器615、616、617、618允许向上游和下游二者的完全流水线化的停顿信号传播。

提供用于输入数据的寄存器609、610。寄存器609捕获由于从下游接收的停顿不能被进一步传播的数据。如果将向其传播数据的输出方向602、603、604其中任意一个停顿,则这些数据将保存在寄存器609中直到停顿被清除。寄存器610捕获输入数据且在必须断言(assert)停顿信号605时防止这些数据丢失。在缺少寄存器610的情况下,因为上述一个时钟延迟,新的数据将在停顿信号605的断言之后的第一时钟循环上在复用器611被接收且将在复用器611代替先前接收的任何数据,即使先前接收的数据并没有向下游传播。然而,当存在寄存器610的情况下,即使在复用器611随后接收到附加数据,在复用器611先前接收的数据被保留。可以提供配置寄存器626、627、628以开启或关闭接收停顿信号的能力。配置寄存器629选择到复用器611的输入,且因此选择到虚拟布线开关600的输入。配置寄存器630、631、632控制输出复用器612、613、614以选择虚拟布线开关600中的一个或更多输出。

除了刚刚在前文所述的停顿信号网络的流水线化,虚拟结构的流水线化也可以包括用于虚拟结构的各个功能块202、301、401的输入上的数据本身的寄存器。因为在创建虚拟结构时需要流水线化的数据路径的长度未知,并且当在特定用户设计中实施时到相同功能块的不同数据路径可能不同,每个功能块202、301、401的输入处的数据流水线寄存器优选地是如图7所示的FIFO 701,以平衡流水线。

可以基于最大期望流水线不平衡性来选择每个FIFO 701的深度。然而,可能的是:FIFO 701可能填满,且因此每个FIFO 701具有在填满时断言停顿信号702的能力。

类似地,每个FIFO 701还可以具有断言空信号703以使得功能块202、301、401停顿的能力,从而使得功能块202、301、401在其中任意一个不可用时并不试图读取数据。否则,到功能块202、301、401的各个输入流水线可能失去同步——即,当一个流水线上的数据仍未到达时,功能块202、301、401从两个或更多流水线读取数据。

根据本发明的另一方面,可以通过从先前编译的虚拟结构的库或集合进行选择来配置可编程设备。可以通过检查用户逻辑设计的功能需求以及在虚拟功能块的数目和类型方面选择最近似匹配这些功能需求的虚拟结构,通过编程软件来执行对特定虚拟结构的选择。通过板上硬处理器,通过在选择虚拟结构之前、之后或期间在板上配置的软处理器,或通过外部处理器,在该设备上执行虚拟结构。所选虚拟结构的执行将设备配置为较粗粒度虚拟设备。常规综合、布局和布线工具然后用于根据用户逻辑设计配置该较粗粒度虚拟设备。

图8中图示的处理器800的实施方式可以开始于步骤801,在该步骤中如上所述创建具有不同大小的编译虚拟结构的集合以及各种类型的功能块的不同分布。步骤801可以由设备制造商执行,且虚拟结构库可以在设备上的存储器中或在与为设备提供的设备配置软件相关的存储设备或介质中提供。第三方也可以提供编译虚拟结构库。备选地,用户可以在第一次配置设备时编译虚拟结构库。

对于已经编译虚拟结构的用户私有库的用户,处理800在步骤803继续。对于使用先前编译的虚拟结构库(无论通过制造商或第三方提供或在设备的先前配置中由用户提供)的用户,用户在802进入处理800且进行到步骤803。

在步骤803,如上所述,用户输入高级语言语句(诸如OpenCL语句)形式的定义内核集合的所需配置。如上所述,在步骤804,使用产生用于每个内核的中间表示的高级解析器(诸如C语言解析器之类)来解析内核。中间表示可以是指令及其间依赖性的形式。在步骤805,这种表示然后可以被优化且转换为诸如控制数据流图(CDFG)的面向硬件数据结构。

在步骤806,通过对软件编程来检查CDFG以确定其硬件需求,且软件然后从虚拟结构库选择满足这些硬件需求的虚拟结构。使用已知技术,软件可以检查所有虚拟结构以发现最佳虚拟结构,或者一旦发现与硬件需求足够接近的虚拟结构,则检查结束。在本上下文中,“足够接近”意味着在虚拟结构中存在所有所需资源,但是虚拟结构可以具有可能变得无用的附加资源。

最后,在步骤807,使用常规综合、布局和布线技术(诸如通过可从Altera公司购得的上述 II软件可以执行的那些技术),用户的逻辑设计从CDFG被编程为被选虚拟结构。除非设备包括嵌入式硬处理器或者外部处理器将用于执行虚拟结构,该步骤可以包括配置软处理器以执行虚拟结构。

特定用户逻辑设计可以包括大量功能,并不是所有这些功能同时有效。因为此处描述的虚拟结构相对粗粒度,它们具有相对小数目的配置位。因此,允许运行时的虚拟结构的重新配置可能并不是不切实际的(在执行时间方面)。因而,虚拟结构可以配置有包括第一组功能的第一配置,且然后“动态”(on the fly)可以使用第二组功能(可以与第一组功能有重叠,即它可以具有与第一组功能相同的一些功能)来重新配置。

用于对设备进行编程以使用这种重新配置的方法850在图9中示出。方法850开始类似于方法800,具有步骤801、802、803、804和805。在步骤856,CDFG被检查以确定其硬件需求,且软件然后从虚拟结构库选择在两个或更多单独配置中能够满足这些硬件需求的虚拟结构。例如,判断使用哪个虚拟结构的一种方式将是使用成本函数,该价值函数计算虚拟结构与内核的资源需求有多接近。

在步骤857,使用常规综合、布局和布线技术(诸如上述 II软件可以实施的那些技术),编程两个或更多单独配置。在步骤858存储用于各种配置的配置比特流,且在步骤859使用第一配置来配置虚拟结构。如有必要(测试860、861),可以在步骤862卸载配置,且可以在步骤863加载两个或更多配置中的另一个。当执行新配置时,方法返回到步骤859。因为两个或更多配置其中的不同配置被卸载且重新加载直到获得设备的所需功能,所以以上处理可能会发生多次。

应当意识到,因为所选的虚拟结构在刚刚描述的重新配置处理中并未改变,所以可以使用这种重新配置处理而不管物理设备是否支持动态重新配置。由虚拟结构表示的虚拟设备支持动态重新配置是唯一必须条件。还应当意识到,如果物理设备支持动态重新配置,则不仅所选虚拟结构的配置可以在运行时改变,而且虚拟结构本身可以动态地被卸载且加载(如有必要,如上所述,加载的任意特定虚拟结构的配置动态地变化)。

因为库中的虚拟结构提前被编译成硬件描述语言表示,仅虚拟结构的所需配置的用户高级综合语言表示需要被编译为用户编程处理的一部分。用户仍输入所需电路的完整高级描述,且仍存在处理器以执行高级描述从而创建配置的设备。但是,因为用户高级描述的大部分执行将涉及预编译的虚拟结构的选择,仅涉及的编译将是虚拟结构的配置的编译,如上所述,这仅涉及相对小的配置问题。因此,用户看到的编译时间远远小于原本从高级描述编译整个设计所需的时间,且与使用硬件描述语言时的配置时间相当。

因而,可以看出,提供了一种使用高级综合语言来配置可编程设备的方法而不需要异常长的编译时间。

用于执行根据本发明用于编程可编程设备的方法的指令可以被编码在机器可读介质上,以由合适的计算机或类似设备执行,从而实施如上所述使用由高级综合语言描述的配置对PLD或其他可编程设备进行编程或配置的本发明的方法。例如,个人计算机可以装配有PLD可以连接到的接口,且个人计算机可以被用户使用以如上所述使用合适的软件工具对PLD进行编程。此外,可以使用虚拟结构库对相同的机器可读介质或分离的机器可读介质进行编码。

图10示出磁性数据存储介质1200的剖面图,该磁性数据存储介质1200可以使用机器可执行程序编码或使用虚拟结构库编码,所述机器可执行程序可以通过诸如上述个人计算机的系统或其他计算机或类似设备来执行。介质1200可以是具有合适衬底1201(可以是常规衬底)和合适涂层1202(可以是常规涂层)的软盘或硬盘或磁带,其中所述涂层位于一面或两面上,包含有其极性或取向可以磁性变化的磁畴(不可见)。除了是磁带的情况之外,介质1200还可以具有用于接收盘驱动或其他数字存储设备的主轴的开孔(未示出)。

介质1200的涂层1202的磁畴被极化或定向,从而可以以可以是常规的方式来编码机器可执行程序,以供诸如个人计算机或其他计算机或类似系统的编程系统执行,所述编程系统具有其中可以插入待编程的PLD的插孔或外围附件,以根据本发明来配置PLD的适当部分,该适当部分包括其专用处理块(如果有的话)。

图11示出光学可读数据存储介质1210的剖面图,该光学可读数据存储介质1210可以使用机器可执行程序编码或使用虚拟结构库编码,所述该机器可执行程序可以通过诸如上述个人计算机的系统或其他计算机或类似设备来执行。介质1210可以是常规光盘只读存储器(CD-ROM),或数字视盘只读存储器(DVD-ROM),或诸如CD-R、CD-RW、DVD-R、DVD-RW、DVD+R、DVD+RW或DVD-RAM的可重写介质,或光学可读且磁光可重写的磁光盘。介质1210优选地具有适当衬底1211(可以是常规衬底)以及通常位于衬底1211的一面或两面上的适当涂层1212(可以是常规涂层)。

在基于CD或DVD的介质的情况中,如所公知,涂层1212是反射性的且压印有布置在一个或更多层上的多个凹点1213,以对机器可执行程序进行编码。凹点的布置通过使得激光反射离开涂层1212的表面来读取。在涂层1212的顶部上提供优选地基本透明的保护性涂层1214。

如所公知,在磁光盘的情况中,涂层1212不具有凹点1213,但是具有多个磁畴,当通过激光(未示出)被加热到某一温度以上时,所述磁畴的极性和取向可以磁性地变化。畴取向可以通过测量从涂层1212反射的激光的偏振而读取。如上所述,畴的布置对程序进行编码。

根据本发明编程的PLD 1500可以在很多种类的电子设备中使用。一种可能的使用是在图12所示的数据处理系统1400中。数据处理系统1400可以包括以下组件其中一个或更多个:处理器1401;存储器1402;I/O电路1403以及外围设备1404。这些组件通过系统总线1405而耦合在一起且组装在包含于用户终端系统1407的电路板1406上。

系统1400可以在诸如计算网络、数据网络、仪器、视频处理、数字信号处理之类的各种应用中或希望使用可编程或可重新编程逻辑的优点的任意其他应用中使用。PLD 140可以用于执行各种不同的逻辑功能。例如,PLD 1500可以配置为与处理器1401协同工作的处理器或控制器。PLD 1500也可以用作仲裁器,以在系统1400中对于共享资源的访问进行仲裁。在另一示例中,PLD 1500可以配置为处理器1401和系统1400中的其他组件其中一个之间的接口。应当注意,系统1400仅是示例性的,且本发明的真实精神和范围应当由下面的权利要求书指示。

可以使用各种技术来实现如上所述且结合了本发明的PLD 1500。

应当理解,上文仅是本发明原理的说明,且本领域技术人员可以在不偏离本发明的范围和精神的条件下做出各种修改。例如,可以以任意所需数目和/或布置在PLD上提供本发明的各种元件。本领域技术人员应当意识到,可以以与上述不同的实施方式来实践本发明,上述实施方式用于说明而非限制目的,且本发明仅由以下权利要求书限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1