《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > FPGA教學——拆解FPGA芯片,帶你深入了解其原理

FPGA教學——拆解FPGA芯片,帶你深入了解其原理

2022-11-07
來源:電子技術應用專欄作家 FPGA開源工作室
關鍵詞: FPGA 芯片 數字電路

  現場可編程門陣列(FPGA)可以實現任意數字邏輯,從微處理器到視頻生成器或加密礦機,一應俱全。FPGA由許多邏輯模塊組成,每個邏輯模塊通常由觸發器和邏輯功能以及連接邏輯模塊的路由網絡組成。FPGA的特殊之處在于它是可編程的硬件:您可以重新定義每個邏輯塊及其之間的連接,用來構建復雜的數字電路,而無需物理上連接各個門和觸發器,也不必花費設計專用集成電路的費用。

微信圖片_20221107155135.png

  內部裸片顯微照片

  FPGA是由Ross Freeman發明的,他在1984年共同創立了Xilinx,并推出了第一款FPGA——XC2064。這種FPGA比現代FPGA簡單得多,它只包含64個邏輯塊。而現代FPGA中的邏輯塊有幾千個或數百萬個,但它導致了目前價值數十億美元的FPGA產業。由于其重要性,XC2064被列入芯片名人堂。在這篇文章中,我們對Xilinx的XC2064進行了逆向工程,解釋了它的內部電路(上圖)以及 "比特流 "是如何對它進行編程的。

微信截圖_20221107155825.png

  第一款FPGA芯片-Xilinx XC2064

  如今,FPGA是采用Verilog或VHDL之類的硬件描述語言編程的,但當時Xilinx提供了他們自己的開發軟件XACT,運行在MS-DOS操作系統之下,價格高達12,000美元。XACT自然無法與現在的FPGA開發工具相比,XACT通過用戶定義了每個邏輯塊的功能(如下面的屏截圖所示)以及邏輯塊之間的連接,對連接進行布線連接,并生成可加載到FPGA中的比特流文件。

微信截圖_20221107155848.png

  XACT的屏幕截圖

  兩個查找表F和G在屏幕底部實現邏輯運算,上面部分顯示該邏輯的卡諾圖

  通過位流(具有專有格式的位序列)配置FPGA。如果您查看XC2064的比特流(如下所示),那是令人費解的混合模式,這些模式不規則地重復,并散布在比特流中。XACT中的功能定義與位流中的數據之間沒有明確的聯系。但是,研究FPGA的物理電路可以揭示比特流數據的結構,并且可以理解。

  通過位流(具有專有格式的位序列)配置FPGA。如果您查看XC2064的比特流(如下所示),那是令人費解的混合模式,這些模式不規則地重復,并散布在比特流中。XACT中的函數定義與位流中的數據之間沒有明確的聯系。但是,研究FPGA的物理電路可以揭示比特流數據的結構,并且可以理解。

微信截圖_20221107160158.png

  XC2064的比特流

  FPGA如何工作

  下圖來自原始FPGA專利,顯示了FPGA的基本結構。在此簡化的FPGA中,有9個邏輯塊(藍色)和12個I/O引腳。互連網絡將組件連接在一起。通過設置互連上的開關(對角線),邏輯塊相互連接并連接到I/O引腳。每個邏輯元素都可以使用所需的邏輯功能進行編程。其結果是一個高度可編程的芯片,可以實現任何適合可用的電路。

微信截圖_20221107160225.png

  FPGA專利顯示通過互連連接的邏輯塊(LE)

  CLB:可配置邏輯塊

  雖然上圖顯示了九個可配置邏輯塊(CLB),但XC2064有64個CLB。下圖顯示了每個CLB的結構。每個CLB有四個輸入(A、B、C、D)和兩個輸出(X和Y)。兩者之間是組合邏輯,可以使用任何所需的邏輯功能進行編程。CLB還包含一個觸發器,允許FPGA實現計數器、移位寄存器、狀態機和其他有狀態電路。梯形是多路復用器,可以編程通過其任何輸入。多路復用器允許為特定任務配置CLB,為觸發器控件和輸出選擇所需的信號。

