找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 34724|回復(fù): 31
收起左側(cè)

FPGA入門教程(共37頁精彩pdf下載)

  [復(fù)制鏈接]
ID:260904 發(fā)表于 2018-2-12 15:52 | 顯示全部樓層 |閱讀模式
1.數(shù)字電路設(shè)計入門
2.FPGA 簡介
3.FPGA 開發(fā)流程
4.RTL設(shè)計
5.QuartusⅡ設(shè)計實例
6.  ModelSim和 Testbench

1.數(shù)字電路設(shè)計入門

1.1 數(shù)字電路設(shè)計

數(shù)字電路設(shè)計的核心是邏輯設(shè)計。通常,數(shù)字電路的邏輯值只有‘1’和‘0’,表征的是模擬 電壓或電流的離散值,一般‘1’代表高電平,‘0’代表低電平。
高低電平的含義可以理解為,存在一個判決電平,當信號的電壓值高于判決電平時,我 們就認為該信號表征高電平,即為‘1’。反之亦然。
當前的數(shù)字電路中存在許多種電平標準,比較常見的有 TTL、CMOS、LVTTL、LVCMOS、

ECL、PECL、LVDS、HSTL、SSTL 等。這些電平的詳細指標請見《補充教程 1:電平標準》。 數(shù)字電路設(shè)計大致可分為組合邏輯電路和時序邏輯電路。 一般的數(shù)字設(shè)計的教材中對組合邏輯電路和時序邏輯電路的定義分別為:組合邏輯電
路的輸出僅與當前的輸入有關(guān) ,而時序邏輯電路的輸出不但與輸入有關(guān),還和系統(tǒng)上一個 狀態(tài)有關(guān)。
但是在設(shè)計中,我們一般以時鐘的存在與否來區(qū)分該電路的性質(zhì)。由時鐘沿驅(qū)動工作 的電路為時序邏輯電路。大家注意,這兩種電路并不是獨立存在的,他們相互交錯存在于整 個電路系統(tǒng)的設(shè)計中。

1.1.1  組合邏輯電路 組合邏輯電路由任意數(shù)目的邏輯門電路組成,一般包括與門、或門、非門、
異或門、與非門、或非門等。一般的組合邏輯電路如下圖:
44.001.jpg
其中 A,B,C,D,E,F 為輸入,G 為輸出。

1.1.2
時序邏輯電路
時序邏輯電路由時鐘的上升沿或下降沿驅(qū)動工作,其實真正被時鐘沿驅(qū)動的是電路中的觸發(fā)器(Register),也稱為寄存器。觸發(fā)器的工作原理和參數(shù)如下圖:
Register的原理和參數(shù)
0.png
tsu:建立時間,在時鐘有效沿到來之前觸發(fā)器數(shù)據(jù)輸入應(yīng)保持穩(wěn)定的時間,如果建立時 間不夠,數(shù)據(jù)將不能在這個時鐘沿被打入觸發(fā)器。它間接約束了組合邏輯的最大延時。

thold:保持時間,在觸發(fā)器數(shù)據(jù)輸入引腳的數(shù)據(jù)在系統(tǒng)有效時鐘沿到來后,需要保持穩(wěn) 定的時間,如果保持時間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。它間接約束了組合邏輯的最 小延時.
tc-q: 觸發(fā)器從有效時鐘沿到來到輸出有效的最大時間。

下面是兩個簡單的時序邏輯電路例子:

(1)、時鐘分頻電路

44.003.jpg
該時序電路的功能為實現(xiàn)對時鐘’clk’的 4 分頻,其中’clk_2’為 2 分頻時鐘,’clk_4’為 4分頻時鐘,’enable’為該電路的使能信號。其功能仿真波形如下圖所示:
44.004.jpg
(2)、序列檢測器

44.005.jpg

該時序電路實現(xiàn)了一個序列檢測器,當輸入序列‘datain’中出現(xiàn)‘101’時,標志位 F 將輸 出‘1’,其他時刻輸出‘0’。電路中‘clk’為時鐘信號,‘D1’,‘D2’,‘D3’為移位寄存器的輸出,’enable’ 為該電路的使能信號。其功能仿真波形如下圖所示:


