色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

想成為一名FPGA工程師 你對FPGA的結構有多了解

工程師人生 ? 來源:MYMINIEYE公眾號 ? 作者:張楊波 ? 2020-12-03 10:58 ? 次閱讀

FPGA的起源和發展

1985年Xilinx發布了全球首款FPGA芯片——XC2064。在當時那個年代,PC機才剛走出硅谷的實驗室進入商業市場,因特網還只是科學家和政府機構通信的神秘鏈路,無線電話還像磚頭一樣笨重。FPGA芯片在當時似乎并沒有什么用武之地。

早期的FPGA芯片只是用于膠合邏輯,用來連接一些功能復雜的大邏輯塊。不過,從膠合邏輯到算法邏輯再到數字信號處理、高速串行收發器嵌入式處理器,FPGA已經從配角變成了主角。

FPGA在通信領域上有著極廣泛的應用,就拿現在很火熱的5G網絡來說,幾乎在5G基站里面的每一塊電路板都需要用到FPGA;還有在機器人學習中,FPGA在感知計算的場景下,因為FPGA的硬件并行,所以能同時處理的指令數遠遠大于CPU,根據加州大學洛杉磯分校的實驗結果,FPGA在感知計算場景下處理效率是CPU的30倍。以上兩個都是現在十分熱門的行業,都是十分需要FPGA的支持的。可以看出FPGA這個行業在現在還是很熱門的。并且這個行業的人才缺口也很大,歡迎各位加入FPGA這個大家庭!

FPGA的結構

想成為一名FPGA工程師,對FPGA的結構是必須要掌握的。FPGA芯片主要是:可編程I/O單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式RAM、豐富的布線資源、內嵌的底層功能單元和內嵌專用硬件模塊這六部分組成。

基本可編輯邏輯單元

基本可編輯邏輯單元是FPGA可編程邏輯的主體FPGA一般是基于SRAM工藝。其基本可編程邏輯單元幾乎都是由查找表(LUT)和寄存器組成。FPGA內部的LUT一般為4輸入、主要完成純組合邏輯的功能。而內部寄存器結構相當靈活,可以配置為帶同步、異步復位或置位、時鐘使能的觸發器,也可以配置為鎖存器。FPGA一般依賴寄存器完成同步時序的邏輯設計。

比較經典的基本可編程邏輯單元的配置是一個寄存器和一個查找表。但不同廠商的寄存器和查找表的內部結構有一定差異,而且寄存器和查找表的組合模式也不同。主要的三個廠商的可編程邏輯結構為:

(1)Alerta的可編程邏輯單元通常被稱為LE(Logic Element,邏輯單元),由一個Register和一個LUT組成。而Altera的大多數FPGA又將10個LE有機組合起來,構成更大的邏輯功能單元——邏輯陣列模塊(LAB,Logic Array Block),LAB中除了LE還包含LE間的進位鏈、LAB控制信號、局部互連線資源、LUT級聯鏈、寄存器級聯鏈等連線和控制資源。

(2)Xilinx的可編程邏輯單元被稱為Slice,由上下兩部分組成。每部分都由一個Register和一個LUT組成,被稱為LC(Logic Cell,邏輯單元),兩個LC間有一些共用邏輯。可以完成LC之間的配合與級聯。

(3)Lattice的可編程邏輯單元叫PFU(Programmable Function Unit,可編程功能單元),由8個LUT和8—9個Register組成。

可編程IO單元

可編程IO單元通過軟件可以適配不同的電氣標準和物理特性。

內嵌RAM塊

FPGA的內嵌RAM塊可以靈活配置為單端口RAM(SPRAM,Single PortRAM),雙端口RAM(DPRAM,Double PortRAM),偽雙端口RAM(Pseudo DPRAM),CAM(Content Addressable Memory),FIFO(First Input First Output)等常用存儲器結構。

FPGA中沒有專用的ROM硬件資源,實現ROM的思路是對RAM賦予初值,并保持該初值。

CAM,即內容地址存儲器。CAM這種存儲器在其每個存儲單元都包含了一個內嵌的比較邏輯,寫入CAM的數據會和其內部存儲的每一個數據進行比較,并返回與端口相同的所有內部數據的地址。