微信截圖_20221107160729.png

  XC2064中的可配置邏輯塊

  那么,組合邏輯如何實現任意邏輯功能?它會采用與門、或門、異或門等邏輯嗎?

  不,它使用一種稱為查找表(LUT)的巧妙技巧,實際上它包含的是邏輯功能的真值表。例如,三個變量的功能由其真值表中的8行定義。LUT由8位內存以及多路復用電路組成,以選擇正確的值。通過將值存儲在這8位內存中,可以實現任何3輸入邏輯功能。

  互 連

  FPGA的第二個關鍵部分是互連,可以對其進行編程以不同方式連接CLB。互連相當復雜,但是粗略的描述是每個CLB之間有幾個水平和垂直線段。CLB互連點允許在水平線和垂直線之間建立連接,從而可以創建任意路徑。

  更復雜的連接通過“交換矩陣”(switchmatrices)完成。每個開關矩陣都有8個引腳,可以(幾乎)任意方式將它們連接在一起。下圖顯示了XC2064的互連結構,提供了到邏輯塊(青色)和I / O引腳(黃色)的連接。該圖顯示了路由功能的特寫。綠色框是8針開關矩陣,而小方塊是可編程的互連點。

微信截圖_20221107160803.png

  XC2064 FPGA具有一個8x8的CLB網格

  每個CLB都有從AA到HH的字母名稱。互連可以將例如塊DC的輸出連接到塊DE的輸入,如下所示。紅線表示路由路徑,紅色小方塊表示已激活的路由點。離開模塊DC后,信號由第一個路由點定向到8針開關(綠色),該信號將其引導到另外兩個路由點和另一個8針開關。(未顯示未使用的垂直和水平路徑。)請注意,布線相當復雜;即使是這條短路徑,也使用了四個路由點和兩個開關。

微信截圖_20221107161329.png

  從塊DC的輸出路由到塊DE的信號示例

  下面的屏幕截圖顯示了 XACT 程序中的路由外觀。黃線指示邏輯塊之間的路由。隨著信號的加入,挑戰在于如何有效地路由而不使路徑發生沖突。XACT 軟件包執行自動路由,但也可以手動編輯路由。

微信截圖_20221107161358.png

  XACT程序的屏幕截圖

  此MS-DOS程序通過鍵盤和鼠標進行控制

  Implementation

  本文的其余部分討論了XC2064的內部電路,從裸片照片中的反向工程。

  下圖顯示了XC2064芯片的布局。FPGA的主要部分是8×8的網格。每個圖塊包含一個邏輯塊和相鄰的路由電路。盡管圖片顯示將邏輯塊(CLB)顯示為與圍繞它們的路由不同的實體,但這并不是  FPGA的實現方式。取而代之的是,每個邏輯塊和相鄰路由都實現為單個實體,即圖塊。(具體來說,圖塊包括每個CLB上方和左側的路由。)

、.png

  XC2064芯片的布局

  I/O模塊圍繞集成電路的邊緣提供與外界的通信。它們連接到小的綠色方形焊盤,該焊盤連接到芯片的外部引腳。裸片被緩沖區(綠色)劃分:兩個垂直和兩個水平。這些緩沖器可放大在電路中傳播很長距離的信號,從而減少延遲。垂直移位寄存器(粉紅色)和水平列選擇電路(藍色)用于將比特流加載到芯片中,如下所述。

  Tile的內部結構

  下圖顯示了XC2064中單個Tile的布局;如上圖所示,該芯片包含64個這樣的Tile擠在一起。每個Tile約有40%的面積被保存配置位的內存單元(綠色)所占據。頂部三分之一處通過兩個交換矩陣和許多單獨的路由交換處理互連路由,下面是邏輯塊。邏輯塊的關鍵部分是輸入的多路復用器、觸發器和查找表(LUT)。每個塊通過垂直和水平布線連接到相鄰的塊,以實現互連,電源和接地。配置數據位被水平地饋送到存儲單元,而垂直信號選擇要加載的存儲單元的特定列。