44.006.jpg

可見,時序電路設(shè)計的核心是時鐘和觸發(fā)器,這兩者也是我們設(shè)計電路時需重點關(guān)注的。



1.2毛刺的產(chǎn)生與消除
1.2.1競爭與冒險

當一個邏輯門的輸入有兩個或兩個以上的變量發(fā)生改變時,由于這些變量是經(jīng)過不同路 徑產(chǎn)生的,使得它們狀態(tài)改變的時刻有先有后,這種時差引起的現(xiàn)象稱為競爭(Race)。競 爭的結(jié)果將很可能導(dǎo)致冒險(Hazard)發(fā)生(例如產(chǎn)生毛刺),造成錯誤的后果,并影響系 統(tǒng)的工作。


組合邏輯電路的冒險僅在信號狀態(tài)改變的時刻出現(xiàn)毛刺,這種冒險是過渡性的,它不會 使穩(wěn)態(tài)值偏離正常值,但在時序電路中,冒險是本質(zhì)的,可導(dǎo)致電路的輸出值永遠偏離正常 值或者發(fā)生振蕩。


避免冒險的最簡單的方法是同一時刻只允許單個輸入變量發(fā)生變化,或者使用寄存器采 樣的辦法。


1.2.2毛刺的產(chǎn)生與危害

信號在 FPGA 器件中通過邏輯單元連線時,一定存在延時。延時的大小不僅和連線的長 短和邏輯單元的數(shù)目有關(guān),而且也和器件的制造工藝、工作環(huán)境等有關(guān)。因此,信號在器件 中傳輸?shù)臅r候,所需要的時間是不能精確估計的,當多路信號同時發(fā)生跳變的瞬間,就產(chǎn)生 了“競爭冒險”。這時,往往會出現(xiàn)一些不正確的尖峰信號,這些尖峰信號就是“毛刺”。


讓我們來具體看一下毛刺是如何產(chǎn)生的。下圖是一個與門電路,


44.007.jpg
我們期望的設(shè)計是,a 和 b 信號同時變化,這樣輸出 OUT 將一直為 0,但是實際中 OUT

產(chǎn)生了毛刺,它的仿真波形如下所示:


44.008.jpg

可見,即使是在最簡單的邏輯運算中,如果出現(xiàn)多路信號同時跳變的情況,在通過內(nèi)部 走線之后,就一定會產(chǎn)生毛刺。而現(xiàn)在數(shù)字電路設(shè)計中的信號往往是由時鐘控制的,如果將 帶有毛刺的輸出信號直接連接到時鐘輸入端、清零或置位端口的設(shè)計,可能會導(dǎo)致嚴重的后 果;此外對于多數(shù)據(jù)輸入的復(fù)雜運算系統(tǒng),每個數(shù)據(jù)都由相當多的位數(shù)組成。這時,每一級 的毛刺都會對結(jié)果有嚴重的影響,如果是多級的設(shè)計,那么毛刺累加后甚至?xí)绊懻麄€設(shè)計 的可靠性和精確性。

判斷一個邏輯電路在某些輸入信號發(fā)生變化時是否會產(chǎn)生毛刺,首先要判斷信號是否會 同時變化,然后判斷在信號同時變化的時候,是否會產(chǎn)生毛刺,這可以通過邏輯函數(shù)的卡諾 圖或邏輯函數(shù)表達式來進行判斷。

1.2.3毛刺的消除


毛刺是數(shù)字電路設(shè)計中的棘手問題,它的出現(xiàn)會影響電路工作的穩(wěn)定性、可靠性,嚴重 時會導(dǎo)致整個數(shù)字系統(tǒng)的誤動作和邏輯紊亂。



可以通過以下幾種方法來消除毛刺:

1、輸出加 D觸發(fā)器

這是一種比較傳統(tǒng)的去除毛刺的方法。原理就是用一個 D 觸發(fā)器去讀帶毛刺的信號, 利用 D 觸發(fā)器對輸入信號的毛刺不敏感的特點,去除信號中的毛刺。在實際中,對于簡單 的邏輯電路,尤其是對信號中發(fā)生在非時鐘跳變沿的毛刺信號,去除效果非常的明顯。