總之,RAM是一種根據地址讀、寫數據的存儲單元,而CAM返回的是與端口數據相匹配的內部地址。

FPGA內部實現RAM、ROM、CAM、FIFO等存儲結構是基于內嵌RAM塊的,并根據需求自動生成相應的粘合邏輯(GlueLogic)以完成地址和片選等控制邏輯。

Xilinx常見的RAM塊大小是4Kbit和18Kbit兩種結構,LatTIce常用的RAM塊大小是9Kbit,Altera的RAM塊最為靈活,一些高端器件內部同時含有兩種RAM塊結構,分別是M9KRAM(9Kbit),M-144K(144Kbit)。

除了RAM外,Altera、Xilinx和LatTIce的FPGA還可以靈活的將LUT配置成RAM、ROM、FIFO等存儲結構,這種技術被稱為分布式RAM。

豐富的布線資源

布線資源連通FPGA內部所有單元,連線的長度和工藝決定了信號在連線上的驅動能力和傳輸速度。有以下3種布線資源可以利用。

(1)全局性的專用布線資源:用來完成器件內部的全局時鐘和全局復位置位的布線。

(2)長線資源:完成器件Bank間的一些高速信號和一些第二全局時鐘信號的布線。

(3)短線資源:完成基本邏輯單元之間的邏輯互聯和布線。

在基本邏輯單元內部還存在各式各樣的布線資源和專用時鐘、復位等控制信號線。

底層嵌入功能單元

通用程度較高的嵌入功能模塊,如PLL(Phase Locked Loop),DLL(Delay Locked Loop),DSP和CPU等。

Altera芯片集成是PLL,Xilinx芯片主要集成的是DLL,LatTlce的新型FPGA同時集成了PLL和DLL以適應不同需求。

Altera芯片的PLL模塊分為增強型PLL和快速PLL。

Xilinx芯片的DLL的模塊名稱為CLKDLL,在高端FPGA中CLKDLL的增強型模塊為DCM(Digital Clock Manager),數字時鐘管理模塊)。

內嵌專用硬核

內嵌專用硬核的通用性相對較弱,不是所有的FPGA器件都有硬核。

FPGA設計流程

講完了FPGA的結構,接下來說說FPGA的設計流程。FPGA是可編程芯片,所以FPGA的設計方法包括硬件設計和軟件設計兩部分。

硬件包括FPGA的芯片電路、存儲器、輸入輸出接口電路及其他設備,軟件即是相應的HDL程序等。FPGA的設計流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。

典型FPGA的開發流程一般包括包括功能定義/器件選型、設計輸入、功能仿真、綜合優化、綜合后仿真、實現、布線后仿真、板級仿真以及芯片編程與調試等主要步驟。

功能定義/器件選型

在FPGA設計項目開始之前,必須有系統功能的定義和模塊的劃分,另外就是要根據任務要求,如系統的功能和復雜度,對工作速度和器件本身的資源、成本、以及連線的可布性等方面進行權衡,選擇合適的設計方案和合適的器件類型。

一般使用自頂向下的辦法,把系統分成若干個基本單元,再把每個基本單元分為下一層次的基本單元,一直這樣做下去,直到能直接用EDA元件庫為止。

設計輸入

設計輸入是將所設計的系統或電路以開發軟件要求的某種形式標示出來并且輸給EDA工具的過程。

最常用的方法有硬件描述語言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程芯片發展的早期應用比較廣泛,它將所需的器件從元件庫中調出來,畫出原理圖。這種方法雖然直觀并易于仿真,但效率很低,且不易維護,不利于模塊構造和重用。更主要的缺點是可移植性差,當芯片升級后,所有的原理圖都需要作一定的改動。

目前,在實際開發中應用最廣的就是HDL語言輸入法,利用文本描述設計,可以分為普通HDL和行為HDL。普通HDL有ABEL、CUR等,支持邏輯方程、真值表和狀態機等表達方式,主要用于簡單的小型設計。

而在中大型工程中,主要使用行為HDL,其主流語言是Verilog HDL和VHDL。這兩種語言都是美國電氣與電子工程師協會(IEEE)的標準,其共同的突出特點有:語言與芯片工藝無關,利于自頂向下設計,便于模塊的劃分與移植,可移植性好,具有很強的邏輯描述和仿真功能,而且輸入效率很高。