微信截圖_20221107161625.png

  XC2064中單個Tile的布局

  晶體管

  FPGA由CMOS邏輯實現,該邏輯由NMOS和PMOS晶體管構建。晶體管在FPGA中具有兩個主要作用。首先,可以將它們組合以形成邏輯門。其次,晶體管被用作信號通過的開關,例如以控制路由。在此作用下,該晶體管稱為傳輸晶體管。

微信截圖_20221107161701.png

  MOSFET的結構

  下面的裸片照片特寫顯示了在顯微鏡下晶體管的外觀。多晶硅柵極是兩個摻雜硅區域之間的蛇形線。

微信截圖_20221107161720.png

  比特流和配置存儲

  XC2064 中的配置信息存儲在配置內存單元中。FPGA 的內存不是使用 RAM 塊進行存儲,而是分布在 160×71 網格中的芯片上,確保每個位都位于它控制電路旁邊。下圖顯示了配置比特流如何加載到 FPGA 中。比特流被送入從芯片中心(粉紅色)向下運行的移位寄存器中。將 71 位加載到移位寄存器中后,列選擇電路(藍色)將選擇特定的內存列,并并行加載到此列中。然后,將接下來的 71 位加載到移位寄存器中,左側的下一列將成為所選列。此過程將重復 FPGA 的所有 160 列,將整個比特流加載到芯片中。使用移位寄存器可避免大量內存尋址電路。

微信截圖_20221107161745.png

  比特流如何加載到FPGA中

  重要的是,比特流的分布與文件中的分布完全相同:比特流文件中的比特布局與芯片上的物理布局匹配。如下所示,每個位都存儲在FPGA控制電路的旁邊。因此,比特流文件格式直接由硬件電路的布局確定。例如,當由于緩沖電路而在FPGA切片之間存在間隙時,相同的間隙會出現在位流中。比特流的內容不是圍繞字段,數據表或配置塊之類的軟件概念來設計的。了解比特流取決于從硬件角度而非軟件角度進行思考。

  如下所示實現配置存儲器的每一位。每個存儲單元均包含兩個以環路連接的反相器。該電路具有兩個穩定狀態,因此可以存儲一個位:頂部反相器為1,底部反相器為0,反之亦然。為了寫入該單元,左側的傳輸晶體管被激活,使數據信號通過。數據線上的信號只會使逆變器過載,從而寫入所需的位。(您也可以使用相同的路徑從FPGA中讀取配置數據。)Q和反相Q輸出控制FPGA中所需的功能,例如關閉路由連接,為查找表提供位,或控制鎖存器電路。(在大多數情況下,僅使用Q輸出。)

微信截圖_20221107162047.png

  下圖顯示了存儲單元的物理布局。左圖顯示了八個存儲單元,其中一個單元高亮顯示。每條水平數據線饋入該行中的所有存儲單元。每列選擇行選擇該列中的所有存儲單元以進行寫入。中間照片放大了一個存儲單元的硅和多晶硅晶體管。

微信截圖_20221107162104.png

  存儲單元的物理布局

  查找表多路復用器

  如前所述,FPGA通過使用查找表來實現任意邏輯功能。下圖顯示了如何在XC2064中實現查找表。左側的八個值存儲在八個存儲單元中。四個多路復用器根據A 輸入值選擇每對值中的一個  。如果  A 為0,則選擇最高值;如果  A 為1,則選擇最低值。接下來,較大的多路復用器根據B 和  選擇四個值之一  C。在這種情況下,結果是所需的值  A XOR B XOR C。通過在查找表中放置不同的值,可以根據需要更改邏輯功能。

