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

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

3天內(nèi)不再提示

怎樣才叫學好了FPGA?

jf_78858299 ? 來源:電路設(shè)計技能 ? 作者: 蘇老師 ? 2023-03-21 10:54 ? 次閱讀

今天在群里有工程師問我,怎么才叫學會了FPGA,怎么才叫學好了FPGA?我相信有很多朋友有類似的問題,因為在多數(shù)人的潛意識里,F(xiàn)PGA是非常高深莫測的技術(shù),能夠玩轉(zhuǎn)FPGA的都是大神級的人物。

其實呢,這是一種誤解,你可以把FPGA當做是數(shù)字世界的樂高(Lego),它由幾種最基本的單元(每種單元數(shù)量有很多很多)讓你組成自己想實現(xiàn)的功能。能玩好樂高就一定能玩好FPGA。樂高玩得好不好,取決于什么因素?

通過一些最基本的積木塊可以拼出任何復雜的物體

  • 第一要素 - 先要了解供你玩的“樂高”套裝里都有哪些單元?每個單元都有哪些特性?不同單元之間是如何拼接的?沒有這些全局的信息和知識在你的腦子里,你要從幾千個piece里面去組裝一輛車、構(gòu)建一個城堡,將是非常困難甚至不可能的。
  • 第二要素 - 要有正確的思維方式。你至少要知道搭建一輛車需要四個輪子、一個方向盤、一個發(fā)動機,這些部件之間如何通過其它的單元有機組合在一起,彼此之間如何搭配。不知道車子需要輪子,不知道輪子要裝在底盤上是無法組裝出一輛車來的,即便有再多的單元也沒有用。

圖片

要通過積木構(gòu)建一輛車,首先要知道都有哪些積木零件可以用,其次要知道這些部件之間的邏輯關(guān)系

學習使用FPGA的道理跟玩樂高沒啥區(qū)別,同樣是:

  1. 了解FPGA是什么?玩樂高的人不用操心什么是樂高,這個知識是由玩樂高的人的父母掌握了,并幫他選好型了;
  2. 要充分了解FPGA內(nèi)部都有什么功能單元(邏輯單元、存儲器、時鐘產(chǎn)生、可編程IO等) ,這些單元都有什么用?用起來都有哪些要注意的地方,各個單元之間如何配合?尤其是針對你要用的具體型號,你要知道你用的這個型號的器件內(nèi)部的各種功能單元具體有多少數(shù)量,夠不夠你項目使用的;
  3. 數(shù)字邏輯的設(shè)計思想 - 針對任意一項具體的功能,如何組合你器件內(nèi)的單元來實現(xiàn),需要哪些單元?如何連接這些單元?各個單元之間連接的先后順序如何?這就需要比較扎實的數(shù)字電路/數(shù)字系統(tǒng)設(shè)計的基礎(chǔ)知識以及邏輯思維能力。

當然你也需要一些工具來幫助你實現(xiàn),比如一套從頭到尾執(zhí)行的設(shè)計環(huán)境(FPGA廠商提供的編譯工具 - Lattice的Diamond、IntelQuartus、Xilinx的Vivado),一種連接你的邏輯思維和機器操作之間的溝通工具 - 設(shè)計語言(原理圖、Verilog、VHDL等等)。

下面我們以小腳丫FPGA為例,看看我們要學好FPGA必須掌握哪些知識。

首先FPGA是什么?

四個字母Field(現(xiàn)場) Programmable(可編程) Gate(邏輯門) Array(陣列)凸顯了大量邏輯門單元 ,這些邏輯單元是可以在任何地方隨時進行組裝的,這是不是跟樂高玩具一樣?邏輯門單元是構(gòu)成一切數(shù)字邏輯器件的基本單元,在數(shù)字世界里你想做任何事情、實現(xiàn)任何功能,都可以通過邏輯門的堆砌來實現(xiàn),也就是說FPGA在數(shù)字領(lǐng)域里幾乎無所不能,因此n年前我國的某一個FPGA公司在向國務院領(lǐng)導描述其產(chǎn)品的時候稱他們做的是“萬能芯片”(用這種通俗易懂的說法忽悠國家的經(jīng)費)。萬能有些夸張,但FPGA高度靈活,理論上來講,只要有足夠的資源(積木數(shù)量足夠多)幾乎可以實現(xiàn)數(shù)字域的任何功能,受限的是速度、功耗以及系統(tǒng)的成本。

圖片

一個典型的FPGA架構(gòu)及其內(nèi)部主要功能單元

FPGA里面有什么?

我們以基于Lattice的FPGA的小腳丫看一下該FPGA內(nèi)部都有哪些資源以及相應資源的數(shù)量,如下是該器件LCMXO2-4000HC-4MG132C內(nèi)部的功能框圖:

