FPGA芯片的配置方法


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芯片將按照所配置的功能工作,直到系統掉電。

關于這種配置模式有幾點需要注意:

  1. 保密性較差。通過這種方式配置的FPGA芯片,其破解軟肋主要在其片外的配置芯片上。由于這些基于Flash或EPROM的配置芯片本身的讀寫邏輯早已眾所周知,那么別人只需要將配置芯片中的數據復制到其他配置芯片上,然后再使用相同型號的FPGA產品,即可輕易地在任何地方完成重現。
  2. 配置文件的大小只與FPGA芯片的型號有關,跟設計本身的復雜度無關。例如,無論設計占用了90%的FPGA片內資源,還是占用了1%的FPGA片內資源,配置文件的大小都是一樣的。這是因為同一個型號的FPGA芯片其內部的SRAM大小是一樣的,而配置文件就是整個SRAM中存儲的數據之和,因此無論數據是什么情況,文件大小都是一樣的。
  3. 配置芯片的容量一定要大于配置文件的大小。根據FPGA芯片的規模不同,配置一個FPGA芯片所需的配置文件大小也會有所區別,那么在選擇配置芯片時,一定要注意是否能夠裝得下所需的配置文件。一般來說,選擇容量最大的配置芯片肯定是沒錯的,但是成本也會提高,因此最好還是根據FPGA芯片的具體型號來選擇一款合適的。
  4. 不同配置芯片的配置文件的格式往往是不一樣的,一般不能通用。例如基于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接口實現在線調試和系統編程,適合動態配置和調試。選擇合適的配置模式需要根據具體的應用需求和設計要求來決定。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87086.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過python+openCV實現對圖片中箭頭方向的判斷

在項目中遇到一個需求,需要對圖片中的箭頭方向進行判斷,本來是使用YOLOv8算法來實現的,但是發現YOLO的效果對箭頭的識別效果很差,不管是分類算法還是檢測算法,效果都不理想,因此試一試通過openCV對箭頭方向進行判斷,發現效果還可以。 下面附上完整的代碼和原理。 文章目…

React 第六十六節Router中 StaticRouter使用詳解及注意事項

前言 StaticRouter 是 React Router 為服務器端渲染(SSR)提供的專用路由組件。它允許在服務器環境中處理路由邏輯,確保服務器和客戶端渲染結果一致。下面我將詳細解釋其用途、原理并提供完整的代碼示例。 一、StaticRouter 的核心用途 服務…

嵌入模型與大語言模型的區別:從結構到應用的深度解析

嵌入模型與大語言模型的區別:從結構到應用的深度解析 在當今自然語言處理(NLP)技術蓬勃發展的背景下,嵌入模型(Embedding Model) 和 大語言模型(Large Language Model, LLM) 成為了…

el-date-picker賦值不成功

vue使用element 的時間組件el-date-picker賦值不成功,點擊后才回顯數據 解決: 組件未渲染完成之前賦值了,在onMounted函數內賦值,或者在確保組件已經渲染后賦值

深入淺出JavaScript中的私有變量與特權方法

深入淺出JavaScript中的私有變量與特權方法:封裝的藝術 在JavaScript的開發實踐中,私有變量和特權方法是實現數據封裝和代碼安全性的核心工具。它們不僅幫助我們隱藏敏感數據,還能通過閉包和作用域機制構建更健壯的代碼結構。本文將從基礎概…

ReactNative【實戰系列教程】我的小紅書 2 -- 快捷登錄、手機號密碼登錄

最終效果 技術要點 用戶協議 – 打開本地瀏覽器 點擊后,直接打開本地瀏覽器瀏覽網頁 // 最終需修改為 《用戶協議》 的網址Linking.openURL("https://www.baidu.com");手機號輸入框的 344 展示 onChangeText{(text: string) > {setPhone(formatPhone(…

【趙渝強老師】OceanBase數據庫從零開始:Oracle模式

這里我們來介紹一下新上線的課程《OceanBase數據庫從零開始:Oracle模式》,本門課程共11章。 視頻講解如下 【趙渝強老師】OceanBase從零開始(Oracle模式) 下面詳細介紹一下每一章的主要內容: 第01章-OceanBase的體系…

Flink核心功能與運行流程詳解

