|
|
1.?dāng)?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’代表低電平。
高低電平的含義可以理解為,存在一個判決電平,當(dāng)信號的電壓值高于判決電平時,我 們就認(rèn)為該信號表征高電平,即為‘1’。反之亦然。
當(dāng)前的數(shù)字電路中存在許多種電平標(biāo)準(zhǔn),比較常見的有 TTL、CMOS、LVTTL、LVCMOS、
ECL、PECL、LVDS、HSTL、SSTL 等。這些電平的詳細(xì)指標(biāo)請見《補充教程 1:電平標(biāo)準(zhǔn)》。 數(shù)字電路設(shè)計大致可分為組合邏輯電路和時序邏輯電路。 一般的數(shù)字設(shè)計的教材中對組合邏輯電路和時序邏輯電路的定義分別為:組合邏輯電
路的輸出僅與當(dāng)前的輸入有關(guān) ,而時序邏輯電路的輸出不但與輸入有關(guān),還和系統(tǒng)上一個 狀態(tài)有關(guān)。
但是在設(shè)計中,我們一般以時鐘的存在與否來區(qū)分該電路的性質(zhì)。由時鐘沿驅(qū)動工作 的電路為時序邏輯電路。大家注意,這兩種電路并不是獨立存在的,他們相互交錯存在于整 個電路系統(tǒng)的設(shè)計中。
1.1.1 組合邏輯電路 組合邏輯電路由任意數(shù)目的邏輯門電路組成,一般包括與門、或門、非門、
異或門、與非門、或非門等。一般的組合邏輯電路如下圖:
44.001.jpg (52.22 KB, 下載次數(shù): 147)
下載附件
2018-2-13 01:50 上傳
其中 A,B,C,D,E,F 為輸入,G 為輸出。
1.1.2時序邏輯電路
時序邏輯電路由時鐘的上升沿或下降沿驅(qū)動工作,其實真正被時鐘沿驅(qū)動的是電路中的觸發(fā)器(Register),也稱為寄存器。觸發(fā)器的工作原理和參數(shù)如下圖:
Register的原理和參數(shù)
0.png (14.46 KB, 下載次數(shù): 129)
下載附件
2018-2-13 01:37 上傳
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 (53.4 KB, 下載次數(shù): 136)
下載附件
2018-2-13 01:50 上傳
該時序電路的功能為實現(xiàn)對時鐘’clk’的 4 分頻,其中’clk_2’為 2 分頻時鐘,’clk_4’為 4分頻時鐘,’enable’為該電路的使能信號。其功能仿真波形如下圖所示:
44.004.jpg (20.7 KB, 下載次數(shù): 120)
下載附件
2018-2-13 01:50 上傳
(2)、序列檢測器
44.005.jpg (59.05 KB, 下載次數(shù): 123)
下載附件
2018-2-13 01:50 上傳
該時序電路實現(xiàn)了一個序列檢測器,當(dāng)輸入序列‘datain’中出現(xiàn)‘101’時,標(biāo)志位 F 將輸 出‘1’,其他時刻輸出‘0’。電路中‘clk’為時鐘信號,‘D1’,‘D2’,‘D3’為移位寄存器的輸出,’enable’ 為該電路的使能信號。其功能仿真波形如下圖所示:
44.006.jpg (29.63 KB, 下載次數(shù): 128)
下載附件
2018-2-13 01:50 上傳
可見,時序電路設(shè)計的核心是時鐘和觸發(fā)器,這兩者也是我們設(shè)計電路時需重點關(guān)注的。
1.2毛刺的產(chǎn)生與消除 1.2.1競爭與冒險
當(dāng)一個邏輯門的輸入有兩個或兩個以上的變量發(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)致電路的輸出值永遠(yuǎn)偏離正常 值或者發(fā)生振蕩。
避免冒險的最簡單的方法是同一時刻只允許單個輸入變量發(fā)生變化,或者使用寄存器采 樣的辦法。
1.2.2毛刺的產(chǎn)生與危害
信號在 FPGA 器件中通過邏輯單元連線時,一定存在延時。延時的大小不僅和連線的長 短和邏輯單元的數(shù)目有關(guān),而且也和器件的制造工藝、工作環(huán)境等有關(guān)。因此,信號在器件 中傳輸?shù)臅r候,所需要的時間是不能精確估計的,當(dāng)多路信號同時發(fā)生跳變的瞬間,就產(chǎn)生 了“競爭冒險”。這時,往往會出現(xiàn)一些不正確的尖峰信號,這些尖峰信號就是“毛刺”。
讓我們來具體看一下毛刺是如何產(chǎn)生的。下圖是一個與門電路,
44.007.jpg (28.09 KB, 下載次數(shù): 135)
下載附件
2018-2-13 01:50 上傳
我們期望的設(shè)計是,a 和 b 信號同時變化,這樣輸出 OUT 將一直為 0,但是實際中 OUT
產(chǎn)生了毛刺,它的仿真波形如下所示:
44.008.jpg (14.25 KB, 下載次數(shù): 131)
下載附件
2018-2-13 01:50 上傳
可見,即使是在最簡單的邏輯運算中,如果出現(xiàn)多路信號同時跳變的情況,在通過內(nèi)部 走線之后,就一定會產(chǎn)生毛刺。而現(xiàn)在數(shù)字電路設(shè)計中的信號往往是由時鐘控制的,如果將 帶有毛刺的輸出信號直接連接到時鐘輸入端、清零或置位端口的設(shè)計,可能會導(dǎo)致嚴(yán)重的后 果;此外對于多數(shù)據(jù)輸入的復(fù)雜運算系統(tǒng),每個數(shù)據(jù)都由相當(dāng)多的位數(shù)組成。這時,每一級 的毛刺都會對結(jié)果有嚴(yán)重的影響,如果是多級的設(shè)計,那么毛刺累加后甚至?xí)绊懻麄設(shè)計 的可靠性和精確性。 判斷一個邏輯電路在某些輸入信號發(fā)生變化時是否會產(chǎn)生毛刺,首先要判斷信號是否會 同時變化,然后判斷在信號同時變化的時候,是否會產(chǎn)生毛刺,這可以通過邏輯函數(shù)的卡諾 圖或邏輯函數(shù)表達(dá)式來進(jìn)行判斷。 1.2.3毛刺的消除
毛刺是數(shù)字電路設(shè)計中的棘手問題,它的出現(xiàn)會影響電路工作的穩(wěn)定性、可靠性,嚴(yá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)造成危害了。因此一 般認(rèn)為,只要在整個系統(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ù)器
對于一般的二進(jìn)制或十進(jìn)制計數(shù)器,在計數(shù)時,將有多位信號同時跳變。例如一個 3bit
二進(jìn)制計數(shù)器,由’111’轉(zhuǎn)換為’000’時,必將產(chǎn)生毛刺。此時,使用格雷碼計數(shù)器將避免毛
刺的出現(xiàn),因為格雷碼計數(shù)器的輸出每次只有一位跳變。 其他關(guān)于毛刺的詳細(xì)討論,請見補充教程 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è)計準(zhǔn)則: 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.當(dāng)整個電路需要多個時鐘來實現(xiàn),則可以將整個電路分成若干局部同步電路(盡 量以同一個時鐘為一個模塊),局部同步電路之間接口當(dāng)作異步接口考慮,而且每個時鐘信 號的時鐘偏差(△T)要嚴(yán)格控制。
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 的特點,它到芯片中的每一個寄存 器的延遲最短,且該延遲可被認(rèn)為是固定值。所以我們推薦在所有的設(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)默認(rè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 (41.53 KB, 下載次數(shù): 124)
下載附件
2018-2-13 01:50 上傳
2. 內(nèi)部邏輯時鐘 內(nèi)部邏輯時鐘即指由芯片內(nèi)部的組合邏輯或計數(shù)器分頻產(chǎn)生的時鐘。 對于組合邏輯時鐘,特別是由多級組合邏輯產(chǎn)生的時鐘,是要被嚴(yá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ā)生。所 以,這種行波時鐘要被嚴(yán)格禁止使用。 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 (27.71 KB, 下載次數(shù): 125)
下載附件
2018-2-13 01:41 上傳
門控時鐘最好只在頂層模塊中出現(xiàn),并將其分離到一個在頂層的獨立模塊中。這同時保
證了底層的每個模塊有單一的時鐘,且在本模塊中的時鐘不進(jìn)行門控。
在補充教程 4 和補充教程 5 中,我們對時鐘和時序的設(shè)計進(jìn)行了更詳細(xì)的討論。
1.3.4亞穩(wěn)態(tài)
44.028.jpg (27.25 KB, 下載次數(shù): 125)
下載附件
2018-2-13 01:50 上傳
在同步電路或異步電路中,如果觸發(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)致邏輯誤判之外,嚴(yán)重情況下輸出 0~1 之間的中間電壓值還會使下一級 產(chǎn)生亞穩(wěn)態(tài)(即導(dǎo)致亞穩(wěn)態(tài)的傳播)。 邏輯誤判將導(dǎo)致功能性錯誤,而亞穩(wěn)態(tài)的傳播則擴 大了故障面,嚴(yán)重時將導(dǎo)致系統(tǒng)崩潰。 在異步時序電路中更容易發(fā)生亞穩(wěn)態(tài),因為異步電路一般具有多個時鐘域,數(shù)據(jù)在兩個 時鐘域間傳遞時,非常容易導(dǎo)致 setup 時間或 hold 時間不滿足而發(fā)生亞穩(wěn)態(tài)。在同步時序 電路中,當(dāng)兩個觸發(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ā)生,后果的嚴(yán)重程度依賴于你
設(shè)計系統(tǒng)對產(chǎn)生的錯誤是否敏感。
44.029.jpg (31.17 KB, 下載次數(shù): 128)
下載附件
2018-2-13 01:50 上傳
2. 異步 FIFO 或 DPRAM
因為異步 FIFO 或 DPRAM 使用格雷碼計數(shù)器設(shè)計讀寫地址的指針,所以它可以很 好地避免亞穩(wěn)態(tài)的發(fā)生。使用方法如下,將上級芯片提供的數(shù)據(jù)隨路時鐘作為寫信號,將數(shù) 據(jù)寫入異步 FIFO 或 DPRAM,然后使用本級的采樣時鐘將數(shù)據(jù)讀出即可。唯一需要注意的 是,當(dāng)兩級時鐘頻率不同時,需要設(shè)計好緩沖區(qū),并通過監(jiān)控 full、half、empty、useword 信號,保證數(shù)據(jù)不會溢出,也不會被讀空。
44.030.jpg (35.11 KB, 下載次數(shù): 119)
下載附件
2018-2-13 01:50 上傳
3. 調(diào)整時鐘相位
這種方法的設(shè)計難度較大,而且適用面有限。首先需對跨時鐘域數(shù)據(jù)的路徑進(jìn)行詳
細(xì)的靜態(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 (7.71 KB, 下載次數(shù): 132)
下載附件
2018-2-13 01:50 上傳
芯片(集成電路芯片),以下是目前項目中使用的幾種 FPGA 芯片:
44.032.jpg (8.23 KB, 下載次數(shù): 140)
下載附件
2018-2-13 01:50 上傳
44.033.jpg (7.04 KB, 下載次數(shù): 129)
下載附件
2018-2-13 01:50 上傳
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 (18.67 KB, 下載次數(shù): 140)
下載附件
2018-2-13 01:50 上傳
查找表(Look-Up-Table)簡稱為 LUT,其本質(zhì)上就是一個靜態(tài)存儲器 SRAM。 對于下圖左邊所示的電路,查找表是這樣實現(xiàn)的:首先 FPGA 開發(fā)軟件會自動計算邏輯電路的所有可能的結(jié)果,然后把結(jié)果事先寫入查找表中,F(xiàn)PGA 工作時,輸入信號所進(jìn)行的邏輯運算就等于輸入一個地址進(jìn)行查表,找出地址對應(yīng)的內(nèi)容后輸出,即實現(xiàn)了該邏輯功能。
0.png (32.5 KB, 下載次數(shù): 414)
下載附件
2018-2-13 01:43 上傳
如果所設(shè)計的是時序電路,需要觸發(fā)器,則 FPGA 開發(fā)軟件會自動將觸發(fā)器配置在查 找表的后面,實現(xiàn)組合邏輯時就將觸發(fā)器旁路掉。 當(dāng)然,對于復(fù)雜的設(shè)計,一個 LUT 是無法完成的,F(xiàn)PGA 可以通過進(jìn)位邏輯將多個 LUT
相連起來,實現(xiàn) n 輸入的查找表,實現(xiàn)設(shè)計要求。
44.037.jpg (13.25 KB, 下載次數(shù): 139)
下載附件
2018-2-13 01:50 上傳
通俗地說,F(xiàn)PGA 就是由查找 表、觸發(fā)器和布線資源組成。下圖 是一個 Cyclone 系列 FPGA 芯片的 內(nèi)部結(jié)構(gòu),其中一對查找表和觸發(fā) 器構(gòu)成邏輯單元 LE,若干個 LE 組 成邏輯陣列塊 LAB,最后再配上 各種布線資源,就是一個 FPGA 芯
片了。 詳細(xì)的介紹請見:補充教程 6 FPGA PLD 結(jié)構(gòu)與原理。 2.3FPGA與 ASIC設(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)靈活,目標(biāo)多樣,所以 ASIC 設(shè)計的代碼風(fēng)格和 FPGA 設(shè)計的代 碼風(fēng)格有明顯差異,特別是在功耗、速度、時序等要求上。例如 ASIC 設(shè)計中根據(jù)要求會有
意識地采用某些組合邏輯、門控時鐘等,以降低功耗或提高速度。
3.FPGA開發(fā)流程
HDL(Hardware Design Language)和原理圖是兩種最常用的數(shù)字硬件電路描述方法,HDL 設(shè)計法具有更好的可移植性、通用性和模塊劃分與重用性的特點,在目前的工程設(shè)計
0.png (90.69 KB, 下載次數(shù): 146)
下載附件
2018-2-13 01:47 上傳
0.png (18.17 KB, 下載次數(shù): 145)
下載附件
2018-2-13 01:48 上傳
余下內(nèi)容預(yù)覽:
0.png (65.63 KB, 下載次數(shù): 113)
下載附件
2018-2-13 01:49 上傳
0.png (154.74 KB, 下載次數(shù): 134)
下載附件
2018-2-13 01:49 上傳
完整的pdf格式文檔51黑下載地址(共37頁):
FPGA入門教程.pdf
(672.08 KB, 下載次數(shù): 478)
2018-2-12 15:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|