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