徐陽
(寧省盤錦市職業(yè)技術(shù)學(xué)院,遼寧 盤錦 124010)
FPGA是一類高集成度的可編程邏輯器件,起源于美國(guó)的Xilinx公司,在這二十年的發(fā)展過程中,F(xiàn)PGA的硬件體系結(jié)構(gòu)和軟件開發(fā)工具都在不斷的完善,日趨成熟。FPGA結(jié)合了微電子技術(shù)、電路技術(shù)、EDA技術(shù),使設(shè)計(jì)者可以集中精力進(jìn)行所需邏輯功能的設(shè)計(jì),縮短設(shè)計(jì)周期,提高設(shè)計(jì)質(zhì)量。
設(shè)計(jì)輸入就是指設(shè)計(jì)人員將所設(shè)計(jì)的系統(tǒng)或電路以開發(fā)軟件要求的某種形式表示出來,并輸入計(jì)算機(jī)的過程。
這里芯片數(shù)據(jù)庫的設(shè)計(jì)目標(biāo)是做成支持把硬件部分設(shè)計(jì)的結(jié)構(gòu)轉(zhuǎn)換成軟件部分可識(shí)別的格式,提供軟件設(shè)計(jì)其它步驟所需要的數(shù)據(jù),從而進(jìn)行軟件部分的處理。與一般意義上的數(shù)據(jù)庫不同,芯片數(shù)據(jù)庫還要考慮如何表示FPGA芯片的內(nèi)部結(jié)構(gòu)。
邏輯綜合,是將較高抽象層次的描述自動(dòng)轉(zhuǎn)換到較低層次描述的一種方法。這里是指將RTL級(jí)的描述轉(zhuǎn)換為門級(jí)網(wǎng)表的過程。邏輯綜合要求的輸入除RTL描述的程序模塊或者原理圖文件或波形文件外,還需要另外兩個(gè)輸入文件,一個(gè)是綜合工具支持的工藝庫,這些工藝庫包含一些標(biāo)準(zhǔn)的單元,在綜合時(shí),綜合工具會(huì)將RTL級(jí)代碼描述的設(shè)計(jì)用工藝庫中的標(biāo)準(zhǔn)單元轉(zhuǎn)化為邏輯電路;另一種輸入是約束條件,用于決定綜合過程中的邏輯優(yōu)化方法,約束條件一般包含時(shí)序、面積、速度、功耗、負(fù)載要求和優(yōu)化方法等,甚至還包含綜合時(shí)需要注意的設(shè)計(jì)規(guī)則。
根據(jù)綜合生成的網(wǎng)表,將用戶設(shè)計(jì)嵌入FPGA芯片。這里的嵌入,實(shí)際是在前文所提的芯片數(shù)據(jù)庫上進(jìn)行的。工藝映射的結(jié)果是得到原子(ATOM)網(wǎng)表,即包含多個(gè)查找表的等效電路的描述。
將查找表裝入邏輯塊,得到邏輯塊網(wǎng)表,通常一個(gè)邏輯塊內(nèi)包含有幾個(gè)查找表和寄存器。布局算法決定電路中不同的邏輯塊在FPGA芯片中的分布,優(yōu)化的結(jié)果應(yīng)該是,相互關(guān)聯(lián)的邏輯塊放在一起,這樣可以盡可能的減少和縮短連線,在布局中也應(yīng)考慮連線分布密度的平衡和獲得最快的電路速度。布局之后將得到布線所需的所有通路信息。
一旦確定了邏輯塊的布局,接下來就應(yīng)該確定邏輯塊之間的選擇連線和開關(guān)。將目標(biāo)芯片的布線結(jié)構(gòu)等效為一個(gè)有向圖,在這樣一個(gè)布線資源圖中,每一條線和每個(gè)邏輯塊的引腳都是一個(gè)節(jié)點(diǎn),潛在的連接是邊,相應(yīng)的問題就轉(zhuǎn)化為尋找布線資源圖的最短路徑。
目的是產(chǎn)生目標(biāo)位流文件bit-stream,匯編模塊將適配過程的器件邏輯單元和引腳分配信息轉(zhuǎn)換為器件的編程圖像,并將這些圖像以目標(biāo)器件的編程對(duì)象文件或SRAM對(duì)象文件的形式保存為編程文件,以便編程器使用該文件對(duì)器件進(jìn)行編程配置。在匯編過程中,也可以進(jìn)行時(shí)序分析。
器件編程也可以稱為配置,就是將編程數(shù)據(jù)下載到相應(yīng)的FPGA器件中去,進(jìn)行真正的芯片測(cè)試。
FPGA支持軟件設(shè)計(jì)流程中的匯編模塊的目的是產(chǎn)生目標(biāo)位流文件bit-stream。匯編模塊將適配過程的器件邏輯單元和引腳分配信息轉(zhuǎn)換為器件的編程圖像,并將這些圖像以目標(biāo)器件的編程對(duì)象文件或者SRAM對(duì)象文件的形式保存為編程文件,以便編程器使用該文件對(duì)器件進(jìn)行編程配置。對(duì)FPGA的相關(guān)配置文件加以簡(jiǎn)單介紹。
a.sof文件:如果選擇模式為JTAG或者PS方式,使用Altera的下載電纜對(duì)FPGA進(jìn)行配置時(shí),將用到sof文件。該文件是QuartusⅡ自動(dòng)產(chǎn)生的。在使用sof文件配置時(shí),QuartusⅡ下載工具將控制整個(gè)配置的順序,并向配置數(shù)據(jù)流內(nèi)自動(dòng)插入合適的頭信息。其他的配置文件類型都是從相應(yīng)的sof文件產(chǎn)生出來的。
b.pof文件:是用來對(duì)各種Altera配置芯片進(jìn)行編程的文件。要注意的是,需要在QuartusⅡ中設(shè)置編程器件類型,才可以生成該類型的pof文件。對(duì)于一些小的FPGA,多個(gè)FPGA的sof文件可以放到一個(gè)pof文件內(nèi),燒制到一個(gè)配置器件中;而對(duì)一些較大的FPGA,如果一個(gè)配置器件不夠,可以使用多個(gè)配置器件。
c.rbf文件:是二進(jìn)制的配置文件,只包含配置數(shù)據(jù)的內(nèi)容。通常被用在外部的智能配置設(shè)備上,如微處理器。例如,一種典型的用法是將rbf文件通過其它工具轉(zhuǎn)換成十六進(jìn)制的數(shù)組文件,編譯到微處理器的執(zhí)行代碼中,由微處理器將數(shù)據(jù)加載到FPGA中。當(dāng)然,也可以由處理器在配置過程中完成實(shí)時(shí)的轉(zhuǎn)換工作。d.ttf文件:與rbf文件內(nèi)容一樣的ASCII碼格式文件,在每個(gè)配置數(shù)據(jù)字節(jié)之間用逗號(hào)隔開。
e.rpd文件:用外部編程設(shè)備對(duì)AS串行配置芯片進(jìn)行在系統(tǒng)編程的文件。這個(gè)文件是由pof文件轉(zhuǎn)換而來的,選擇不同的AS配置芯片,轉(zhuǎn)換得到的rpd文件大小都不一樣。
f.jam文件:是一種以Jam器件編程語言描述的ASCII碼文件。它包含了對(duì)JTAG鏈中一個(gè)或多個(gè)FPGA進(jìn)行編程、驗(yàn)證和空白校驗(yàn)的數(shù)據(jù)信息。用戶可以在QuartusⅡ的編程器或微處理器中使用jam文件,并可以用jam文件對(duì)所有QuartusⅡ支持的器件進(jìn)行配置。甚至JTAG鏈上還可以包含非Altera的器件。e.hex文件:由Intel公司提出的配置文件格式。它是一個(gè)ASCII碼文本文件,以Intel的十六進(jìn)制格式保存物理程序存儲(chǔ)器中的目標(biāo)代碼的映像,可以用在外部的配置設(shè)備上。hex文件中,每一行包含一個(gè)hex記錄,這些記錄由對(duì)應(yīng)機(jī)器語言碼和/或常量數(shù)據(jù)的十六進(jìn)制編碼數(shù)字組成。
這個(gè)過程的目的是將編程文件下載到FPGA芯片,進(jìn)行真正的芯片測(cè)試。與CPLD不同,F(xiàn)PGA是基于門陣列方式為用戶提供可編程資源的,其內(nèi)部邏輯結(jié)構(gòu)的形成是由配置數(shù)據(jù)決定的。這些配置數(shù)據(jù)通過外部控制電路或微處理器加載到FPGA內(nèi)部的SRAM中,由于SRAM的易失性,每次上電時(shí),都必須對(duì)FPGA進(jìn)行重新配置,在不掉電的情況下,這些邏輯結(jié)構(gòu)將會(huì)始終被保持,從而完成用戶編程所要實(shí)現(xiàn)的功能。器件編程需要滿足一定的條件,如編程電壓,編程時(shí)序和編程算法等。一次性編程的FPGA需要專用的編程器完成器件的編程工作,基于SRAM的FPGA可以由EPROM或其他存儲(chǔ)體進(jìn)行配置。在系統(tǒng)的可編程器件則不需要專門的編程器,只要1根下載編程電纜就可以了。在系統(tǒng)編程是指對(duì)器件、電路板或整個(gè)電子系統(tǒng)的邏輯功能可隨時(shí)進(jìn)行修改或重構(gòu)的能力。
FPGA的配置方式分為主動(dòng)式和被動(dòng)式,數(shù)據(jù)寬度有8位并行方式和串行方式兩種。在主動(dòng)模式下,由FPGA器件引導(dǎo)配置操作過程,F(xiàn)PGA在上電后,自動(dòng)將配置數(shù)據(jù)從相應(yīng)的外存儲(chǔ)器讀入到SRAM中,實(shí)現(xiàn)內(nèi)部結(jié)構(gòu)映射。這種配置方式通常用于SRAM類型的可編程邏輯器件芯片。目前大多數(shù)FPGA都是基于SRAM工藝的,而SRAM工藝的芯片在掉電后信息就會(huì)丟失,一定需要外加一片專用配置芯片,在上電的時(shí)候,由這個(gè)專用配置芯片把數(shù)據(jù)加載到SRAM中,然后FPGA就可以正常工作,由于配置時(shí)間很短,不會(huì)影響系統(tǒng)正常工作。也有少數(shù)FPGA采用反熔絲或Flash工藝,對(duì)這種FPGA就不需要外加專用的配置芯片而在被動(dòng)模式下,F(xiàn)PGA則作為從屬器件,通常由控制器或計(jì)算機(jī)控制配置的整個(gè)過程,實(shí)現(xiàn)配置數(shù)據(jù)的下載。這種配置方式常用于E2PROM類型的可編程邏輯器件芯片的編程,編程數(shù)據(jù)長(zhǎng)期不會(huì)消失。FPGA的配置引腳可分為兩類:專用配置引腳和非專用配置引腳。專用配置引腳只有在配置時(shí)起作用,而非專用配置引腳在配置完成后則可以作為普通的I/O口使用。專用的配置引腳有:配置模式腳 M2、M1、M0;配置時(shí)鐘CCLK;配置邏輯異步復(fù)位PROG,啟動(dòng)控制DONE 及邊界掃描 TDI、TDO、TMS、TCK。非專用配置引腳有Din、D0~D7、CS、WRITE、BUSY、INIT。在不同的配置模式下,配置時(shí)鐘CCLK可由FPGA內(nèi)部產(chǎn)生,也可以由外部控制電路提供。FPGA共有四種配置模式:從串模式,主串模式,從并模式以及邊界掃描模式。具體的配置模式由模式選擇引腳M0、M1、M2決定。
[1]段桂江,保質(zhì)設(shè)計(jì)的集成化過程與方法模型研究,中國(guó)機(jī)械工程,2005.
[2]王美清,集成化設(shè)計(jì)質(zhì)量管理平臺(tái),航空制造技術(shù),2004.