但是如果毛刺信號發(fā)生在時鐘信號的跳變沿,D 觸發(fā)器的效果就沒有那么明顯了(加 D 觸發(fā)器以后的輸出 q,仍含有毛刺)。另外,D 觸發(fā)器的使用還會給系統(tǒng)帶來一定的延時, 特別是在系統(tǒng)級數(shù)較多的情況下,延時也將變大,因此在使用 D 觸發(fā)器去除毛刺的時候, 一定要視情況而定,并不是所有的毛刺都可以用 D 觸發(fā)器來消除。

2、信號同步法 設(shè)計數(shù)字電路的時候采用同步電路可以大大減少毛刺。由于大多數(shù)毛刺都比較短(大

概幾個納秒),只要毛刺不出現(xiàn)在時鐘跳變沿,毛刺信號就不會對系統(tǒng)造成危害了。因此一 般認為,只要在整個系統(tǒng)中使用同一個時鐘就可以實現(xiàn)系統(tǒng)同步。但是,時鐘信號在 FPGA 器件中傳遞時是有延時的,我們無法預(yù)知時鐘跳變沿的精確位置。也就是說我們無法保證在 某個時鐘的跳變沿讀取的數(shù)據(jù)是一個穩(wěn)定的數(shù)據(jù),尤其是在多級設(shè)計中,這個問題就更加突 出。因此,做到真正的"同步"就是去除毛刺信號的關(guān)鍵問題。所以同步的關(guān)鍵就是保證在時 鐘的跳變沿讀取的數(shù)據(jù)是穩(wěn)定的數(shù)據(jù)而不是毛刺數(shù)據(jù)。以下為兩種具體的信號同步方法。

(1)信號延時同步法 信號延時法,它的原理就是在兩級信號傳遞的過程中加一個延時環(huán)節(jié),從而保證在下一

個模塊中讀取到的數(shù)據(jù)是穩(wěn)定后的數(shù)據(jù),即不包含毛刺信號。這里所指的信號延時可以是數(shù) 據(jù)信號的延時,也可以是時鐘信號的延時。

(2)狀態(tài)機控制 使用狀態(tài)機也可以實現(xiàn)信號的同步和消除毛刺的目的。在數(shù)據(jù)傳遞比較復(fù)雜的多模塊系

統(tǒng)中,由狀態(tài)機在特定的時刻分別發(fā)出控制特定模塊的時鐘信號或者模塊使能信號,狀態(tài)機 的循環(huán)控制就可以使得整個系統(tǒng)協(xié)調(diào)運作,同時減少毛刺信號。那么只要我們在狀態(tài)機的觸 發(fā)時間上加以處理,就可以避免競爭冒險,從而抑制毛刺的產(chǎn)生。


3、格雷碼計數(shù)器


對于一般的二進制或十進制計數(shù)器,在計數(shù)時,將有多位信號同時跳變。例如一個 3bit

二進制計數(shù)器,由’111’轉(zhuǎn)換為’000’時,必將產(chǎn)生毛刺。此時,使用格雷碼計數(shù)器將避免毛


刺的出現(xiàn),因為格雷碼計數(shù)器的輸出每次只有一位跳變。 其他關(guān)于毛刺的詳細討論,請見補充教程 2:關(guān)于毛刺問題的探討。




1.3同步電路設(shè)計

同步電路是指所有電路在同一個公共時鐘的上升沿或下降沿的觸發(fā)下同步地工作。但在 實際系統(tǒng)中,往往存在多時鐘域的情況,這時同步的概念有所延伸,不再專指整個設(shè)計同步 于同一時鐘沿,而是指設(shè)計應(yīng)該做到局部同步,在每個時鐘域內(nèi)的電路要同步于同一時鐘沿。


1.3.1同步電路設(shè)計的優(yōu)點:

1.同步設(shè)計能有效地避免毛刺的影響,使得設(shè)計更可靠;

2.同步設(shè)計易于添加異步復(fù)位reset,以使整個電路有一個確定的初始狀態(tài);

3.同步設(shè)計可以減小環(huán)境對芯片的影響,避免器件受溫度,電壓,工藝的影響;

4.同步設(shè)計可以使靜態(tài)時序分析變得簡單和可靠;

