簡談FPGA比特流結(jié)構(gòu)
在現(xiàn)代電子設(shè)計(jì)中,FPGA(現(xiàn)場可編程門陣列)因其高度的靈活性和可配置性而得到廣泛應(yīng)用。FPGA的靈活性主要來源于其內(nèi)部配置存儲器,這些配置信息通常以比特流的形式存儲和加載。本文將深入探討FPGA比特流的結(jié)構(gòu)及其在Vivado開發(fā)環(huán)境中的重要性。
一、FPGA配置基礎(chǔ)
大多數(shù)現(xiàn)代FPGA都是基于SRAM(靜態(tài)隨機(jī)存取存儲器)的,包括Xilinx的Spartan和Virtex系列。在FPGA上電或重新配置期間,比特流從外部非易失性存儲器(如閃存)中讀取,通過FPGA配置控制器的處理,加載到內(nèi)部的配置SRAM中。SRAM保持了配置邏輯、IO、嵌入式存儲器、布線、時(shí)鐘、收發(fā)器和其他FPGA原語等所有的設(shè)計(jì)信息。
二、比特流結(jié)構(gòu)
比特流是一個(gè)包含F(xiàn)PGA完整內(nèi)部配置狀態(tài)的文件,包括布線、邏輯資源和IO設(shè)置。Xilinx FPGA的比特流結(jié)構(gòu)主要包括以下幾個(gè)部分:
填充(Padding):填充數(shù)據(jù)是全0或全1序列,被FPGA配置控制器忽略。填充數(shù)據(jù)用于在非易失性存儲器中分離比特流。一般使用全1填充較為方便,因?yàn)閳?zhí)行擦除后閃存的狀態(tài)也是全1。
同步字(SYNC):同步字是一個(gè)特殊值(0xAA995566),通知FPGA配置控制器處理后續(xù)的比特流數(shù)據(jù)。同步字標(biāo)志著比特流的開始或一個(gè)新的段的開始。
命令(Commands):命令用于讀和寫FPGA配置控制器寄存器。每個(gè)比特流中出現(xiàn)的一些命令,有的是ID-CODE,用于標(biāo)識比特流屬于哪個(gè)FPGA器件。其他命令包括幀地址寄存器(FAR)、幀數(shù)據(jù)寄存器(FDRI)和無操作(NOOP)等。
存儲器幀(Memory Frames):存儲器幀是配置Xilinx FPGA的比特流基本單元。幀的大小與具體的FPGA系列有關(guān),系列不同,幀的大小也不同。例如,Virtex-6器件的幀有2592位。每個(gè)Virtex-6器件具有的幀數(shù)不同,從最小7491(對于LX75T)到最大55548(對于LX550T)。幀用于多個(gè)邏輯片、IO、BRAM及其他FPGA的配置。每幀都有一個(gè)地址,對應(yīng)于FPGA配置空間的位置。
解同步字(DESYNC):解同步字通知FPGA配置控制器比特流的末端位置。解同步字之后,所有的比特流數(shù)據(jù)被忽略,直到遇到下一個(gè)同步字。
三、Vivado中的比特流生成
Vivado是Xilinx提供的一款強(qiáng)大的FPGA開發(fā)軟件,支持從設(shè)計(jì)創(chuàng)建到比特流生成和燒錄的完整流程。在Vivado中,開發(fā)者通過添加設(shè)計(jì)文件、編譯、仿真、布局布線等步驟,最終生成比特流文件。
工程創(chuàng)建與文件添加:在Vivado中創(chuàng)建工程后,開發(fā)者需要添加Verilog設(shè)計(jì)文件,并進(jìn)行編譯。編譯成功后,進(jìn)行功能仿真,確保設(shè)計(jì)沒有語法和功能錯(cuò)誤。
布局布線:在仿真通過后,進(jìn)行布局布線,將具體的輸入、輸出映射到FPGA對應(yīng)的引腳上。這一步驟完成后,Vivado會生成一個(gè)包含F(xiàn)PGA完整配置信息的布局布線后文件。
生成比特流:利用BITGEN工具,Vivado將布局布線后文件轉(zhuǎn)換為比特流文件。BITGEN是一個(gè)高度可配置的工具,具有多個(gè)命令行選項(xiàng),用于確定比特流輸出格式、啟用壓縮處理減少比特流大小、提高FPGA配置速度、使用CRC來確保數(shù)據(jù)完整性、對比特流加密等。
燒錄:最后,通過Vivado的Hardware Manager,將比特流文件燒錄到FPGA中,進(jìn)行實(shí)際測試。
四、比特流的安全性
由于比特流包含了FPGA的完整配置信息,因此其安全性至關(guān)重要。Xilinx FPGA提供了一個(gè)選項(xiàng),用來加密在更高設(shè)計(jì)安全要求情況下的比特流。解密密鑰可以存儲在內(nèi)部的電池備份RAM(BBR)或eFuse中。BBR存儲器是易失性的,需要外部電池,而eFuse則是非易失性的,一旦編程后無法更改。
五、結(jié)論
FPGA比特流結(jié)構(gòu)是FPGA配置和設(shè)計(jì)的核心。了解比特流的組成和生成過程,對于開發(fā)者來說至關(guān)重要。Vivado作為一款強(qiáng)大的FPGA開發(fā)軟件,提供了從設(shè)計(jì)到燒錄的完整流程支持,使得FPGA的開發(fā)更加高效和便捷。隨著技術(shù)的不斷發(fā)展,FPGA的應(yīng)用領(lǐng)域?qū)⒃絹碓綇V泛,比特流結(jié)構(gòu)的研究和優(yōu)化也將持續(xù)進(jìn)行。