除了這IEEE標準語言外,還有廠商自己的語言。也可以用HDL為主,原理圖為輔的混合設計方式,以發揮兩者的各自特色。

功能定義/器件選型

功能仿真也稱為前仿真。是在編譯之前對用戶所設計的電路進行邏輯功能驗證,此時的仿真沒有延遲信息,僅對初步的功能進行檢測

仿真前,要先利用波形編輯器和HDL等建立波形文件和測試向量(即將所關心的輸入信號組合成序列),仿真結果將會生成報告文件和輸出信號波形,從中便可以觀察各個節點信號的變化。

如果發現錯誤,則返回設計修改邏輯設計。常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等軟件。

功能定義/器件選型

所謂綜合就是將較高級抽象層次的描述轉化成較低層次的描述。綜合優化根據目標與要求優化所生成的邏輯連接,使層次設計平面化,供FPGA布局布線軟件進行實現。

就目前的層次來看,綜合優化(Synthesis)是指將設計輸入編譯成由與門、或門、非門、RAM、觸發器等基本邏輯單元組成的邏輯連接網表,而并非真實的門級電路。真實具體的門級電路需要利用FPGA制造商的布局布線功能,根據綜合后生成的標準門級結構網表來產生。為了能轉換成標準的門級結構網表,HDL程序的編寫必須符合特定綜合器所要求的風格。由于門級結構、RTL級的HDL程序的綜合是很成熟的技術,所有的綜合器都可以支持到這一級別的綜合。

常用的綜合工具有Synplicity公司的Synplify / Synplify Pro軟件以及各個FPGA廠家自己推出的綜合開發工具。

綜合后仿真

綜合后仿真檢查綜合結果是否和原設計一致。在仿真時,把綜合生成的標準延時文件反標注到綜合仿真模型中去,可以估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線后的實際情況還是有一定的差距,并不十分準確。

目前的綜合工具較為成熟,對于一般的設計可以省略這一步,但如果在布局布線后發現電路結構和設計意圖不符,則需要回溯到綜合仿真后來確認問題所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。

實現與布局布線

布局布線可以理解為利用實現工具把邏輯映射到目標器件結構的資源中,決定邏輯最佳的布局,選擇邏輯與輸入輸出功能鏈接的布線通道進行連線,并產生相應文件;實現是將綜合生成的邏輯網表配置到具體的FPGA芯片上,布局布線是其中最重要的過程。

布局將邏輯網表中的硬件原語和底層單元合理的配置到芯片內部的固有硬件結構上,并且往往需要在速度最優和面積最優之間做出選擇。

布線根據布局的拓撲結構,利用芯片內部的各種連線資源,合理正確地連接各個元件。目前,FPGA結構非常復雜,特別是在有時序約束條件時,需要利用時序驅動的引擎進行布局布線。布線結束后,軟件會自動生成標高提供有關設計中各部分資源的使用情況。

由于只有FPGA芯片生產廠商對芯片結構最為了解,所以布局布線必須選擇芯片開發商提供的工具。

功能定義/器件選型

時序仿真也稱后仿真,是指將布局布線的延時信息反標注到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象。

時序仿真包含的延遲信息最全,也最精確,能較好的反映芯片的實際工作情況。由于芯片的內部延時不一樣,不同的布局布線方案也給延時帶來不同的影響。

因此在布局布線后,通過對系統和各個模塊進行時序仿真,分析其時序關系,估計系統性能,以及檢查和消除競爭冒險是非常有必要的。

板級仿真與驗證

板級仿真主要應用于高速電路設計中,對高速系統的信號完整、電磁干擾等特征進行分析,一般都以第三方工具進行仿真和驗證。

芯片編程與調試

設計的最后一步就是芯片編程與調試。芯片編程是指產生使用的數據文件(位數據流文件,Bitstream Generation),然后將編程數據下載到FPGA芯片中。其中,芯片編程需要滿足一定的條件,如編程電壓、編程時序和編程算法等方面。