5.同步設(shè)計可以很容易地組織流水線,提高芯片的運行速度。

1.3.2同步電路的設(shè)計準則:
1.盡可能在設(shè)計中使用同一時鐘,時鐘走全局時鐘網(wǎng)絡(luò)。走全局時鐘網(wǎng)絡(luò)的時鐘是 最簡單、最可預(yù)測的時鐘,它具有很強的驅(qū)動能力,可以驅(qū)動 FPGA 內(nèi)部中的所有觸發(fā)器, 并保證 Clock skew 可以小到忽略的地步。
2.避免使用混合時鐘沿采樣數(shù)據(jù),即避免在設(shè)計中同時使用時鐘的上升沿和下降沿。
3.盡量少在模塊內(nèi)部使用計數(shù)器分頻所產(chǎn)生的時鐘。計數(shù)器分頻時鐘需完成的邏輯 功能完全可由 PLL 鎖相環(huán)或時鐘使能電路替代。計數(shù)器分頻時鐘的缺點是使得系統(tǒng)內(nèi)時鐘 不可控,并產(chǎn)生較大的 Clock skew,還使靜態(tài)時序分析變得復(fù)雜。
4.避免使用門控時鐘。因為經(jīng)組合邏輯產(chǎn)生的門控時鐘極可能產(chǎn)生毛刺,使 D 觸發(fā) 器誤動作。
5.當整個電路需要多個時鐘來實現(xiàn),則可以將整個電路分成若干局部同步電路(盡 量以同一個時鐘為一個模塊),局部同步電路之間接口當作異步接口考慮,而且每個時鐘信 號的時鐘偏差(△T)要嚴格控制。
6.電路的實際最高工作頻率不應(yīng)大于理論最高工作頻率,留有設(shè)計余量,保證芯片 可靠工作。
7.電路中所有寄存器、狀態(tài)機在系統(tǒng)被 reset 復(fù)位時應(yīng)處在一個已知的狀態(tài)。 關(guān)于同步電路設(shè)計中的其他問題請詳見補充教程 3:華為同步電路設(shè)計規(guī)范。

1.3.3關(guān)于時鐘設(shè)計的討論

目前的工程設(shè)計中一般使用同步時序電路來完成整個系統(tǒng)的設(shè)計,由上一節(jié)可見,時鐘 在同步電路設(shè)計中起著至關(guān)重要的作用。那么,我們在設(shè)計時首先要完成的是對時鐘的設(shè)計。 如今在設(shè)計中常見的時鐘類型包括: 全局時鐘、內(nèi)部邏輯時鐘和門控時鐘。

1. 全局時鐘

全局時鐘即同步時鐘,它通過 FPGA 芯片內(nèi)的全局時鐘布線網(wǎng)絡(luò)或區(qū)域時鐘網(wǎng)絡(luò)來驅(qū) 動,全局時鐘具有高扇出、高精度、低 Jitter 和低Skew 的特點,它到芯片中的每一個寄存 器的延遲最短,且該延遲可被認為是固定值。所以我們推薦在所有的設(shè)計中的時鐘都使用全 局時鐘。全局時鐘的設(shè)計有以下幾種方法:

(1). 由 PLL 鎖相環(huán)來產(chǎn)生全局時鐘。

(2). 將 FPGA 芯片內(nèi)部邏輯產(chǎn)生的時鐘分配至全局時鐘布線網(wǎng)絡(luò)。 (3). 將外部時鐘通過專用的全局時鐘輸入引腳引入 FPGA。 在我們的設(shè)計中,一般推薦電路中的所有的時鐘都由 PLL 鎖相環(huán)產(chǎn)生。一方面,PLL

鎖相環(huán)可實現(xiàn)倍頻和移相的操作,使我們很方便地獲得所需頻率和相位的時鐘;另一方面,

PLL 鎖相環(huán)默認將其驅(qū)動的時鐘分配至全局時鐘網(wǎng)絡(luò)或區(qū)域時鐘網(wǎng)絡(luò),Jitter 和 Skew 都很小。 下圖取自我們項目中的一個 PLL 鎖相環(huán)設(shè)計,該PLL 用于驅(qū)動 DDR 的接口模塊。因為