Lattice版本小腳丫FPGA芯片內(nèi)部的主要功能單元

該器件的具體資源參數(shù)如下:

  • 4320個LUT資源 - 每個LUT(查找表)有4個輸入,16種狀態(tài),并一個寄存器,這就像樂高里的積木塊,用來實現(xiàn)各種邏輯功能,至于4320是多還是少?這個要看你做的項目需要的邏輯資源,對于FPGA的初學者來講4000多個LUT已經(jīng)足夠多,實現(xiàn)很多沒聽說過的功能都已經(jīng)綽綽有余了;
  • 92Kbit RAM - 這是在邏輯之外的成塊狀的存儲器,可以靈活配置成各種位寬、各種讀寫模式的存儲功能,比如FIFO、雙口RAM等;
  • 96Kbit用戶閃存 - 這是Lattice 的一個創(chuàng)新,后來Altera/Intel也學著做了MAX10,就是將配置FPGA的存儲器從外面的PROM變成了集成在FPGA內(nèi)部的Flash,可以反復編程,從此FPGA不再外掛一個累贅了,用起來就像PLD一樣方便;
  • 嵌入式功能塊(硬核):一路SPI、一路定時器、2路I2C,這可是MCU除了ALU、總線之外最基本的功能模塊,都硬化到該FPGA內(nèi)部了,也就意味著如果你想用這個FPGA做一個MCU玩玩,可以直接將這些已經(jīng)硬化的功能塊通過總線掛在處理器上,沒必要再寫這些功能,并且占用邏輯資源了;
  • 2+2路PLL+DLL - 我們前面講過外部常用的時鐘產(chǎn)生器(比如晶振)產(chǎn)生的頻率不高,但FPGA內(nèi)部可以工作到很高的速度,因此現(xiàn)在幾乎所有FPGA器件都有內(nèi)置的PLL將外部的低頻率的時鐘整到很高頻率,比如小腳丫的外部時鐘為12MHz,內(nèi)部PLL可以將它倍頻到400MHz,非??彀桑?/li>
  • 支持DDR/DDR2/LPDDR存儲器 - 這是說該器件能夠直接掛這些存儲器,適配它們的電平和時序;
  • 104個可熱插拔I/O - 每個I/O管腳可以單獨編程為輸入、輸出、上拉或下拉、并可以設(shè)置器輸出阻抗,以便支持不同的接口協(xié)議,就像城市連接外部的道路可進可出、有的鋪瀝青、有的是土路;
  • 內(nèi)核電壓2.5-3.3V,供電電壓的范圍比較寬;
  • 132腳BGA封裝,引腳間距0.5mm,芯片尺寸8mm x 8mm;

FPGA能做什么?

知道了FPGA內(nèi)部的資源,也就心里有數(shù)它能做什么了。就像一座城堡,內(nèi)部居民的生活豐富多彩,無論他們以何種形式進行組合,他們所做的事情取決于這些居民以及他們擁有的資源,其生活模式被城堡的設(shè)計者所定義(城市管理、文化等等等)。

但從宏觀上來看這個城堡起到的功能很大程度上取決于這個城堡同外部世界的連接,沒有這些同系統(tǒng)的連接,城堡內(nèi)部的任何行為對于系統(tǒng)來講都沒有意義。FPGA可以是系統(tǒng)的一個重要組成部分,但它僅僅是一個部分而已,就像一個城堡一樣,它只有同外部進行連接并執(zhí)行系統(tǒng)通過這些連接給其分配的功能才有意義。

因此FPGA通過其I/O管腳連接外面的世界,我們使用的小腳丫芯片有132個管腳,除去電源、地之外還有104個管腳可以用來同外界進行聯(lián)系。

做為一款讓FPGA初學者學習的平臺,首先要滿足初學者基于掌握的數(shù)字電路知識進行做項目的定位,先要體驗組合邏輯、時序邏輯、狀態(tài)轉(zhuǎn)換等數(shù)字電路的基礎(chǔ)概念,而體驗這些概念就需要一些必要的輸入(按鍵、開關(guān))和必要的輸出(通過單色LED燈、三色燈、數(shù)碼管進行各種方式的顯示),綜合考慮板子的尺寸以及初學者隨時隨地能練習的要求,我們經(jīng)過取舍后選定了如下的板上功能及連接:

通過FPGA的IO管腳連接的板上的功能

板載資源:

  • 兩位7段數(shù)碼管 - 可以以狀態(tài)、數(shù)值的變化來顯示內(nèi)部邏輯運行的信息;
  • 兩個RGB三色LED - 可以以LED的亮度、顏色燈的變化顯示內(nèi)部邏輯運行的信息;
  • 8路用戶LED - 可以通過組合來形象地顯示內(nèi)部邏輯運行的信息;
  • 4路撥碼開關(guān) - 做為狀態(tài)的輸入;
  • 4路按鍵 - 做為外部條件變換的輸入;

