FPGA芯片的配置方法
文章目錄
- FPGA芯片的配置方法
- 1. FPGA配置概述
- 2. 主動配置模式
- 3. 被動配置模式
- 4. JTAG配置模式
- 5. 總結
1. FPGA配置概述
當我們在PC機上的FPGA軟件集成開發環境中完成我們的設計后,必須通過某種形式將其映射到FPGA芯片硬件中,這樣FPGA芯片才能具有我們所期望的功能,而這一過程稱為FPGA芯片的配置。
對于基于Flash或者反熔絲工藝的FPGA,配置的方法其實比較單一,這里就不多討論。而目前主流的FPGA芯片還都是基于SRAM工藝的,這種FPGA芯片一般都不能單獨使用,這是因為基于SRAM工藝的FPGA芯片不具有配置保持功能,每當系統掉電后,SRAM中的配置數據就會全部丟失,因此下次上電后便重新變成一個沒有任何功能的空白芯片。因此,基于SRAM工藝的FPGA芯片配置的方式和方法就比較多,這也是本節介紹的重點。注意,在本節的后續介紹中,如無特別說明,FPGA芯片都泛指這種基于SRAM工藝的芯片。針對這類FPGA芯片,配置的方法主要有三種:主動配置模式、被動配置模式和JTAG配置模式。
2. 主動配置模式
主動配置模式通俗地講就是FPGA芯片自己配置自己,這時候需要用到一個片外的存儲芯片作為“道具”。該芯片一般是由Flash或者EPROM等掉電后可以繼續保存數據的存儲介質構成的,學名叫做配置芯片。由于FPGA芯片再次上電后就會把之前發生的一切忘得一干二凈,所以我們找來一塊Flash芯片作為它的“大腦”,并提前在該芯片中存儲好FPGA芯片的配置信息。通過正確的布線連接和外圍電路配合,那么等到FPGA芯片上電后,就會主動地從該配置芯片中將配置數據讀出并存儲于自己的SRAM中,于是FPGA芯片就重新具有了相應的邏輯功能。
也許你會疑惑,FPGA再次上電后不是什么都不記得了么,那它是怎么完成主動對配置芯片中的數據讀取的呢?這是因為FPGA芯片中有一套專門用于主動配置模式的電路,該電路的一個主要功能元件就是一個晶振,該晶振的精度不高,但是用來產生頻率要求并不高的主動配置工作時鐘還是綽綽有余的。系統上電后,該晶振電路就會產生時鐘信號,該時鐘信號同時供給FPGA內部和外部的配置芯片,通過FPGA內部預置的讀取邏輯從配置芯片中讀取數據并同時完成FPGA內部的配置。當FPGA的配置完成后,關閉相應功能管腳和晶振電路,FPGA芯片將按照所配置的功能工作,直到系統掉電。
關于這種配置模式有幾點需要注意:
- 保密性較差。通過這種方式配置的FPGA芯片,其破解軟肋主要在其片外的配置芯片上。由于這些基于Flash或EPROM的配置芯片本身的讀寫邏輯早已眾所周知,那么別人只需要將配置芯片中的數據復制到其他配置芯片上,然后再使用相同型號的FPGA產品,即可輕易地在任何地方完成重現。
- 配置文件的大小只與FPGA芯片的型號有關,跟設計本身的復雜度無關。例如,無論設計占用了90%的FPGA片內資源,還是占用了1%的FPGA片內資源,配置文件的大小都是一樣的。這是因為同一個型號的FPGA芯片其內部的SRAM大小是一樣的,而配置文件就是整個SRAM中存儲的數據之和,因此無論數據是什么情況,文件大小都是一樣的。
- 配置芯片的容量一定要大于配置文件的大小。根據FPGA芯片的規模不同,配置一個FPGA芯片所需的配置文件大小也會有所區別,那么在選擇配置芯片時,一定要注意是否能夠裝得下所需的配置文件。一般來說,選擇容量最大的配置芯片肯定是沒錯的,但是成本也會提高,因此最好還是根據FPGA芯片的具體型號來選擇一款合適的。
- 不同配置芯片的配置文件的格式往往是不一樣的,一般不能通用。例如基于Flash的配置芯片和基于EPROM芯片的配置文件的后綴名是不同的,需要根據實際情況在集成開發環境中生成。除此以外,主動配置模式使用的配置文件和被動配置模式以及JTAG配置模式使用的配置文件的格式也可能不同。
3. 被動配置模式
被動配置模式通俗地講就是FPGA被其他設備配置,這里的設備可以是任意一款微處理器芯片甚至CPLD,只要能夠產生滿足FPGA配置要求的控制信號和數據的模塊都行。雖然每次系統重新上電后,FPGA又變成一片空白,但由于微處理器芯片上電后會自動重新開始執行程序,因此,可以將對FPGA的配置信息保存在微處理器的存儲器,并按照FPGA芯片被動配置的時序要求將配置行為代碼加入到微處理器的啟動程序中,再通過適當的線路連接和外圍電路配合,即可完成對FPGA芯片的上電后配置。由于FPGA芯片在這一配置過程中完全處于被動地位,所以也叫被動配置模式。
相對于主動配置模式而言,被動配置模式的保密性較好,因為要想破解這種配置模式下的FPGA邏輯功能,要么去破解相應的微處理器代碼,要么去實時監控、記錄并分析微處理器和FPGA芯片之間的通信波形然后想辦法模仿之,都比較費勁。除此以外,由于此時的配置是由微處理器控制的,那么微處理器完全可以保存多個不同功能對應的配置文件,然后根據一些選擇信息來決定每次到底使用哪一個配置文件來對FPGA芯片進行程序加載。這樣可以靈活地實現不同場合對FPGA功能的不同要求。
4. JTAG配置模式
JTAG,英文全稱Joint Test Action Group,翻譯成中文即聯合測試行為組織。它有兩大功能:電路的邊界掃描測試和可編程芯片的在線系統編程。
邊界掃描測試發展于上個世紀90年代,隨著大規模集成電路的出現,印制電路板制造工藝向小、微、薄發展。由于芯片的引腳多,元器件體積小,板的密度特別大,根本沒有辦法進行傳統的下探針測試。于是一種新的測試技術產生了,聯合測試行為組織,即JTAG,定義這種新的測試方法,并命名為邊界掃描測試。邊界掃描測試是在20世紀80年代中期作為解決PCB物理訪問問題的JTAG接口發展起來的,它在芯片級層次上嵌入測試電路,以形成全面的電路板級測試協議。因此FPGA芯片可以利用它上面的JTAG接口,來對芯片進行一些在線調試,例如Altera公司的SignalTap工具,或者Xilinx的ChipScope工具,都是利用JTAG接口對FPGA芯片進行在線調試查錯的。
除了完成邊界掃描測試外,FPGA芯片上的JTAG接口的另一個重要功能就是對FPGA芯片進行非常便捷的在線系統編程。相比于主動配置模式和被動配置模式,只要系統已經上電,JTAG配置模式可以在任意時刻對FPGA芯片進行重配置,而此時的配置主動方一般是PC機上的集成軟件開發環境。開發環境通過PC機上的串口、并口、USB等接口與FPGA芯片上的JTAG接口相連,然后按照相應的配置時序完成對FPGA芯片的配置。
5. 總結
FPGA芯片的配置方法主要包括主動配置模式、被動配置模式和JTAG配置模式。主動配置模式通過片外的Flash或EPROM存儲配置信息,由FPGA芯片主動讀取配置數據,適合快速啟動但保密性較差;被動配置模式由微處理器或其他設備控制配置過程,保密性較好且靈活度高;JTAG配置模式則利用JTAG接口實現在線調試和系統編程,適合動態配置和調試。選擇合適的配置模式需要根據具體的應用需求和設計要求來決定。