微信截圖_20221107162251.png

  使用查找表實現XOR

  每個多路復用器都是通過晶體管來實現的。根據控制信號,其中一個傳遞晶體管被激活,將該輸入傳遞到輸出。下圖顯示了LUT電路的一部分,多路復用了其中的兩個比特。右邊是兩個存儲器單元。每一個比特都要經過一個反相器進行放大,然后經過中間的多路復用器的傳遞晶體管,選擇其中的一個比特。

微信截圖_20221107162312.png

  LUT實現中的電路特寫

  鎖存器

  每個CLB包含一個觸發器,允許FPGA實現鎖存器,狀態機和其他有狀態電路。下圖顯示了觸發器的實現。它使用主/輔助設計。當時鐘為低電平時,第一個多路復用器讓數據進入主鎖存器。當時鐘變高時,多路復用器關閉第一個鎖存器的環路,并保持該值。(該位通過“或”門,“與非”門和反相器兩次反轉,因此保持不變。)同時,當時鐘變高時,輔助鎖存器的多路復用器從第一個鎖存器接收該位(請注意,時鐘已反轉)。該值成為觸發器的輸出。當時鐘變低時,次級的多路復用器關閉環路,從而鎖存該位。因此,觸發器是邊緣敏感的,在時鐘的上升沿鎖存該值。置位和復位線強制觸發器為高電平或低電平。

微信截圖_20221107162401.png

  8-pin交換矩陣

  交換矩陣是一個重要的路由元件。每個開關有八個"引腳"(每側兩個),幾乎可以連接任意引腳組合在一起。這允許信號比單個路由節點更靈活地轉動、拆分或交叉。下圖顯示了四個 CLB (cyan)之間的路由網絡的一部分。交換矩陣(綠色)可與右側連接的任意組合連接。請注意,每個引腳可以連接到其他 7 個引腳中的 5 個。例如,引腳 1 可以連接到引腳 3,但無法連接到引腳 2 或 4。這使得矩陣幾乎是一個橫欄,有20個潛在的連接,而不是28個。

微信截圖_20221107162428.png

  開關矩陣由一排傳輸晶體管實現,該傳輸晶體管由上方和下方的存儲單元控制。晶體管的兩側是可以通過該晶體管連接的兩個開關矩陣引腳。因此,每個開關矩陣具有20個相關聯的控制位。

  每個圖塊兩個矩陣,即每個圖塊產生40個控制位。下圖顯示了其中一個存儲單元,該存儲單元連接到下面的傳輸晶體管的長彎曲柵極。該晶體管控制引腳5和引腳1之間的連接。

微信截圖_20221107162449.png

  其中一個存儲單元

  因此,與該存儲單元相對應的位流中的位控制引腳5和引腳1之間的開關連接。同樣,其他存儲單元及其相關晶體管控制其他開關連接。請注意,這些連接的順序不遵循特定的模式。因此,位流位和開關引腳之間的映射是隨機的。

  輸入路由

  CLB的輸入在位流中使用不同的編碼方案,這由硬件實現方式解釋。在下圖中,八個圓圈的節點是CLB框DD的潛在輸入。

微信截圖_20221107162516.png

  CLB的輸入在位流中使用的編碼方案示意圖

  最多只能將一個節點配置為輸入,因為將兩個信號連接到同一輸入將使它們短路。使用多路復用器選擇所需的輸入。一個簡單的解決方案是使用8路多路復用器,其中3個控制位選擇8個信號之一。另一個簡單的解決方案是使用8個通過晶體管,每個晶體管都有自己的控制信號,其中一個選擇所需的信號。但是,FPGA使用一種混合方法,該方法避免了第一種方法的解碼硬件,但使用了5個控制信號,而不是第二種方法所需的8個控制信號。

