CN101236504A - 用于使用dma来初始化pld的方法、系统和集成电路 - Google Patents

用于使用dma来初始化pld的方法、系统和集成电路 Download PDF

Info

Publication number
CN101236504A
CN101236504A CNA2008100089664A CN200810008966A CN101236504A CN 101236504 A CN101236504 A CN 101236504A CN A2008100089664 A CNA2008100089664 A CN A2008100089664A CN 200810008966 A CN200810008966 A CN 200810008966A CN 101236504 A CN101236504 A CN 101236504A
Authority
CN
China
Prior art keywords
pld
programming
data
interface
dma controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100089664A
Other languages
English (en)
Other versions
CN101236504B (zh
Inventor
T·D·尼达姆
A·R·兰克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Core Usa Second LLC
GlobalFoundries Inc
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101236504A publication Critical patent/CN101236504A/zh
Application granted granted Critical
Publication of CN101236504B publication Critical patent/CN101236504B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17758Structural details of configuration resources for speeding up configuration or reconfiguration

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Microcomputers (AREA)

Abstract

本发明提供了用于使用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)的方法、系统和集成电路。其中该方法包括操纵PLD的控制线路以将该PLD配置为编程模式,以DMA速度从DMA控制器接收PLD编程数据,以及将PLD编程数据写入数据缓冲器。该方法还包括从数据缓冲器读取PLD编程数据,以及以PLD编程速度将PLD编程数据发送到PLD上的编程端口。

Description

