專利名稱:用于使用dma來初始化pld的方法、系統(tǒng)和集成電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及對可編程邏輯器件進(jìn)行初始化,并且更特別地涉 及用于使用直接存儲器訪問來初始化可編程邏輯器件的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品。
背景技術(shù):
很多計算機(jī)/電子系統(tǒng)使用配置為執(zhí)行應(yīng)用特定(application specific)功能的可編程邏輯器件(PLD)。 PLD可以包括各種各樣的可 編程邏輯器件,諸如可編程邏輯陣列(PLA)、可編程陣列邏輯(PAL)、 通用陣列邏輯(GAL)、復(fù)雜可編程邏輯器件(CPLD)、現(xiàn)場可編程門 陣列(FPGA)以及本領(lǐng)域已知的其他技術(shù)。很多PLD技術(shù)是現(xiàn)場可編 程的,諸如FPGA,并且這種器件在它們每次上電時可能都需要編程。 在每個斷電/上電循環(huán)中都需要編程的PLD典型地稱為"易失性"PLD, 并且在上電時依靠靜態(tài)隨機(jī)訪問存儲器(SRAM)來得到已編程的器件 配置。易失性PLD還可能需要周期性的刷新,或者如果發(fā)生瞬時或"軟" (可恢復(fù)的)錯誤則可能需要重新編程。軟錯誤可能來自于環(huán)境影響, 諸如電磁干擾(EMI)、宇宙射線、a粒子、熱中子、噪聲以及其他類似 的源。包括易失性PLD的系統(tǒng)通常設(shè)計為支持頻繁的重新編程,即稱為 "可重配置計算"的技術(shù)。在采用可重配置計算的系統(tǒng)中,對PLD進(jìn)行編 程所需要的時間可能是系統(tǒng)性能和整體響應(yīng)度方面的關(guān)鍵因素。在這種 系統(tǒng)中,可能存在必須作為系統(tǒng)初始化的一部分而加載的多個PLD程 序,從而導(dǎo)致很長的系統(tǒng)初始化時間。可以對PLD進(jìn)行現(xiàn)場編程,而不需要使用特殊的測試設(shè)備接口,諸如具有符合聯(lián)合測試行動組(JTAG)的接口的板級或部件級加載器。 通常只有制造或測試設(shè)施才能對PLD上的JTAG端口進(jìn)行訪問。"現(xiàn)場 編程"可以包括在封閉系統(tǒng)中客戶設(shè)施處或在廠商外部的位置處編程, 其中對特殊測試設(shè)備的訪問是受限的或不可能的。還可以在制造或測試 設(shè)施上^l行不使用特殊測試設(shè)備的可用編程^支術(shù)。在一種對PLD進(jìn)行現(xiàn)場編程的方法中,PLD自動從串行電可擦除 可編程只讀存儲器(EEPROM)或閃速存儲設(shè)備加栽它的配置。每個 PLD可以具有作為同一系統(tǒng)板上的分立部件直接連接到該P(yáng)LD的專用 串行EEPROM。這種編程方法稱為"主動串行"編程或加載。主動串行編 程可以提供的益處在于能夠隔離用于每個PLD的特定程序,以最小化 PLD程序與目標(biāo)PLD不匹配的風(fēng)險。但是,如果串行編程速度很慢,一個比特),那么主動串行編程可能很慢。只要利用主動串行編程的PLD 從復(fù)位被釋放,該P(yáng)LD就可以開始加載它的PLD程序,這可能使得系 統(tǒng)的復(fù)位設(shè)計變復(fù)雜。如果其他系統(tǒng)部件并不會只要加載了 PLD程序 就會被復(fù)位,那么就可能發(fā)生復(fù)雜化。主動串行編程可能會表現(xiàn)出很多 其他問題,諸如對串行EEPROM中的PLD程序的版本控制管理,特別 是在更新和驗(yàn)證PLD程序的正確/最新版本時。串行EEPROM可能不支 持現(xiàn)場重新編程,需要重新制作板或者對插座式串行EEPROM部件進(jìn) 行物理上的部分替換。串行EEPROM中的錯誤或故障也可能很難檢測 和隔離,導(dǎo)致更多的系統(tǒng)故障模式。對串行EEPROM的使用可能在成 本、板面積、功耗、熱量、重量和制造過程中的報廢問題上有附加的損 失。部編程來進(jìn)行。PLD編程可以由通用處理器通過數(shù)據(jù)總線寫入來執(zhí)行, 并且PLD控制信號可以通過在該處理器上執(zhí)行的軟件程序而被操縱。 處理器典型地讀取PLD編程數(shù)據(jù),在數(shù)據(jù)總線上直接一次一字節(jié)地將 該數(shù)據(jù)寫入PLD,并且操縱適當(dāng)?shù)目刂菩盘柺沟肞LD將該數(shù)據(jù)作為編 程信息而接受。盡管通過處理器主動控制PLD編程過程可以提供靈活性,但PLD編程可能在很長的持續(xù)時間內(nèi)消耗處理器的帶寬,特別是 在PLD編程文件很大的情況下。在處理器忙于主動對PLD進(jìn)行編程時, 處理器必須等待執(zhí)行其他系統(tǒng)初始化任務(wù),導(dǎo)致初始化整個系統(tǒng)的時間 延遲延長。如果在系統(tǒng)中有帶有不同PLD程序的多個PLD,那么這個 問題就更復(fù)雜了,因?yàn)樵谔幚砥鞯馁Y源專門用于對PLD進(jìn)行編程時, 該處理器不能執(zhí)行其他任務(wù)。隨著更先進(jìn)技術(shù)的發(fā)展,PLD編程文件的大小持續(xù)增長,執(zhí)行主動 PLD編程的處理器的需求將持續(xù)增加,導(dǎo)致更長的系統(tǒng)初始化時間。更 進(jìn)一步地,更大的PLD編程文件將影響串行EEPROM所需要的存儲容 量,潛在地導(dǎo)致更大的部件、更長的編程時間和更高的系統(tǒng)成本。因此, 在本領(lǐng)域中需要一種在不依靠由處理器進(jìn)行的直接主動控制或主動串 行編程的情況下對PLD進(jìn)行編程的方法。發(fā)明內(nèi)容實(shí)施例包括一種用于使用直接存儲器訪問(DMA)來初始化可編 程邏輯器件(PLD)的方法。該方法包括操縱PLD的控制線路以將該 PLD配置為編程模式,以DMA速度從DMA控制器接收PLD編程數(shù)據(jù), 以及將該P(yáng)LD編程數(shù)據(jù)寫入數(shù)據(jù)緩沖器。該方法還包括從數(shù)據(jù)緩沖器 讀取PLD編程數(shù)據(jù),以及以PLD編程速度將PLD編程數(shù)據(jù)發(fā)送到PLD 上的編禾呈端口。附加的實(shí)施例包括一種用于使用DMA來初始化PLD的集成電路 (IC ),該IC可操作地連接到PLD。該IC包括輸入/輸出(I/O )接口和 PLD接口。 1/0接口在IC和PLD之間轉(zhuǎn)換信號格式。PLD接口包括配 置和狀態(tài)寄存器、數(shù)據(jù)緩沖器和調(diào)步邏輯(pacing logic )。配置和狀態(tài) 寄存器適合于操縱PLD的控制線路以通過I/O接口將PLD配置為編程 模式。數(shù)據(jù)緩沖器臨時保存以DMA速度從DMA控制器接收到的PLD 編程數(shù)據(jù)。調(diào)步邏輯控制以PLD編程速度通過I/O接口將PLD編程數(shù) 據(jù)發(fā)送到PLD上的編程端口的速度。進(jìn)一步的實(shí)施例包括一種用于初始化PLD的方法。該方法包括才喿縱PLD的控制線路以將PLD配置為編程沖莫式,從DMA控制器和處理 器中的至少一個選擇PLD編程數(shù)據(jù)源,從所選擇的數(shù)據(jù)源接收PLD編 程數(shù)據(jù),并將這些PLD編程數(shù)據(jù)發(fā)送到PLD上的編程端口 。進(jìn)一步的實(shí)施例包括一種用于使用DMA來初始化PLD的系統(tǒng)。該 系統(tǒng)包括PLD和IC。 PLD包括帶有控制線路的編程端口 ,該P(yáng)LD位于 組件上。該IC可操作地連接到PLD的編程端口 ,該IC位于組件上。 該IC包括輸入輸出(I/O)接口和PLD接口,該I/0接口用于在IC和 PLD之間轉(zhuǎn)換信號格式。PLD接口包括配置和狀態(tài)寄存器、數(shù)據(jù)緩沖器 和調(diào)步邏輯。配置和狀態(tài)寄存器適合于通過I/O接口來操縱PLD的編程 端口的控制線路。數(shù)據(jù)緩沖器臨時保存以DMA速度從DMA控制器接 收到的PLD編程數(shù)據(jù)。調(diào)步邏輯控制以PLD編程速度通過I/O接口將 PLD編程數(shù)據(jù)發(fā)送到PLD上的編程端口的速度。附加的實(shí)施例包括一種用于支持使用DMA來初始化PLD的計算機(jī) 程序產(chǎn)品。該計算機(jī)程序產(chǎn)品包括存儲介質(zhì),該存儲介質(zhì)是處理電路可 讀的并且存儲供處理電路執(zhí)行的用于實(shí)現(xiàn)一種方法的指令。該計算機(jī)程 序產(chǎn)品方法包括操縱PLD的控制線路以將PLD配置為編程模式,以 DMA速度從DMA控制器接收PLD編程數(shù)據(jù),以及以PLD編程速度將 PLD編程數(shù)據(jù)發(fā)送到PLD上的編程端口 。通過研究以下附圖和詳細(xì)描述,根據(jù)實(shí)施例的其他系統(tǒng)、方法和/ 或計算機(jī)程序產(chǎn)品對本領(lǐng)域的普通技術(shù)人員將會變得明顯。所有這種附 加的系統(tǒng)、方法和/或計算機(jī)程序產(chǎn)品旨在包括在這一描述中、在本發(fā)明 的范圍內(nèi)并且由所附權(quán)利要求書保護(hù)。
現(xiàn)在參考附圖,其中在多個附圖中相同的單元編號相同圖1是可由一個示例性實(shí)施例實(shí)現(xiàn)的使用直接存儲器訪問(DMA)來初始化可編程邏輯器件(PLD)的系統(tǒng)的框圖;圖2是可由一個示例性實(shí)施例實(shí)現(xiàn)的使用DMA來初始化PLD的組件的框圖;圖3是可由一個示例性實(shí)施例實(shí)現(xiàn)的使用DMA來初始化PLD的系 統(tǒng)的框圖;圖4是可由一個示例性實(shí)施例實(shí)現(xiàn)的使用DMA來初始化PLD的系 統(tǒng)的框圖;圖5是可由一個示例性實(shí)施例實(shí)現(xiàn)的使用DMA來初始化PLD的系 統(tǒng)的框圖;圖6是可由一個示例性實(shí)施例實(shí)現(xiàn)的使用DMA來初始化PLD的具 有多個組件的系統(tǒng)的框圖;以及圖7是描述在一個示例性實(shí)施例中用于使用DMA來初始化PLD的處理的流程圖。
具體實(shí)施方式
一個示例性的實(shí)施例利用直接存儲器訪問(DMA)來初始化可編 程邏輯器件(PLD )。結(jié)合少量附加邏輯來使用系統(tǒng)內(nèi)的DMA控制器以 對現(xiàn)場可編程PLD進(jìn)行編程(初始化/加載)。在處理器上執(zhí)行的軟件可 以通過DMA控制器和關(guān)聯(lián)的邏輯來開始PLD編程序列。對DMA控制 器和關(guān)聯(lián)的邏輯的使用保證了在PLD編程過程期間在提供主動控制時 處理器不被占用。結(jié)果,在PLD被編程而不是順序執(zhí)行初始化任務(wù)時, 處理器可以并行執(zhí)行其他系統(tǒng)初始化操作(例如,內(nèi)置測試、將存儲器 初始化到已知狀態(tài)等等)。對系統(tǒng)初始化的并行寺丸行可以減少系統(tǒng)初始 化時間并增加響應(yīng)度。在處理器上執(zhí)行的軟件可以控制PLD編程過程 何時開始,以及決定PLD編程數(shù)據(jù)源,^是供比使用例如直接串行 EEPROM編程之類的靜態(tài)編程/加載器方法所能夠?qū)崿F(xiàn)的更大的靈活 性?,F(xiàn)在轉(zhuǎn)到更詳細(xì)的附圖,可以看到在圖1中示出了根據(jù)示例性實(shí)施 例的可以在其上實(shí)現(xiàn)使用DMA來初始化PLD的系統(tǒng)100的框圖。圖1 的系統(tǒng)100包括組件102。組件102可以是卡、板、才莫塊或更大系統(tǒng)內(nèi) 的子系統(tǒng)。在一個示例性實(shí)施例中,組件102包括集成電路(IC) 104, 該集成電路(IC) 104通過總線108可操作地連接到PLD 106,使得該IC 104能夠執(zhí)行諸如將PLD 106配置為編程模式、對PLD 106進(jìn)行編程 以及監(jiān)視PLD106的狀態(tài)之類的操作。盡管只示出了一個PLD 106,但 應(yīng)當(dāng)理解,多個PLD ( 1和N之間)可以連接到IC 104。 PLD 106可以是本領(lǐng)域中已知的任意類型的可編程邏輯器件,諸如可編程邏輯陣列 (PLA)、可編程陣列邏輯(PAL)、通用陣列邏輯(GAL)、復(fù)雜可編程 邏輯器件(CPLD)或現(xiàn)場可編程門陣列(FPGA)。在一個示例性實(shí)施 例中,PLD 106是在PLD 106的每個上電周期上利用PLD程序配置代 碼(PLD編程數(shù)據(jù))初始化的易失性PLD。 PLD 106還在其他時間-陂重 新編程,諸如在復(fù)位時或在更新的PLD編程數(shù)據(jù)可用時被重新編程。 在一個示例性實(shí)施例中,PLD106通過編程端口 107^皮編程。編程端口 107還可以包括控制、狀態(tài)和時鐘信號連接??偩€108可以是適合于支 持IC 104和PLD 106之間的通信的并行總線??偩€108可以包括本領(lǐng) 域中已知的各種硬件單元,諸如緩沖器、上拉或下拉電阻器、以及支持 各種總線格式和多個PLD(l ...N) 106的一個或多個復(fù)用器??偩€108可 以組織為地址、數(shù)據(jù)、控制、狀態(tài)、中斷和時鐘線路。在另一個示例性 實(shí)施例中,多個總線108在IC 104和多個PLD 106之間并行存在,以 支持并行PLD編程并在故障情況下提供增強(qiáng)的隔離。在一個示例性實(shí)施例中,IC 104通過網(wǎng)絡(luò)/總線112與非易失性存儲 器(NVM) IIO進(jìn)行接口連接。NVM IIO為PLD 106存儲編程和配置 數(shù)據(jù)。NVM 110可以是本領(lǐng)域中已知的能夠在整個上電/斷電周期內(nèi)保 存數(shù)據(jù)的任意類型的非易失性存儲器,諸如EEPROM、閃速存儲器、 硬盤驅(qū)動器或非易失性隨機(jī)訪問存儲器(NVRAM )。在一個示例性實(shí)施 例中,NVM 110位于組件102的遠(yuǎn)程位置。通過使NVM 110位于組件 102外部,組件102的總成本、大小、功^4口重量可以相對于包括位于 PLD本地的串行EEPROM作為組件上的附加部件的系統(tǒng)減少。此外, NVM IIO可以是多個組件102的共享資源,提供公共資源以進(jìn)行更新而 不需要對系統(tǒng)100中的每個組件102單獨(dú)更新。使NVM IIO位于組件 102的外部還減少了組件102部分報廢的風(fēng)險(也就是,由于諸如串行題)。作為使NVM110位于組件102的外部的結(jié)果,還減少了重新制作 板和對板的廢棄。網(wǎng)絡(luò)/總線112可以是本領(lǐng)域中已知的任意網(wǎng)絡(luò)或總線 體系結(jié)構(gòu)。例如,網(wǎng)絡(luò)/總線112可以是外圍部件互連(PCI)總線、PCI 快速總線、高速串行總線或?qū)S锌偩€格式。在另一個示例性實(shí)施例中, 網(wǎng)絡(luò)/總線112是內(nèi)網(wǎng)、外網(wǎng)或諸如因特網(wǎng)之類的互聯(lián)網(wǎng),或者其組合, 并且實(shí)現(xiàn)為無線或有線網(wǎng)絡(luò)。在一個示例性實(shí)施例中,IC 104是片上系統(tǒng)(SOC),包括處理器 114、 PLD接口 (I/F)邏輯116、輸入/輸出(I/O)接口 120、 DMA控 制器124和I/0接口 126。 IC 104可以是本領(lǐng)域中已知的任意集成電路 技術(shù),諸如專用集成電路(ASIC)或PLD。處理器114可以是本領(lǐng)域 中已知的任意能夠執(zhí)行指令的處理電路,諸如嵌入式微處理器、微控制 器、狀態(tài)機(jī)、數(shù)字信號處理器(DSP)或邏輯器件。此外,處理器114 可以分布或分割成IC 104內(nèi)的多個處理單元(例如多內(nèi)核處理)。處理 器U4可以包括用于存儲可執(zhí)行指令的可讀存儲介質(zhì)。在一個示例性實(shí) 施例中,處理器114通過總線118可4喿作地連接到DMA控制器124和 PLDI/F 116。總線118為諸如寄存器訪問之類的非DMA數(shù)據(jù)提供路徑, 使得DMA控制器124和PLD I/F 116能夠在不必阻止DMA傳送的情況 下出現(xiàn)在處理器114的寄存器映射內(nèi)??偩€118可以包括地址、數(shù)據(jù)、 控制、狀態(tài)、中斷和時鐘線路。在另一個示例性實(shí)施例中,總線118是 串行總線。IC 104內(nèi)的其他邏輯或存儲器(沒有示出)也可才喿作地連接 到總線118。PLD I/F 116通過總線122可操作地連接到1/0接口 120??偩€122 可以以并行或串行配置包括地址、數(shù)據(jù)、控制、狀態(tài)、中斷和時鐘線路。 1/0接口 120在總線122和總線108之間提供信號調(diào)整和電緩沖。例如, 總線122和總線108可以工作于不同的電壓電平(例如1.5伏、1.8伏、 2.5伏、3.3伏等等),其中1/0接口 120在IC 104和PLD 106之間轉(zhuǎn)換 信號格式(例如單端、差分、電壓參考)和電壓電平。DMA控制器124通過總線128可操作地連接到PLD I/F 116??偩€ 128為在DMA控制器124和PLD I/F 116之間傳送數(shù)據(jù)提供獨(dú)立的路徑。在一個示例性實(shí)施例中,總線128提供對IC 104的存儲器映射單元的訪 問,支持可由能夠控制(主控)總線128的單元尋址的總線訪問。在一 個示例性實(shí)施例中,總線128主要用于傳遞數(shù)據(jù),而總線118主要用于 配置和狀態(tài)。總線128和118的分離使得DMA控制器124能夠在不占 用總線118的情況下以最大帶寬將數(shù)據(jù)傳遞到PLDI/F 116。因此, 一旦 處理器114開始DMA傳送,處理器114就可以繼續(xù)執(zhí)行其他任務(wù)并訪 問總線118,而不會產(chǎn)生與DMA控制器124的總線竟?fàn)巻栴}。從處理 器114移除主動加載PLD編程數(shù)據(jù)的負(fù)擔(dān)使得處理器114能夠執(zhí)行系 統(tǒng)初始化過程中較早的其他系統(tǒng)初始化任務(wù),這樣可以減少總的系統(tǒng)初 始化時間,增加復(fù)位后的系統(tǒng)響應(yīng)度。在一個示例性實(shí)施例中,處理器 114通過可選總線129訪問總線128。可選總線129在處理器114和DMA 控制器124之間提供另一條路徑,使得處理器114能夠訪問附接到總線 128的存儲器映射單元。IC 104內(nèi)的其他邏輯或存儲器(沒有示出)也 可連接到DMA總線128,為通過DMA控制器124或處理器114讀取 或?qū)懭胩峁﹤溆迷椿蚰康牡亍T谝粋€示例性實(shí)施例中,DMA控制器124 是可由處理器114配置的,使得處理器114可以控制諸如DMA源地址、 DMA目的地地址、傳送字計數(shù)和諸如處理器中斷等觸發(fā)事件之類的特 征。處理器114可以通過總線118配置并讀取DMA控制器124的狀態(tài)。 在一個示例性實(shí)施例中,當(dāng)檢測到錯誤條件時,處理器114停止DMA 控制器124。DMA控制器124通過總線140與I/O接口 126進(jìn)行接口連接???線140可以以并行或串行配置包括地址、數(shù)據(jù)、控制、狀態(tài)、中斷和時 鐘線路。1/0接口 126在總線140和網(wǎng)絡(luò)/總線112之間提供信號調(diào)整和 電緩沖。1/0接口 126可以包括應(yīng)用特定驅(qū)動器和邏輯以支持網(wǎng)絡(luò)/總線 112,諸如PCI、以太網(wǎng)、內(nèi)部集成電路(120、通用串行總線(USB)、 IEEE-13 94 (Fire Wire)、控制局域網(wǎng)絡(luò)總線(CAN )、專有網(wǎng)絡(luò)或總線格 式,以及本領(lǐng)域中已知的其他網(wǎng)絡(luò)或總線標(biāo)準(zhǔn)。在一個示例性實(shí)施例中, 一旦處理器114配置并命令DMA控制器124啟動,DMA控制器124 就通過網(wǎng)絡(luò)/總線112、 1/0接口 126和總線140從NVM 110獲得PLD編程數(shù)據(jù)。然后,DMA控制器124通過DMA總線128將所獲得的PLD 編程iy居傳遞到PLD I/F 116。在一個示例性實(shí)施例中,PLDI/F 116包括配置和狀態(tài)寄存器130、 數(shù)據(jù)緩沖器132和調(diào)步邏輯134。 PLDI/F 116可以進(jìn)一步包括總線選擇 器136、存儲器映射控制器138和復(fù)用器142。配置和狀態(tài)寄存器130 可以作為單個寄存器出現(xiàn)在處理器114的存儲器映射或寄存器映射中, 或者可以分布在多個寄存器(1到Y(jié))之間。在一個示例性實(shí)施例中, 將配置和狀態(tài)寄存器130映射到PLD 106的一個或多個控制和狀態(tài)線 ^各。配置和狀態(tài)寄存器130還可以一是供對PLD 106的編程端口 107的訪 問。例如,可以使用普通地址解碼通過配置和狀態(tài)寄存器130來將命令 寫入PLD106并且讀取PLD106的狀態(tài)。在一個示例性實(shí)施例中,配置 和狀態(tài)寄存器130包括可分別尋址的單元,使得可以與PLD 106的狀態(tài) 相分離地讀回寫入PLD 106的命令。在處理器114上寺丸行的軟件可以對 配置和狀態(tài)寄存器130執(zhí)行寫入和讀取操作,使得可以操縱PLD 106的 控制線路,以開始編程周期以及檢查成功編程的完成。當(dāng)PLD106的控 制和狀態(tài)線路的數(shù)量大于IC 104的寄存器寬度時,多個配置和狀態(tài)寄存 器(1到Y(jié)) 130可以存在于PLDI/F 116內(nèi)。多個配置和狀態(tài)寄存器13 還可用于支持對多個PLD 106的單獨(dú)編程。配置和狀態(tài)寄存器130的內(nèi)容和功能依賴于PLD 106的廠商和產(chǎn)品 族。例如,如果PLD 106是Alter Stratix II設(shè)備,那么可以輸出"nCONFIG,, 信號以開始配置(PLD編程)周期。使用一個或多個配置和狀態(tài)寄存器 130來操縱諸如PLD 106之類的PLD的完整上電序列為在大量PLD器 件上的操作提供了模塊性,而不需要新硬件或硬件修改。配置和狀態(tài)寄 存器130還可以在PLD I/F 116內(nèi)部提供其他配置設(shè)置,諸如配置調(diào)步 邏輯134的時序。在一個示例性實(shí)施例中,數(shù)據(jù)緩沖器132是用于從DMA控制器124 接收的數(shù)據(jù)的臨時保存位置。向數(shù)據(jù)緩沖器132寫入數(shù)據(jù)的速度可以不 同于從數(shù)據(jù)緩沖器132讀取數(shù)據(jù)的速度。數(shù)據(jù)緩沖器132可以包括 RAM、 FIFO和/或一個或多個寄存器。在一個示例性實(shí)施例中,調(diào)步邏輯134控制通過I/0接口 120以及總線122和108發(fā)送到PLD 106的數(shù) 據(jù)的速率和格式。調(diào)步邏輯134可以通過在處理器114上執(zhí)行的軟件命 令來配置或者通過DMA控制器124來寫入。在另 一個示例性實(shí)施例中, 調(diào)步邏輯134在固件中配置。調(diào)步邏輯134可以控制從數(shù)據(jù)緩沖器132 讀取并寫入I/0接口 120的數(shù)據(jù)的時序、字節(jié)順序(例如大端模式與小 端模式)和數(shù)據(jù)字寬度用于輸出到PLD106。在一個示例性實(shí)施例中, 調(diào)步邏輯134控制復(fù)用器142以從數(shù)據(jù)緩沖器132中選擇數(shù)據(jù)。一些PLD族支持利用壓縮或加密數(shù)據(jù)來進(jìn)行編程,每字節(jié)需要多 個時鐘周期,而其他PLD族支持每時鐘周期對一個字節(jié)進(jìn)行編程。調(diào) 步邏輯134與數(shù)據(jù)緩沖器132的組合可以處理對大量PLD 106的編程需 求。在一個示例性實(shí)施例中,數(shù)據(jù)緩沖器132以DMA速度從DMA控 制器124接收突發(fā)形式(例如16字節(jié))的PLD編程數(shù)據(jù),并且調(diào)步邏 輯134讀取PLD編程數(shù)據(jù)并使用由PLD 106支持的編程時序(例如每 時鐘周期1字節(jié))以PLD編程速度將其發(fā)送到PLD 106上的編程端口 107。 IC 104和PLD 106可以在不同時鐘上和/或以不同速度(例如逐步 下降(stepped down)或逐步上升(stepped up)的時鐘速度)運(yùn)行。在 一個示例性實(shí)施例中,調(diào)步邏輯134利用計數(shù)器、鎖相環(huán)(PLL)和/ 或本領(lǐng)域中已知的其他技術(shù)來建立并調(diào)節(jié)發(fā)送到PLD 106的PLD編程 數(shù)據(jù)的時序序列。調(diào)步邏輯134在不需要處理器114干預(yù)的情況下最大 化可用的編程帶寬以監(jiān)^L和調(diào)節(jié)編程序列。PLD I/F 116中支持的字節(jié)順 序可以進(jìn)一步實(shí)現(xiàn)各種系統(tǒng)配置,包括大端和小端尋址/排序方案。此外, 由于在PLD編程端口和DMA控制器124之間總線寬度可以變化,所以 PLD I/F 116可以支持各種配置(例如32比特DMA數(shù)據(jù)到8比特PLD 編程端口)。在一個示例性實(shí)施例中,存儲器映射控制器138提供尋址 支持、字節(jié)排序和總線寬度轉(zhuǎn)換。存儲器映射控制器138還可以仲裁對 總線128的i^r問。在一個示例性實(shí)施例中,諸如配置和狀態(tài)寄存器130、數(shù)據(jù)緩沖器 132和調(diào)步邏輯134之類的PLD I/F 116的單元對處理器114和DMA控 制器124來說是可訪問的??偩€選擇器136可以使得總線118或128能夠訪問配置和狀態(tài)寄存器130。支持多條訪問路徑可以通過備份或備選 路徑提供增強(qiáng)的靈活性和可配置性以優(yōu)化系統(tǒng)100的性能以及增加抗故 障能力。使用總線選擇器136以及總線128和118時,存在很多選項(xiàng)支 持編程PLD 106。例如,處理器114或DMA控制器124可以設(shè)置配置 和狀態(tài)寄存器130中的值以將PLD 106配置為編程模式。在一個示例性 實(shí)施例中,PLD 106的PLD編程端口 107是可通過數(shù)據(jù)緩沖器132和復(fù) 用器142或通過配置和狀態(tài)寄存器130來訪問的。這樣,處理器114或 DMA控制器124可以通過數(shù)據(jù)緩沖器132和復(fù)用器142或者通過配置 和狀態(tài)寄存器130將PLD編程數(shù)據(jù)發(fā)送到PLD 106。盡管提供多條路徑 以對PLD 106進(jìn)行編程可能是優(yōu)選的,但在一個示例性實(shí)施例中,移除 總線選擇器136和可選總線129以減少IC 104中使用的資源數(shù)量。如果 數(shù)據(jù)緩沖器132是單個單元或者連接到總線122,那么復(fù)用器142也可 以被從IC 104移除。盡管總線選擇器136和存儲器映射控制器138示出 在PLDI/F116內(nèi),但可以理解,這些單元可以在PLDI/F 116外部。在一個示例性實(shí)施例中,當(dāng)PLD 106處于PLD編程(初始化)模 式時,對PLD 106的PLD編程端口 107的lt據(jù)寫入訪問是可用的。在 PLD 106不處于PLD編程模式時,對PLD 106上的編程端口的訪問可 以通過存儲器映射控制器138來阻斷(例如,不可訪問或者通過存儲器 映射從處理器114和DMA控制器124隔開),使得編程的PLD 106不 可能被無意中破壞,這樣就增加了整個系統(tǒng)的可靠性和可用性。PLD編 程模式可以通過讀取配置和狀態(tài)寄存器130來確定。配置和狀態(tài)寄存器 130還可以表明在PLD編程期間錯誤情形何時發(fā)生。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,IC 104和組件102包含圖1中沒 有示出的本領(lǐng)域中已知的其他單元。例如,組件102可以包括其他接口 和電路,包括一個或多個時鐘、電源、變壓器、噪聲抑制/過濾單元、去 耦電容、電源和接地連接、散熱片和分立部件。IC104可以包括圖1中 沒有示出的其他邏輯塊或單元,諸如先入先出(FIFO)緩沖器、隨機(jī)訪 問存儲器(RAM)塊、只讀存儲器(ROM)、電壓軌、時鐘、PLL、寄 存器、模數(shù)(A/D)轉(zhuǎn)換器、數(shù)模(DAC)轉(zhuǎn)換器、I/O管腳驅(qū)動器以及其他這種單元??偠灾?,系統(tǒng)IOO使用DMA來初始化PLD 106。在一個示例性 實(shí)施例中,系統(tǒng)100包括PLD 106, PLD 106包括帶有控制線路的編程 端口 107, PLD 106位于組件102上。系統(tǒng)IOO可以進(jìn)一步包括可操作 地連接到PLD 106上的編程端口 107的IC 104, IC 104位于組件102上。 在一個示例性實(shí)施例中,IC 104包括用于在IC 104和PLD 106之間轉(zhuǎn) 換信號格式的I/0接口 120。IC 104可以進(jìn)一步包括PLD接口 116, PLD 接口 116包括配置和狀態(tài)寄存器130、數(shù)據(jù)緩沖器132和調(diào)步邏輯134。 在一個示例性實(shí)施例中,配置和狀態(tài)寄存器130適合于通過I/O接口 120 來操縱PLD 106的編程端口 107的控制線路。數(shù)據(jù)緩沖器132可以臨時 保存以DMA速度從DMA控制器124接收的PLD編程數(shù)據(jù)。調(diào)步邏輯 134可以控制以PLD編程速度通過I/O接口 120將PLD編程數(shù)據(jù)發(fā)送 到PLD106上的編程端口 107的速度?,F(xiàn)在轉(zhuǎn)到圖2,現(xiàn)在描述根據(jù)一個示例性實(shí)施例的可以在其上實(shí)現(xiàn) 使用DMA來初始化PLD的組件200。組件200可以是卡、板、模塊或 更大系統(tǒng)內(nèi)的子系統(tǒng)。與圖1的組件102類似,圖2中的組件200包括 集成電路(IC ) 204,該集成電路(IC ) 204通過總線108可操作地連接 到PLD 106的編程端口 107,使得該IC 204能夠執(zhí)行諸如將PLD 106 配置為編程模式、對PLD 106進(jìn)行編程以及監(jiān)視PLD 106的狀態(tài)之類的 操作。盡管只示出了一個PLD 106,但應(yīng)當(dāng)理解,可以將多個PLD(l 和N之間)連接到IC204。在一個示例性實(shí)施例中,IC204是片上系統(tǒng) (SOC),包括處理器114、 PLD接口 (I/F) 116和輸入/輸出(1/0)接 口 120、 DMA控制器224和NVM 210。 IC 204可以是本領(lǐng)域中已知的 任意集成電^4支術(shù),諸如ASIC或PLD。圖2中組件200的編號相同的 單元提供了基本上與前面參考圖1的組件102所描述的類似的特征和優(yōu) 勢。由于一些IC技術(shù)可以包括諸如NVM 210之類的內(nèi)部非易失性存儲 器,所以圖2示出的IC 204會影響這樣的IC的存儲能力,這樣就排除 了對諸如圖1的NVM IIO之類的遠(yuǎn)程存儲單元的需要。如圖2所示,DMA控制器224通過總線240直接訪問存儲在NVM210內(nèi)的PLD編程數(shù)據(jù)。總線240可以以并行或串行配置包括地址、數(shù) 據(jù)、控制、中斷和時鐘線路。DMA控制器224以與圖1的DMA控制 器124類似的方式運(yùn)行,只不過圖2的DMA控制器224可以直接訪問 PLD編程數(shù)據(jù)。在一個示例性實(shí)施例中,通過移除到外部網(wǎng)絡(luò)/總線112 的連接,圖2的DMA控制器224與圖1中示出的MDA控制器124相 比提供了對PLD編程數(shù)據(jù)的更快訪問。組件200對于支持更快的編程 速度和更小的PLD編程文件的PLD 106來說可能是優(yōu)選的,因?yàn)镹VM 210的大小可能會被限制為IC 204的內(nèi)部單元。現(xiàn)在轉(zhuǎn)到圖3,現(xiàn)在描述根據(jù)一個示例性實(shí)施例的可以在其上實(shí)現(xiàn) 使用DMA來初始化PLD的系統(tǒng)300。與圖1的系統(tǒng)100類似,系統(tǒng)300 包括集成電路(IC ) 304,該集成電路(IC ) 304通過總線108可操作地 連接到PLD 106的編程端口 107,使得該IC 304能夠執(zhí)行諸如將PLD 106 配置為編程才莫式、對PLD 106進(jìn)行編程以及監(jiān)一見PLD 106的狀態(tài)之類的 操作。盡管只示出了一個PLD 106,但應(yīng)當(dāng)理解,可以將多個PLD(l 和N之間)連接到IC 304。 IC 304可以是本領(lǐng)域中已知的任意集成電路 技術(shù),諸如ASIC或PLD。在一個示例性實(shí)施例中,圖3的IC 304與圖 1的IC 104相比包括減少的單元和功能。系統(tǒng)300的編號相同的單元提 供了基本上與前面參考圖1的系統(tǒng)IOO所描述的類似的特征和優(yōu)勢。在 一個示例性實(shí)施例中,IC 304包括可操作地連接到1/0接口 120、 326 和336的PLD接口 116。系統(tǒng)300進(jìn)一步包括通過總線338可操作地連 接到I/O接口 336的處理器314。系統(tǒng)300還包括通過總線340可操作 地連接到I/O接口 326的DMA控制器324。在一個示例性實(shí)施例中, DMA控制器324通過總線312可操作地連接到NVM 110??偩€312、 338和340利用本領(lǐng)域中已知的任意總線格式,如前面參考圖1中其他 這種總線所描述的??偩€312、 338和340可以以并行或串行配置包括 地址、數(shù)據(jù)、控制、狀態(tài)、中斷和時鐘線路。在一個示例性實(shí)施例中, 總線340通過總線仲裁支持DMA數(shù)據(jù)和非DMA數(shù)據(jù)。在另 一個示例 性實(shí)施例中,總線340包括用于DMA和非DMA數(shù)據(jù)的獨(dú)立路徑。類問的并行結(jié)構(gòu),或者作為替代,可以在總線338上采用總線仲裁方案。 處理器314可以是本領(lǐng)域中已知的能夠執(zhí)行指令的任意處理電路, 諸如微處理器、微控制器、狀態(tài)機(jī)、數(shù)字信號處理器(DSP)和/或邏輯 器件。處理器314可以包括用于存儲可執(zhí)行指令的可讀存儲介質(zhì)。在一 個示例性實(shí)施例中,處理器314與IC 304位于同一組件或子系統(tǒng)上。在 另一個示例性實(shí)施例中,處理器314位于相對于IC304的遠(yuǎn)程組件或子 系統(tǒng)上。類似地,DMA控制器324可以與IC304位于同一組件或子系個示例性實(shí)施例中,NVM IIO位于相對于IC 304的遠(yuǎn)程位置(例如, 在單獨(dú)的組件或子系統(tǒng)上)。在一個示例性實(shí)施例中,IC 304內(nèi)的總線318在PLDI/F 116、 I/O 接口 326和I/O接口 336之間為非DMA數(shù)據(jù)提供路徑??偩€318可以 以并行或串行配置包括地址、數(shù)據(jù)、控制、狀態(tài)、中斷和時鐘線路???線318通過I/O接口 336為處理器314提供對PLD I/F 116的讀取/寫入 訪問,以及通過I/O接口 326和總線340提供對DMA控制器324的讀 取/寫入訪問。DMA控制器324和PLD I/F 116可以直接出現(xiàn)在處理器 314的寄存器映射和/或存儲器映射內(nèi)。在一個示例性實(shí)施例中,IC304 內(nèi)的總線328在PLD I/F 116和I/O接口 326之間提供用于存儲器映射 訪問的路徑??偩€328可以以并行或串行配置包括地址、數(shù)據(jù)、控制、 狀態(tài)、中斷和時鐘線^各。在一個示例性實(shí)施例中,處理器314通過可選 總線329訪問總線328。可選總線329在處理器314和DMA控制器324 之間提供另一條路徑,使得處理器314能夠訪問附接到總線328的存儲 器映射單元。在一個示例性實(shí)施例中,總線328主要用于傳遞數(shù)據(jù),而 總線318主要用于配置和狀態(tài)。在一個示例性實(shí)施例中,1/0接口 326 和336執(zhí)行與前面參考圖1中的I/0接口 120所描述的類似的總線到總 線轉(zhuǎn)換的功能。1/0接口 326可以在內(nèi)部總線318和328與總線340之 間執(zhí)行總線仲裁。類似地,1/0接口 336可以在內(nèi)部總線318和329與 總線338之間執(zhí)行總線仲裁。當(dāng)在系統(tǒng)中利用諸如處理器314和DMA控制器324之類的現(xiàn)有處理器和DMA控制器,期望采用使用DMA來初始化PLD的低成本IC 實(shí)現(xiàn)時,圖3中所示出的IC 304可能是優(yōu)選的。由于與圖1的IC 104 和圖2的IC 204相比具有減少的設(shè)備復(fù)雜度,圖3所示的IC 304可能 成本更j氐?,F(xiàn)在轉(zhuǎn)到圖4,現(xiàn)在描述根據(jù)一個示例性實(shí)施例的可以在其上實(shí)現(xiàn) 使用DMA來初始化PLD的系統(tǒng)400。與圖1的系統(tǒng)100類似,系統(tǒng)400 包括組件402,其進(jìn)一步包括集成電路(IC)404,該集成電路(IC)404, 通過總線108可操作地連接到PLD 106的編程端口 107,使得該IC 304 能夠執(zhí)行諸如將PLD 106配置為編程沖莫式、對PLD 106進(jìn)行編程以及監(jiān) 視PLD 106的狀態(tài)之類的操作。組件402可以是卡、板、模塊或更大系 統(tǒng)內(nèi)的子系統(tǒng)。盡管只示出了一個PLD 106, ^f旦應(yīng)當(dāng)理解,可以將多個 PLD ( 1和N之間)連接到IC 404。 IC 404可以是本領(lǐng)域中已知的任意 集成電路技術(shù),諸如ASIC或PLD。與圖3的系統(tǒng)300類似,組件404 進(jìn)一步包括通過I/0接口 336和總線338可纟喿作地連接到IC404的處理 器314。系統(tǒng)400的編號相同的單元提供了基本上與前面參考圖1-3的 系統(tǒng)100-300所描述的類似的特征和優(yōu)勢。在一個示例性實(shí)施例中,IC 404包括通過總線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。系統(tǒng)400 進(jìn)一步包括在組件402外部的NVM 110, NVM 110通過網(wǎng)絡(luò)/總線112 可操作地連接到IC 404的I/O接口 126。IC404的總線418在PLDI/F 116、DMA控制器124和1/0接口 336 之間為寄存器訪問提供路徑??偩€418可以以并行或串行配置包括地址、 數(shù)據(jù)、控制、狀態(tài)、中斷和時鐘線路??偩€418通過I/0接口 336為處 理器314提供對PLD I/F 116和對DMA控制器124的讀取/寫入訪問。 DMA控制器124和PLD I/F 116可以直接出現(xiàn)在處理器314的存儲器和/或寄存器映射內(nèi)。在一個示例性實(shí)施例中,圖4的總線428提供與圖1 的總線128基本類似的特征和優(yōu)勢。在一個示例性實(shí)施例中,總線428 主要用于傳遞數(shù)據(jù),而總線318主要用于配置和狀態(tài)。當(dāng)諸如圖4中所示的IC 404之類的IC不包括嵌入的處理器時,系 統(tǒng)400可能是優(yōu)選的,并且處理器與共同組件上的IC進(jìn)行接口連接, 諸如組件402的處理器314。在一個示例性實(shí)施例中,處理器314支持 組件402上的多個IC 404?,F(xiàn)在轉(zhuǎn)到圖5,現(xiàn)在描述^^艮據(jù)一個示例性實(shí)施例的可以在其上實(shí)現(xiàn) 使用DMA來初始化PLD的系統(tǒng)500。與圖3的系統(tǒng)300類似,系統(tǒng)500 包括集成電路(IC) 504,該集成電路(IC) 504通過總線108可4喿作地 連接到PLD 106的編程端口 107,使得該IC 504能夠執(zhí)行諸如將PLD 106 配置為編程模式、對PLD 106進(jìn)行編程以及監(jiān)視PLD 106的狀態(tài)之類的 操作。系統(tǒng)500進(jìn)一步包括處理器314,該處理器314通過I/0接口 336 和總線338可操作地連接到IC 504,使得該處理器314能夠執(zhí)行諸如讀 取并將數(shù)據(jù)寫入IC 504之類的任務(wù)。盡管只示出了一個PLD106,但應(yīng) 當(dāng)理解,可以將多個PLD ( 1和N之間)連4妄到IC 504。 IC 504可以是 本領(lǐng)域中已知的任意集成電路技術(shù),諸如ASIC或PLD。 IC 504與圖2 的IC 204類似,只不過IC 204的處理器114已經(jīng)一皮移動到IC 504的外 部作為處理器314。系統(tǒng)500的編號相同的單元提供了基本上與前面參 考圖1-圖4的系統(tǒng)100、系統(tǒng)300和系統(tǒng)400以及組件200所描述的類 似的特征和優(yōu)勢。當(dāng)諸如圖5中所示出的IC 504之類的IC包含NVM 但是不包含處理器時,諸如包含NVM 210<旦是不包含處理器314,系 統(tǒng)500可能是優(yōu)選的?,F(xiàn)在轉(zhuǎn)到圖6,現(xiàn)在描述根據(jù)一個示例性實(shí)施例描述的可以在其上 實(shí)現(xiàn)使用DMA來初始化PLD的系統(tǒng)600。在一個示例性實(shí)施例中,系 統(tǒng)600包括通過總線340可操作地連接到DMA控制器324以及通過總 線338可操作地連接到處理器314的多個組件(1到M)。這些多個組 件(1到M)可以是卡、板、模塊、子系統(tǒng)或者它們的任意組合。圖6 中示出了兩個示例性的組件602和組件604 (組件1和組件M ),沒有示出可變數(shù)量的中間組件(組件2到組件M-l )。在一個示例性實(shí)施例 中,每個組件602-組件604都包括通過總線108可操作地連接到PLD 106 的集成電路(IC) 304,如前面參考圖3的系統(tǒng)300所描述的。每個組 件602-組件604可以包括不同數(shù)量的PLD 106 ( 1到N )。DMA控制器324通過總線312可^J喿作地連接到NVM 110并且通過 總線606可操作地連接到處理器314。系統(tǒng)600的編號相同的單元提供 了基本上與前面參考圖3的系統(tǒng)300所描述的類似的特征和優(yōu)勢??偩€ 606可以以并行或串行配置包括地址、數(shù)據(jù)、控制、狀態(tài)、中斷和時鐘 線路。在一個示例性實(shí)施例中,DMA控制器324和處理器314位于普 通設(shè)備中,諸如微控制器、DSP或PLD。當(dāng)多個PLD 106分布在多個 組件(諸如組件602到組件604)中,并且每個組件不包括獨(dú)立的處理 器(諸如處理器314)時,圖6中示出的系統(tǒng)600可能是優(yōu)選的?,F(xiàn)在轉(zhuǎn)到圖7,現(xiàn)在描述根據(jù)一個示例性實(shí)施例的用于使用DMA 來初始化PLD的處理700。在一個示例性實(shí)施例中,處理700通過使用 DMA控制器初始化PLD來增加處理器的吞吐量并減少板面積。盡管處 理700可以應(yīng)用于圖1-圖6的系統(tǒng)和組件100-600,但為了易于說明, 可以參考圖1的系統(tǒng)100來描述該處理。在方框702中,操縱PLD 106 的控制線路以將PLD 106配置為編程模式。在一個示例性實(shí)施例中,處 理器114通過將命令通過總線U8寫入PLD I/F 116的配置和狀態(tài)寄存 器130來開始操縱總線108的PLD控制線路。處理器114還可以配置 PLD I/F 116以便與PLD 106兼容,包括諸如時序、字節(jié)順序和數(shù)據(jù)字 寬度之類的特征。在另一個示例性實(shí)施例中,DMA控制器124通過將 命令通過總線128和總線選擇器136寫入PLD I/F 116的配置和狀態(tài)寄 存器130開始操縱總線108的PLD控制線路。在方框704中,DMA控制器124配置為從NVM 110讀取PLD編 程數(shù)據(jù)。在一個示例性實(shí)施例中,處理器114通過總線118來控制對 DMA控制器124的配置。處理器114可以選^^奪源地址、目的地地址、 字計數(shù)并配置DMA控制器124內(nèi)的其他設(shè)置。在方框706中,處理器114使得DMA控制器124開始從NVM讀取PLD編程數(shù)據(jù)。在一個示例性實(shí)施例中,DMA控制器124基于由處 理器114編程的DMA控制器124的配置而在網(wǎng)絡(luò)/總線112上主控或進(jìn) 行對存儲在NVM 110中的PLD編程數(shù)據(jù)的請求。通過總線128將在 DMA控制器124處從NVM 110接收的PLD編程數(shù)據(jù)傳遞到PLD I/F 116。在方框708中,以DMA速度從DMA控制器接收PLD編程數(shù)據(jù)。 在一個示例性實(shí)施例中,PLD I/F 116支持各種DMA數(shù)據(jù)總線寬度、格 式和速度。在方框710中,將PLD編程數(shù)據(jù)寫入數(shù)據(jù)緩沖器132。可以 由DMA控制器124或存儲器映射控制器138控制對數(shù)據(jù)緩沖器132的 寫入。在一個示例性實(shí)施例中,數(shù)據(jù)緩沖器132是FIFO、 RAM或基于 寄存器的緩沖器。數(shù)據(jù)緩沖器132的大小可以足夠大以保存整個PLD 編程數(shù)據(jù)文件,或足夠大以保存相對于DMA速度和PLD編程速度之間 的速度差異按大小排列的數(shù)據(jù)塊。在另一個示例性實(shí)施例中,將PLD 編程數(shù)據(jù)寫入配置和狀態(tài)寄存器130。配置和狀態(tài)寄存器130可以為以 PLD編程速度將PLD編程數(shù)據(jù)發(fā)送到PLD 106上的編程端口 107提供 另一條路徑。PLD編程數(shù)據(jù)可以由DMA控制器124或者處理器114寫 入數(shù)據(jù)緩沖器132或者配置和狀態(tài)寄存器130。在方框712中,從數(shù)據(jù)緩沖器132讀取PLD編程數(shù)據(jù)。在一個示 例性實(shí)施例中,可以改變從數(shù)據(jù)緩沖器132讀取的數(shù)據(jù)的字節(jié)順序以支 持大端格式或小端格式。存儲器映射控制器138可以控制數(shù)據(jù)緩沖器 132中的值的字節(jié)排序和尋址。從數(shù)據(jù)緩沖器132讀取數(shù)據(jù)的過程可以 調(diào)節(jié)數(shù)據(jù)緩沖器132中的內(nèi)部指針以維持?jǐn)?shù)據(jù)緩沖器132內(nèi)的PLD編 程數(shù)據(jù)的順序。在一個示例性實(shí)施例中,當(dāng)從數(shù)據(jù)緩沖器132讀取PLD 編程數(shù)據(jù)時,修改寫入數(shù)據(jù)緩沖器132的PLD編程數(shù)據(jù)的數(shù)據(jù)字寬度。 數(shù)據(jù)字寬度修改可以使得各種DMA控制器124和PLD編程端口 107 能夠支持不同的總線寬度(例如8比特、16比特、24比特、32比特、 64比特等等)。字一個示例性實(shí)施例中,調(diào)步邏輯134將輸入切換到復(fù) 用器142以訪問數(shù)據(jù)緩沖器132內(nèi)的不同位置。調(diào)步邏輯134可以選擇 用于以PLD編程速度讀取的數(shù)據(jù)緩沖位置。在一個示例性實(shí)施例中,DMA速度不同于PLD編程速度。在另 一個示例性實(shí)施例中,DMA速 度與PLD編程速度相同。當(dāng)DMA速度等于或低于PLD編程速度時, PLD編程數(shù)據(jù)可以不必進(jìn)行累積就經(jīng)過數(shù)據(jù)緩沖器132,或者經(jīng)過配置 和狀態(tài)寄存器130。在方框714中,以PLD編程速度將PLD編程數(shù)據(jù)發(fā)送到PLD 106 上的編程端口 107。在一個示例性實(shí)施例中,PLD 106的編程端口 107 通過總線108與IC 104進(jìn)行接口連接。在一個示例性實(shí)施例中,由調(diào)步 邏輯134管理發(fā)送速度。在方框716中,讀取PLD 106的狀態(tài)以驗(yàn)證使用PLD編程數(shù)據(jù)對 PLD 106的成功編程??梢杂商幚砥?14通過配置和狀態(tài)寄存器130來 讀耳又PLD 106的狀態(tài)。在一個示例性實(shí)施例中,周期性地讀耳又PLD 106 的狀態(tài)以檢查錯誤或PLD編程的完成。在另一個示例性實(shí)施例中,通 過一個或多個中斷信號來向處理器114通知錯誤或PLD編程的完成。在方框718中,當(dāng)PLD 106不處于編程才莫式時,阻斷對PLD 106 上的編程端口 107的訪問。當(dāng)PLD 106不處于編禾呈才莫式時,可以拒絕對 處理器114或DMA控制器124或者兩者的訪問??梢杂纱鎯ζ饔成淇?制器138阻斷對PLD 106上的編程端口 107的訪問。存儲器映射控制器 138可以通過配置和狀態(tài)寄存器130來確定PLD編程模式狀態(tài)。在一個 示例性實(shí)施例中,存儲器映射控制器138通過調(diào)步邏輯134來訪問配置 和狀態(tài)寄存器130。在另一個示例性實(shí)施例中,存儲器映射控制器138 通過總線選擇器136來訪問配置和狀態(tài)寄存器130。在一個示例性實(shí)施例中,方框708-方框714以管道或流的方式并發(fā) 地執(zhí)行,而方框702-方框706和方框716-方框718順序執(zhí)行。使用管道 或流的方法可以進(jìn)一步最大化可用帶寬以減少利用PLD編程來對PLD 106進(jìn)行編程所需要的總時間。在處理700期間的任意點(diǎn),處理器114 可能因?yàn)楦鞣N原因暫停或終止PLD編程序列,這些原因諸如錯誤、對 系統(tǒng)資源的更高優(yōu)先級的請求或用戶請求。在錯誤情況下,處理器114 可以嘗試重復(fù)處理700。作為替代,處理器114可以發(fā)送消息、引發(fā)信 號或向外部資源通知錯誤情況以便可以采取校正措施。示例性實(shí)施例的技術(shù)效果和益處包括使用DMA控制器來初始化 PLD。 DMA控制器將PLD編程數(shù)據(jù)從NVM流式傳送到PLD I/F,釋放 系統(tǒng)處理器以在對PLD進(jìn)行編程時執(zhí)行其他任務(wù)。示例性實(shí)施例使得 NVM能夠位于PLD位于其上的組件或子系統(tǒng)的外部。將NVM移動到 遠(yuǎn)程位置可以減少組件或子系統(tǒng)成本、重量、功庫毛、板面積、熱量,并 且提供其他優(yōu)勢和益處。通過使用可用的或嵌入的系統(tǒng)資源,不會有板 面積損失或典型地與使用串行EEPROM設(shè)備來對PLD進(jìn)行編程關(guān)聯(lián)的 增加的成本。通過使用DMA控制器及關(guān)聯(lián)的邏輯,可以通過并行編程 路徑快速加載PLD編程數(shù)據(jù)。示例性實(shí)施例在DMA控制器與PLD之 間調(diào)整時序、字節(jié)順序和數(shù)據(jù)字寬度方面進(jìn)一步提供了靈活性。對PLD 編程過程進(jìn)行初始化的處理器能夠獲得PLD控制和狀態(tài)信息,使得處 理器能夠監(jiān)視成功傳送、錯誤情況,以及開始或停止PLD編程序列。 此外,在DMA控制器發(fā)生故障時,PLD I/F中的控制和狀態(tài)寄存器可 以提供為PLD加載PLD編程數(shù)據(jù)的另 一條路徑。如上所述,本發(fā)明的實(shí)施例可以體現(xiàn)為計算機(jī)實(shí)現(xiàn)的處理和用于實(shí) 現(xiàn)這些處理的設(shè)備的形式。本發(fā)明的實(shí)施例還可以體現(xiàn)為包含指令的計 算機(jī)程序代碼的形式,這些指令包含在諸如軟盤、CD-ROM、硬盤驅(qū)動 器或任意其他計算機(jī)可讀存儲介質(zhì)之類的有形介質(zhì)中,其中,當(dāng)計算機(jī) 程序代碼被加載到計算機(jī)中并由計算機(jī)執(zhí)行時,計算機(jī)變成用于實(shí)現(xiàn)本 發(fā)明的設(shè)備。本發(fā)明還可以體現(xiàn)為計算機(jī)程序代碼的形式,這些代碼例 如存儲在存儲介質(zhì)中,加載到計算機(jī)中和/或由計算機(jī)執(zhí)行,或者通過一 些傳輸介質(zhì)來發(fā)送,諸如通過電線或電纜、通過光纖或者經(jīng)由電磁輻射 來發(fā)送,其中,當(dāng)計算機(jī)程序代碼被加載到計算機(jī)中并由計算機(jī)執(zhí)行時, 計算機(jī)變成用于實(shí)現(xiàn)本發(fā)明的設(shè)備。當(dāng)在通用微處理器上實(shí)現(xiàn)時,計算 機(jī)程序代碼段配置微處理器以創(chuàng)建特定邏輯電路。盡管已經(jīng)參考示例性實(shí)施例描述了本發(fā)明,但本領(lǐng)域的普通技術(shù)人 員應(yīng)當(dāng)理解,在不偏離本發(fā)明范圍的情況下,可以進(jìn)行各種改變并且可 以用等同的單元來替換本發(fā)明的單元。另外,在不偏離本發(fā)明的本質(zhì)范 圍的情況下,可以進(jìn)行很多修改以使特定環(huán)境或材料適應(yīng)本發(fā)明的闡述。因此,本發(fā)明并非旨在限于作為所考慮的用于執(zhí)行本發(fā)明的最佳模 式所公開的特定實(shí)施例,相反,本發(fā)明將包括在所附權(quán)利要求書范圍內(nèi) 的所有實(shí)施例。而且,術(shù)語"第一"、"第二"等等的使用不是表示任何 順序或重要性,而是用于區(qū)別一個單元和另一個單元。
權(quán)利要求
1.一種用于使用直接存儲器訪問(DMA)來初始化可編程邏輯器件(PLD)的方法,所述方法包括操縱所述PLD的控制線路以將所述PLD配置為編程模式;以DMA速度從DMA控制器接收PLD編程數(shù)據(jù);將所述PLD編程數(shù)據(jù)寫入數(shù)據(jù)緩沖器;從所述數(shù)據(jù)緩沖器讀取所述PLD編程數(shù)據(jù);以及以PLD編程速度將所述PLD編程數(shù)據(jù)發(fā)送到所述PLD上的編程端口。
2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括配置所述DMA控制器以從非易失性存儲器設(shè)備(NVM)讀取所述 PLD編程數(shù)據(jù);以及使用處理器來使得所述DMA控制器開始從所述NVM讀取所述 PLD編程數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括使用處理器和所述DMA控制器中的至少 一個來開始操縱所述PLD 的所述控制線路,以通過配置和狀態(tài)寄存器來將所述PLD配置為所述 編程模式。
4. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括提供備選路徑以通過配置和狀態(tài)寄存器將所述PLD編程數(shù)據(jù)發(fā)送 到所述PLD上的編程端口;以及將所述PLD編程數(shù)據(jù)寫入所述配置和狀態(tài)寄存器。
5. 根據(jù)權(quán)利要求1所述的方法,其中當(dāng)從所述數(shù)據(jù)緩沖器讀取所述 PLD編程數(shù)據(jù)時,修改寫入所述數(shù)據(jù)緩沖器的所述PLD編程數(shù)據(jù)的數(shù) 據(jù)字寬度。
6. 根據(jù)權(quán)利要求1所述的方法,其中當(dāng)從所述數(shù)據(jù)緩沖器讀取所述 PLD編程數(shù)據(jù)時,修改寫入所述數(shù)據(jù)緩沖器的所述PLD編程數(shù)據(jù)的字 節(jié)順序。
7. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括讀取所述PLD的狀態(tài)以驗(yàn)證使用所述PLD編程數(shù)據(jù)對所述PLD的 成功編,呈。
8. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括當(dāng)所述PLD不處于所述編程模式下時,阻斷對所述PLD上的所述 編禾呈端口的i方問。
9. 一種用于使用直接存儲器訪問(DMA)來初始化可編程邏輯器 件(PLD)的集成電路(IC),所述IC可操作地連接到所述PLD,所述 IC包括輸入輸出(1/0)接口,所述I/0接口在所述IC和所述PLD之間轉(zhuǎn) 換信號格式;以及PLD接口,所述PLD接口包括配置和狀態(tài)寄存器,所述配置和狀態(tài)寄存器適合于操縱所述 PLD的控制線路以通過所述I/O接口來將所述PLD配置為編程模式;數(shù)據(jù)緩沖器,所述數(shù)據(jù)緩沖器用于臨時保存以DMA速度從 DMA控制器接收到的PLD編程數(shù)據(jù);以及調(diào)步邏輯,所述調(diào)步邏輯控制以PLD編程速度通過所述I/O 接口將所述PLD編程數(shù)據(jù)發(fā)送到所述PLD上的編程端口的速度。
10. 根據(jù)權(quán)利要求9所述的IC,進(jìn)一步包括DMA控制器,所述DMA控制器可操作地連接到所述PLD接口 。
11. 根據(jù)權(quán)利要求10所述的IC,其中所述DMA控制器可操作地連 接到非易失性存儲器設(shè)備(NVM ),所述NVM存儲所述PLD編程數(shù)據(jù)。
12. 根據(jù)權(quán)利要求11所述的IC,進(jìn)一步包括所述NVM。
13. 根據(jù)權(quán)利要求11所述的IC,進(jìn)一步包括處理器,所述處理器可"t喿作地連"t妻到所述PLD ^!妄口和所述DMA控 制器,并且其中所述處理器執(zhí)行一種方法,所述方法包括將值寫入所述PLD接口的配置和狀態(tài)寄存器,所述值用于通過所 述I/O接口來操縱所述PLD的所述控制線路以將所述PLD配置為編程 模式;配置所述DMA控制器以從所述NVM讀取所述PLD編程數(shù)據(jù); 初始化所述DMA控制器以開始從所述NVM讀取所述PLD編程數(shù) 據(jù);以及讀取所述PLD接口的配置和狀態(tài)寄存器以驗(yàn)證使用所述PLD編程 數(shù)據(jù)對所述PLD的成功編程。
14. 根據(jù)權(quán)利要求9所述的IC,其中當(dāng)從所述數(shù)據(jù)緩沖器讀取所述 PLD編程數(shù)據(jù)時,所述PLD接口修改寫入所述數(shù)據(jù)緩沖器的所述PLD 編程數(shù)據(jù)的數(shù)據(jù)字寬度和字節(jié)順序中的至少一個。
15. 根據(jù)權(quán)利要求9所述的IC,其中當(dāng)所述PLD不處于所述編程 才莫式下時,阻斷對所述PLD上的所述編程端口的訪問。
16. 根據(jù)權(quán)利要求9所述的IC,其中所述PLD接口進(jìn)一步包括總 線選擇器,所迷總線選擇器適合于為處理器和DMA控制器提供對配置 和狀態(tài)寄存器的訪問;以及其申所述配置和狀態(tài)寄存器適合于通過所述I/0接口將所述PLD編 程數(shù)據(jù)發(fā)送到所述PLD上的編程端口 。
17. —種用于初始化可編程邏輯器件(PLD)的方法,所述方法包括操縱所述PLD的控制線路以將所述PLD配置為編程模式; 從DMA控制器和處理器中的至少一個選l奪PLD編程數(shù)據(jù)源; 從所述選擇的數(shù)據(jù)源接收PLD編程數(shù)據(jù);以及 將所述PLD編程數(shù)據(jù)發(fā)送到所述PLD上的編程端口 。
18. 根據(jù)權(quán)利要求17所述的方法,其中所述操縱所述PLD的控制 線路以將所述PLD配置為編程模式由所述DMA控制器和所述處理器中 的至少一個控制。
19. 根據(jù)權(quán)利要求17所述的方法,其中從所述選擇的數(shù)據(jù)源接收 PLD編程數(shù)據(jù)由數(shù)據(jù)緩沖器和配置和狀態(tài)寄存器中的至少一個接收。
20. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括配置所述DMA控制器以從非易失性存儲器設(shè)備(NVM)讀取所述 PLD編程數(shù)據(jù);以及使用所述處理器來使得所述DMA控制器開始從所述NVM讀取所 述PLD編程數(shù)據(jù)。
21. 根據(jù)權(quán)利要求20所述的方法,進(jìn)一步包括 將所述PLD編程數(shù)據(jù)寫入數(shù)據(jù)緩沖器;以及 從所述數(shù)據(jù)緩沖器讀取所述PLD編程數(shù)據(jù)。
22. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括當(dāng)所述PLD不處于所述編程模式下時,阻斷對所述PLD上的所述 編禾呈端口的"i方問。
23. —種用于使用直接存儲器訪問(DMA)來初始化可編程邏輯器 件(PLD)的系統(tǒng),所述系統(tǒng)包括所述PLD,包括帶有控制線路的編程端口 ,所述PLD位于組件上;以及集成電路(IC),可操作地連接到所述PLD的所述編程端口,所述 IC位于所述組件上,并且包括輸入輸出(I/O )接口 ,所述I/O接口在所述IC和所述PLD之 間轉(zhuǎn)換信號格式;以及PLD接口,所述PLD接口包括配置和狀態(tài)寄存器,所述配置和狀態(tài)寄存器適合于通過所 述I/O接口來操縱所述PLD的所述編程端口的控制線^s據(jù)緩沖器,所述數(shù)據(jù)緩沖器用于臨時保存以DMA速度從 DMA控制器接收到的PLD編程數(shù)據(jù);以及調(diào)步邏輯,所述調(diào)步邏輯控制以PLD編程速度通過所述I/O 接口將所述PLD編程數(shù)據(jù)發(fā)送到所述PLD上的所述編程端口 的速度。
24. 根據(jù)權(quán)利要求23所述的系統(tǒng),進(jìn)一步包括DMA控制器,所述DMA控制器可操作地連接到所述PLD接口 。
25. 根據(jù)權(quán)利要求24所述的系統(tǒng),其中所述DMA控制器可操作地 連接到非易失性存儲器設(shè)備(NVM ),所述NVM存儲所述PLD編程數(shù)
26. 根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述NVM位于所述組件的外部。
27. 根據(jù)權(quán)利要求25所述的系統(tǒng),進(jìn)一步包括處理器,所述處理器可操作地連接到所述PLD接口和所述DMA控 制器,并且其中所述處理器執(zhí)行一種方法,所述方法包括將值寫入所述PLD接口的配置和狀態(tài)寄存器,所述值用于通過所 述I/O接口來操縱所述PLD的所述控制線路以將所述PLD配置為編程 模式;配置所述DMA控制器以從所述NVM讀取所述PLD編程數(shù)據(jù); 初始化所述DMA控制器以開始從所述NVM讀取所述PLD編程數(shù) 據(jù);以及讀取所述PLD接口的配置和狀態(tài)寄存器以-瞼證使用所述PLD編程 凄t據(jù)對所述PLD的成功編程。
28. 根據(jù)權(quán)利要求23所述的系統(tǒng),其中當(dāng)從所述數(shù)據(jù)緩沖器讀取所 述PLD編程數(shù)據(jù)時,所述PLD接口修改寫入所述數(shù)據(jù)緩沖器的所述PLD 編程數(shù)據(jù)的數(shù)據(jù)字寬度和字節(jié)順序中的至少 一個;以及其中當(dāng)所述PLD不處于所述編程才莫式下時,阻斷對所述PLD上的 所述編,呈端口的訪問。
29. 根據(jù)權(quán)利要求24所述的系統(tǒng),進(jìn)一步包括多個組件,通過所述多個組件中的每個組件上的每個IC的PLD接 口可操作地連接到所述DMA控制器;并且其中所述DMA控制器位于 所述多個組件的外部。
全文摘要
本發(fā)明提供了用于使用直接存儲器訪問(DMA)來初始化可編程邏輯器件(PLD)的方法、系統(tǒng)和集成電路。其中該方法包括操縱PLD的控制線路以將該P(yáng)LD配置為編程模式,以DMA速度從DMA控制器接收PLD編程數(shù)據(jù),以及將PLD編程數(shù)據(jù)寫入數(shù)據(jù)緩沖器。該方法還包括從數(shù)據(jù)緩沖器讀取PLD編程數(shù)據(jù),以及以PLD編程速度將PLD編程數(shù)據(jù)發(fā)送到PLD上的編程端口。
文檔編號G06F13/28GK101236504SQ20081000896
公開日2008年8月6日 申請日期2008年1月31日 優(yōu)先權(quán)日2007年2月1日
發(fā)明者A·R·蘭克, T·D·尼達(dá)姆 申請人:國際商業(yè)機(jī)器公司