国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法與系統(tǒng)的制作方法

      文檔序號:6522128閱讀:360來源:國知局
      基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法與系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了基于ARM-Linux平臺底層驅(qū)動的XiLinxFPGA配置方法與系統(tǒng),包括:A、對XiLinxFPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文件;B、將XSVF位流文件存儲至NANDFLASH存儲器;C、ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NANDFLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序;D、ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinxFPGA的TAP總線,從而對XiLinxFPGA進行配置。本發(fā)明的方法具有靈活性好、通用性強和成本較低的優(yōu)點。本發(fā)明可廣泛應(yīng)用于嵌入式【技術(shù)領(lǐng)域】。
      【專利說明】基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法與系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及嵌入式【技術(shù)領(lǐng)域】,尤其是一種基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法與系統(tǒng)。
      【背景技術(shù)】
      [0002]FPGA采用邏輯單元陣列LCA (Logic Ce 11 Array),F(xiàn)PGA包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊 IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。FPGA是可編程器件,與傳統(tǒng)邏輯電路和門陣列(例如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu),F(xiàn)PGA利用小型查找表(16X 1RAM)來實現(xiàn)組合邏輯,每個查找表連接到一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動I/0,由此構(gòu)成了即可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到1/0模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實現(xiàn)的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與1/0間的聯(lián)接方式,并最終決定了 FPGA所能實現(xiàn)的功能,F(xiàn)PGA允許無限次編程。
      [0003]目前使用FPGA的數(shù)字系統(tǒng),基本上都是采用片外專用的EPROM來配置FPGA。這種配置方式是在FPGA的功能相對固定的情況下采用的,靈活性較差。如果數(shù)字系統(tǒng)設(shè)計要求更強的靈活性(例如要實現(xiàn)遠(yuǎn)程FPGA配置或基于FPGA的可重構(gòu)計算系統(tǒng)中FPGA的配置等),這種配置方式就不再適用。而且,這種配置方式需要耗費較多的片外EPR0M,成本較聞。
      [0004]綜上所述,目前業(yè)內(nèi)FPGA的配置方式具有靈活性差、通用性不強和成本較高的缺點。

      【發(fā)明內(nèi)容】

      [0005]為了解決上述技術(shù)問題,本發(fā)明的一個目的是:提供一種靈活性好、通用性強和成本較低的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法。
      [0006]本發(fā)明的另一個目的是:提供一種靈活性好、通用性強和成本較低的基于ARM-Linux平臺底層驅(qū)動的FPGA配置系統(tǒng)。
      [0007]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,包括:
      A、對XiLinxFPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文
      件;
      B、將XSVF位流文件存儲至NANDFLASH存儲器;
      C、ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NANDFLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序;
      D、ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinxFPGA的TAP總線,從而對XiLinxFPGA進行配置。
      [0008]進一步,所述步驟A,其包括:
      Al、對XiLinx FPGA的配置位流文件進行SVF格式轉(zhuǎn)換,從而得到SVF位流文件;
      A2、對SVF位流文件進行壓縮處理,從而得到XSVF位流文件。
      [0009]進一步,所述步驟C,其包括:
      Cl、ARM處理器根據(jù)系統(tǒng)的設(shè)計要求讀取存儲在NAND FLASH存儲器中的XSVF指令和自變量;
      C2、ARM處理器根據(jù)讀取的XSVF指令類型進行相應(yīng)的跳轉(zhuǎn),從而生成所需的TAP總線時序。
      [0010]進一步,所述步驟C2,其具體為:
      ARM處理器判斷讀取的XSVF指令所屬的類型,然后根據(jù)判斷的結(jié)果進行相應(yīng)的處理:若讀取的XSVF指令為XRUNTEST指令,則跳轉(zhuǎn)至XRUNTEST指令處理過程;若讀取的XSVF指令為XSIR指令,則跳轉(zhuǎn)至XSIR指令處理過程;若讀取的XSVF指令為XSDR指令,則跳轉(zhuǎn)至XSDR指令處理過程;反之,則跳轉(zhuǎn)至其它指令處理過程。
      [0011]進一步,所述XRUNTEST指令處理過程,其具體為:
      ARM處理器的驅(qū)動代碼讀到XRUNTEST指令時,ARM處理器讀入指定微秒數(shù)的下一個四字節(jié)數(shù)據(jù)并進入Run-Test/Idle狀態(tài),直至下一個XSIR指令或XSDR指令被執(zhí)行。
      [0012]進一步,所述XRUNTEST指令處理過程,其包括:
      ARM處理器的驅(qū)動代碼為TAP總線的TMS端口和TCK端口提供激勵,直至其進入Shift-1R 狀態(tài);
      ARM處理器的驅(qū)動代碼讀取一個字節(jié)的指定數(shù)據(jù),并在TAP總線的TDI端口輸出該指定數(shù)據(jù),所述指定數(shù)據(jù)用于指定數(shù)據(jù)的總長度和實際數(shù)據(jù)的內(nèi)容;
      在所有數(shù)據(jù)輸出至TDI端口后,ARM處理器的驅(qū)動代碼改變TMS的值并輸出連續(xù)的TCK脈沖,直至ARM處理器再次進入Run-Test/Idle狀態(tài)。
      [0013]進一步,所述XSDR指令處理過程,其包括:
      ARM處理器的驅(qū)動代碼讀取指定Shift-DR狀態(tài)下的輸出數(shù)據(jù);
      ARM處理器的驅(qū)動代碼對TMS端口和TCK端口進行切換,從而直接轉(zhuǎn)換為Shift-DR狀
      態(tài);
      ARM處理器的驅(qū)動代碼將TMS的值保持為0,并將來自XSVF位流文件的數(shù)據(jù)輸出至TDI端口,同時存儲TDO端口接收的數(shù)據(jù);
      在所有數(shù)據(jù)輸出至TDI端口后,ARM處理器的驅(qū)動代碼將TMS的值置為1,從而進入Exit-1-DR 狀態(tài);
      判斷TDO端口的輸入值與預(yù)設(shè)的TDO端口輸入值是否一致,若否,則在執(zhí)行異常處理程序后結(jié)束配置過程;反之,則返回Shift-DR狀態(tài)。
      [0014]本發(fā)明解決其技術(shù)問題所采用的另一技術(shù)方案:基于ARM-Linux平臺底層驅(qū)動的FPGA配置系統(tǒng),包括:
      格式轉(zhuǎn)換與壓縮模塊,用于對XiLinx FPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文件;
      存儲模塊,用于將XSVF位流文件存儲至NAND FLASH存儲器; 調(diào)用與解釋模塊,用于ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NAND FLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序;
      驅(qū)動模塊,用于ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinx FPGA的TAP總線,從而對XiLinx FPGA進行配置;
      所述格式轉(zhuǎn)換與壓縮模塊的輸出端依次通過存儲模塊和調(diào)用與解釋模塊進而與驅(qū)動模塊的輸入端連接。
      [0015]進一步,所述調(diào)用與解釋模塊包括:
      讀取單元,用于ARM處理器讀取存儲在NAND FLASH存儲器中的XSVF指令和自變量;跳轉(zhuǎn)單元,ARM處理器根據(jù)讀取的XSVF指令類型進行相應(yīng)的跳轉(zhuǎn),從而生成所需的TAP總線時序;
      所述讀取單元的輸入端與存儲模塊的輸出端連接,所述讀取單元的輸出端與跳轉(zhuǎn)單元的輸入端連接,所述跳轉(zhuǎn)單元的輸出端與驅(qū)動模塊的輸入端連接。
      [0016]本發(fā)明的方法的有益效果是:采用ARM-Linux平臺底層驅(qū)動和JTAG模式配置FPGA的方法,實現(xiàn)在ARM-Linux平臺上對FPGA進行配置,靈活性較好,能滿足靈活性要求更高的數(shù)字系統(tǒng)的設(shè)計要求,通用性較強;將XSVF位流文件存儲至NAND FLASH存儲器,節(jié)省了配置專用的片外EPR0M,降低了成本。
      [0017]本發(fā)明的系統(tǒng)的有益效果是:采用ARM-Linux平臺底層驅(qū)動和JTAG模式配置FPGA,實現(xiàn)在ARM-Linux平臺上對FPGA進行配置,靈活性較好,能滿足靈活性要求更高的數(shù)字系統(tǒng)的設(shè)計要求,通用性較強;包括NAND FLASH存儲器,節(jié)省了配置專用的片外EPR0M,降低了成本。
      【專利附圖】

      【附圖說明】
      [0018]下面結(jié)合附圖和實施例對本發(fā)明作進一步說明。
      [0019]圖1為本發(fā)明基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法的步驟流程圖;
      圖2為本發(fā)明步驟A的流程圖;
      圖3為本發(fā)明步驟C的流程圖;
      圖4為本發(fā)明基于ARM-Linux平臺底層驅(qū)動的FPGA配置系統(tǒng)的結(jié)構(gòu)框圖;
      圖5為本發(fā)明調(diào)用與解釋模塊的結(jié)構(gòu)框圖;
      圖6為本發(fā)明第一實施例的電路原理圖;
      圖7為本發(fā)明的TAP時序圖。
      【具體實施方式】
      [0020]參照圖1,基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,包括:
      A、對XiLinxFPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文
      件;
      B、將XSVF位流文件存儲至NANDFLASH存儲器;
      C、ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NANDFLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序;
      D、ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinxFPGA的TAP總線,從而對XiLinxFPGA進行配置。
      [0021]其中,XSVF位流文件是指對SVF格式(IEEE1149.1標(biāo)準(zhǔn)中描述JTAG總線操作的語法規(guī)范,可由FPGA設(shè)計工具轉(zhuǎn)換生成)進行壓縮處理后生成的位流文件。
      [0022]ARM處理器使用GPIO (通用輸入輸出)線來模擬TAP時序來配置FPGA,所以若在應(yīng)用層使用GPIO來控制,則會出現(xiàn)配置速度慢和配置時間過長的問題,因此,本發(fā)明采用Linux驅(qū)動層來配置FPGA。
      [0023]本發(fā)明采用了 JTAG底層驅(qū)動算法,可以對配置文件進行存儲、管理和下載,例如多個不同功能的配置文件可以同時預(yù)先存儲在ARM控制板的存儲器FLASH中,系統(tǒng)運行時可以由ARM根據(jù)系統(tǒng)設(shè)計的要求實現(xiàn)對多個配置文件的調(diào)用管理和下載。
      [0024]參照圖2,進一步作為優(yōu)選的實施方式,所述步驟A,其包括:
      Al、對XiLinx FPGA的配置位流文件進行SVF格式轉(zhuǎn)換,從而得到SVF位流文件;
      A2、對SVF位流文件進行壓縮處理,從而得到XSVF位流文件。
      [0025]SVF位流文件是ASCII碼表示的,文件很大,故需要壓縮成XSVF位流文件。XSVF位流文件是二進制的位流文件,其內(nèi)容與SVF位流文件相同。
      [0026]參照圖3,進一步作為優(yōu)選的實施方式,所述步驟C,其包括:
      Cl、ARM處理器根據(jù)系統(tǒng)的設(shè)計要求讀取存儲在NAND FLASH存儲器中的XSVF指令和自變量;
      C2、ARM處理器根據(jù)讀取的XSVF指令類型進行相應(yīng)的跳轉(zhuǎn),從而生成所需的TAP總線時序。
      [0027]進一步作為優(yōu)選的實施方式,所述步驟C2,其具體為:
      ARM處理器判斷讀取的XSVF指令所屬的類型,然后根據(jù)判斷的結(jié)果進行相應(yīng)的處理:若讀取的XSVF指令為XRUNTEST指令,則跳轉(zhuǎn)至XRUNTEST指令處理過程;若讀取的XSVF指令為XSIR指令,則跳轉(zhuǎn)至XSIR指令處理過程;若讀取的XSVF指令為XSDR指令,則跳轉(zhuǎn)至XSDR指令處理過程;反之,則跳轉(zhuǎn)至其它指令處理過程。
      [0028]其中,XRUNTEST指令、XSIR指令和XSDR指令是可能讀取到的三種XSVF指令??赡茏x取到 XSVF 指令還包括 XSDRB、XSDRC、XSDRE、XSDRTD0B、XSDRTD0C 和 XSDRTD0B 指令等。
      [0029]進一步作為優(yōu)選的實施方式,所述XRUNTEST指令處理過程,其具體為:
      ARM處理器的驅(qū)動代碼讀到XRUNTEST指令時,ARM處理器讀入指定微秒數(shù)的下一個四字節(jié)數(shù)據(jù)并進入Run-Test/Idle狀態(tài),直至下一個XSIR指令或XSDR指令被執(zhí)行。
      [0030]其中,Run-Test/Idle狀態(tài)是控制器TAP Controller (用于對TAP總線進行控制,本發(fā)明由ARM處理器充當(dāng)TAP Controller)在不同操作間的一個中間狀態(tài)。這個狀態(tài)下的動作取決于當(dāng)前指令寄存器中的指令。在該狀態(tài)下,如果TMS端口信號一直保持為“0”,TAP Controller將一直保持在Run-Test/Idle狀態(tài)下;如果TMS端口信號由“O”變?yōu)椤癐”(在TCK端口信號的上升沿觸發(fā)),將會使TAP Controller進入Select-DR-Scan狀態(tài),Select-DR-Scan狀態(tài)為TAP Controller狀態(tài)機中的一個臨時狀態(tài)。
      [0031]進一步作為優(yōu)選的實施方式,所述XRUNTEST指令處理過程,其包括:
      ARM處理器的驅(qū)動代碼為TAP總線的TMS端口和TCK端口提供激勵,直至其進入Shift-1R 狀態(tài);
      ARM處理器的驅(qū)動代碼讀取一個字節(jié)的指定數(shù)據(jù),并在TAP總線的TDI端口輸出該指定數(shù)據(jù),所述指定數(shù)據(jù)用于指定數(shù)據(jù)的總長度和實際數(shù)據(jù)的內(nèi)容;
      在所有數(shù)據(jù)輸出至TDI端口后,ARM處理器的驅(qū)動代碼改變TMS的值并輸出連續(xù)的TCK脈沖,直至ARM處理器再次進入Run-Test/Idle狀態(tài)。
      [0032]其中,Shift-1R狀態(tài)為TAP Controller狀態(tài)機中的一個狀態(tài)。這個狀態(tài)的每一個時鐘周期,被連接在TDI和TDO之間的指令寄存器將從TDI端口接收一位數(shù)據(jù),同時通過TDO端口輸出一位數(shù)據(jù)。如果TMS端口信號為“O”(在TCK的上升沿觸發(fā)),TAP Controller保持在Shift-1R狀態(tài);如果TMS端口信號為“I”(在TCK的上升沿觸發(fā)),TAP Controller進入到Exitl-1R狀態(tài)。Exitl-1R狀態(tài)為TAP Controller狀態(tài)機中的一個中間狀態(tài)。
      [0033]進一步作為優(yōu)選的實施方式,所述XSDR指令處理過程,其包括:
      ARM處理器的驅(qū)動代碼讀取指定Shift-DR狀態(tài)下的輸出數(shù)據(jù);
      ARM處理器的驅(qū)動代碼對TMS端口和TCK端口進行切換,從而直接轉(zhuǎn)換為Shift-DR狀
      態(tài);
      ARM處理器的驅(qū)動代碼將TMS的值保持為0,并將來自XSVF位流文件的數(shù)據(jù)輸出至TDI端口,同時存儲TDO端口接收的數(shù)據(jù);
      在所有數(shù)據(jù)輸出至TDI端口后,ARM處理器的驅(qū)動代碼將TMS的值置為1,從而進入Exit-1-DR 狀態(tài);
      判斷TDO端口的輸入值與預(yù)設(shè)的TDO端口輸入值是否一致,若否,則在執(zhí)行異常處理程序后結(jié)束配置過程;反之,則返回Shift-DR狀態(tài)。
      [0034]其中,Shift-DR狀態(tài)與Shift-1R狀態(tài)類似,不同之處在于Shift-DR狀態(tài)用于對數(shù)據(jù)寄存器DR進行控制,而Shift-1R狀態(tài)用于對指令寄存器DR進行控制。
      [0035]參照圖4,基于ARM-Linux平臺底層驅(qū)動的FPGA配置系統(tǒng),包括:
      格式轉(zhuǎn)換與壓縮模塊,用于對XiLinx FPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文件;
      存儲模塊,用于將XSVF位流文件存儲至NAND FLASH存儲器;
      調(diào)用與解釋模塊,用于ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NAND FLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序;
      驅(qū)動模塊,用于ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinx FPGA的TAP總線,從而對XiLinx FPGA進行配置;
      所述格式轉(zhuǎn)換與壓縮模塊的輸出端依次通過存儲模塊和調(diào)用與解釋模塊進而與驅(qū)動模塊的輸入端連接。
      [0036]參照圖5,進一步作為優(yōu)選的實施方式,所述調(diào)用與解釋模塊包括:
      讀取單元,用于ARM處理器讀取存儲在NAND FLASH存儲器中的XSVF指令和自變量;跳轉(zhuǎn)單元,ARM處理器根據(jù)讀取的XSVF指令類型進行相應(yīng)的跳轉(zhuǎn),從而生成所需的TAP總線時序;
      所述讀取單元的輸入端與存儲模塊的輸出端連接,所述讀取單元的輸出端與跳轉(zhuǎn)單元的輸入端連接,所述跳轉(zhuǎn)單元的輸出端與驅(qū)動模塊的輸入端連接。
      [0037]下面結(jié)合說明書附圖和具體實施例對本發(fā)明作進一步詳細(xì)說明。
      [0038]參照圖6,本發(fā)明的第一實施例:
      本發(fā)明對FPGA進行配置所需的硬件主要包括NAND FLASH和ARM9處理器,如圖6所示。[0039]其中,ARM9處理器采用NUV0T0N公司基于32位ARM926EJ-S核心的NUC910ABN ;NAND FLASH 采用 SAMSUNG 公司的 K9F1G08U0C,容量為 128MByte。FPGA 采用的是 XilinxSpartan-6FPGA系列中的XC6SLX100T-3FGG676C,本發(fā)明對FPGA進行配置時,F(xiàn)PGA選擇信號MO: Ml的電平設(shè)置為1: O。
      [0040]本發(fā)明配置的硬件電路只需將ARM9的GPIOG管腳GPIOGO~GP10G7分別連接兩片F(xiàn)PGA的TAP總線信號TCK、TMS、TD0和TDI,電路十分簡單。而根據(jù)ARM驅(qū)動TAP的電平標(biāo)準(zhǔn)(ARM的驅(qū)動電平不能低于TAP的工作電平),本發(fā)明ARM9處理器采用的驅(qū)動電平值為
      3.3V。
      [0041]參照圖7,本發(fā)明的第二實施例:
      JTAG底層驅(qū)動算法是ARM以JTAG模式配置FPGA的關(guān)鍵。本發(fā)明的JTAG底層驅(qū)動算法調(diào)用XSVF配置文件,解釋其中的語法規(guī)范,從而生成嚴(yán)格的TAP總線時序,進而驅(qū)動ARM的GPIO管腳來完成對FPGA的配置。其中TAP的時序是算法設(shè)計和實現(xiàn)調(diào)試的一個主要方面,詳細(xì)的TAP總線時序如圖7所示。[0042]其中,關(guān)鍵時序關(guān)系包括:
      (I)TMS信號和TDI信號采樣于TCK的上升邊沿。
      [0043](2 ) 一個新的TDO值將在TCK下降邊沿后出現(xiàn)。
      [0044](3) TAP時序中TMS信號和TDI信號在TCK的上升沿有效,并在TCK的下降沿更新。TDO信號的下一個值出現(xiàn)在TCK信號的下降沿之后,并延遲一個足夠的間隔TDOV后選通TDO信號。其關(guān)鍵函數(shù)如下:
      setPort/*將微控制器上的特定端口設(shè)置為特定值*/。
      [0045]readTDOBit/* 讀取 TDO 端口值 */。
      [0046]readByte/*從XSVF文件讀取一個字節(jié)的數(shù)據(jù)*/。
      [0047]waitTime/*暫停指定的時間長度*/。
      [0048]上述4個函數(shù)的實現(xiàn)示例如下: void setPort (shortp, shortval)
      {
      if (val==TRUE)
      {
      control_io(I, p);
      }
      else
      {
      control_io(0, p);
      }
      }
      unsigned char readTDOBit (shortp)
      {
      return ((unsigned char) read_io(p));
      }
      【權(quán)利要求】
      1.基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:包括: A、對XiLinxFPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文件; B、將XSVF位流文件存儲至NANDFLASH存儲器; C、ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NANDFLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序; D、ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinxFPGA的TAP總線,從而對XiLinxFPGA進行配置。
      2.根據(jù)權(quán)利要求1所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述步驟A,其包括: Al、對XiLinx FPGA的配置位流文件進行SVF格式轉(zhuǎn)換,從而得到SVF位流文件; A2、對SVF位流文件進行壓縮處理,從而得到XSVF位流文件。
      3.根據(jù)權(quán)利要求1所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述步驟C,其包括: Cl、ARM處理器根據(jù)系統(tǒng)的設(shè)計要求讀取存儲在NAND FLASH存儲器中的XSVF指令和自變量;` C2、ARM處理器根據(jù)讀取的XSVF指令類型進行相應(yīng)的跳轉(zhuǎn),從而生成所需的TAP總線時序。
      4.根據(jù)權(quán)利要求3所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述步驟C2,其具體為: ARM處理器判斷讀取的XSVF指令所屬的類型,然后根據(jù)判斷的結(jié)果進行相應(yīng)的處理:若讀取的XSVF指令為XRUNTEST指令,則跳轉(zhuǎn)至XRUNTEST指令處理過程;若讀取的XSVF指令為XSIR指令,則跳轉(zhuǎn)至XSIR指令處理過程;若讀取的XSVF指令為XSDR指令,則跳轉(zhuǎn)至XSDR指令處理過程;反之,則跳轉(zhuǎn)至其它指令處理過程。
      5.根據(jù)權(quán)利要求4所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述XRUNTEST指令處理過程,其具體為: ARM處理器的驅(qū)動代碼讀到XRUNTEST指令時,ARM處理器讀入指定微秒數(shù)的下一個四字節(jié)數(shù)據(jù)并進入Run-Test/Idle狀態(tài),直至下一個XSIR指令或XSDR指令被執(zhí)行。
      6.根據(jù)權(quán)利要求5所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述XRUNTEST指令處理過程,其包括: ARM處理器的驅(qū)動代碼為TAP總線的TMS端口和TCK端口提供激勵,直至其進入Shift-1R 狀態(tài); ARM處理器的驅(qū)動代碼讀取一個字節(jié)的指定數(shù)據(jù),并在TAP總線的TDI端口輸出該指定數(shù)據(jù),所述指定數(shù)據(jù)用于指定數(shù)據(jù)的總長度和實際數(shù)據(jù)的內(nèi)容; 在所有數(shù)據(jù)輸出至TDI端口后,ARM處理器的驅(qū)動代碼改變TMS的值并輸出連續(xù)的TCK脈沖,直至ARM處理器再次進入Run-Test/Idle狀態(tài)。
      7.根據(jù)權(quán)利要求6所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述XSDR指令處理過程,其包括: ARM處理器的驅(qū)動代碼讀取指定Shift-DR狀態(tài)下的輸出數(shù)據(jù);ARM處理器的驅(qū)動代碼對TMS端口和TCK端口進行切換,從而直接轉(zhuǎn)換為Shift-DR狀態(tài); ARM處理器的驅(qū)動代碼將TMS的值保持為O,并將來自XSVF位流文件的數(shù)據(jù)輸出至TDI端口,同時存儲TDO端口接收的數(shù)據(jù); 在所有數(shù)據(jù)輸出至TDI端口后,ARM處理器的驅(qū)動代碼將TMS的值置為1,從而進入Exit-1-DR 狀態(tài); 判斷TDO端口的輸入值與預(yù)設(shè)的TDO端口輸入值是否一致,若否,則在執(zhí)行異常處理程序后結(jié)束配置過程;反之,則返回Shift-DR狀態(tài)。
      8.基于ARM-Linux平臺底層驅(qū)動的FPGA配置系統(tǒng),其特征在于包括: 格式轉(zhuǎn)換與壓縮模塊,用于對XiLinx FPGA的配置位流文件進行格式轉(zhuǎn)換和壓縮處理,從而得到XSVF位流文件; 存儲模塊,用于將XSVF位流文件存儲至NAND FLASH存儲器; 調(diào)用與解釋模塊,用于ARM處理器執(zhí)行JTAG底層驅(qū)動算法調(diào)用并解釋NAND FLASH存儲器的XSVF位流文件,從而生成所需的TAP總線時序; 驅(qū)動模塊,用于ARM處理器根據(jù)生成的TAP總線時序驅(qū)動XiLinx FPGA的TAP總線,從而對XiLinx FPGA進行配置; 所述格式轉(zhuǎn)換與壓縮模塊的輸出端依次通過存儲模塊和調(diào)用與解釋模塊進而與驅(qū)動模塊的輸入端連接。
      9.根據(jù)權(quán)利要求8所述的基于ARM-Linux平臺底層驅(qū)動的FPGA配置方法,其特征在于:所述調(diào)用與解釋模塊包括: 讀取單元,用于ARM處理器讀取存儲在NAND FLASH存儲器中的XSVF指令和自變量;跳轉(zhuǎn)單元,ARM處理器根據(jù)讀取的XSVF指令類型進行相應(yīng)的跳轉(zhuǎn),從而生成所需的TAP總線時序; 所述讀取單元的輸入端與存儲模塊的輸出端連接,所述讀取單元的輸出端與跳轉(zhuǎn)單元的輸入端連接,所述跳轉(zhuǎn)單元的輸出端與驅(qū)動模塊的輸入端連接。
      【文檔編號】G06F9/445GK103729208SQ201310643344
      【公開日】2014年4月16日 申請日期:2013年12月3日 優(yōu)先權(quán)日:2013年12月3日
      【發(fā)明者】宋志東, 楊建坡, 杜凌, 鄭廣明, 石宇 申請人:奧維通信股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1