用于使用DMA来初始化PLD的方法、系统和集成电路
技术领域
本发明一般地涉及对可编程逻辑器件进行初始化,并且更特别地涉及用于使用直接存储器访问来初始化可编程逻辑器件的方法、系统和计算机程序产品。
背景技术
很多计算机/电子系统使用配置为执行应用特定(applicationspecific)功能的可编程逻辑器件(PLD)。PLD可以包括各种各样的可编程逻辑器件,诸如可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)以及本领域已知的其他技术。很多PLD技术是现场可编程的,诸如FPGA,并且这种器件在它们每次上电时可能都需要编程。在每个断电/上电循环中都需要编程的PLD典型地称为“易失性”PLD,并且在上电时依靠静态随机访问存储器(SRAM)来得到已编程的器件配置。易失性PLD还可能需要周期性的刷新,或者如果发生瞬时或“软”(可恢复的)错误则可能需要重新编程。软错误可能来自于环境影响,诸如电磁干扰(EMI)、宇宙射线、α粒子、热中子、噪声以及其他类似的源。
包括易失性PLD的系统通常设计为支持频繁的重新编程,即称为“可重配置计算”的技术。在采用可重配置计算的系统中,对PLD进行编程所需要的时间可能是系统性能和整体响应度方面的关键因素。在这种系统中,可能存在必须作为系统初始化的一部分而加载的多个PLD程序,从而导致很长的系统初始化时间。
可以对PLD进行现场编程,而不需要使用特殊的测试设备接口,诸如具有符合联合测试行动组(JTAG)的接口的板级或部件级加载器。通常只有制造或测试设施才能对PLD上的JTAG端口进行访问。“现场编程”可以包括在封闭系统中客户设施处或在厂商外部的位置处编程,其中对特殊测试设备的访问是受限的或不可能的。还可以在制造或测试设施上执行不使用特殊测试设备的可用编程技术。
在一种对PLD进行现场编程的方法中,PLD自动从串行电可擦除可编程只读存储器(EEPROM)或闪速存储设备加载它的配置。每个PLD可以具有作为同一系统板上的分立部件直接连接到该PLD的专用串行EEPROM。这种编程方法称为“主动串行”编程或加载。主动串行编程可以提供的益处在于能够隔离用于每个PLD的特定程序,以最小化PLD程序与目标PLD不匹配的风险。但是,如果串行编程速度很慢,特别是当比特率相对于关联的编程时钟速度较低时(例如每个时钟周期一个比特),那么主动串行编程可能很慢。只要利用主动串行编程的PLD从复位被释放,该PLD就可以开始加载它的PLD程序,这可能使得系统的复位设计变复杂。如果其他系统部件并不会只要加载了PLD程序就会被复位,那么就可能发生复杂化。主动串行编程可能会表现出很多其他问题,诸如对串行EEPROM中的PLD程序的版本控制管理,特别是在更新和验证PLD程序的正确/最新版本时。串行EEPROM可能不支持现场重新编程,需要重新制作板或者对插座式串行EEPROM部件进行物理上的部分替换。串行EEPROM中的错误或故障也可能很难检测和隔离,导致更多的系统故障模式。对串行EEPROM的使用可能在成本、板面积、功耗、热量、重量和制造过程中的报废问题上有附加的损失。
另一种对PLD进行现场编程的方法是通过由处理器主动控制的外部编程来进行。PLD编程可以由通用处理器通过数据总线写入来执行,并且PLD控制信号可以通过在该处理器上执行的软件程序而被操纵。处理器典型地读取PLD编程数据,在数据总线上直接一次一字节地将该数据写入PLD,并且操纵适当的控制信号使得PLD将该数据作为编程信息而接受。尽管通过处理器主动控制PLD编程过程可以提供灵活性,但PLD编程可能在很长的持续时间内消耗处理器的带宽,特别是在PLD编程文件很大的情况下。在处理器忙于主动对PLD进行编程时,处理器必须等待执行其他系统初始化任务,导致初始化整个系统的时间延迟延长。如果在系统中有带有不同PLD程序的多个PLD,那么这个问题就更复杂了,因为在处理器的资源专门用于对PLD进行编程时,该处理器不能执行其他任务。
随着更先进技术的发展,PLD编程文件的大小持续增长,执行主动PLD编程的处理器的需求将持续增加,导致更长的系统初始化时间。更进一步地,更大的PLD编程文件将影响串行EEPROM所需要的存储容量,潜在地导致更大的部件、更长的编程时间和更高的系统成本。因此,在本领域中需要一种在不依靠由处理器进行的直接主动控制或主动串行编程的情况下对PLD进行编程的方法。
发明内容
实施例包括一种用于使用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)的方法。该方法包括操纵PLD的控制线路以将该PLD配置为编程模式,以DMA速度从DMA控制器接收PLD编程数据,以及将该PLD编程数据写入数据缓冲器。该方法还包括从数据缓冲器读取PLD编程数据,以及以PLD编程速度将PLD编程数据发送到PLD上的编程端口。
附加的实施例包括一种用于使用DMA来初始化PLD的集成电路(IC),该IC可操作地连接到PLD。该IC包括输入/输出(I/O)接口和PLD接口。I/O接口在IC和PLD之间转换信号格式。PLD接口包括配置和状态寄存器、数据缓冲器和调步逻辑(pacing logic)。配置和状态寄存器适合于操纵PLD的控制线路以通过I/O接口将PLD配置为编程模式。数据缓冲器临时保存以DMA速度从DMA控制器接收到的PLD编程数据。调步逻辑控制以PLD编程速度通过I/O接口将PLD编程数据发送到PLD上的编程端口的速度。
进一步的实施例包括一种用于初始化PLD的方法。该方法包括操纵PLD的控制线路以将PLD配置为编程模式,从DMA控制器和处理器中的至少一个选择PLD编程数据源,从所选择的数据源接收PLD编程数据,并将这些PLD编程数据发送到PLD上的编程端口。
进一步的实施例包括一种用于使用DMA来初始化PLD的系统。该系统包括PLD和IC。PLD包括带有控制线路的编程端口,该PLD位于组件上。该IC可操作地连接到PLD的编程端口,该IC位于组件上。该IC包括输入输出(I/O)接口和PLD接口,该I/O接口用于在IC和PLD之间转换信号格式。PLD接口包括配置和状态寄存器、数据缓冲器和调步逻辑。配置和状态寄存器适合于通过I/O接口来操纵PLD的编程端口的控制线路。数据缓冲器临时保存以DMA速度从DMA控制器接收到的PLD编程数据。调步逻辑控制以PLD编程速度通过I/O接口将PLD编程数据发送到PLD上的编程端口的速度。
附加的实施例包括一种用于支持使用DMA来初始化PLD的计算机程序产品。该计算机程序产品包括存储介质,该存储介质是处理电路可读的并且存储供处理电路执行的用于实现一种方法的指令。该计算机程序产品方法包括操纵PLD的控制线路以将PLD配置为编程模式,以DMA速度从DMA控制器接收PLD编程数据,以及以PLD编程速度将PLD编程数据发送到PLD上的编程端口。
通过研究以下附图和详细描述,根据实施例的其他系统、方法和/或计算机程序产品对本领域的普通技术人员将会变得明显。所有这种附加的系统、方法和/或计算机程序产品旨在包括在这一描述中、在本发明的范围内并且由所附权利要求书保护。
附图说明
现在参考附图,其中在多个附图中相同的单元编号相同:
图1是可由一个示例性实施例实现的使用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)的系统的框图;
图2是可由一个示例性实施例实现的使用DMA来初始化PLD的组件的框图;
图3是可由一个示例性实施例实现的使用DMA来初始化PLD的系统的框图;
图4是可由一个示例性实施例实现的使用DMA来初始化PLD的系统的框图;
图5是可由一个示例性实施例实现的使用DMA来初始化PLD的系统的框图;
图6是可由一个示例性实施例实现的使用DMA来初始化PLD的具有多个组件的系统的框图;以及
图7是描述在一个示例性实施例中用于使用DMA来初始化PLD的处理的流程图。
具体实施方式
一个示例性的实施例利用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)。结合少量附加逻辑来使用系统内的DMA控制器以对现场可编程PLD进行编程(初始化/加载)。在处理器上执行的软件可以通过DMA控制器和关联的逻辑来开始PLD编程序列。对DMA控制器和关联的逻辑的使用保证了在PLD编程过程期间在提供主动控制时处理器不被占用。结果,在PLD被编程而不是顺序执行初始化任务时,处理器可以并行执行其他系统初始化操作(例如,内置测试、将存储器初始化到已知状态等等)。对系统初始化的并行执行可以减少系统初始化时间并增加响应度。在处理器上执行的软件可以控制PLD编程过程何时开始,以及决定PLD编程数据源,提供比使用例如直接串行EEPROM编程之类的静态编程/加载器方法所能够实现的更大的灵活性。
现在转到更详细的附图,可以看到在图1中示出了根据示例性实施例的可以在其上实现使用DMA来初始化PLD的系统100的框图。图1的系统100包括组件102。组件102可以是卡、板、模块或更大系统内的子系统。在一个示例性实施例中,组件102包括集成电路(IC)104,该集成电路(IC)104通过总线108可操作地连接到PLD 106,使得该IC 104能够执行诸如将PLD 106配置为编程模式、对PLD 106进行编程以及监视PLD 106的状态之类的操作。尽管只示出了一个PLD 106,但应当理解,多个PLD(1和N之间)可以连接到IC 104。PLD 106可以是本领域中已知的任意类型的可编程逻辑器件,诸如可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)、复杂可编程逻辑器件(CPLD)或现场可编程门阵列(FPGA)。在一个示例性实施例中,PLD 106是在PLD 106的每个上电周期上利用PLD程序配置代码(PLD编程数据)初始化的易失性PLD。PLD 106还在其他时间被重新编程,诸如在复位时或在更新的PLD编程数据可用时被重新编程。在一个示例性实施例中,PLD 106通过编程端口107被编程。编程端口107还可以包括控制、状态和时钟信号连接。总线108可以是适合于支持IC 104和PLD 106之间的通信的并行总线。总线108可以包括本领域中已知的各种硬件单元,诸如缓冲器、上拉或下拉电阻器、以及支持各种总线格式和多个PLD(1...N)106的一个或多个复用器。总线108可以组织为地址、数据、控制、状态、中断和时钟线路。在另一个示例性实施例中,多个总线108在IC 104和多个PLD 106之间并行存在,以支持并行PLD编程并在故障情况下提供增强的隔离。
在一个示例性实施例中,IC 104通过网络/总线112与非易失性存储器(NVM)110进行接口连接。NVM 110为PLD 106存储编程和配置数据。NVM 110可以是本领域中已知的能够在整个上电/断电周期内保存数据的任意类型的非易失性存储器,诸如EEPROM、闪速存储器、硬盘驱动器或非易失性随机访问存储器(NVRAM)。在一个示例性实施例中,NVM 110位于组件102的远程位置。通过使NVM 110位于组件102外部,组件102的总成本、大小、功耗和重量可以相对于包括位于PLD本地的串行EEPROM作为组件上的附加部件的系统减少。此外,NVM 110可以是多个组件102的共享资源,提供公共资源以进行更新而不需要对系统100中的每个组件102单独更新。使NVM 110位于组件102的外部还减少了组件102部分报废的风险(也就是,由于诸如串行EEPROM之类的部件的减少的可用性或不可用性而产生的制造/购买问题)。作为使NVM 110位于组件102的外部的结果,还减少了重新制作板和对板的废弃。网络/总线112可以是本领域中已知的任意网络或总线体系结构。例如,网络/总线112可以是外围部件互连(PCI)总线、PCI快速总线、高速串行总线或专有总线格式。在另一个示例性实施例中,网络/总线112是内网、外网或诸如因特网之类的互联网,或者其组合,并且实现为无线或有线网络。
在一个示例性实施例中,IC 104是片上系统(SOC),包括处理器114、PLD接口(I/F)逻辑116、输入/输出(I/O)接口120、DMA控制器124和I/O接口126。IC 104可以是本领域中已知的任意集成电路技术,诸如专用集成电路(ASIC)或PLD。处理器114可以是本领域中已知的任意能够执行指令的处理电路,诸如嵌入式微处理器、微控制器、状态机、数字信号处理器(DSP)或逻辑器件。此外,处理器114可以分布或分割成IC 104内的多个处理单元(例如多内核处理)。处理器114可以包括用于存储可执行指令的可读存储介质。在一个示例性实施例中,处理器114通过总线118可操作地连接到DMA控制器124和PLD I/F 116。总线118为诸如寄存器访问之类的非DMA数据提供路径,使得DMA控制器124和PLD I/F 116能够在不必阻止DMA传送的情况下出现在处理器114的寄存器映射内。总线118可以包括地址、数据、控制、状态、中断和时钟线路。在另一个示例性实施例中,总线118是串行总线。IC 104内的其他逻辑或存储器(没有示出)也可操作地连接到总线118。
PLD I/F 116通过总线122可操作地连接到I/O接口120。总线122可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。I/O接口120在总线122和总线108之间提供信号调整和电缓冲。例如,总线122和总线108可以工作于不同的电压电平(例如1.5伏、1.8伏、2.5伏、3.3伏等等),其中I/O接口120在IC 104和PLD 106之间转换信号格式(例如单端、差分、电压参考)和电压电平。
DMA控制器124通过总线128可操作地连接到PLD I/F 116。总线128为在DMA控制器124和PLD I/F 116之间传送数据提供独立的路径。在一个示例性实施例中,总线128提供对IC 104的存储器映射单元的访问,支持可由能够控制(主控)总线128的单元寻址的总线访问。在一个示例性实施例中,总线128主要用于传递数据,而总线118主要用于配置和状态。总线128和118的分离使得DMA控制器124能够在不占用总线118的情况下以最大带宽将数据传递到PLD I/F 116。因此,一旦处理器114开始DMA传送,处理器114就可以继续执行其他任务并访问总线118,而不会产生与DMA控制器124的总线竞争问题。从处理器114移除主动加载PLD编程数据的负担使得处理器114能够执行系统初始化过程中较早的其他系统初始化任务,这样可以减少总的系统初始化时间,增加复位后的系统响应度。在一个示例性实施例中,处理器114通过可选总线129访问总线128。可选总线129在处理器114和DMA控制器124之间提供另一条路径,使得处理器114能够访问附接到总线128的存储器映射单元。IC 104内的其他逻辑或存储器(没有示出)也可连接到DMA总线128,为通过DMA控制器124或处理器114读取或写入提供备用源或目的地。在一个示例性实施例中,DMA控制器124是可由处理器114配置的,使得处理器114可以控制诸如DMA源地址、DMA目的地地址、传送字计数和诸如处理器中断等触发事件之类的特征。处理器114可以通过总线118配置并读取DMA控制器124的状态。在一个示例性实施例中,当检测到错误条件时,处理器114停止DMA控制器124。
DMA控制器124通过总线140与I/O接口126进行接口连接。总线140可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。I/O接口126在总线140和网络/总线112之间提供信号调整和电缓冲。I/O接口126可以包括应用特定驱动器和逻辑以支持网络/总线112,诸如PCI、以太网、内部集成电路(I2C)、通用串行总线(USB)、IEEE-1394(FireWire)、控制局域网络总线(CAN)、专有网络或总线格式,以及本领域中已知的其他网络或总线标准。在一个示例性实施例中,一旦处理器114配置并命令DMA控制器124启动,DMA控制器124就通过网络/总线112、I/O接口126和总线140从NVM 110获得PLD编程数据。然后,DMA控制器124通过DMA总线128将所获得的PLD编程数据传递到PLD I/F 116。
在一个示例性实施例中,PLD I/F 116包括配置和状态寄存器130、数据缓冲器132和调步逻辑134。PLD I/F 116可以进一步包括总线选择器136、存储器映射控制器138和复用器142。配置和状态寄存器130可以作为单个寄存器出现在处理器114的存储器映射或寄存器映射中,或者可以分布在多个寄存器(1到Y)之间。在一个示例性实施例中,将配置和状态寄存器130映射到PLD 106的一个或多个控制和状态线路。配置和状态寄存器130还可以提供对PLD 106的编程端口107的访问。例如,可以使用普通地址解码通过配置和状态寄存器130来将命令写入PLD 106并且读取PLD 106的状态。在一个示例性实施例中,配置和状态寄存器130包括可分别寻址的单元,使得可以与PLD 106的状态相分离地读回写入PLD 106的命令。在处理器114上执行的软件可以对配置和状态寄存器130执行写入和读取操作,使得可以操纵PLD 106的控制线路,以开始编程周期以及检查成功编程的完成。当PLD 106的控制和状态线路的数量大于IC 104的寄存器宽度时,多个配置和状态寄存器(1到Y)130可以存在于PLD I/F 116内。多个配置和状态寄存器13还可用于支持对多个PLD 106的单独编程。
配置和状态寄存器130的内容和功能依赖于PLD 106的厂商和产品族。例如,如果PLD 106是Alter Stratix II设备,那么可以输出“nCONFIG”’信号以开始配置(PLD编程)周期。使用一个或多个配置和状态寄存器130来操纵诸如PLD 106之类的PLD的完整上电序列为在大量PLD器件上的操作提供了模块性,而不需要新硬件或硬件修改。配置和状态寄存器130还可以在PLD I/F 116内部提供其他配置设置,诸如配置调步逻辑134的时序。
在一个示例性实施例中,数据缓冲器132是用于从DMA控制器124接收的数据的临时保存位置。向数据缓冲器132写入数据的速度可以不同于从数据缓冲器132读取数据的速度。数据缓冲器132可以包括RAM、FIFO和/或一个或多个寄存器。在一个示例性实施例中,调步逻辑134控制通过I/O接口120以及总线122和108发送到PLD 106的数据的速率和格式。调步逻辑134可以通过在处理器114上执行的软件命令来配置或者通过DMA控制器124来写入。在另一个示例性实施例中,调步逻辑134在固件中配置。调步逻辑134可以控制从数据缓冲器132读取并写入I/O接口120的数据的时序、字节顺序(例如大端模式与小端模式)和数据字宽度用于输出到PLD 106。在一个示例性实施例中,调步逻辑134控制复用器142以从数据缓冲器132中选择数据。
一些PLD族支持利用压缩或加密数据来进行编程,每字节需要多个时钟周期,而其他PLD族支持每时钟周期对一个字节进行编程。调步逻辑134与数据缓冲器132的组合可以处理对大量PLD 106的编程需求。在一个示例性实施例中,数据缓冲器132以DMA速度从DMA控制器124接收突发形式(例如16字节)的PLD编程数据,并且调步逻辑134读取PLD编程数据并使用由PLD 106支持的编程时序(例如每时钟周期1字节)以PLD编程速度将其发送到PLD 106上的编程端口107。IC 104和PLD 106可以在不同时钟上和/或以不同速度(例如逐步下降(stepped down)或逐步上升(stepped up)的时钟速度)运行。在一个示例性实施例中,调步逻辑134利用计数器、锁相环(PLL)和/或本领域中已知的其他技术来建立并调节发送到PLD 106的PLD编程数据的时序序列。调步逻辑134在不需要处理器114干预的情况下最大化可用的编程带宽以监视和调节编程序列。PLD I/F 116中支持的字节顺序可以进一步实现各种系统配置,包括大端和小端寻址/排序方案。此外,由于在PLD编程端口和DMA控制器124之间总线宽度可以变化,所以PLD I/F 116可以支持各种配置(例如32比特DMA数据到8比特PLD编程端口)。在一个示例性实施例中,存储器映射控制器138提供寻址支持、字节排序和总线宽度转换。存储器映射控制器138还可以仲裁对总线128的访问。
在一个示例性实施例中,诸如配置和状态寄存器130、数据缓冲器132和调步逻辑134之类的PLD I/F 116的单元对处理器114和DMA控制器124来说是可访问的。总线选择器136可以使得总线118或128能够访问配置和状态寄存器130。支持多条访问路径可以通过备份或备选路径提供增强的灵活性和可配置性以优化系统100的性能以及增加抗故障能力。使用总线选择器136以及总线128和118时,存在很多选项支持编程PLD 106。例如,处理器114或DMA控制器124可以设置配置和状态寄存器130中的值以将PLD 106配置为编程模式。在一个示例性实施例中,PLD 106的PLD编程端口107是可通过数据缓冲器132和复用器142或通过配置和状态寄存器130来访问的。这样,处理器114或DMA控制器124可以通过数据缓冲器132和复用器142或者通过配置和状态寄存器130将PLD编程数据发送到PLD 106。尽管提供多条路径以对PLD 106进行编程可能是优选的,但在一个示例性实施例中,移除总线选择器136和可选总线129以减少IC 104中使用的资源数量。如果数据缓冲器132是单个单元或者连接到总线122,那么复用器142也可以被从IC 104移除。尽管总线选择器136和存储器映射控制器138示出在PLD I/F 116内,但可以理解,这些单元可以在PLD I/F 116外部。
在一个示例性实施例中,当PLD 106处于PLD编程(初始化)模式时,对PLD 106的PLD编程端口107的数据写入访问是可用的。在PLD 106不处于PLD编程模式时,对PLD 106上的编程端口的访问可以通过存储器映射控制器138来阻断(例如,不可访问或者通过存储器映射从处理器114和DMA控制器124隔开),使得编程的PLD 106不可能被无意中破坏,这样就增加了整个系统的可靠性和可用性。PLD编程模式可以通过读取配置和状态寄存器130来确定。配置和状态寄存器130还可以表明在PLD编程期间错误情形何时发生。
本领域的普通技术人员应当理解,IC 104和组件102包含图1中没有示出的本领域中已知的其他单元。例如,组件102可以包括其他接口和电路,包括一个或多个时钟、电源、变压器、噪声抑制/过滤单元、去耦电容、电源和接地连接、散热片和分立部件。IC 104可以包括图1中没有示出的其他逻辑块或单元,诸如先入先出(FIFO)缓冲器、随机访问存储器(RAM)块、只读存储器(ROM)、电压轨、时钟、PLL、寄存器、模数(A/D)转换器、数模(DAC)转换器、I/O管脚驱动器以及其他这种单元。
总而言之,系统100使用DMA来初始化PLD 106。在一个示例性实施例中,系统100包括PLD 106,PLD 106包括带有控制线路的编程端口107,PLD 106位于组件102上。系统100可以进一步包括可操作地连接到PLD 106上的编程端口107的IC 104,IC 104位于组件102上。在一个示例性实施例中,IC 104包括用于在IC 104和PLD 106之间转换信号格式的I/O接口120。IC 104可以进一步包括PLD接口116,PLD接口116包括配置和状态寄存器130、数据缓冲器132和调步逻辑134。在一个示例性实施例中,配置和状态寄存器130适合于通过I/O接口120来操纵PLD 106的编程端口107的控制线路。数据缓冲器132可以临时保存以DMA速度从DMA控制器124接收的PLD编程数据。调步逻辑134可以控制以PLD编程速度通过I/O接口120将PLD编程数据发送到PLD106上的编程端口107的速度。
现在转到图2,现在描述根据一个示例性实施例的可以在其上实现使用DMA来初始化PLD的组件200。组件200可以是卡、板、模块或更大系统内的子系统。与图1的组件102类似,图2中的组件200包括集成电路(IC)204,该集成电路(IC)204通过总线108可操作地连接到PLD 106的编程端口107,使得该IC 204能够执行诸如将PLD 106配置为编程模式、对PLD 106进行编程以及监视PLD 106的状态之类的操作。尽管只示出了一个PLD 106,但应当理解,可以将多个PLD(1和N之间)连接到IC 204。在一个示例性实施例中,IC 204是片上系统(SOC),包括处理器114、PLD接口(I/F)116和输入/输出(I/O)接口120、DMA控制器224和NVM 210。IC 204可以是本领域中已知的任意集成电路技术,诸如ASIC或PLD。图2中组件200的编号相同的单元提供了基本上与前面参考图1的组件102所描述的类似的特征和优势。由于一些IC技术可以包括诸如NVM 210之类的内部非易失性存储器,所以图2示出的IC 204会影响这样的IC的存储能力,这样就排除了对诸如图1的NVM 110之类的远程存储单元的需要。
如图2所示,DMA控制器224通过总线240直接访问存储在NVM210内的PLD编程数据。总线240可以以并行或串行配置包括地址、数据、控制、中断和时钟线路。DMA控制器224以与图1的DMA控制器124类似的方式运行,只不过图2的DMA控制器224可以直接访问PLD编程数据。在一个示例性实施例中,通过移除到外部网络/总线112的连接,图2的DMA控制器224与图1中示出的MDA控制器124相比提供了对PLD编程数据的更快访问。组件200对于支持更快的编程速度和更小的PLD编程文件的PLD 106来说可能是优选的,因为NVM210的大小可能会被限制为IC 204的内部单元。
现在转到图3,现在描述根据一个示例性实施例的可以在其上实现使用DMA来初始化PLD的系统300。与图1的系统100类似,系统300包括集成电路(IC)304,该集成电路(IC)304通过总线108可操作地连接到PLD 106的编程端口107,使得该IC 304能够执行诸如将PLD 106配置为编程模式、对PLD 106进行编程以及监视PLD 106的状态之类的操作。尽管只示出了一个PLD 106,但应当理解,可以将多个PLD(1和N之间)连接到IC 304。IC 304可以是本领域中已知的任意集成电路技术,诸如ASIC或PLD。在一个示例性实施例中,图3的IC 304与图1的IC 104相比包括减少的单元和功能。系统300的编号相同的单元提供了基本上与前面参考图1的系统100所描述的类似的特征和优势。在一个示例性实施例中,IC 304包括可操作地连接到I/O接口120、326和336的PLD接口116。系统300进一步包括通过总线338可操作地连接到I/O接口336的处理器314。系统300还包括通过总线340可操作地连接到I/O接口326的DMA控制器324。在一个示例性实施例中,DMA控制器324通过总线312可操作地连接到NVM 110。总线312、338和340利用本领域中已知的任意总线格式,如前面参考图1中其他这种总线所描述的。总线312、338和340可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。在一个示例性实施例中,总线340通过总线仲裁支持DMA数据和非DMA数据。在另一个示例性实施例中,总线340包括用于DMA和非DMA数据的独立路径。类似地,总线338可以包括用于对IC 304进行存储器映射和寄存器映射访问的并行结构,或者作为替代,可以在总线338上采用总线仲裁方案。
处理器314可以是本领域中已知的能够执行指令的任意处理电路,诸如微处理器、微控制器、状态机、数字信号处理器(DSP)和/或逻辑器件。处理器314可以包括用于存储可执行指令的可读存储介质。在一个示例性实施例中,处理器314与IC 304位于同一组件或子系统上。在另一个示例性实施例中,处理器314位于相对于IC 304的远程组件或子系统上。类似地,DMA控制器324可以与IC 304位于同一组件或子系统上,或者DMA控制器324可以位于相对于IC 304的远程位置。在一个示例性实施例中,NVM 110位于相对于IC 304的远程位置(例如,在单独的组件或子系统上)。
在一个示例性实施例中,IC 304内的总线318在PLD I/F 116、I/O接口326和I/O接口336之间为非DMA数据提供路径。总线318可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。总线318通过I/O接口336为处理器314提供对PLD I/F 116的读取/写入访问,以及通过I/O接口326和总线340提供对DMA控制器324的读取/写入访问。DMA控制器324和PLD I/F 116可以直接出现在处理器314的寄存器映射和/或存储器映射内。在一个示例性实施例中,IC 304内的总线328在PLD I/F 116和I/O接口326之间提供用于存储器映射访问的路径。总线328可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。在一个示例性实施例中,处理器314通过可选总线329访问总线328。可选总线329在处理器314和DMA控制器324之间提供另一条路径,使得处理器314能够访问附接到总线328的存储器映射单元。在一个示例性实施例中,总线328主要用于传递数据,而总线318主要用于配置和状态。在一个示例性实施例中,I/O接口326和336执行与前面参考图1中的I/O接口120所描述的类似的总线到总线转换的功能。I/O接口326可以在内部总线318和328与总线340之间执行总线仲裁。类似地,I/O接口336可以在内部总线318和329与总线338之间执行总线仲裁。
当在系统中利用诸如处理器314和DMA控制器324之类的现有处理器和DMA控制器,期望采用使用DMA来初始化PLD的低成本IC实现时,图3中所示出的IC 304可能是优选的。由于与图1的IC 104和图2的IC 204相比具有减少的设备复杂度,图3所示的IC 304可能成本更低。
现在转到图4,现在描述根据一个示例性实施例的可以在其上实现使用DMA来初始化PLD的系统400。与图1的系统100类似,系统400包括组件402,其进一步包括集成电路(IC)404,该集成电路(IC)404,通过总线108可操作地连接到PLD 106的编程端口107,使得该IC 304能够执行诸如将PLD 106配置为编程模式、对PLD 106进行编程以及监视PLD 106的状态之类的操作。组件402可以是卡、板、模块或更大系统内的子系统。尽管只示出了一个PLD 106,但应当理解,可以将多个PLD(1和N之间)连接到IC 404。IC 404可以是本领域中已知的任意集成电路技术,诸如ASIC或PLD。与图3的系统300类似,组件404进一步包括通过I/O接口336和总线338可操作地连接到IC 404的处理器314。系统400的编号相同的单元提供了基本上与前面参考图1-3的系统100-300所描述的类似的特征和优势。在一个示例性实施例中,IC404包括通过总线418可操作地连接到I/O接口336和DMA控制器124的PLD接口116。与图1的IC 104类似,IC 404包括通过总线122可操作地连接到PLD I/F 116的I/O接口120;通过总线140可操作地连接到DMA控制器124的I/O接口126;将PLD I/F接口116可操作地连接到DMA控制器124的总线428;以及将I/O接口336可操作地连接到总线428使得处理器314能够访问总线428的可选总线429。系统400进一步包括在组件402外部的NVM 110,NVM 110通过网络/总线112可操作地连接到IC 404的I/O接口126。
IC 404的总线418在PLD I/F 116、DMA控制器124和I/O接口336之间为寄存器访问提供路径。总线418可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。总线418通过I/O接口336为处理器314提供对PLD I/F 116和对DMA控制器124的读取/写入访问。DMA控制器124和PLD I/F 116可以直接出现在处理器314的存储器和/或寄存器映射内。在一个示例性实施例中,图4的总线428提供与图1的总线128基本类似的特征和优势。在一个示例性实施例中,总线428主要用于传递数据,而总线318主要用于配置和状态。
当诸如图4中所示的IC 404之类的IC不包括嵌入的处理器时,系统400可能是优选的,并且处理器与共同组件上的IC进行接口连接,诸如组件402的处理器314。在一个示例性实施例中,处理器314支持组件402上的多个IC 404。
现在转到图5,现在描述根据一个示例性实施例的可以在其上实现使用DMA来初始化PLD的系统500。与图3的系统300类似,系统500包括集成电路(IC)504,该集成电路(IC)504通过总线108可操作地连接到PLD 106的编程端口107,使得该IC 504能够执行诸如将PLD 106配置为编程模式、对PLD 106进行编程以及监视PLD 106的状态之类的操作。系统500进一步包括处理器314,该处理器314通过I/O接口336和总线338可操作地连接到IC 504,使得该处理器314能够执行诸如读取并将数据写入IC 504之类的任务。尽管只示出了一个PLD 106,但应当理解,可以将多个PLD(1和N之间)连接到IC 504。IC 504可以是本领域中已知的任意集成电路技术,诸如ASIC或PLD。IC 504与图2的IC 204类似,只不过IC 204的处理器114已经被移动到IC 504的外部作为处理器314。系统500的编号相同的单元提供了基本上与前面参考图1-图4的系统100、系统300和系统400以及组件200所描述的类似的特征和优势。当诸如图5中所示出的IC 504之类的IC包含NVM但是不包含处理器时,诸如包含NVM 210但是不包含处理器314,系统500可能是优选的。
现在转到图6,现在描述根据一个示例性实施例描述的可以在其上实现使用DMA来初始化PLD的系统600。在一个示例性实施例中,系统600包括通过总线340可操作地连接到DMA控制器324以及通过总线338可操作地连接到处理器314的多个组件(1到M)。这些多个组件(1到M)可以是卡、板、模块、子系统或者它们的任意组合。图6中示出了两个示例性的组件602和组件604(组件1和组件M),没有示出可变数量的中间组件(组件2到组件M-1)。在一个示例性实施例中,每个组件602-组件604都包括通过总线108可操作地连接到PLD 106的集成电路(IC)304,如前面参考图3的系统300所描述的。每个组件602-组件604可以包括不同数量的PLD 106(1到N)。
DMA控制器324通过总线312可操作地连接到NVM 110并且通过总线606可操作地连接到处理器314。系统600的编号相同的单元提供了基本上与前面参考图3的系统300所描述的类似的特征和优势。总线606可以以并行或串行配置包括地址、数据、控制、状态、中断和时钟线路。在一个示例性实施例中,DMA控制器324和处理器314位于普通设备中,诸如微控制器、DSP或PLD。当多个PLD 106分布在多个组件(诸如组件602到组件604)中,并且每个组件不包括独立的处理器(诸如处理器314)时,图6中示出的系统600可能是优选的。
现在转到图7,现在描述根据一个示例性实施例的用于使用DMA来初始化PLD的处理700。在一个示例性实施例中,处理700通过使用DMA控制器初始化PLD来增加处理器的吞吐量并减少板面积。尽管处理700可以应用于图1-图6的系统和组件100-600,但为了易于说明,可以参考图1的系统100来描述该处理。在方框702中,操纵PLD 106的控制线路以将PLD 106配置为编程模式。在一个示例性实施例中,处理器114通过将命令通过总线118写入PLD I/F116的配置和状态寄存器130来开始操纵总线108的PLD控制线路。处理器114还可以配置PLD I/F 116以便与PLD 106兼容,包括诸如时序、字节顺序和数据字宽度之类的特征。在另一个示例性实施例中,DMA控制器124通过将命令通过总线128和总线选择器136写入PLD I/F 116的配置和状态寄存器130开始操纵总线108的PLD控制线路。
在方框704中,DMA控制器124配置为从NVM 110读取PLD编程数据。在一个示例性实施例中,处理器114通过总线118来控制对DMA控制器124的配置。处理器114可以选择源地址、目的地地址、字计数并配置DMA控制器124内的其他设置。
在方框706中,处理器114使得DMA控制器124开始从NVM读取PLD编程数据。在一个示例性实施例中,DMA控制器124基于由处理器114编程的DMA控制器124的配置而在网络/总线112上主控或进行对存储在NVM 110中的PLD编程数据的请求。通过总线128将在DMA控制器124处从NVM 110接收的PLD编程数据传递到PLD I/F116。
在方框708中,以DMA速度从DMA控制器接收PLD编程数据。在一个示例性实施例中,PLD I/F 116支持各种DMA数据总线宽度、格式和速度。在方框710中,将PLD编程数据写入数据缓冲器132。可以由DMA控制器124或存储器映射控制器138控制对数据缓冲器132的写入。在一个示例性实施例中,数据缓冲器132是FIFO、RAM或基于寄存器的缓冲器。数据缓冲器132的大小可以足够大以保存整个PLD编程数据文件,或足够大以保存相对于DMA速度和PLD编程速度之间的速度差异按大小排列的数据块。在另一个示例性实施例中,将PLD编程数据写入配置和状态寄存器130。配置和状态寄存器130可以为以PLD编程速度将PLD编程数据发送到PLD 106上的编程端口107提供另一条路径。PLD编程数据可以由DMA控制器124或者处理器114写入数据缓冲器132或者配置和状态寄存器130。
在方框712中,从数据缓冲器132读取PLD编程数据。在一个示例性实施例中,可以改变从数据缓冲器132读取的数据的字节顺序以支持大端格式或小端格式。存储器映射控制器138可以控制数据缓冲器132中的值的字节排序和寻址。从数据缓冲器132读取数据的过程可以调节数据缓冲器132中的内部指针以维持数据缓冲器132内的PLD编程数据的顺序。在一个示例性实施例中,当从数据缓冲器132读取PLD编程数据时,修改写入数据缓冲器132的PLD编程数据的数据字宽度。数据字宽度修改可以使得各种DMA控制器124和PLD编程端口107能够支持不同的总线宽度(例如8比特、16比特、24比特、32比特、64比特等等)。字一个示例性实施例中,调步逻辑134将输入切换到复用器142以访问数据缓冲器132内的不同位置。调步逻辑134可以选择用于以PLD编程速度读取的数据缓冲位置。在一个示例性实施例中,DMA速度不同于PLD编程速度。在另一个示例性实施例中,DMA速度与PLD编程速度相同。当DMA速度等于或低于PLD编程速度时,PLD编程数据可以不必进行累积就经过数据缓冲器132,或者经过配置和状态寄存器130。
在方框714中,以PLD编程速度将PLD编程数据发送到PLD 106上的编程端口107。在一个示例性实施例中,PLD 106的编程端口107通过总线108与IC 104进行接口连接。在一个示例性实施例中,由调步逻辑134管理发送速度。
在方框716中,读取PLD 106的状态以验证使用PLD编程数据对PLD 106的成功编程。可以由处理器114通过配置和状态寄存器130来读取PLD 106的状态。在一个示例性实施例中,周期性地读取PLD 106的状态以检查错误或PLD编程的完成。在另一个示例性实施例中,通过一个或多个中断信号来向处理器114通知错误或PLD编程的完成。
在方框718中,当PLD 106不处于编程模式时,阻断对PLD 106上的编程端口107的访问。当PLD 106不处于编程模式时,可以拒绝对处理器114或DMA控制器124或者两者的访问。可以由存储器映射控制器138阻断对PLD 106上的编程端口107的访问。存储器映射控制器138可以通过配置和状态寄存器130来确定PLD编程模式状态。在一个示例性实施例中,存储器映射控制器138通过调步逻辑134来访问配置和状态寄存器130。在另一个示例性实施例中,存储器映射控制器138通过总线选择器136来访问配置和状态寄存器130。
在一个示例性实施例中,方框708-方框714以管道或流的方式并发地执行,而方框702-方框706和方框716-方框718顺序执行。使用管道或流的方法可以进一步最大化可用带宽以减少利用PLD编程来对PLD
106进行编程所需要的总时间。在处理700期间的任意点,处理器114可能因为各种原因暂停或终止PLD编程序列,这些原因诸如错误、对系统资源的更高优先级的请求或用户请求。在错误情况下,处理器114可以尝试重复处理700。作为替代,处理器114可以发送消息、引发信号或向外部资源通知错误情况以便可以采取校正措施。
示例性实施例的技术效果和益处包括使用DMA控制器来初始化PLD。DMA控制器将PLD编程数据从NVM流式传送到PLD I/F,释放系统处理器以在对PLD进行编程时执行其他任务。示例性实施例使得NVM能够位于PLD位于其上的组件或子系统的外部。将NVM移动到远程位置可以减少组件或子系统成本、重量、功耗、板面积、热量,并且提供其他优势和益处。通过使用可用的或嵌入的系统资源,不会有板面积损失或典型地与使用串行EEPROM设备来对PLD进行编程关联的增加的成本。通过使用DMA控制器及关联的逻辑,可以通过并行编程路径快速加载PLD编程数据。示例性实施例在DMA控制器与PLD之间调整时序、字节顺序和数据字宽度方面进一步提供了灵活性。对PLD编程过程进行初始化的处理器能够获得PLD控制和状态信息,使得处理器能够监视成功传送、错误情况,以及开始或停止PLD编程序列。此外,在DMA控制器发生故障时,PLD I/F中的控制和状态寄存器可以提供为PLD加载PLD编程数据的另一条路径。
如上所述,本发明的实施例可以体现为计算机实现的处理和用于实现这些处理的设备的形式。本发明的实施例还可以体现为包含指令的计算机程序代码的形式,这些指令包含在诸如软盘、CD-ROM、硬盘驱动器或任意其他计算机可读存储介质之类的有形介质中,其中,当计算机程序代码被加载到计算机中并由计算机执行时,计算机变成用于实现本发明的设备。本发明还可以体现为计算机程序代码的形式,这些代码例如存储在存储介质中,加载到计算机中和/或由计算机执行,或者通过一些传输介质来发送,诸如通过电线或电缆、通过光纤或者经由电磁辐射来发送,其中,当计算机程序代码被加载到计算机中并由计算机执行时,计算机变成用于实现本发明的设备。当在通用微处理器上实现时,计算机程序代码段配置微处理器以创建特定逻辑电路。
尽管已经参考示例性实施例描述了本发明,但本领域的普通技术人员应当理解,在不偏离本发明范围的情况下,可以进行各种改变并且可以用等同的单元来替换本发明的单元。另外,在不偏离本发明的本质范围的情况下,可以进行很多修改以使特定环境或材料适应本发明的阐述。因此,本发明并非旨在限于作为所考虑的用于执行本发明的最佳模式所公开的特定实施例,相反,本发明将包括在所附权利要求书范围内的所有实施例。而且,术语“第一”、“第二”等等的使用不是表示任何顺序或重要性,而是用于区别一个单元和另一个单元。