功能所需,DDR 接口需要三個 133MHz 的時鐘,相位分別是‘-90 o ’、‘0 o ’、‘-180 o ’,圖中所示 即為該時鐘的產(chǎn)生模塊。我們使用 QuartusⅡ的Megawizard 生成 PLL 鎖相環(huán)的 IP core。其 中‘inclk_66’為 PLL 鎖相環(huán)的輸入時鐘,由外部的 66MHz 晶振提供,經(jīng)過 PLL 倍頻和移相

后得到所需的三個全局時鐘。

44.019.jpg


2. 內(nèi)部邏輯時鐘 內(nèi)部邏輯時鐘即指由芯片內(nèi)部的組合邏輯或計數(shù)器分頻產(chǎn)生的時鐘。 對于組合邏輯時鐘,特別是由多級組合邏輯產(chǎn)生的時鐘,是要被嚴格禁止使用的,因

為一方面組合邏輯極容易產(chǎn)生毛刺,特別是對多級組合邏輯;另一方面組合邏輯電路的 Jitter 和 Skew 比較大,這將惡化時鐘的質(zhì)量。所以,一般組合邏輯產(chǎn)生的內(nèi)部時鐘僅僅適用于時 鐘頻率較低、時鐘精度要求不高的情況。

對于計數(shù)器分頻產(chǎn)生的時鐘,也應(yīng)該盡量少地使用,因為這種時鐘會帶來比較大的延 遲,降低設(shè)計的可靠性,也使得靜態(tài)時序分析變得復(fù)雜。計數(shù)器分頻時鐘需完成的邏輯功能 完全可由 PLL 鎖相環(huán)或時鐘使能電路替代。

還有一種由觸發(fā)器產(chǎn)生的時鐘—行波時鐘,即一個觸發(fā)器的輸出用作另一個觸發(fā)器的 時鐘輸入。文中 1.1.2 節(jié)描述的時鐘分頻電路就是一種行波時鐘。因為各觸發(fā)器的時鐘之間 產(chǎn)生較大的時間偏移,很容易就會違反建立時間、保持時間的要求,導(dǎo)致亞穩(wěn)態(tài)的發(fā)生。所 以,這種行波時鐘要被嚴格禁止使用。

3. 門控時鐘 一般情況下,應(yīng)該避免使用門控時鐘。因為經(jīng)組合邏輯產(chǎn)生的門控時鐘極可能產(chǎn)生毛

刺,對系統(tǒng)造成很大危害。但對于某些功耗很大的系統(tǒng)而言,需要使用門控時鐘來降低功耗。


我們推薦使用右圖中描述的門控時鐘的設(shè)計,該設(shè)計一般不會產(chǎn)生毛刺和亞穩(wěn)態(tài)的問題。 因為觸發(fā)器避免了毛刺的產(chǎn)生,而亞穩(wěn)態(tài)只可能 出現(xiàn)在源時鐘的下降沿,但是隨后它與源時鐘低 相位相與,最后不會產(chǎn)生影響。
0.png

門控時鐘最好只在頂層模塊中出現(xiàn),并將其分離到一個在頂層的獨立模塊中。這同時保

證了底層的每個模塊有單一的時鐘,且在本模塊中的時鐘不進行門控。

在補充教程 4 和補充教程 5 中,我們對時鐘和時序的設(shè)計進行了更詳細的討論。

1.3.4亞穩(wěn)態(tài)

44.028.jpg

在同步電路或異步電路中,如果觸發(fā)器的 setup 時間或 hold 時間不能得到滿足,就可 能產(chǎn)生亞穩(wěn)態(tài),此時觸發(fā)器輸出端 Q 在有效時鐘沿之后比較長的一段時間處于不確定的狀 態(tài),在這段時間里 Q 端將會產(chǎn)生毛刺并不斷振蕩、最終固定在某一電壓值上,此電壓值并 不一定等于原來數(shù)據(jù)輸入端 D

的值。這段時間稱為決斷時間

(resolution time)。經(jīng)過決斷 時間之后,Q 端將穩(wěn)定到 0 或

1 上,但是究竟是 0 還是 1, 這是隨機的,與輸入沒有必然 的關(guān)系。