邏輯分析儀(Logic Analyzer,LA)是FPGA設計的主要調試工具,但需要引出大量的測試管腳,而且LA價格昂貴。

目前,主流的FPGA芯片生產商都提供了內嵌的在線邏輯分析儀(如Xilinx ISE中的ChipScope、Altera Quartusll中的SignalTapll以及SignalProb)來解決上述矛盾,他們只需要占用芯片少量的邏輯資源,有很高的實用價值。

FPGA設計語言及平臺

在了解了大概的FPGA設計流程之后,設計語言及平臺也是FPGA工程師們必須掌握的東西。

FPGA用的是HDL語言,HDL的全稱是:Hardware Description Language,注意其中D代表的是Description而不是Design。這說明了HDL語言不是用來設計硬件的,僅僅只是用來描述硬件的。

描述這個詞精確的反映了HDL語言的本質,HDL語言是只不過是已知硬件電路的文本表現形式而已,只是將以后的電路用文本的形式描述出來。

在學習HDL時首先要了解的是HDL的可綜合性問題。硬件設計時分幾個層次,每個層次都需要設計。最高層是算法級、向下依次是體系結構級、寄存器傳輸級、門級、物理版圖級。

使用HDL的好處就是我們已經設計好了一個寄存器傳輸級的電路,那么用HDL描述以后轉化為文本形式,剩下的向更低層轉換的時候就可以交給EDA去做了,這就大大降低了工作量,這就是可綜合的概念。也就是在這一層上對硬件單元進行描述可以被EDA工具理解并轉化為更低層的電路。

在編寫或閱讀HDL語言,尤其是可綜合的HDL,應該看到的是語言背后所對應的硬件電路結構。語法方面,HDL語法掌握貴在精,不在多。30%的基本HDL語句可以完成95%以上的電路設計,很多生僻語句不能被所有的綜合軟件支持,在程序移植或者更換平臺時,容易產生兼容性問題,也不利于他人閱讀和修改。建議多用心鉆研常用語句,理解那些語句的含義。

HDL主要有VHDL和Verilog兩種,目前最流行的是Verilog。

VHDL主要用于描述數字系統的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統)分成外部(或稱可視部分,及端口)和內部(或稱不可視部分),既涉及實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。