Claims (29)

1.一种用于使用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)的方法,所述方法包括:
操纵所述PLD的控制线路以将所述PLD配置为编程模式;
以DMA速度从DMA控制器接收PLD编程数据;
将所述PLD编程数据写入数据缓冲器;
从所述数据缓冲器读取所述PLD编程数据;以及
以PLD编程速度将所述PLD编程数据发送到所述PLD上的编程端口。
2.根据权利要求1所述的方法,进一步包括:
配置所述DMA控制器以从非易失性存储器设备(NVM)读取所述PLD编程数据;以及
使用处理器来使得所述DMA控制器开始从所述NVM读取所述PLD编程数据。
3.根据权利要求1所述的方法,进一步包括:
使用处理器和所述DMA控制器中的至少一个来开始操纵所述PLD的所述控制线路,以通过配置和状态寄存器来将所述PLD配置为所述编程模式。
4.根据权利要求1所述的方法,进一步包括:
提供备选路径以通过配置和状态寄存器将所述PLD编程数据发送到所述PLD上的编程端口;以及
将所述PLD编程数据写入所述配置和状态寄存器。
5.根据权利要求1所述的方法,其中当从所述数据缓冲器读取所述PLD编程数据时,修改写入所述数据缓冲器的所述PLD编程数据的数据字宽度。
6.根据权利要求1所述的方法,其中当从所述数据缓冲器读取所述PLD编程数据时,修改写入所述数据缓冲器的所述PLD编程数据的字节顺序。
7.根据权利要求1所述的方法,进一步包括:
读取所述PLD的状态以验证使用所述PLD编程数据对所述PLD的成功编程。
8.根据权利要求1所述的方法,进一步包括:
当所述PLD不处于所述编程模式下时,阻断对所述PLD上的所述编程端口的访问。
9.一种用于使用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)的集成电路(IC),所述IC可操作地连接到所述PLD,所述IC包括:
输入输出(I/O)接口,所述I/O接口在所述IC和所述PLD之间转换信号格式;以及
PLD接口,所述PLD接口包括:
配置和状态寄存器,所述配置和状态寄存器适合于操纵所述PLD的控制线路以通过所述I/O接口来将所述PLD配置为编程模式;
数据缓冲器,所述数据缓冲器用于临时保存以DMA速度从DMA控制器接收到的PLD编程数据;以及
调步逻辑,所述调步逻辑控制以PLD编程速度通过所述I/O接口将所述PLD编程数据发送到所述PLD上的编程端口的速度。
10.根据权利要求9所述的IC,进一步包括:
DMA控制器,所述DMA控制器可操作地连接到所述PLD接口。
11.根据权利要求10所述的IC,其中所述DMA控制器可操作地连接到非易失性存储器设备(NVM),所述NVM存储所述PLD编程数据。
12.根据权利要求11所述的IC,进一步包括所述NVM。
13.根据权利要求11所述的IC,进一步包括:
处理器,所述处理器可操作地连接到所述PLD接口和所述DMA控制器,并且其中所述处理器执行一种方法,所述方法包括:
将值写入所述PLD接口的配置和状态寄存器,所述值用于通过所述I/O接口来操纵所述PLD的所述控制线路以将所述PLD配置为编程模式;
配置所述DMA控制器以从所述NVM读取所述PLD编程数据;
初始化所述DMA控制器以开始从所述NVM读取所述PLD编程数据;以及
读取所述PLD接口的配置和状态寄存器以验证使用所述PLD编程数据对所述PLD的成功编程。
14.根据权利要求9所述的IC,其中当从所述数据缓冲器读取所述PLD编程数据时,所述PLD接口修改写入所述数据缓冲器的所述PLD编程数据的数据字宽度和字节顺序中的至少一个。
15.根据权利要求9所述的IC,其中当所述PLD不处于所述编程模式下时,阻断对所述PLD上的所述编程端口的访问。
16.根据权利要求9所述的IC,其中所述PLD接口进一步包括总线选择器,所述总线选择器适合于为处理器和DMA控制器提供对配置和状态寄存器的访问;以及
其中所述配置和状态寄存器适合于通过所述I/O接口将所述PLD编程数据发送到所述PLD上的编程端口。
17.一种用于初始化可编程逻辑器件(PLD)的方法,所述方法包括:
操纵所述PLD的控制线路以将所述PLD配置为编程模式;
从DMA控制器和处理器中的至少一个选择PLD编程数据源;
从所述选择的数据源接收PLD编程数据;以及
将所述PLD编程数据发送到所述PLD上的编程端口。
18.根据权利要求17所述的方法,其中所述操纵所述PLD的控制线路以将所述PLD配置为编程模式由所述DMA控制器和所述处理器中的至少一个控制。
19.根据权利要求17所述的方法,其中从所述选择的数据源接收PLD编程数据由数据缓冲器和配置和状态寄存器中的至少一个接收。
20.根据权利要求17所述的方法,进一步包括:
配置所述DMA控制器以从非易失性存储器设备(NVM)读取所述PLD编程数据;以及
使用所述处理器来使得所述DMA控制器开始从所述NVM读取所述PLD编程数据。
21.根据权利要求20所述的方法,进一步包括:
将所述PLD编程数据写入数据缓冲器;以及
从所述数据缓冲器读取所述PLD编程数据。
22.根据权利要求17所述的方法,进一步包括:
当所述PLD不处于所述编程模式下时,阻断对所述PLD上的所述编程端口的访问。
23.一种用于使用直接存储器访问(DMA)来初始化可编程逻辑器件(PLD)的系统,所述系统包括:
所述PLD,包括带有控制线路的编程端口,所述PLD位于组件上;以及
集成电路(IC),可操作地连接到所述PLD的所述编程端口,所述IC位于所述组件上,并且包括:
输入输出(I/O)接口,所述I/O接口在所述IC和所述PLD之间转换信号格式;以及
PLD接口,所述PLD接口包括:
配置和状态寄存器,所述配置和状态寄存器适合于通过所
述I/O接口来操纵所述PLD的所述编程端口的控制线路;
据缓冲器,所述数据缓冲器用于临时保存以DMA速度从DMA控制器接收到的PLD编程数据;以及
调步逻辑,所述调步逻辑控制以PLD编程速度通过所述I/O接口将所述PLD编程数据发送到所述PLD上的所述编程端口的速度。
24.根据权利要求23所述的系统,进一步包括:
DMA控制器,所述DMA控制器可操作地连接到所述PLD接口。
25.根据权利要求24所述的系统,其中所述DMA控制器可操作地连接到非易失性存储器设备(NVM),所述NVM存储所述PLD编程数据。
26.根据权利要求25所述的系统,其中所述NVM位于所述组件的外部。
27.根据权利要求25所述的系统,进一步包括:
处理器,所述处理器可操作地连接到所述PLD接口和所述DMA控制器,并且其中所述处理器执行一种方法,所述方法包括:
将值写入所述PLD接口的配置和状态寄存器,所述值用于通过所述I/O接口来操纵所述PLD的所述控制线路以将所述PLD配置为编程模式;
配置所述DMA控制器以从所述NVM读取所述PLD编程数据;
初始化所述DMA控制器以开始从所述NVM读取所述PLD编程数据;以及
读取所述PLD接口的配置和状态寄存器以验证使用所述PLD编程数据对所述PLD的成功编程。
28.根据权利要求23所述的系统,其中当从所述数据缓冲器读取所述PLD编程数据时,所述PLD接口修改写入所述数据缓冲器的所述PLD编程数据的数据字宽度和字节顺序中的至少一个;以及
其中当所述PLD不处于所述编程模式下时,阻断对所述PLD上的所述编程端口的访问。
29.根据权利要求24所述的系统,进一步包括:
多个组件,通过所述多个组件中的每个组件上的每个IC的PLD接口可操作地连接到所述DMA控制器;并且其中所述DMA控制器位于所述多个组件的外部。
CN2008100089664A 2007-02-01 2008-01-31 用于使用dma来初始化pld的方法、系统和集成电路 Active CN101236504B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/670,017 US8407658B2 (en) 2007-02-01 2007-02-01 Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device
US11/670,017 2007-02-01