微信截圖_20221107162546.png

  FPGA使用多路復用器選擇八個輸入之一

  上面的示意圖顯示了FPGA中使用的兩級多路復用器方法。在第一階段,控制信號之一被激活。第二階段從頂部或底部選擇信號作為輸出。例如,假設控制信號  B/F 發送到第一級,“ ABCD”發送到第二級;輸入B是唯一將傳遞到輸出的B。因此,選擇八個輸入之一需要在比特流中使用5位,并使用5個存儲單元。

  結 論

  XC2064使用各種高度優化的電路來實現其邏輯塊和路由。該電路需要緊湊的布局,以適合芯片。即使這樣,XC2064還是一個非常大的芯片,比當時的微處理器還大,因此一開始很難制造,而且要花費數百美元。與現代FPGA相比,XC2064的單元數量非常少,但是即使如此,它也引發了革命性的新產品線。

  了解XC2064比特流的關鍵是兩個概念。首先,FPGA由64個塊組成,這些塊是將邏輯塊和路由結合在一起的重復塊。盡管FPGA被描述為具有被路由包圍的邏輯塊,但這并不是實現它們的方式。

  第二個概念是,比特流中沒有抽象。它直接映射到FPGA的二維布局中。因此,只有考慮FPGA的物理布局,比特流才有意義。

    更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg

FPGA開源工作室.jpg

電子技術應用專欄作家  FPGA開源工作室