亞穩(wěn)態(tài)的危害主要體 現(xiàn)在破壞系統(tǒng)得穩(wěn)定性上,由于輸出在穩(wěn)定下來之前可能是毛刺、振蕩、固定的某一電壓值, 因此亞穩(wěn)態(tài)除了導(dǎo)致邏輯誤判之外,嚴重情況下輸出 0~1 之間的中間電壓值還會使下一級 產(chǎn)生亞穩(wěn)態(tài)(即導(dǎo)致亞穩(wěn)態(tài)的傳播)。 邏輯誤判將導(dǎo)致功能性錯誤,而亞穩(wěn)態(tài)的傳播則擴 大了故障面,嚴重時將導(dǎo)致系統(tǒng)崩潰。

在異步時序電路中更容易發(fā)生亞穩(wěn)態(tài),因為異步電路一般具有多個時鐘域,數(shù)據(jù)在兩個 時鐘域間傳遞時,非常容易導(dǎo)致 setup 時間或 hold 時間不滿足而發(fā)生亞穩(wěn)態(tài)。在同步時序 電路中,當兩個觸發(fā)器間的組合邏輯延遲過大時,會導(dǎo)致 setup 時間不滿足而發(fā)生亞穩(wěn)態(tài)。


1.3.5對跨時鐘域數(shù)據(jù)的處理

對跨時鐘域數(shù)據(jù)的處理的核心就是要保證下級時鐘對上級數(shù)據(jù)采樣的 setup 時間或 hold 時間滿足要求,即盡量避免亞穩(wěn)態(tài)的發(fā)生和傳播。但是,我們知道,只要系統(tǒng)中有異 步元件,亞穩(wěn)態(tài)就是無法避免的,因此設(shè)計的電路首先要減少亞穩(wěn)態(tài)導(dǎo)致錯誤的發(fā)生,其次 要使系統(tǒng)對產(chǎn)生的錯誤不敏感。我們推薦使用以下方法來解決異步時鐘域數(shù)據(jù)同步問題。

1. 用觸發(fā)器打兩拍 如下圖,左邊為異步輸入端,經(jīng)過兩級觸發(fā)器同步,在右邊的輸出將是同步的,而且

該輸出基本不存在亞穩(wěn)態(tài)。其原理是即使第一個觸發(fā)器的輸出端存在亞穩(wěn)態(tài),經(jīng)過一個 CLK 周期后,第二個觸發(fā)器 D 端的電平仍未穩(wěn)定的概率非常小,因此第二個觸發(fā)器 Q 端基本不 會產(chǎn)生亞穩(wěn)態(tài)。然而,亞穩(wěn)態(tài)是無法被根除的,一旦亞穩(wěn)態(tài)發(fā)生,后果的嚴重程度依賴于你


設(shè)計系統(tǒng)對產(chǎn)生的錯誤是否敏感。

44.029.jpg


2. 異步 FIFO 或 DPRAM

因為異步 FIFO 或 DPRAM 使用格雷碼計數(shù)器設(shè)計讀寫地址的指針,所以它可以很 好地避免亞穩(wěn)態(tài)的發(fā)生。使用方法如下,將上級芯片提供的數(shù)據(jù)隨路時鐘作為寫信號,將數(shù) 據(jù)寫入異步 FIFO 或 DPRAM,然后使用本級的采樣時鐘將數(shù)據(jù)讀出即可。唯一需要注意的 是,當兩級時鐘頻率不同時,需要設(shè)計好緩沖區(qū),并通過監(jiān)控 full、half、empty、useword
信號,保證數(shù)據(jù)不會溢出,也不會被讀空。

44.030.jpg

3. 調(diào)整時鐘相位

這種方法的設(shè)計難度較大,而且適用面有限。首先需對跨時鐘域數(shù)據(jù)的路徑進行詳

細的靜態(tài)時序分析,然后將違反 setup 時間和 hold 時間的情況一一列出,在不影響其它設(shè) 計性能的前提下,綜合考慮調(diào)整兩級時鐘的相位關(guān)系,最終使其 setup 時間和 hold 時間滿 足要求。



2.FPGA簡介

2.1什么是 FPGA