Verilog就是在用用最廣泛的C語言的基礎上發展起來的一種件描述語言Verilog的最大特點就是易學易用,如果有C語言的編程經驗,可以在一個較短的時間內很快的學習和掌握,因而可以把Verilog內容安排在與ASIC設計等相關課程內部進行講授,由于HDL語言本身是專門面向硬件與系統設計的,這樣的安排可以使學習者同時獲得設計實際電路的經驗。與之相比,VHDL的學習要困難一些。但Verilog HDL較自由的語法,也容易造成初學者犯一些錯誤,這一點要注意。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21761

    瀏覽量

    604385
  • 工程師
    +關注

    關注

    59

    文章

    1571

    瀏覽量

    68563
  • 可編輯邏輯
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7091
收藏 人收藏

    評論

    相關推薦

    如何成為一名高級電子工程師

    我是學點子的本科生,想請教各位電子工程師你們的學習之路是怎樣的,要想成為一名優秀的高級電子工程師該學什么,怎么學,具體的學習路線是什么樣的……
    發表于 01-06 00:32

    成為一名嵌入式Linux開發工程師需要學習哪些知識?

    成為一名嵌入式Linux開發工程師需要學習哪些知識?
    發表于 05-21 12:04

    如何成為一名合格的電子工程師

    如何成為一名合格的電子工程師,需要學習那些知識
    發表于 11-16 23:33

    招聘五年以上工作經FPGA工程師一名

    `招聘FPGA工程師一名,要求五年以上工作經驗,兼職,薪酬不低于10K;另招嵌入式軟件工程師一名,要求五年以上工作經驗,ARM下底層編程,兼
    發表于 09-01 20:37

    初來乍到,求大牛指教:我該如何快速高效地成為一名真正名副其實的電子工程師直到高級工程師

    qq919513228&qq2280171939本人想成為一名專業的電子工程師。求高人指點道路和方法。本人基礎:大專全日制正規軍校學歷;電子專業。沒有實踐經驗和能力。到哪里應聘和求職呢。
    發表于 11-09 11:18

    在華為的FPGA工程師嗎?我是一名在讀研究生,學的也是FPGA,想去華為,請教下~~~

    在華為的FPGA工程師嗎?我是一名在讀研究生,學的也是FPGA,想去華為,請教下~~~
    發表于 04-01 15:06

    成為一名PCB工程師,應該怎么去努力?

    大神!大神!看過來:成為一名PCB工程師,應該怎么去努力?
    發表于 05-30 03:04

    成為一名PCB工程師,應該怎么去努力?

    成為一名PCB工程師,哪些是必讀的書籍?哪些是必了解的理論知識?哪些是必會的高級操作?
    發表于 06-25 02:24

    成為一名物聯網工程師,需要學習哪些知識?

    `成為一名物聯網工程師,需要學習哪些知識?大家應該也都知道現在物聯網的發展速度,所以些人也就瞅準了時機,小白接觸物聯網的話,需要學習的東西就有很
    發表于 12-07 16:02

    如何成為一名測試工程師

    如何成為一名測試工程師
    發表于 05-10 06:37

    如何才能讓自己成為一名嵌入式開發工程師

    成為一名優秀的嵌入式開發工程師哪些要求?隨著國內嵌入式行業的迅速崛起,嵌入式人才嚴重緊缺,企業對嵌入式人才更是求賢若渴。盡管是在就業難的今天,但是各大人才招聘網站上,高薪招聘嵌入式開
    發表于 11-08 07:40

    如何成為一名優秀的嵌入式工程師

    如何成為一名優秀的嵌入式工程師?嵌入式學習的第步,首先是C語言。 1.理解內存管理:C語言不同于高級語言,它不會自動管理內存。因此,
    發表于 11-07 15:36

    怎樣成為一名合格的算法工程師

    成為一名合格的開發工程師不是件簡單的事情,需要掌握從開發到調試到優化等系列能力,這些能力中的每
    的頭像 發表于 02-15 11:39 ?3634次閱讀
    怎樣<b class='flag-5'>成為</b><b class='flag-5'>一名</b>合格的算法<b class='flag-5'>工程師</b>

    怎樣成為個合格的運維工程師

    如果想成為一名合格的運維工程師,首先我們需要了解運維主要是做什么的?如何成為個合格的運維
    的頭像 發表于 04-28 15:52 ?3882次閱讀

    如何成為一名優秀的Linux工程師

    的個人能力有所不同,想要成為一名優秀的工程師是需要我們往相應的方向努力的。那么,如何成為一名優秀的Linux
    的頭像 發表于 08-21 15:40 ?3112次閱讀
    主站蜘蛛池模板: 网友自拍成人在线视频| 亚洲成年人在线观看| 在线观看视频一区| 玖玖爱精品视频| RUN AWAY无删减全集动漫| 日日射夜夜干夜夜插在线播放| 国产高清亚洲| 永久免费精品影视网站| 欧美亚洲国产激情一区二区| 国产精品爽爽久久久久久无码| 亚洲国语在线视频手机在线| 美女激清床上戏大全| 国产精品成人观看视频免费| 亚洲一卡二卡三卡四卡无卡麻豆 | 国产精品国产三级国产专区53| 亚洲日本国产综合高清| 欧美 日韩 无码 有码 在线 | 国产综合无码一区二区色蜜蜜| 97色伦在色在线播放| 偷拍亚洲色自拍| 毛片亚洲毛片亚洲毛片| 国产精品AV无码免费播放| 最新无码专区在线视频| 网址在线观看你懂我意思吧免费的| 久久精品视频在线看99| 丰满老熟好大bbbxxx| 在线亚洲中文精品第1页| 婷婷久久综合九色综合伊人色| 老师湿乎乎两半嫩| 国产色情短视频在线网站| 99久久久精品免费观看国产| 亚洲国产区中文在线观看| 青年医生插曲| 久久视频这有精品63在线国产| 国产69精品麻豆久久久久| 最近2019中文字幕免费| 性奴公司 警花| 色丁香婷婷综合缴情综| 美女黄图大全| 久见久热 这里只有精品| 国产精品久久久久久久A片冻果|