摘要:通過對現(xiàn)有可編程芯片下載方案的研究,針對某些用戶對“現(xiàn)場可編程”的要求,本文提出了一種基于FPGA的數(shù)據(jù)高速動態(tài)下載方案,并簡要介紹了該方案的硬件設計與實現(xiàn)思想。
1 引言
隨著可編程邏輯器件的快速發(fā)展,器件的成本不斷降低,已有越來越多的應用領域用到 可編程邏輯器件。它本身具有的可編程能力,可以方便設計者輕松升級系統(tǒng),并且使設計的 算法以硬件的方式執(zhí)行,大大提高了系統(tǒng)的處理速度。FPGA 以其具有極大的靈活性和現(xiàn)場 可編程特性得到廣泛的應用。按工藝劃分,F(xiàn)PGA 可分為反熔絲型、FLASH 型和SRAM 型。 反熔絲型雖然具有極強的保密性、但由于僅能編程一次,在使用上受到極大限制;FLASH 型FPGA 克服了反熔絲型FPGA 的缺點,但受結(jié)構(gòu)和工藝限制,在容量上有時很難滿足實 際需求;目前SRAM 型FPGA 以其具有容量大、可反復編程特性得到廣泛應用,目前市場 上大容量FPGA(10 萬門以上)無一例外都是基于SRAM 結(jié)構(gòu)。然而SRAM 型FPGA 最大 的缺點是需要外掛一片F(xiàn)LASH 配置芯片,該芯片對用戶完全透明,可以通過下載電纜或?qū)?用編程器進行編程。由于該芯片可以方便的進行復制和修改,因此配置文件極易被非法竊取, 設計師的知識產(chǎn)權(quán)無法得到充分保障。
本文分析研究了 ALTERA 公司的FPGA 下載方式、下載文件數(shù)據(jù)結(jié)構(gòu)及被動串行下載 時序,提出了一種基于PCI 接口總線的現(xiàn)場配置電路設計方案。該電路模塊與PCI9656 芯 片控制模塊融合在一起,配合上層應用軟件,借助于主機PCI 總線和PCI 設備驅(qū)動程序, 利用QUARTUS II 軟件產(chǎn)生的二進制流文件直接對FPGA 芯片進行現(xiàn)場下載,下載采用 ALTERA 公司FPGA 的被動串行方式,具有很好的通用性。
2 適配卡電路結(jié)構(gòu)
本設計方案的設計是基于PCI 總線適配卡,適配卡為一高速數(shù)據(jù)采集卡,主要包括PCI 總線接口芯片、局部總線控制模塊、內(nèi)部運算與通信控制模塊。電路的整體結(jié)構(gòu)框圖如圖1 所示。
通過分析 PCI 總線的傳輸與外圍設備如FIFO、SRAM、Flash 的時序知道,SRAM 屬于 同步設備,所有的讀寫操作均發(fā)生在時鐘上升沿,SRAM 寫時序與PCI 總線的時序一致, 可直接采用該時序進行控制,F(xiàn)IFO 也屬于同步設備,F(xiàn)IFO 讀寫時序及Flash 屬于異步設備 通過設計相應的簡單時序控制邏輯就能滿足與PCI 總線通信時序的要求。
3 下載電路硬件設計方案
3.1 PS 配置時序
FPGA 具有被動串行(PS)、主動串行(AS)和JTAG 三種下載方式,其中PS 模式為 ALTERA 公司FPGA 的通用下載方式,操作透明、配置簡單。在該模式下,外部電路采用5 條信號線對FPGA 進行配置,分別為配置時鐘DCLK,配置數(shù)據(jù)DATA0,配置啟動nCONFIG, 配置狀態(tài)nSTATUS,配置完成CONF_DONE 信號。配置時序如圖2 所示。
3.2 下載模塊電路設計
在 EPM7256A 內(nèi)部設計下載電路,電路由D 鎖存器、長度計數(shù)器、數(shù)據(jù)移位寄存器、 狀態(tài)機、狀態(tài)寄存器及局部總線控制模塊構(gòu)成。D 鎖存器鎖存主機送入的命令,輸入連接局 部總線數(shù)據(jù)為LD[1:0],LD[1:0]=01 為啟動配置、10 為等待數(shù)據(jù)命令、11 為結(jié)束配置命令, 該命令輸出到配置控制狀態(tài)機,作為控制輸入。數(shù)據(jù)長度計數(shù)--器內(nèi)部存放本次配置的數(shù)據(jù) 長度,位寬5bit,連接局部總線LD[7:3],計數(shù)器最大計數(shù)范圍為24,每寫入1bit,長度值 減1,當減至0 時,產(chǎn)生借位信號,作為本次配置完成信號,送入狀態(tài)機。數(shù)據(jù)移位寄存器共計24bit 寬,內(nèi)部裝載本次配置的數(shù)據(jù),在狀態(tài)機的控制下,順序移出,寫入FPGA。局 部總線控制模塊產(chǎn)生局部總線的寫使能、讀有效信號,當PCI9054 尋址到20004000H 時, 產(chǎn)生寫使能信號,PCI9054 尋址到20000000H 時,產(chǎn)生狀態(tài)寄存器讀輸出有效信號。狀態(tài)寄 存器輸出連接局部總線,輸入連接FPGA 配置狀態(tài)信號nSTATUS、CONF_DONE 和本次配 置完成信號。電路框圖如圖3 所示:
3.3 下載電路狀態(tài)機設計
狀態(tài)機是該下載模塊的重要組成部分,負責協(xié)調(diào)各個模塊的工作。其輸入時鐘信號 LCLK,復位信號LRESET#,下載電路寫使能,DLC_WEN,本次配置完成指示:CONFIG_DATA_BO;輸 出 為 配 置時鐘DCLK , 配置啟動nCONFIG , 配置數(shù)據(jù): DATA0 , 移位使能 CONFIG_DATA_SHEN,計數(shù)使能CONFIG_LEN_EN。狀態(tài)機包括“等待命令狀態(tài)”SF0、 “啟動配置狀態(tài)”SF1、“等待數(shù)據(jù)狀態(tài)”SF2、“配置數(shù)據(jù)狀態(tài)1”SF31、“配置數(shù)據(jù)狀態(tài)2” SF32,其狀態(tài)轉(zhuǎn)換過程如下:
狀態(tài)SF0:“等待命令狀態(tài)”,等待軟件配置啟動命令。
此時:CONFIG_EN = 1、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、DCLKQ = 0、nCONFIGQ = 1;
若DLC_WEN_SH=1 且命令為0x01H,則進入狀態(tài)S1;
否則維持 S0 狀態(tài)不變。
狀態(tài) SF1:“啟動配置狀態(tài)”。
此時:CONFIG_EN = 0、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、DCLKQ = 0、nCONFIGQ = 0;
若 DLC_WEN_SH=1 且命令為0x02H,則進入“等待數(shù)據(jù)狀態(tài)”;否則維持 S1 狀態(tài)不變。
狀態(tài) SF2:“等待數(shù)據(jù)狀態(tài)”。
此時: CONFIG_EN = 0、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、DCLKQ = 0、nCONFIGQ = 1;
若 DLC_WEN_SH=1 且命令為0x03H,則進入“配置數(shù)據(jù)狀態(tài)1”S31,若 DLC_WEN_SH=1 且命令為0x00H,則返回“等待命令狀態(tài)”S0,否則維持 S2 狀態(tài)不變。
狀態(tài) SF31:“配置數(shù)據(jù)狀態(tài)1”。發(fā)DCLK 為高電平及第N-bit 有效數(shù)據(jù)此時:CONFIG_EN = 0、CONFIG_DATA_SHEN = 1 、CONFIG_LEN_EN =1 、
DCLKQ = 1、nCONFIGQ = 1;進入狀態(tài) S32。
狀態(tài) SF32:“配置數(shù)據(jù)狀態(tài)2”。發(fā)DCLK 為低電平及第(N+1)-bit 有效的數(shù)據(jù)此時:CONFIG_EN = 0、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、
DCLKQ = 0、nCONFIGQ = 1;
若 CONFIG_DATA_BO = 1 則進入狀態(tài) S31;
否則返回“等待數(shù)據(jù)狀態(tài)”S2。
4 下載電路軟件設計方案
下載電路軟件設計主要功能是讀取待下載文件,初始化硬件設備,按照下載電路的時 序要求將數(shù)據(jù)和控制命令寫入相應的PCI 存儲空間。初始化、配置設置、下載的實質(zhì)都是 通過數(shù)據(jù)總線將固定格式的命令和數(shù)據(jù)寫入到命令寄存器,并在這個過程中不斷讀取狀態(tài)寄 存器的值以監(jiān)測是否有錯誤發(fā)生。
首先開機,啟動操作系統(tǒng),EPM7256A 內(nèi)部電路已下載。其次進行初始化操作。通過 數(shù)據(jù)總線向地址S0+E000H(配置端口)寫入初始化命令0x01H,延遲一段時間,讀取地址 S0+0000H(狀態(tài)寄存器)內(nèi)的數(shù)據(jù),直至檢測到配置標志位CONF_DONE、nSTATUS 均為 0,初始化工作完成。再次進行配置啟動。向地址S0+E000H(配置端口)寫入配置命令0x02H, 延遲一段時間,讀取地址S0+0000H 狀態(tài)寄存器內(nèi)的數(shù)據(jù),直至檢測到配置標志位 CONF_DONE 為0、nSTATUS 為1,配置FPGA2 工作完成。接著進行配置數(shù)據(jù),向地址 S0+E000H(配置端口)寫入數(shù)據(jù)。Bit[2..0]固定接為011,作為配置數(shù)據(jù)命令;Bit[7..3]為本 次下載的有效數(shù)據(jù)長度;Bit[31:8]為要下載數(shù)據(jù),Bit[31]最先下載、Bit[8]最后下載。讀取地 址S0+0000H(狀態(tài)寄存器)內(nèi)的數(shù)據(jù),直至檢測到配置標志位CONFIG_DATA_BO 為0。 若檢測到CONFIG_DATA_BO=1,表明本次操作尚未完成,繼續(xù)執(zhí)行配置數(shù)據(jù),否則執(zhí)行下 一步。最后進行數(shù)據(jù)配置完成檢驗。讀取地址S0+0000H(狀態(tài)寄存器)內(nèi)容,直至檢測到 配置標志位CONF_DONE、nSTATUS 均為1,表明全部數(shù)據(jù)配置完成,向地址S0+E000H (配置端口)寫入數(shù)據(jù)0x00H,完成本次下載軟件操作。
5 結(jié)束語
方案嚴格按照 FPGA 的PS 模式進行配置,實現(xiàn)了專用芯片在DOS 系統(tǒng)下的動態(tài)配置。 經(jīng)過試驗驗證,按照該方案設計的電路速度快,運行穩(wěn)定,設計完全達到了預期的目的。
本文作者創(chuàng)新點: 該設計方案實現(xiàn)了FGPA 掉電后內(nèi)部數(shù)據(jù)的自動清除,可以保障專用 芯片的保密性;另外本方案選用ALTERA 公司的EPM7256A 作為配置芯片,在其內(nèi)部實現(xiàn) 下載電路,真正實現(xiàn)了“現(xiàn)場可編程”,根據(jù)本設計思想還可以輕松做到在線升級。
參考文獻:
[1].PCI datasheethttp://www.dzsc.com/datasheet/PCI+_1201469.html.
[2].EPM7256A datasheethttp://www.dzsc.com/datasheet/EPM7256A+_301023.html.
[3].1bitdatasheethttp://www.dzsc.com/datasheet/1bit_2178090.html.
[4].PCI9054 datasheethttp://www.dzsc.com/datasheet/PCI9054+_1054563.html.
[5].SF2datasheethttp://www.dzsc.com/datasheet/SF2_1184527.html.
[6].SF31datasheethttp://www.dzsc.com/datasheet/SF31_604269.html.
[7].SF32datasheethttp://www.dzsc.com/datasheet/SF32_604270.html.
來源:xinxin0次