FPGA 是 Field Programmable Gate Array 的縮寫,即現(xiàn)場可編程門陣列, 是一種可編程的 IC
44.031.jpg 芯片(集成電路芯片),以下是目前項目中使用的幾種 FPGA 芯片:

44.032.jpg 44.033.jpg

2.2FPGA的結(jié)構(gòu)與組成


通常 FPGA 由布線資源分隔的可編程邏輯單元構(gòu)成陣列,又由可編程 I/O 單元圍繞陣

列構(gòu)成整個芯片,排成陣列的邏輯單元由布線通道中的可編程內(nèi)連線連接起來實現(xiàn)一定的邏

輯功能。

目前我們使用的 FPGA 的可編程邏輯單元一般由查找表和觸發(fā)器構(gòu)成。下圖所示即

為 Cyclone 系列 FPGA 芯片的邏輯單元(LE)組成。


44.034.jpg


查找表(Look-Up-Table)簡稱為 LUT,其本質(zhì)上就是一個靜態(tài)存儲器 SRAM。 對于下圖左邊所示的電路,查找表是這樣實現(xiàn)的:首先 FPGA 開發(fā)軟件會自動計算邏輯電路的所有可能的結(jié)果,然后把結(jié)果事先寫入查找表中,F(xiàn)PGA 工作時,輸入信號所進行的邏輯運算就等于輸入一個地址進行查表,找出地址對應(yīng)的內(nèi)容后輸出,即實現(xiàn)了該邏輯功能。
0.png

如果所設(shè)計的是時序電路,需要觸發(fā)器,則 FPGA 開發(fā)軟件會自動將觸發(fā)器配置在查 找表的后面,實現(xiàn)組合邏輯時就將觸發(fā)器旁路掉。

當然,對于復(fù)雜的設(shè)計,一個 LUT 是無法完成的,F(xiàn)PGA 可以通過進位邏輯將多個 LUT

相連起來,實現(xiàn) n 輸入的查找表,實現(xiàn)設(shè)計要求。

44.037.jpg
通俗地說,F(xiàn)PGA 就是由查找表、觸發(fā)器和布線資源組成。下圖 是一個 Cyclone 系列 FPGA 芯片的 內(nèi)部結(jié)構(gòu),其中一對查找表和觸發(fā) 器構(gòu)成邏輯單元 LE,若干個 LE 組 成邏輯陣列塊 LAB,最后再配上
各種布線資源,就是一個 FPGA 芯

片了。
詳細的介紹請見:補充教程 6 FPGA PLD 結(jié)構(gòu)與原理。
2.3FPGAASIC設(shè)計的區(qū)別


ASIC 是 Application Specific Integrated Circuit 的縮寫,即專用集成電路。ASIC 和 FPGA

屬于 SOC(System on a chip 片上系統(tǒng))的兩個發(fā)展方向,兩者唯一的區(qū)別在于,ASIC 的邏

輯電路是固化在其芯片中的,我們可以將 ASIC 理解為不可編程的 FPGA。


由于 FPGA 設(shè)計是基于固有的硬件結(jié)構(gòu)(如邏輯單元、塊 RAM、PLL/DLL、時鐘資源
等)的;而 ASIC 設(shè)計結(jié)構(gòu)靈活,目標多樣,所以 ASIC 設(shè)計的代碼風(fēng)格和 FPGA 設(shè)計的代 碼風(fēng)格有明顯差異,特別是在功耗、速度、時序等要求上。例如 ASIC 設(shè)計中根據(jù)要求會有

意識地采用某些組合邏輯、門控時鐘等,以降低功耗或提高速度。


3.FPGA開發(fā)流程



HDL(Hardware Design Language)和原理圖是兩種最常用的數(shù)字硬件電路描述方法,HDL 設(shè)計法具有更好的可移植性、通用性和模塊劃分與重用性的特點,在目前的工程設(shè)計
0.png 0.png

余下內(nèi)容預(yù)覽:
0.png 0.png

完整的pdf格式文檔51黑下載地址(共37頁):
FPGA入門教程.pdf (672.08 KB, 下載次數(shù): 478)



評分