Publications (2)

Publication Number Publication Date
CN101236504A true CN101236504A (zh) 2008-08-06
CN101236504B CN101236504B (zh) 2011-09-07

Family

ID=39675618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100089664A Active CN101236504B (zh) 2007-02-01 2008-01-31 用于使用dma来初始化pld的方法、系统和集成电路

Country Status (3)

Country Link
US (3) US8407658B2 (zh)
JP (1) JP5102644B2 (zh)
CN (1) CN101236504B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102968316A (zh) * 2012-11-02 2013-03-13 杭州迪普科技有限公司 一种网络设备及配置文件的加载方法
CN103500149A (zh) * 2013-09-29 2014-01-08 华为技术有限公司 直接内存访问控制器和直接内存访问控制方法
CN105706053A (zh) * 2013-11-06 2016-06-22 英派尔科技开发有限公司 通过在数据中心处的协处理器的制图进行恶意攻击防止
CN107315449A (zh) * 2017-06-29 2017-11-03 华为技术有限公司 计算机设备、读取时间的方法和写入时间的方法
CN107608334A (zh) * 2017-09-07 2018-01-19 国营芜湖机械厂 一种某机型数字通信部件内控制板便携式检测装置
CN114328326A (zh) * 2021-12-28 2022-04-12 湖南航天经济发展有限公司 总线矩阵端口可配置的微控制器及其内部数据传输方法

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US8407658B2 (en) * 2007-02-01 2013-03-26 International Business Machines Corporation Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US7710146B1 (en) * 2007-04-17 2010-05-04 General Dynamics Advanced Information Systems, Inc. Hierarchical FPGA configuration
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8627079B2 (en) 2007-11-01 2014-01-07 Infineon Technologies Ag Method and system for controlling a device
US8908870B2 (en) 2007-11-01 2014-12-09 Infineon Technologies Ag Method and system for transferring information to a device
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8589600B2 (en) * 2009-12-14 2013-11-19 Maxeler Technologies, Ltd. Method of transferring data with offsets
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
JP5652720B2 (ja) * 2011-07-19 2015-01-14 日立金属株式会社 Fpgaシステム及び電子機器
US9645738B2 (en) 2012-08-09 2017-05-09 Spectra Logic Corporation Direct memory access of remote data
US9218133B2 (en) 2012-08-17 2015-12-22 Spectra Logic, Corp Data deduplication in a removable storage device
JP6343945B2 (ja) * 2014-01-30 2018-06-20 コニカミノルタ株式会社 プログラム可能な論理回路デバイスを備えた電子装置
US9820362B2 (en) 2014-07-28 2017-11-14 Philips Lighting Holding B.V. Lighting control and status queries
CN106934187B (zh) * 2017-05-11 2021-05-28 郑州云海信息技术有限公司 一种提高芯片fpga原型验证效率的调试方法及系统
US10725520B2 (en) * 2017-06-23 2020-07-28 Hewlett Packard Enterprise Development Lp Determining a power capping signal using direct memory access
CN111414129B (zh) * 2019-01-07 2023-05-05 阿里巴巴集团控股有限公司 基于云的fpga控制数据的配置系统和方法以及电子设备
CN112685344B (zh) * 2020-12-30 2024-05-14 合肥市芯海电子科技有限公司 Dma编程电路及基于dma编程电路的编程方法
CN114461552B (zh) * 2022-01-26 2024-01-30 北京经纬恒润科技股份有限公司 一种数据存储方法及装置
EP4407390A1 (en) * 2023-01-26 2024-07-31 Gwenaël Joseph Marie Godde Electronic circuit

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04199228A (ja) * 1990-11-26 1992-07-20 Toshiba Corp 半導体集積回路装置
JPH0668320A (ja) * 1992-08-14 1994-03-11 Ricoh Co Ltd 電子装置
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US6198751B1 (en) 1997-11-19 2001-03-06 Cabletron Systems, Inc. Multi-protocol packet translator
US6560665B1 (en) 1999-05-14 2003-05-06 Xilinx Inc. Embedding firmware for a microprocessor with configuration data for a field programmable gate array
JP3544146B2 (ja) * 1999-05-14 2004-07-21 シャープ株式会社 Dma制御付fifo、並びに、それを用いたdma転送システム
US6204687B1 (en) 1999-08-13 2001-03-20 Xilinx, Inc. Method and structure for configuring FPGAS
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US6738962B1 (en) 2000-06-12 2004-05-18 Altera Corporation Configuration and/or reconfiguration of integrated circuit devices that include programmable logic and microprocessor circuitry
US20030041129A1 (en) 2000-07-20 2003-02-27 John Applcby-Allis Voice-over-internet protocol telephone in reconfigurable logic
US20020100029A1 (en) 2000-07-20 2002-07-25 Matt Bowen System, method and article of manufacture for compiling and invoking C functions in hardware
US7076595B1 (en) 2001-05-18 2006-07-11 Xilinx, Inc. Programmable logic device including programmable interface core and central processing unit
JP3686380B2 (ja) * 2002-02-01 2005-08-24 株式会社日立ハイテクノロジーズ 装置コントローラ
JP2003281077A (ja) * 2002-03-25 2003-10-03 Hitachi Ltd 半導体集積回路装置
US6810514B1 (en) * 2002-07-03 2004-10-26 Xilinx, Inc. Controller arrangement for partial reconfiguration of a programmable logic device
US6907595B2 (en) 2002-12-13 2005-06-14 Xilinx, Inc. Partial reconfiguration of a programmable logic device using an on-chip processor
US7236525B2 (en) 2003-05-22 2007-06-26 Lsi Corporation Reconfigurable computing based multi-standard video codec
JP4174798B2 (ja) 2003-07-25 2008-11-05 シャープ株式会社 表示装置
US20050093572A1 (en) * 2003-11-03 2005-05-05 Macronix International Co., Ltd. In-circuit configuration architecture with configuration on initialization function for embedded configurable logic array
JP2005258996A (ja) * 2004-03-15 2005-09-22 Meidensha Corp Fpgaのリモートメンテナンス方式
US7274212B1 (en) * 2004-11-04 2007-09-25 Altera Corporation Methods and apparatus for control and configuration of programmable logic device
JP4272175B2 (ja) * 2005-03-22 2009-06-03 株式会社ルネサステクノロジ 半導体装置
US7370310B1 (en) * 2005-08-08 2008-05-06 Xilinx, Inc. Static address mapping
US8407658B2 (en) * 2007-02-01 2013-03-26 International Business Machines Corporation Methods, systems, and computer program products for using direct memory access to initialize a programmable logic device

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102968316A (zh) * 2012-11-02 2013-03-13 杭州迪普科技有限公司 一种网络设备及配置文件的加载方法
CN103500149A (zh) * 2013-09-29 2014-01-08 华为技术有限公司 直接内存访问控制器和直接内存访问控制方法
CN105706053A (zh) * 2013-11-06 2016-06-22 英派尔科技开发有限公司 通过在数据中心处的协处理器的制图进行恶意攻击防止
CN107315449A (zh) * 2017-06-29 2017-11-03 华为技术有限公司 计算机设备、读取时间的方法和写入时间的方法
CN107608334A (zh) * 2017-09-07 2018-01-19 国营芜湖机械厂 一种某机型数字通信部件内控制板便携式检测装置
CN114328326A (zh) * 2021-12-28 2022-04-12 湖南航天经济发展有限公司 总线矩阵端口可配置的微控制器及其内部数据传输方法