原文鏈接:https://mp.weixin.qq.com/s/nvtkXATnV_eGP7Ejq_xRig

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美激情视频免费观看| 国产在线国偷精品产拍免费yy| 欧美一级二级三级蜜桃| 亚洲蜜桃精久久久久久久| 午夜精品久久一牛影视| 亚洲视频axxx| 日韩视频―中文字幕| 亚洲精品一二区| 亚洲国产精品va在线看黑人动漫| 精品51国产黑色丝袜高跟鞋| 韩国久久久久| 激情六月婷婷久久| 狠久久av成人天堂| 国户精品久久久久久久久久久不卡| 国产嫩草一区二区三区在线观看 | 国产精品扒开腿做爽爽爽软件 | 欧美日韩在线视频首页| 欧美电影在线观看| 乱中年女人伦av一区二区| 久久精品国产99国产精品| 欧美一区二区免费视频| 香蕉视频成人在线观看 | 亚洲性视频网站| 日韩一区二区精品葵司在线| 91久久久久久国产精品| 亚洲日本电影在线| 99国产精品久久| 亚洲午夜精品国产| 亚洲欧美一区二区三区极速播放| 午夜精品久久久久久久白皮肤| 香蕉尹人综合在线观看| 久久精品综合一区| 牛牛影视久久网| 欧美日韩不卡视频| 国产精品免费一区豆花| 国产欧美欧美| 精品成人a区在线观看| 91久久国产综合久久| 日韩视频不卡| 午夜久久久久久| 久久精品人人做人人综合| 亚洲欧洲综合另类在线| 99国产精品国产精品久久| 亚洲在线中文字幕| 久久精品av麻豆的观看方式| 美女国内精品自产拍在线播放| 欧美99久久| 欧美日韩视频在线观看一区二区三区| 国产精品激情电影| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲国产91精品在线观看| 亚洲免费观看高清完整版在线观看熊| 亚洲伊人观看| 亚洲国产精品激情在线观看| 一本色道久久综合| 久久福利视频导航| 欧美片网站免费| 国产精品综合av一区二区国产馆| 黑人中文字幕一区二区三区| 亚洲精品一区二区三区av| 亚洲免费网站| 亚洲黄色成人久久久| 亚洲婷婷在线| 久久一区二区三区国产精品| 欧美剧在线观看| 国产色产综合色产在线视频| 亚洲人成人一区二区三区| 午夜精品久久久久久久蜜桃app| 亚洲国产精品一区二区www| 中日韩美女免费视频网站在线观看| 性刺激综合网| 欧美精品成人91久久久久久久| 国产精品区一区| 亚洲国产精品一区二区第四页av | 久久综合久久久| 欧美午夜欧美| 亚洲高清视频一区| 亚洲欧美日韩国产一区二区| 日韩视频在线观看| 久久人91精品久久久久久不卡| 国产精品二区在线| 亚洲国产精品欧美一二99| 亚洲欧美一区二区激情| 夜夜精品视频一区二区| 久久人人97超碰国产公开结果| 国产精品www| 亚洲日本中文字幕免费在线不卡| 欧美一区二区视频网站| 亚洲免费伊人电影在线观看av| 欧美jizz19性欧美| 国产在线一区二区三区四区 | 香蕉国产精品偷在线观看不卡 | 亚洲视频成人| 六月婷婷久久| 国产精品久久久久影院亚瑟| 亚洲国产精品va在线看黑人| 香蕉免费一区二区三区在线观看 | 亚洲深夜福利网站| 女仆av观看一区| 国产一区二区三区在线观看网站| 亚洲一区二区黄色| 亚洲视频精选在线| 欧美激情一区二区三区在线| 国内成人自拍视频| 欧美亚洲专区| 亚欧美中日韩视频| 国产精品久久久久久久久免费桃花 | 久久精品国产亚洲a| 欧美一级久久久| 国产精品高清一区二区三区| 亚洲精品久久久久久久久久久| 最新日韩精品| 麻豆精品一区二区综合av| 国产无一区二区| 性视频1819p久久| 欧美亚洲免费在线| 国产精品一区二区三区免费观看| 亚洲午夜黄色| 亚洲欧美久久| 国产精品日韩一区二区| 亚洲视频第一页| 亚洲摸下面视频| 国产精品久久网站| 亚洲午夜av在线| 午夜精品成人在线视频| 国产精品久久77777| 亚洲网站在线| 亚洲欧美日韩综合一区| 国产精品丝袜xxxxxxx| 亚洲一区二区在线视频 | 亚洲一区欧美二区| 欧美日韩国产精品一区二区亚洲| 亚洲国产福利在线| 亚洲精品一区在线观看| 欧美乱妇高清无乱码| 亚洲卡通欧美制服中文| 在线亚洲精品| 欧美午夜无遮挡| 亚洲自拍偷拍网址| 久久成人精品无人区| 国产在线拍偷自揄拍精品| 亚洲国内精品在线| 欧美精品一区三区在线观看| 日韩一级片网址| 性色av一区二区三区在线观看 | 99亚洲一区二区| 一级日韩一区在线观看| 欧美精品一区二区三区一线天视频 | 亚洲第一主播视频| 91久久夜色精品国产网站| 欧美国产日韩一区二区| 亚洲乱码国产乱码精品精| 亚洲资源在线观看| 国产情人节一区| 亚洲国产你懂的| 欧美日韩在线亚洲一区蜜芽| 亚洲免费视频网站| 老司机午夜精品| 一本不卡影院| 久久精品中文| 亚洲欧洲免费视频| 欧美一级视频精品观看| 伊人伊人伊人久久| 亚洲一区二区三区在线| 国内成+人亚洲| 一本不卡影院| 国产区精品视频| 日韩视频三区| 国产女优一区| 亚洲开发第一视频在线播放| 国产精品久久久久一区二区| 久久精品视频99| 欧美日韩妖精视频| 性做久久久久久久久| 欧美激情亚洲| 亚洲欧美国产视频| 欧美精品 国产精品| 亚洲欧美国产三级| 欧美精品一区二区久久婷婷| 亚洲欧美日韩精品久久久久| 欧美肥婆bbw| 亚洲欧美日韩国产综合精品二区| 免费视频一区| 亚洲一区二区三区高清| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美综合激情网| 亚洲欧洲日本专区| 久久久99免费视频| 一区二区三欧美| 欧美h视频在线| 午夜精品区一区二区三| 欧美日韩卡一卡二| 亚洲国产成人精品久久久国产成人一区| 欧美午夜不卡在线观看免费| 亚洲成人在线视频网站| 国产精品国产三级国产专播品爱网| 亚洲丁香婷深爱综合| 国产乱人伦精品一区二区| 一区二区三区毛片| 在线不卡a资源高清|