參與人數(shù) 2黑幣 +55 收起 理由
327643785z + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:379542 發(fā)表于 2018-7-26 17:19 | 顯示全部樓層
看看資料,多謝分享
回復(fù)

使用道具 舉報

ID:197415 發(fā)表于 2018-8-2 13:40 | 顯示全部樓層
多謝分享
回復(fù)

使用道具 舉報

ID:30894 發(fā)表于 2018-8-13 15:45 | 顯示全部樓層

多謝分享
回復(fù)

使用道具 舉報

ID:380389 發(fā)表于 2018-8-13 19:18 來自觸屏版 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報

ID:388207 發(fā)表于 2018-8-20 16:31 | 顯示全部樓層
沒有積分下載怎么辦
回復(fù)

使用道具 舉報

ID:392630 發(fā)表于 2018-9-2 16:41 | 顯示全部樓層
小白,學(xué)習(xí)一下,下個資料看看
回復(fù)

使用道具 舉報

ID:305111 發(fā)表于 2018-10-8 09:32 | 顯示全部樓層
真小白,謝謝分享,打算先大致了解下,然后從語言學(xué)起,,,,,
回復(fù)

使用道具 舉報

ID:186249 發(fā)表于 2018-10-13 06:28 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:409058 發(fā)表于 2018-10-13 15:16 | 顯示全部樓層
最好的入門
回復(fù)

使用道具 舉報

ID:30894 發(fā)表于 2018-10-16 09:03 | 顯示全部樓層
最好的入門
回復(fù)

使用道具 舉報

ID:412723 發(fā)表于 2018-10-20 14:51 | 顯示全部樓層
很不錯!感謝分享!
回復(fù)

使用道具 舉報

ID:433186 發(fā)表于 2018-11-26 09:02 | 顯示全部樓層
謝謝分享.....................
回復(fù)

使用道具 舉報

ID:437700 發(fā)表于 2018-12-2 15:29 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:456139 發(fā)表于 2018-12-27 09:53 | 顯示全部樓層
感謝大神分享~
回復(fù)

使用道具 舉報

ID:464806 發(fā)表于 2019-1-8 18:45 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報

ID:484186 發(fā)表于 2019-3-4 13:18 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:493865 發(fā)表于 2019-3-19 13:03 | 顯示全部樓層
很好,厲害了
回復(fù)

使用道具 舉報

ID:475757 發(fā)表于 2019-3-22 10:44 | 顯示全部樓層
學(xué)習(xí)一下。
回復(fù)

使用道具 舉報

ID:502260 發(fā)表于 2019-4-1 11:35 | 顯示全部樓層
小白,剛開始學(xué),怎么下載??還是百度網(wǎng)盤吧
回復(fù)

使用道具 舉報

ID:510276 發(fā)表于 2019-4-12 16:04 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:174941 發(fā)表于 2019-4-14 23:27 | 顯示全部樓層
謝謝樓主@!
回復(fù)

使用道具 舉報

ID:528491 發(fā)表于 2019-5-6 14:14 | 顯示全部樓層
不錯,下了看看
回復(fù)

使用道具 舉報

ID:528491 發(fā)表于 2019-5-6 14:16 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:568074 發(fā)表于 2019-6-20 16:44 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:228360 發(fā)表于 2019-6-21 09:02 | 顯示全部樓層
謝謝分享,支持。
回復(fù)

使用道具 舉報

ID:155719 發(fā)表于 2019-7-8 11:05 | 顯示全部樓層
51黑的教程都是精品
回復(fù)

使用道具 舉報

ID:580264 發(fā)表于 2019-7-10 19:50 | 顯示全部樓層
謝謝分享,支持。
回復(fù)

使用道具 舉報

ID:600307 發(fā)表于 2019-8-15 09:04 | 顯示全部樓層
感謝樓主
回復(fù)

使用道具 舉報

ID:541246 發(fā)表于 2019-8-23 11:11 | 顯示全部樓層
多看資料多學(xué)習(xí)
回復(fù)

使用道具 舉報

ID:658564 發(fā)表于 2019-12-7 23:28 | 顯示全部樓層
多謝分享
回復(fù)

使用道具 舉報

ID:732396 發(fā)表于 2020-4-18 22:34 | 顯示全部樓層
看看資料,多謝分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表