目錄 一、背景 二、圖構建 三、任務執行流程(yarn per-job模式) 3.1 Flink組件 3.2 執行流程 四、分布式調度 4.1 TM的slot 4.2 TM的slot的CPU與內存 4.3 節點的部署 4.4 節點的狀態 4.5 節點部署流程 五、數據傳輸 5.1 內存分配 5.2 傳輸…

linux 操作docker的基本命令docker倉庫

基本操作命令 docker run --nametest-host -itd centos7.6 /bin/bash 通過鏡像創建容器 登錄容器 [rootdocker101 ~]# docker exec -it test-host /bin/bash (exec是執行,i是交互式。t叫tty) 或者container id [rootdocker101 ~]# doc…

Netty學習路線圖 - 第四階段:Netty基礎應用

Netty學習路線圖 - 第四階段:Netty基礎應用 📚 Netty學習系列之四 本文是Netty學習路線的第四篇,我們將用大白話講解Netty的基礎應用,帶你從理論走向實踐。 寫在前面 大家好!在前面三篇文章中,我們學習了J…

開源項目推薦:MCP Registry——管理MCP服務器的利器

探索MCP Registry:未來模型上下文協議的核心注冊服務 隨著人工智能技術的迅速發展,機器學習模型的管理和配置變得愈發重要。今天,我們將探索一個頗具潛力的開源項目——MCP Registry。這是一個由社區驅動的注冊服務,專為模型上下文協議(Model Context Protocol,簡稱MCP)…

Spring Boot 統一功能處理:攔截器詳解

一、攔截器核心概念 作用:攔截器是 Spring 框架提供的核心功能,用于在請求處理前后執行預定義邏輯,實現統一處理(如登錄校驗、日志記錄等)。 核心方法: public class LoginInterceptor implements Handl…

在docker容器中安裝docker服務,基于fuse-overlayfs進行overlay掛載,而不是vfs

1、docker 安裝 正常安裝docker軟件,運行docker時,會提示:No docker socket 服務 2、啟動docker服務(包含守護進程) systemctl start docker #dockerd &if ! ps aux | grep -v grep | grep -q "dockerd&qu…

虛擬機配置注意事項

一.VM大部分產品免費,遇到付費的要斟酌一下 在小編之前的文章中有簡單下載VM的教程VMwareWorkstPro安裝-CSDN博客 二.配置過程中的設置大部分都可以在配置完成后更改 例如下圖設備所涉及到的,都是可以更改設置的 三.電腦關機時,要注意先把…

openGL+QT快速學習和入門案列

openGLQT快速學習和入門案列

深度學習03 人工神經網絡ANN

什么是神經網絡 人工神經網絡( Artificial Neural Network, 簡寫為ANN)也簡稱為神經網絡(NN),是一種模仿生物神經網絡結構和功能的計算模型,人腦可以看做是一個生物神經網絡,由眾多的神經元連接而成.各個神經元傳遞復…

Linux中部署Jenkins保姆間教程

本文將以docker的方式,講述如何部署Jenkins 一、拉取Jenkins鏡像 1.1 最新版Jenkins介紹 最新版Jenkins地址:Download and deploy 當前最新版的如下圖所示: 1.2 各版本支持的JDK版本 地址如下:Java Support Policy 如果你安裝…

【軟考中級·軟件評測師】下午題·面向對象測試之架構考點全析:分層、分布式、微內核與事件驅動

一、分層架構:分層獨立與質量特性的雙向約束 分層架構通過“垂直分層(表示層→服務層→業務邏輯層→數據層)”實現職責隔離,是Web應用、企業級系統的主流架構模式。 1. 父類成員函數重測場景 子類繼承父類時,若父類…

C++ 快速回顧(五)

C 快速回顧(五) 前言一、Dll和Lib的區別區別在開發中使用 二、封裝并使用C庫1.封裝庫2.使用庫 三、封裝并使用C庫1.封裝庫2.使用庫 前言 用于快速回顧之前遺漏或者補充C知識 一、Dll和Lib的區別 靜態庫(LIB)在編譯時鏈接&#…

【ARM】解決ArmDS的工程沒有生成Map文件的問題

1、 文檔目標 在嵌入式開發過程中,使用Arm Development Studio(簡稱ArmDS)進行項目構建時,Map文件的生成是調試和分析代碼的重要環節。Map文件不僅記錄了程序中各個段(sections)的內存分布情況&#xff0c…