Also Published As

Publication number Publication date
US8589834B2 (en) 2013-11-19
US20080186052A1 (en) 2008-08-07
JP5102644B2 (ja) 2012-12-19
US8407658B2 (en) 2013-03-26
US20120278522A1 (en) 2012-11-01
CN101236504B (zh) 2011-09-07
JP2008192150A (ja) 2008-08-21
US8495545B2 (en) 2013-07-23
US20120278510A1 (en) 2012-11-01

Similar Documents

Publication Publication Date Title
CN101236504B (zh) 用于使用dma来初始化pld的方法、系统和集成电路
KR102504172B1 (ko) 소프트 코어 프로세서에 기초한 fpga 멀티-미러 업그레이드 로딩 방법 및 장치
US7296143B2 (en) Method and system for loading processor boot code from serial flash memory
US6401149B1 (en) Methods for context switching within a disk controller
US6330626B1 (en) Systems and methods for a disk controller memory architecture
CN101218570B (zh) 在直接存储器存取任务请求之间进行仲裁的装置和方法
KR100621631B1 (ko) 반도체 디스크 제어 장치
US8504737B2 (en) Serial line protocol for embedded devices
CN101218569B (zh) 用于控制dma任务的执行的装置
EP2546755A2 (en) Flash controller hardware architecture for flash devices
US10002103B2 (en) Low-pin microcontroller device with multiple independent microcontrollers
US10002102B2 (en) Low-pin microcontroller device with multiple independent microcontrollers
KR20120015313A (ko) 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들
US10983936B2 (en) Programmable arbitrary sequence direct memory access controller for configuring multiple core independent peripherals
ES2703473B2 (es) Aparato, sistema y procedimiento de gestion de acoplamiento de intermediario
EP4227790B1 (en) Systems, methods, and apparatus for copy destination atomicity in devices
US7237082B1 (en) Spatially distributed parity protection
JP2015005844A (ja) 再構成可能素子、再構成装置及び再構成方法
WO2009033968A1 (en) System and method for data transfer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171129

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES INC.

Address before: American New York

Patentee before: Core USA second LLC

Effective date of registration: 20171129

Address after: American New York

Patentee after: Core USA second LLC

Address before: New York grams of Armand

Patentee before: International Business Machines Corp.