摘要: 反熔絲FPGA 制造困難且多用在特殊用途領(lǐng)域, 因此有關(guān)其位流文件的研究很少.本文首先介紹了反熔絲FPGA 及FPGA CAD 軟件流程, 接著描述了反熔絲FPGA 具體結(jié)構(gòu)并通過(guò)一個(gè)具體例子說(shuō)明了如何配置反熔絲FPGA , 然后討論了反熔絲FPGA的編程方法, 由此引出了位流文件的格式和反熔絲單元編程信息格式, 最后提出了反熔絲FPGA 位流文件生成算法并在實(shí)驗(yàn)平臺(tái)實(shí)現(xiàn)了該算法。
1 引言
FPGA (現(xiàn)場(chǎng)可編程門(mén)陣列)是與CPU 和DSP并列的目前半導(dǎo)體市場(chǎng)上最重要的三類(lèi)核心數(shù)字器件之一反熔絲FPGA 由于其可靠性高抗輻射等優(yōu)點(diǎn), 成為空間領(lǐng)域使用的主流FPGA。
典型FPGA 的CAD 流程包括邏輯綜合, 工藝映射與打包, 布局, 布線, 時(shí)序分析和位流生成幾個(gè)步驟.邏輯綜合負(fù)責(zé)將硬件描述語(yǔ)言或者原理圖形式描述的電路轉(zhuǎn)化為基本門(mén)網(wǎng)表, 并進(jìn)行工藝無(wú)關(guān)的邏輯優(yōu)化.工藝映射將于工藝無(wú)關(guān)的門(mén)級(jí)網(wǎng)表轉(zhuǎn)換成目標(biāo)FPGA 的邏輯單元構(gòu)成的網(wǎng)表布局工具確定了實(shí)現(xiàn)電路功能需要的各邏輯單元在FPGA中的具體位置.布線工具根據(jù)布局的結(jié)果, 利用適當(dāng)?shù)牟季€資源, 連接各邏輯單元的輸人輸出引腳。FPGA位流文件(bit一stream )是指對(duì)可編程邏輯器件進(jìn)行配置的二進(jìn)制數(shù)據(jù)集, 這個(gè)數(shù)據(jù)集決定了FPGA的具體功能.位流文件具體描述了需要配置的反熔絲的信息, 編程器通過(guò)這些信息即可編程FPGA生成目標(biāo)電路.由于沒(méi)有具體的資料可供參考,且當(dāng)前FPGA 架構(gòu)存在多樣性的特點(diǎn), 位流文件設(shè)計(jì)的通用性不強(qiáng),故而只能從位流文件的基本原理與反熔絲FPGA 的結(jié)構(gòu)出發(fā)川, 按照軟件工程的方法針對(duì)反熔絲FPGA進(jìn)行位流生成算法設(shè)計(jì)。
2 反熔絲FPGA 結(jié)構(gòu)及配置方法
配置FPGA大致可分為對(duì)邏輯單元配置!布線開(kāi)關(guān)配置以及輸人輸出單元配置這三部分, 對(duì)于細(xì)顆粒反熔絲FPGA 來(lái)說(shuō), 由于邏輯單元是定制的,即無(wú)需配置的, 其實(shí)現(xiàn)不同邏輯的能力不是依靠邏輯單元本身, 而是通過(guò)選擇其各個(gè)輸人引腳與布線資源之間進(jìn)行不同的連接來(lái)實(shí)現(xiàn)。
圖1 所示為一個(gè)典型的細(xì)顆粒FPGA邏輯單元, 由于選擇器可實(shí)現(xiàn)任意邏輯的性質(zhì), 對(duì)多個(gè)選擇器進(jìn)行適當(dāng)組合, 構(gòu)成一個(gè)邏輯單元.圖2 所示該邏輯單元可以通過(guò)與布線資源的布通排列組合來(lái)實(shí)現(xiàn)數(shù)目巨大的邏輯門(mén)。
?
下面介紹一個(gè)具體的配置邏輯單元的例子, 如果需要實(shí)現(xiàn)式(1) 邏輯
同理對(duì)于I/( )端口, 可以通過(guò)對(duì)每個(gè)端口的輸人、輸出引腳和布線資源的連接進(jìn)行配置即可決定
其是輸人端口還是輸出端口. 由此可見(jiàn), 對(duì)細(xì)顆粒反熔絲FPGA 進(jìn)行配置,實(shí)際上就是對(duì)布線資源進(jìn)行配置.因此生成位流配置文件也大為簡(jiǎn)化, 只需要對(duì)FPGA 內(nèi)部需要配置的反熔絲信息進(jìn)行整合, 即可得到所需要的位流文件。
3 反熔絲FPGA 位流文件生成
位流文件生成算法所依托的FPGA 結(jié)構(gòu)是基于經(jīng)典反熔絲FPGA來(lái)設(shè)計(jì)的,FPGA中部為重復(fù)排列的FPGA邏輯單元, 呈4X 8 方式布置, 四周為I/0 模塊, 共24 個(gè)端口.根據(jù)反熔絲的燒寫(xiě)方式, 編程器在位流文件下載完成后, 會(huì)將位流文件中需要燒通的反熔絲的位置信息傳到FPGA內(nèi)部寄存器中, 通過(guò)FPGA內(nèi)部的外圍尋址電路選擇要燒通的反熔絲.而在芯片內(nèi)部, 要將一個(gè)反熔絲燒通,必須建立相應(yīng)的高壓電路連接, 如圖4 所示.使反熔絲一端接Vpp , 一端接GND , 而這又是通過(guò)打開(kāi)適當(dāng)?shù)臋M向和縱向的傳輸管來(lái)實(shí)現(xiàn)的.在不需要編程的反熔絲的所在的軌道端點(diǎn)都加Vpp/2 , 使得它們兩端的電壓不會(huì)超過(guò)VP/2 , 從而保護(hù)不要編程的反熔絲, 防止其被意外燒通.使用圖5 的編程方式的優(yōu)勢(shì)是一個(gè)坐標(biāo)的橫向或縱向的傳輸管控制線都只需要一根, 而這一根橫向或縱向的線恰恰就是反熔絲在整個(gè)反熔絲陣列中的橫坐標(biāo)和縱坐標(biāo).因此, 可以結(jié)合CAD 流程中產(chǎn)生的工藝映射網(wǎng)表文件, 布局結(jié)果文件, 布線結(jié)果文件, 以及FPGA 的具體電路設(shè)計(jì), 精確的確定反熔絲的橫縱坐標(biāo), 得到橫縱坐標(biāo)后, 再由編程電路進(jìn)行尋址編程川。
在確定下反熔絲的坐標(biāo)位置后, 還需注意到兩種反熔絲的編程方式.第一種為處于橫縱連線交叉處的反熔絲, 負(fù)責(zé)橫向布線資源與縱向布線資源之間的連接. 由于兩種反熔絲的具體編程過(guò)程不同,故位流生成算法在生成反熔絲信息時(shí), 除了坐標(biāo), 還需要提供反熔絲類(lèi)型信息.綜上所述, 設(shè)計(jì)的反熔絲FPGA 位流文件生成算法的輸出文件將采取圖6 的文件格式。
其中,具體的反熔絲信息格式如圖7一幀反熔絲信息長(zhǎng)度為兩個(gè)字節(jié).其中14 位為位置信息, X ,Y 坐標(biāo)各7 位, 表示反熔絲類(lèi)型的TyPe 為兩位,'00'代表交叉類(lèi)型, '11'代表單向類(lèi)型。
為了生成位流文件, 需要收集CAD 流程前幾個(gè)階段的結(jié)果, 生成FPGA 內(nèi)部需要配置的反熔絲集合的相關(guān)信息.因此設(shè)計(jì)的反熔絲FPGA 位流生成算法以工藝映射后的網(wǎng)表和布局布線的結(jié)果文件作為算法輸人.另一方面, 以能夠被編程器識(shí)別的,包含全部反熔絲編程信息的編程文件作為輸出。
對(duì)于反熔絲FPGA邏輯單元來(lái)說(shuō), 其實(shí)現(xiàn)邏輯的方式?jīng)Q定了它可能會(huì)利用VCC , GND 等全局布線資源, 但是全局布線資源是不參與布線的, 所以在布線結(jié)果中, 并不會(huì)出現(xiàn)VCC , GND 與邏輯單元引腳的連接信息.為了解決這一問(wèn)題, 算法還需利用到工藝映射生成的網(wǎng)表文件來(lái)得到邏輯單元引腳與VCC 和GND 之間的連接信息, 再根據(jù)邏輯單元的布局位置信息, 來(lái)對(duì)所需要使用的布線開(kāi)關(guān)進(jìn)行精確的定位。要根據(jù)布線結(jié)果計(jì)算反熔絲信息, 處于不同位置的反熔絲橫縱坐標(biāo)計(jì)算方法往往不同.例如,如果要計(jì)算一個(gè)輸出1/ 0 端口的輸人和一個(gè)普通邏輯單元的輸入, 在得到其目標(biāo)邏輯單元的地址后,由于相對(duì)于左下角的坐標(biāo)原點(diǎn), 其所要經(jīng)過(guò)的橫向和縱向的連線數(shù)目(即坐標(biāo))計(jì)算方法顯然不同, 故而必須對(duì)FPGA 硬件電路做出適當(dāng)?shù)膭澐? 而這個(gè)劃分, 也就成為了位流生成算法的核心。
經(jīng)過(guò)分析, 在圖8 中, 可以將整個(gè)芯片劃分為A , B ,C , D , E 五個(gè)區(qū)域, 在這五個(gè)區(qū)域內(nèi)的所有模塊共享同一種坐標(biāo)計(jì)算方法.現(xiàn)在, 在對(duì)布線結(jié)果進(jìn)行處理時(shí), 首先需要判斷其在芯片中的所屬區(qū)域, 然
后再對(duì)應(yīng)的調(diào)用坐標(biāo)計(jì)算函數(shù)即可.圖9 是細(xì)顆粒反熔絲FPGA 位流生成算法的偽代碼. 圖10 是最
終生成的反熔絲FPGA 位流文件的圖形化顯示, 便于需要時(shí)查看。
?
4 結(jié)束語(yǔ)
在介紹了FPGA CAD 軟件流程后, 通過(guò)具體例子描述了反熔絲FPGA具體結(jié)構(gòu)并展示了如何配置反熔絲FPGA , 然后討論了反熔絲FPGA 的編程方式.最后引出了位流文件的格式和反熔絲單元編程信息格式, 提出并實(shí)現(xiàn)了反熔絲FPGA 位流文件生成算法, 以圖形化形式對(duì)位流文件信息進(jìn)行了顯示.為了完成實(shí)用的反熔絲FPGA CAD系統(tǒng), 對(duì)于位流文件的研究還有很多工作要做.第一, 位流文件還需要根據(jù)具體的反熔絲FPGA 的編程電路的具體實(shí)現(xiàn)而進(jìn)行修改, 以適應(yīng)具體的電路要求.位流文件必須與FPGA 內(nèi)部的解碼編程電路相配套, 共同對(duì)反熔絲進(jìn)行尋址和燒錄.第二, 位流文件的生成還應(yīng)該考慮增強(qiáng)對(duì)反熔絲進(jìn)行容錯(cuò)的能力, 即當(dāng)某個(gè)反熔絲由于工藝等原因失效不能編程后, 配置軟件應(yīng)能動(dòng)態(tài)修改位流文件, 這樣即使反熔絲的良率不能達(dá)到10 % , 電路還是可以在大部分情況下滿足使用要求。
評(píng)論
查看更多