板子上的這些功能說明

當然作為一個靈活的學習模塊,我們還要給用戶留下一定的靈活擴展的空間,讓用戶以各種方式來連接其計劃連接的其它器件,在這個模塊的周邊我們留出了36個信號管腳(4個電源、地除外)給用戶,用戶可以靈活配置、應用這些管腳,讓自己的系統(tǒng)充分利用這些管腳讓FPGA內(nèi)部的邏輯資源執(zhí)行分配的任務。

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598937
  • 單片機
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628408
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7366

    瀏覽量

    163094
收藏 人收藏

    評論

    相關(guān)推薦

    請教怎么樣學好了單片機

    大家好,我是新手,請問怎么樣學好了單片機?請指點以下,謝謝.
    發(fā)表于 02-10 14:46

    怎樣才能學好fpga???

    學習fpga兩三個月了,感覺自己好像還沒入門。最近一個月基本沒什么進步,好像還是在原地徘徊。怎樣才能學好fpga,怎樣調(diào)程序,
    發(fā)表于 07-29 14:41

    新手求指教---怎樣學好FPGA

    求各位大神,怎樣學好FPGA呀,求基于FPGA的1602顯示的基本原理。
    發(fā)表于 05-29 13:47

    怎樣才能學好arduino?

    怎樣才能學好arduino?
    發(fā)表于 11-13 21:26

    華和機電分享怎樣學好嵌入式?

    跟著花費家電的智能化和便宜微處理器的呈現(xiàn),嵌入式體系將在平時日子里形成更大的使用領(lǐng)域。那么怎樣才干學好嵌入式呢?學習嵌入式不是很簡單的, 不像其他的專業(yè)不是搞軟件即是搞硬件的, 搞軟件的能夠不必了解硬件
    發(fā)表于 01-09 16:00

    初學者怎樣學好電子知識

    初學者怎樣學好電子知識電子知識浩如煙海,更新更是速度令人目不暇接。學好電子知識不是件容易的事,但只要有興趣就會學好。究竟怎樣學習電子知識?下
    發(fā)表于 04-21 14:51

    請問怎樣學好C語言?

    怎樣學好C語言 是不是親自實踐比看書更有用
    發(fā)表于 04-12 07:55

    飛機表現(xiàn)出什么現(xiàn)象調(diào)好了?

    一種說法是飛機緩慢往一邊傾斜但不抖動就好了 應該信哪種???I值是定角度能力 但是加小了沒用 大了就抖D值不知道調(diào)到什么程度就好淺談四軸PID的那文章看了又看 但是不知道三個參數(shù)分別讓飛機表現(xiàn)出什么現(xiàn)象調(diào)好?望高人指點一番
    發(fā)表于 08-01 22:14

    三大前輩教你怎樣學好模擬電路

    電子專業(yè)單片機相關(guān)知識學習教材資料——三大前輩教你怎樣學好模擬電路
    發(fā)表于 09-13 17:46 ?0次下載

    模擬電路怎樣算入門了

    模擬電子的相關(guān)知識學習教材資料——模擬電路怎樣算入門了
    發(fā)表于 09-20 16:10 ?0次下載

    怎樣學好模擬電路

    怎樣學好模擬電路,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-20 17:34 ?18次下載

    怎樣才能學好電路分析

    學好電路分析是后續(xù)課程的基礎(chǔ),可謂簡單而重要,只有電路分析學好了,在后續(xù)課程中才能有良好的思路去解決問題。
    的頭像 發(fā)表于 03-23 10:07 ?2.2w次閱讀

    如何學好FPGA

    如何學好FPGA呢,很多人很困惑,多數(shù)停留在基礎(chǔ)位置徘徊,我就這方面問題給大家談幾點自己的看法。 1.基礎(chǔ)問題 FPGA的基礎(chǔ)就是數(shù)字電路和HDL語言,想學好
    發(fā)表于 02-23 15:09 ?535次閱讀

    FPGA視頻教程之如何學好FPGA的視頻教程資料免費下載

    本文檔詳細介紹的是如何學好FPGA的視頻教程資料免費下載。
    發(fā)表于 02-28 10:35 ?27次下載
    <b class='flag-5'>FPGA</b>視頻教程之如何<b class='flag-5'>學好</b><b class='flag-5'>FPGA</b>的視頻教程資料免費下載

    直線模組怎樣保養(yǎng)合理?

    直線模組怎樣保養(yǎng)合理?
    的頭像 發(fā)表于 07-03 17:42 ?519次閱讀
    直線模組<b class='flag-5'>怎樣</b>保養(yǎng)<b class='flag-5'>才</b>合理?