FPGA設(shè)計(jì)中的基本問題課件_第1頁
FPGA設(shè)計(jì)中的基本問題課件_第2頁
FPGA設(shè)計(jì)中的基本問題課件_第3頁
FPGA設(shè)計(jì)中的基本問題課件_第4頁
FPGA設(shè)計(jì)中的基本問題課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第六講 FPGA設(shè)計(jì)中的基本問題數(shù)字電路設(shè)計(jì)的基本概念時(shí)鐘問題如何提高系統(tǒng)速度四種基本思想信息與通信學(xué)院:謝躍雷2022/8/171第1頁,共49頁。6.1 數(shù)字電路設(shè)計(jì)基本概念 建立時(shí)間(setup time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;一、建立時(shí)間和保持時(shí)間圖1數(shù)據(jù)穩(wěn)定傳輸必須滿足建立和保持時(shí)間的要求。保持時(shí)間(hold time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間, 如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。2022/8/172第2頁,共49頁。二、FPGA中的冒險(xiǎn)現(xiàn)象信號(hào)在F

2、PGA器件內(nèi)部通過連線和邏輯單元時(shí),都有一定的延時(shí)。信號(hào)的高低電平轉(zhuǎn)換也需要一定的過渡時(shí)間。由于存在這兩方面因素,多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào)變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化,往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為“毛刺”。如果一個(gè)組合邏輯電路中有“毛刺”出現(xiàn),就說明該電路存在“冒險(xiǎn)”。(與分立元件不同,由于PLD內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級傳遞,因此毛刺現(xiàn)象在PLD、FPGA設(shè)計(jì)中尤為突出)2022/8/173第3頁,共49頁。圖2給出了一個(gè)邏輯冒險(xiǎn)的例子, 從圖2的仿真波形可以看出, “A、 B、 C、 D”四個(gè)輸入信號(hào)的高低

3、電平變換不是同時(shí)發(fā)生的, 導(dǎo)致輸出信號(hào)“OUT”出現(xiàn)了毛刺。 由于信號(hào)路徑長度的不同, 譯碼器、 數(shù)值比較器以及狀態(tài)計(jì)數(shù)器等器件本身容易出現(xiàn)冒險(xiǎn)現(xiàn)象.2022/8/174第4頁,共49頁。冒險(xiǎn)往往會(huì)影響到邏輯電路的穩(wěn)定性, 時(shí)鐘端口、 清零和置位端口對毛刺信號(hào)十分敏感,任何一點(diǎn)毛刺都可能會(huì)使系統(tǒng)出錯(cuò), 因此判斷邏輯電路中是否存在冒險(xiǎn)以及如何避免冒險(xiǎn)是設(shè)計(jì)人員必須要考慮的問題2022/8/175第5頁,共49頁。三、消除毛刺 可以通過改變設(shè)計(jì),破壞毛刺產(chǎn)生的條件,來減少毛刺的發(fā)生。一般情況下有兩種去除毛刺的方法,采樣法和濾波法。 1、采樣法a.一種方法是在輸出信號(hào)的保持時(shí)間內(nèi),用一定寬度的高電平

4、脈沖與輸出信號(hào)做邏輯與運(yùn)算,由此獲取輸出信號(hào)的電平值2022/8/176第6頁,共49頁。b.另一種更常見的方法是利用D觸發(fā)器的D輸入端對毛刺信號(hào)不敏感的特點(diǎn),在輸出信號(hào)的保持時(shí)間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號(hào),這種方法類似于將異步電路轉(zhuǎn)化為同步電路。2022/8/177第7頁,共49頁。2022/8/178第8頁,共49頁。 2、濾波法 在仿真時(shí),我們也可能會(huì)發(fā)現(xiàn)在FPGA器件對外輸出引腳上有輸出毛刺,但由于毛刺很短,加上PCB本身的寄生參數(shù),大多數(shù)情況下,毛刺通過PCB走線,基本可以自然被慮除,不用再外加阻容濾波。2022/8/179第9頁,共49頁。四、清除和置位信號(hào)在FPGA的設(shè)計(jì)

5、中,全局的清零和置位信號(hào)必須經(jīng)過全局的清零和置位管腳輸入,因?yàn)樗麄円矊儆谌值馁Y源,其扇出能力大,而且在FPGA內(nèi)部是直接連接到所有的觸發(fā)器的置位和清零端的,這樣的做法會(huì)使芯片的工作可靠、性能穩(wěn)定,而使用普通的IO腳則不能保證該性能。 在FPGA的設(shè)計(jì)中,除了從外部管腳引入的全局清除和置位信號(hào)外在FPGA內(nèi)部邏輯的處理中也經(jīng)常需要產(chǎn)生一些內(nèi)部的清除或置位信號(hào)。清除和置位信號(hào)要求象對待時(shí)鐘那樣小心地考慮它們,因?yàn)檫@些信號(hào)對毛刺也是非常敏感的。 2022/8/1710第10頁,共49頁。在同步電路設(shè)計(jì)中,可以用同步置位的辦法來替代異步清0。在用硬件描述語言的設(shè)計(jì)中可以用如下的方式來描述: 異步清零

6、process(rst,clk)beginif rst=1 thencount0);elsif clkevent and clk=1 thencount=count+1;end if;end process;同步清零processbeginwait until clkevent and clk=1;if rst=1 thencount0);elsecount=count+1;end if;end process;2022/8/1711第11頁,共49頁。五、觸發(fā)器與鎖存器 我們知道,觸發(fā)器是在時(shí)鐘的沿進(jìn)行數(shù)據(jù)的鎖存的,而鎖存器是用電平使能來鎖存數(shù)據(jù)的。所以觸發(fā)器的Q輸出端在每一個(gè)時(shí)鐘沿都會(huì)被更

7、新,而鎖存器只能在使能電平有效器件才會(huì)被更新。 在FPGA設(shè)計(jì)中建議如果不是必須那么應(yīng)該盡量使用觸發(fā)器而不是鎖存器。 那么在使用硬件描述語言進(jìn)行電路設(shè)計(jì)的時(shí)候如何區(qū)分觸發(fā)器和鎖存器的描述方法哪?其實(shí)有不少人在使用的過程中可能并沒有特意區(qū)分過,所以也忽略了二者在描述方法上的區(qū)別。下面是用verilog語言描述的觸發(fā)器和鎖存器。2022/8/1712第12頁,共49頁。觸發(fā)器的語言描述:module d_ff(clk,data,q)input clk,data;output q;reg q;always (posedge clk)q=data;endmoduleD鎖存器module latchin

8、f (enable, data, q);input enable, data;output q;reg q;always (enable or data)if (enable)q = data;endmodule 2022/8/1713第13頁,共49頁。六、FPGA中的延時(shí)設(shè)計(jì)當(dāng)需要對電路中的某一信號(hào)作一段延時(shí)時(shí),可在信號(hào)后串接一些“非門”或其它門電路。但在FPGA中,開發(fā)軟件會(huì)在綜合設(shè)計(jì)時(shí)將這些門當(dāng)作冗余邏輯去掉,達(dá)不到延時(shí)的效果??梢酝ㄟ^插入原語或調(diào)用延時(shí)線模塊來產(chǎn)生一定的延時(shí)。但這樣形成的延時(shí)在FPGA芯片中并不穩(wěn)定,會(huì)隨溫度等外部環(huán)境的改變而改變,這樣會(huì)影響FPGA的性能。因此,可以

9、用高頻時(shí)鐘來驅(qū)動(dòng)一移位寄存器,需要延時(shí)的信號(hào)作為數(shù)據(jù)輸入,按所需延時(shí)正確設(shè)置移位寄存器的級數(shù),移位寄存器的輸出即為延時(shí)后的信號(hào)。此方法產(chǎn)生的延時(shí)信號(hào)有誤差,誤差大小由高頻時(shí)鐘的周期來決定。對于數(shù)據(jù)信號(hào)的延時(shí),在輸出端用數(shù)據(jù)時(shí)鐘對延時(shí)后的信號(hào)重新采樣,就可以消除誤差。當(dāng)然,當(dāng)所需延時(shí)較長時(shí),這樣做比較浪費(fèi)資源。此外,用語言進(jìn)行FPGA設(shè)計(jì)時(shí),不能用語句來實(shí)現(xiàn)延時(shí),因?yàn)槟壳暗木C合工具還不能做到如此精確的延時(shí),即程序中的語句不能被綜合。 2022/8/1714第14頁,共49頁。6.2 時(shí)鐘問題 無論是用離散邏輯、可編程邏輯,還是用全定制硅器件實(shí)現(xiàn)的任何數(shù)字設(shè)計(jì),為了成功地操作,可靠的時(shí)鐘是非常關(guān)鍵

10、的。設(shè)計(jì)不良的時(shí)鐘在極限的溫度、電壓或制造工藝的偏差情況下將導(dǎo)致錯(cuò)誤的行為,并且調(diào)試?yán)щy、花銷很大。 在設(shè)計(jì)PLD/FPGA時(shí)通常采用幾種時(shí)鐘類型。時(shí)鐘可分為如下四種類型:全局時(shí)鐘、門控時(shí)鐘、多級邏輯時(shí)鐘和波動(dòng)式時(shí)鐘。多時(shí)鐘系統(tǒng)能夠包括上述四種時(shí)鐘類型的任意組合。1全局時(shí)鐘 對于一個(gè)設(shè)計(jì)項(xiàng)目來說,全局時(shí)鐘(或同步時(shí)鐘)是最簡單和最可預(yù)測的時(shí)鐘。在PLD/FPGA設(shè)計(jì)中最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)的單個(gè)主時(shí)鐘去鐘控設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。2022/8/1715第15頁,共49頁。只要可能就應(yīng)盡量在設(shè)計(jì)項(xiàng)目中采用全局時(shí)鐘。PLD/FPGA都具有專門的全局時(shí)鐘引腳,它直接連到器件

11、中的每一個(gè)寄存器。這種全局時(shí)鐘提供器件中最短的時(shí)鐘到輸出的延時(shí)。2022/8/1716第16頁,共49頁。2門控時(shí)鐘 在許多應(yīng)用中, 整個(gè)設(shè)計(jì)項(xiàng)目都采用外部的全局時(shí)鐘是不可能或不實(shí)際的, 所以通常用陣列時(shí)鐘構(gòu)成門控時(shí)鐘。 每當(dāng)用組合邏輯來控制觸發(fā)器時(shí), 通常都存在著門控時(shí)鐘。 在使用門控時(shí)鐘時(shí), 應(yīng)仔細(xì)分析時(shí)鐘函數(shù), 以避免毛刺的影響。 如果設(shè)計(jì)滿足下述兩個(gè)條件, 則可以保證時(shí)鐘信號(hào)不出現(xiàn)危險(xiǎn)的毛刺, 門控時(shí)鐘就可以像全局時(shí)鐘一樣可靠工作: 1.驅(qū)動(dòng)時(shí)鐘的邏輯必須只包含一個(gè)“與門”或一個(gè)“或門”, 如果采用任何附加邏輯, 就會(huì)在某些工作狀態(tài)下出現(xiàn)由于邏輯競爭而產(chǎn)生的毛刺。 2. 邏輯門的一個(gè)輸

12、入作為實(shí)際的時(shí)鐘, 而該邏輯門的所有其它輸入必須當(dāng)成地址或控制線, 它們遵守相對于時(shí)鐘的建立和保持時(shí)間的約束。2022/8/1717第17頁,共49頁。與門門控時(shí)鐘2022/8/1718第18頁,共49頁?;蜷T門控時(shí)鐘波形圖顯示出有關(guān)的建立時(shí)間和保持時(shí)間的要求。這兩個(gè)設(shè)計(jì)項(xiàng)目的地址線必須在時(shí)鐘保持有效的整個(gè)期間內(nèi)保持穩(wěn)定(nWR和nWE是低電平有效)。如果地址線在規(guī)定的時(shí)間內(nèi)未保持穩(wěn)定,則在時(shí)鐘上會(huì)出現(xiàn)毛刺,造成觸發(fā)器發(fā)生錯(cuò)誤的狀態(tài)變化。另一方面,數(shù)據(jù)引腳D1n只要求在nWR和nWE的有效邊沿處滿足標(biāo)準(zhǔn)的建立和保持時(shí)間的規(guī)定 2022/8/1719第19頁,共49頁。我們往往可以將門控時(shí)鐘轉(zhuǎn)換

13、成全局時(shí)鐘以改善設(shè)計(jì)項(xiàng)目的可靠性。圖4 示出如何用全局時(shí)鐘重新設(shè)計(jì) 圖2 的電路。地址線在控制D觸發(fā)器的使能輸入,許多PLD設(shè)計(jì)軟件,如MAX+PLUSII軟件都提供這種帶使能端的D觸發(fā)器。當(dāng)ENA為高電平時(shí),D輸入端的值被鐘控到觸發(fā)器中:當(dāng)ENA為低電平時(shí),維持現(xiàn)在的狀態(tài)。2022/8/1720第20頁,共49頁。3. 多時(shí)鐘系統(tǒng) 許多系統(tǒng)要求在同一個(gè)PLD內(nèi)采用多時(shí)鐘。最常見的例子是兩個(gè)異步微處理器器之間的接口,或微處理器和異步通信通道的接口。由于兩個(gè)時(shí)鐘信號(hào)之間要求一定的建立和保持時(shí)間,所以,上述應(yīng)用引進(jìn)了附加的定時(shí)約束條件。它們也會(huì)要求將某些異步信號(hào)同步化。2022/8/1721第21

14、頁,共49頁。圖12 具有同步寄存器輸出的多時(shí)鐘系統(tǒng)在許多應(yīng)用中只將異步信號(hào)同步化還是不夠的,當(dāng)系統(tǒng)中有兩個(gè)或兩個(gè)以上非同源時(shí)鐘的時(shí)候,數(shù)據(jù)的建立和保持時(shí)間很難得到保證,我們將面臨復(fù)雜的時(shí)間問題。最好的方法是將所有非同源時(shí)鐘同步化。使用PLD內(nèi)部的鎖項(xiàng)環(huán)(PLL或DLL)是一個(gè)效果很好的方法,但不是所有PLD都帶有PLL、DLL,而且?guī)в蠵LL功能的芯片大多價(jià)格昂貴,所以除非有特殊要求,一般場合可以不使用帶PLL的PLD。 這時(shí)我們需要使用帶使能端的D觸發(fā)器,并引入一個(gè)高頻時(shí)鐘。2022/8/1722第22頁,共49頁。圖13 不同源時(shí)鐘圖13 同步化任意非同源時(shí)鐘穩(wěn)定可靠的時(shí)鐘是系統(tǒng)穩(wěn)定可靠

15、的重要條件,我們不能夠?qū)⑷魏慰赡芎忻痰妮敵鲎鳛闀r(shí)鐘信號(hào),并且盡可能只使用一個(gè)全局時(shí)鐘,對多時(shí)鐘系統(tǒng)要注意同步異步信號(hào)和非同源時(shí)鐘。2022/8/1723第23頁,共49頁。4.時(shí)鐘歪斜 電路中控制各元件同步運(yùn)行的時(shí)鐘源到各元件的距離相差很大,時(shí)鐘歪斜就是在系統(tǒng)內(nèi)不同元件處檢測到有效的時(shí)鐘跳變沿所需的時(shí)間差異。若歪斜的程度大于從一邊緣敏感存儲(chǔ)器的輸出到下一級輸入的延遲時(shí)間,就能使移位寄存器的數(shù)據(jù)丟失,使同步計(jì)數(shù)器輸出發(fā)生錯(cuò)誤,故必須設(shè)法消除時(shí)鐘歪斜。 減少時(shí)鐘歪斜的方法有以下幾種: ()采用適當(dāng)?shù)臅r(shí)鐘緩沖器,或者在邊緣敏感器件的輸出與其饋給的任何邊緣敏感器件輸入端之間加入一定的延遲以減小歪斜

16、。 ()嚴(yán)重的時(shí)鐘歪斜往往是由于在FPGA內(nèi)的時(shí)鐘及其它全局控制線(如復(fù)位線)使負(fù)載過重造成的,在信號(hào)線上接一串線形緩沖器,使驅(qū)動(dòng)強(qiáng)度逐步增大,可以消除時(shí)鐘歪斜。2022/8/1724第24頁,共49頁。()在受時(shí)鐘控制的部件之后分別接入緩沖器,并在兩個(gè)緩沖器輸出端之間接一平衡網(wǎng)絡(luò)。()采用FPGA內(nèi)的模塊可以對輸入時(shí)鐘進(jìn)行很好的分頻和倍頻,從而使時(shí)鐘歪斜減到最低程度。2022/8/1725第25頁,共49頁。6.3 FPGA系統(tǒng)速度 同步電路的速度是指同步時(shí)鐘的速度。同步時(shí)鐘愈快,電路處理數(shù)據(jù)的時(shí)間間隔越短,電路在單位時(shí)間處理的數(shù)據(jù)量就愈大。我們先來看一看同步電路中數(shù)據(jù)傳遞的一個(gè)基本模型:如

17、下圖Tco是觸發(fā)器時(shí)鐘到數(shù)據(jù)輸出的延時(shí)Tdelay是組合邏輯的延時(shí)Tsetup是觸發(fā)器的建立時(shí)間2022/8/1726第26頁,共49頁。假設(shè)數(shù)據(jù)已經(jīng)被時(shí)鐘的上升沿打入D觸發(fā)器,那么數(shù)據(jù)到達(dá)第一個(gè)觸發(fā)器的Q端需要Tco,再經(jīng)過組合邏輯的延時(shí)Tdelay到達(dá)的第二個(gè)觸發(fā)器的D端,要想時(shí)鐘能在第二個(gè)觸發(fā)器再次被穩(wěn)定的鎖入觸發(fā)器,則時(shí)鐘的延遲不能晚于Tco+Tdelay+Tsetup,由以上分析可知:最小時(shí)鐘周期:T=Tco+Tdelay+Tsetup 最快時(shí)鐘頻率 F= 1/T PLD開發(fā)軟件也正是通過這個(gè)公式來計(jì)算系統(tǒng)運(yùn)行速度Fmax 注:在這個(gè)邏輯圖中有個(gè)參數(shù):Tpd ,即時(shí)鐘的延時(shí)參數(shù),我們

18、在剛才做時(shí)間分析的時(shí)候,沒有提這個(gè)參數(shù),(如果使用PLD的全局時(shí)鐘型號(hào),Tpd可以為0,如果是普通時(shí)鐘,則不為0)。所以如果考慮到時(shí)鐘的延時(shí),精確的公式應(yīng)該是T=Tco+Tdelay+Tsetup-Tpd。當(dāng)然以上全部分析的都是器件內(nèi)部的運(yùn)行速度,如果考慮芯片I/O管腳延時(shí)對系統(tǒng)速度的影響,那么還需要加一些修正。 2022/8/1727第27頁,共49頁。由于Tco、Tsetup是由具體的器件和工藝決定的,我們設(shè)計(jì)電路時(shí)只可以改變Tdelay。所以縮短觸發(fā)器間組合邏輯的延時(shí)是提高同步電路速度的關(guān)鍵。由于一般同步電路都不止一級鎖存(如圖13),而要使電路穩(wěn)定工作,時(shí)鐘周期必須滿足最大延時(shí)要求,縮

19、短最長延時(shí)路徑,才可提高電路的工作頻率。 圖13 轉(zhuǎn)移組合邏輯 2022/8/1728第28頁,共49頁。如圖14所示:我們可以將較大的組合邏輯分解為較小的幾塊,中間插入觸發(fā)器,這樣可以提高電路的工作頻率。這也是所謂“流水線”(pipelining)技術(shù)的基本原理。 圖14 分割組合邏輯 2022/8/1729第29頁,共49頁。6.4 FPGA設(shè)計(jì)的基本思想FPGA/CPLD 的設(shè)計(jì)思想與技巧是一個(gè)非常大的話題,由于篇幅所限,這里介紹一些常用的設(shè)計(jì)思想與技巧,包括乒乓球操作、串并轉(zhuǎn)換、流水線操作和數(shù)據(jù)接口的同步方法。希望有意識(shí)地利用這些原則指導(dǎo)日后的設(shè)計(jì)工作,將取得事半功倍的效果! 一、乒乓

20、操作 “ 乒乓操作 ” 是一個(gè)常常應(yīng)用于數(shù)據(jù)流控制的處理技巧,典型的乒乓操作方法如圖 1 所示。 2022/8/1730第30頁,共49頁。乒乓操作的處理流程為:輸入數(shù)據(jù)流通過 “ 輸入數(shù)據(jù)選擇單元 ” 將數(shù)據(jù)流等時(shí)分配到兩個(gè)數(shù)據(jù)緩沖區(qū),數(shù)據(jù)緩沖模塊可以為任何存儲(chǔ)模塊,比較常用的存儲(chǔ)單元為雙口 RAM(DPRAM) 、單口 RAM(SPRAM) 、 FIFO 等。在第一個(gè)緩沖周期,將輸入的數(shù)據(jù)流緩存到 “ 數(shù)據(jù)緩沖模塊 1” ;在第 2 個(gè)緩沖周期,通過 “ 輸入數(shù)據(jù)選擇單元 ” 的切換,將輸入的數(shù)據(jù)流緩存到 “ 數(shù)據(jù)緩沖模塊 2” ,同時(shí)將 “ 數(shù)據(jù)緩沖模塊 1” 緩存的第 1 個(gè)周期數(shù)據(jù)通

21、過 “ 輸入數(shù)據(jù)選擇單元 ” 的選擇,送到 “ 數(shù)據(jù)流運(yùn)算處理模塊 ” 進(jìn)行運(yùn)算處理;在第 3 個(gè)緩沖周期通過 “ 輸入數(shù)據(jù)選擇單元 ” 的再次切換,將輸入的數(shù)據(jù)流緩存到 “ 數(shù)據(jù)緩沖模塊 1” ,同時(shí)將 “ 數(shù)據(jù)緩沖模塊 2” 緩存的第 2 個(gè)周期的數(shù)據(jù)通過 “ 輸入數(shù)據(jù)選擇單元 ” 切換,送到 “ 數(shù)據(jù)流運(yùn)算處理模塊 ” 進(jìn)行運(yùn)算處理。如此循環(huán)。 2022/8/1731第31頁,共49頁。乒乓操作的最大特點(diǎn)是通過 “ 輸入數(shù)據(jù)選擇單元 ” 和 “ 輸出數(shù)據(jù)選擇單元 ” 按節(jié)拍、相互配合的切換,將經(jīng)過緩沖的數(shù)據(jù)流沒有停頓地送到 “ 數(shù)據(jù)流運(yùn)算處理模塊 ” 進(jìn)行運(yùn)算與處理。把乒乓操作模塊當(dāng)做一

22、個(gè)整體,站在這個(gè)模塊的兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都是連續(xù)不斷的,沒有任何停頓,因此非常適合對數(shù)據(jù)流進(jìn)行流水線式處理。所以乒乓操作常常應(yīng)用于流水線式算法,完成數(shù)據(jù)的無縫緩沖與處理。 乒乓操作的第二個(gè)優(yōu)點(diǎn)是可以節(jié)約緩沖區(qū)空間。比如在 WCDMA 基帶應(yīng)用中, 1 個(gè)幀是由 15 個(gè)時(shí)隙組成的,有時(shí)需要將 1 整幀的數(shù)據(jù)延時(shí)一個(gè)時(shí)隙后處理,比較直接的辦法是將這幀數(shù)據(jù)緩存起來,然后延時(shí) 1 個(gè)時(shí)隙進(jìn)行處理。這時(shí)緩沖區(qū)的長度是 1 整幀數(shù)據(jù)長,假設(shè)數(shù)據(jù)速率是 3.84Mbps , 1 幀長 10ms ,則此時(shí)需要緩沖區(qū)長度是 38400 位。如果采用乒乓操作,只需定義兩個(gè)能緩沖 1 個(gè)時(shí)隙數(shù)據(jù)的

23、 RAM( 單口 RAM 即可 ) 。當(dāng)向一塊 RAM 寫數(shù)據(jù)的時(shí)候,從另一塊 RAM 讀數(shù)據(jù),然后送到處理單元處理,此時(shí)每塊 RAM 的容量僅需 2560 位即可, 2 塊 RAM 加起來也只有 5120 位的容量。 2022/8/1732第32頁,共49頁。另外,巧妙運(yùn)用乒乓操作還可以達(dá)到用低速模塊處理高速數(shù)據(jù)流的效果。如圖 2 所示,數(shù)據(jù)緩沖模塊采用了雙口 RAM ,并在 DPRAM 后引入了一級數(shù)據(jù)預(yù)處理模塊,這個(gè)數(shù)據(jù)預(yù)處理可以根據(jù)需要的各種數(shù)據(jù)運(yùn)算,比如在 WCDMA 設(shè)計(jì)中,對輸入數(shù)據(jù)流的解擴(kuò)、解擾、去旋轉(zhuǎn)等。假設(shè)端口 A 的輸入數(shù)據(jù)流的速率為 100Mbps ,乒乓操作的緩沖周期

24、是 10ms 。以下分析各個(gè)節(jié)點(diǎn)端口的數(shù)據(jù)速率。 2022/8/1733第33頁,共49頁。A 端口處輸入數(shù)據(jù)流速率為 100Mbps ,在第 1 個(gè)緩沖周期 10ms 內(nèi),通過 “ 輸入數(shù)據(jù)選擇單元 ” ,從 B1 到達(dá) DPRAM1 。 B1 的數(shù)據(jù)速率也是 100Mbps , DPRAM1 要在 10ms 內(nèi)寫入 1Mb 數(shù)據(jù)。同理,在第 2 個(gè) 10ms ,數(shù)據(jù)流被切換到 DPRAM2 ,端口 B2 的數(shù)據(jù)速率也是 100Mbps , DPRAM2 在第 2 個(gè) 10ms 被寫入 1Mb 數(shù)據(jù)。在第 3 個(gè) 10ms ,數(shù)據(jù)流又切換到 DPRAM1 , DPRAM1 被寫入 1Mb 數(shù)

25、據(jù)。 仔細(xì)分析就會(huì)發(fā)現(xiàn)到第 3 個(gè)緩沖周期時(shí),留給 DPRAM1 讀取數(shù)據(jù)并送到 “ 數(shù)據(jù)預(yù)處理模塊 1” 的時(shí)間一共是 20ms 。這個(gè)時(shí)間是這樣得來的: 2022/8/1734第34頁,共49頁。首先,在在第 2 個(gè)緩沖周期向 DPRAM2 寫數(shù)據(jù)的 10ms 內(nèi), DPRAM1 可以進(jìn)行讀操作;另外,在第 1 個(gè)緩沖周期的第 5ms 起 ( 絕對時(shí)間為 5ms 時(shí)刻 ) , DPRAM1 就可以一邊向 500K 以后的地址寫數(shù)據(jù),一邊從地址 0 讀數(shù),到達(dá) 10ms 時(shí), DPRAM1 剛好寫完了 1Mb 數(shù)據(jù),并且讀了 500K 數(shù)據(jù),這個(gè)緩沖時(shí)間內(nèi) DPRAM1 讀了 5ms ;在第

26、 3 個(gè)緩沖周期的第 5ms 起 ( 絕對時(shí)間為 35ms 時(shí)刻 ) ,同理可以一邊向 500K 以后的地址寫數(shù)據(jù)一邊從地址 0 讀數(shù),又讀取了 5 個(gè) ms ,所以截止 DPRAM1 第一個(gè)周期存入的數(shù)據(jù)被完全覆蓋以前, DPRAM1 最多可以讀取 20ms 時(shí)間,而所需讀取的數(shù)據(jù)為 1Mb ,所以端口 C1 的數(shù)據(jù)速率為: 1Mb/20ms=50Mbps 。2022/8/1735第35頁,共49頁。因此, “ 數(shù)據(jù)預(yù)處理模塊 1” 的最低數(shù)據(jù)吞吐能力也僅僅要求為 50Mbps 。同理, “ 數(shù)據(jù)預(yù)處理模塊 2” 的最低數(shù)據(jù)吞吐能力也僅僅要求為 50Mbps 。換言之,通過乒乓操作, “ 數(shù)

27、據(jù)預(yù)處理模塊 ” 的時(shí)序壓力減輕了,所要求的數(shù)據(jù)處理速率僅僅為輸入數(shù)據(jù)速率的 1/2 。通過乒乓操作實(shí)現(xiàn)低速模塊處理高速數(shù)據(jù)的實(shí)質(zhì)是:通過 DPRAM 這種緩存單元實(shí)現(xiàn)了數(shù)據(jù)流的串并轉(zhuǎn)換,并行用 “ 數(shù)據(jù)預(yù)處理模塊 1” 和 “ 數(shù)據(jù)預(yù)處理模塊 2” 處理分流的數(shù)據(jù),是面積與速度互換原則的體現(xiàn)! 2022/8/1736第36頁,共49頁。二、串并轉(zhuǎn)換設(shè)計(jì)技巧串并轉(zhuǎn)換是 FPGA 設(shè)計(jì)的一個(gè)重要技巧,它是數(shù)據(jù)流處理的常用手段,也是面積與速度互換思想的直接體現(xiàn)。串并轉(zhuǎn)換的實(shí)現(xiàn)方法多種多樣,根據(jù)數(shù)據(jù)的排序和數(shù)量的要求,可以選用寄存器、 RAM 等實(shí)現(xiàn)。前面在乒乓操作的圖例中,就是通過 DPRAM 實(shí)

28、現(xiàn)了數(shù)據(jù)流的串并轉(zhuǎn)換,而且由于使用了 DPRAM ,數(shù)據(jù)的緩沖區(qū)可以開得很大,對于數(shù)量比較小的設(shè)計(jì)可以采用寄存器完成串并轉(zhuǎn)換。如無特殊需求,應(yīng)該用同步時(shí)序設(shè)計(jì)完成串并之間的轉(zhuǎn)換。 對于排列順序有規(guī)定的串并轉(zhuǎn)換,可以用 case 語句判斷實(shí)現(xiàn)。對于復(fù)雜的串并轉(zhuǎn)換,還可以用狀態(tài)機(jī)實(shí)現(xiàn)。串并轉(zhuǎn)換的方法比較簡單,在此不必贅述。 2022/8/1737第37頁,共49頁。三、流水線操作設(shè)計(jì)思想流水線處理是高速設(shè)計(jì)中的一個(gè)常用設(shè)計(jì)手段。如果某個(gè)設(shè)計(jì)的處理流程分為若干步驟,而且整個(gè)數(shù)據(jù)處理是 “ 單流向 ” 的,即沒有反饋或者迭代運(yùn)算,前一個(gè)步驟的輸出是下一個(gè)步驟的輸入,則可以考慮采用流水線設(shè)計(jì)方法來提高系

29、統(tǒng)的工作頻率。 流水線設(shè)計(jì)的結(jié)構(gòu)示意圖如圖 3 所示。其基本結(jié)構(gòu)為:將適當(dāng)劃分的 n 個(gè)操作步驟單流向串聯(lián)起來。流水線操作的最大特點(diǎn)和要求是,數(shù)據(jù)流在各個(gè)步驟的處理從時(shí)間上看是連續(xù)的,如果將每個(gè)操作步驟簡化假設(shè)為通過一個(gè) D 觸發(fā)器 ( 就是用寄存器打一個(gè)節(jié)拍 ) ,那么流水線操作就類似一個(gè)移位寄存器組,數(shù)據(jù)流依次流經(jīng) D 觸發(fā)器,完成每個(gè)步驟的操作。流水線設(shè)計(jì)時(shí)序如圖 4 所示。 2022/8/1738第38頁,共49頁。流水線設(shè)計(jì)的一個(gè)關(guān)鍵在于整個(gè)設(shè)計(jì)時(shí)序的合理安排,要求每個(gè)操作步驟的劃分合理。如果前級操作時(shí)間恰好等于后級的操作時(shí)間,設(shè)計(jì)最為簡單,前級的輸出直接匯入后級的輸入即可;如果前級

30、操作時(shí)間大于后級的操作時(shí)間,則需要對前級的輸出數(shù)據(jù)適當(dāng)緩存才能匯入到后級輸入端;如果前級操作時(shí)間恰好小于后級的操作時(shí)間,則必須通過復(fù)制邏輯,將數(shù)據(jù)流分流,或者在前級對數(shù)據(jù)采用存儲(chǔ)、后處理方式,否則會(huì)造成后級數(shù)據(jù)溢出。 2022/8/1739第39頁,共49頁。四、數(shù)據(jù)接口的同步方法 數(shù)據(jù)接口的同步是 FPGA/CPLD 設(shè)計(jì)的一個(gè)常見問題,也是一個(gè)重點(diǎn)和難點(diǎn),很多設(shè)計(jì)不穩(wěn)定都是源于數(shù)據(jù)接口的同步有問題。 在電路圖設(shè)計(jì)階段,一些工程師手工加入 BUFT 或者非門調(diào)整數(shù)據(jù)延遲,從而保證本級模塊的時(shí)鐘對上級模塊數(shù)據(jù)的建立、保持時(shí)間要求。還有一些工程師為了有穩(wěn)定的采樣,生成了很多相差 90 度的時(shí)鐘信

31、號(hào),時(shí)而用正沿打一下數(shù)據(jù),時(shí)而用負(fù)沿打一下數(shù)據(jù),用以調(diào)整數(shù)據(jù)的采樣位置。這兩種做法都十分不可取,因?yàn)橐坏┬酒聯(lián)Q代或者移植到其它芯片組的芯片上,采樣實(shí)現(xiàn)必須從新設(shè)計(jì)。而且,這兩種做法造成電路實(shí)現(xiàn)的余量不夠,一旦外界條件變換 ( 比如溫度升高 ) ,采樣時(shí)序就有可能完全紊亂,造成電路癱瘓。 2022/8/1740第40頁,共49頁。下面簡單介紹幾種不同情況下數(shù)據(jù)接口的同步方法: 輸入、輸出的延時(shí) ( 芯片間、 PCB 布線、一些驅(qū)動(dòng)接口元件的延時(shí)等 ) 不可測,或者有可能變動(dòng)的條件下,如何完成數(shù)據(jù)同步? 對于數(shù)據(jù)的延遲不可測或變動(dòng),就需要建立同步機(jī)制,可以用一個(gè)同步使能或同步指示信號(hào)。另外,使

32、數(shù)據(jù)通過 RAM 或者 FIFO 的存取,也可以達(dá)到數(shù)據(jù)同步目的。 把數(shù)據(jù)存放在 RAM 或 FIFO 的方法如下:將上級芯片提供的數(shù)據(jù)隨路時(shí)鐘作為寫信號(hào),將數(shù)據(jù)寫入 RAM 或者 FIFO ,然后使用本級的采樣時(shí)鐘 ( 一般是數(shù)據(jù)處理的主時(shí)鐘 ) 將數(shù)據(jù)讀出來即可。這種做法的關(guān)鍵是數(shù)據(jù)寫入 RAM 或者 FIFO 要可靠,如果使用同步 RAM 或者 FIFO ,就要求應(yīng)該有一個(gè)與數(shù)據(jù)相對延遲關(guān)系固定的隨路指示信號(hào),這個(gè)信號(hào)可以是數(shù)據(jù)的有效指示,也可以是上級模塊將數(shù)據(jù)打出來的時(shí)鐘。對于慢速數(shù)據(jù),也可以采樣異步 RAM 或者 FIFO ,但是不推薦這種做法。 2022/8/1741第41頁,共4

33、9頁。數(shù)據(jù)是有固定格式安排的,很多重要信息在數(shù)據(jù)的起始位置,這種情況在通信系統(tǒng)中非常普遍。通訊系統(tǒng)中,很多數(shù)據(jù)是按照 “ 幀 ” 組織的。而由于整個(gè)系統(tǒng)對時(shí)鐘要求很高,常常專門設(shè)計(jì)一塊時(shí)鐘板完成高精度時(shí)鐘的產(chǎn)生與驅(qū)動(dòng)。而數(shù)據(jù)又是有起始位置的,如何完成數(shù)據(jù)的同步,并發(fā)現(xiàn)數(shù)據(jù)的 “ 頭 ” 呢? 數(shù)據(jù)的同步方法完全可以采用上面的方法,采用同步指示信號(hào),或者使用 RAM 、 FIFO 緩存一下。找到數(shù)據(jù)頭的方法有兩種,第一種很簡單,隨路傳輸一個(gè)數(shù)據(jù)起始位置的指示信號(hào)即可,對于有些系統(tǒng),特別是異步系統(tǒng),則常常在數(shù)據(jù)中插入一段同步碼 ( 比如訓(xùn)練序列 ) ,接收端通過狀態(tài)機(jī)檢測到同步碼后就能發(fā)現(xiàn)數(shù)據(jù)的

34、“ 頭 ” 了,這種做法叫做 “ 盲檢測 ” 上級數(shù)據(jù)和本級時(shí)鐘是異步的,也就是說上級芯片或模塊和本級芯片或模塊的時(shí)鐘是異步時(shí)鐘域的。 2022/8/1742第42頁,共49頁。為了避免異步時(shí)鐘域產(chǎn)生錯(cuò)誤的采樣電平,一般使用 RAM 、 FIFO 緩存的方法完成異步時(shí)鐘域的數(shù)據(jù)轉(zhuǎn)換。最常用的緩存單元是 DPRAM ,在輸入端口使用上級時(shí)鐘寫數(shù)據(jù),在輸出端口使用本級時(shí)鐘讀數(shù)據(jù),這樣就非常方便的完成了異步時(shí)鐘域之間的數(shù)據(jù)交換。 設(shè)計(jì)數(shù)據(jù)接口同步是否需要添加約束? 建議最好添加適當(dāng)?shù)募s束,特別是對于高速設(shè)計(jì),一定要對周期、建立、保持時(shí)間等添加相應(yīng)的約束 這里附加約束的作用有兩點(diǎn): a. 提高設(shè)計(jì)的工

35、作頻率,滿足接口數(shù)據(jù)同步要求。通過附加周期、建立時(shí)間、保持時(shí)間等約束可以控制邏輯的綜合、映射、布局和布線,以減小邏輯和布線延時(shí),從而提高工作頻率,滿足接口數(shù)據(jù)同步要求。2022/8/1743第43頁,共49頁。b. 獲得正確的時(shí)序分析報(bào)告。幾乎所有的 FPGA 設(shè)計(jì)平臺(tái)都包含靜態(tài)時(shí)序分析工具,利用這類工具可以獲得映射或布局布線后的時(shí)序分析報(bào)告,從而對設(shè)計(jì)的性能做出評估。靜態(tài)時(shí)序分析工具以約束作為判斷時(shí)序是否滿足設(shè)計(jì)要求的標(biāo)準(zhǔn),因此要求設(shè)計(jì)者正確輸入約束,以便靜態(tài)時(shí)序分析工具輸出正確的時(shí)序分析報(bào)告。 2022/8/1744第44頁,共49頁。()所有的狀態(tài)機(jī)輸入,包括復(fù)位、置位信號(hào),都要用同步信號(hào)。所有的狀態(tài)機(jī)輸出都要用寄存器寄存輸出。注意在狀態(tài)機(jī)設(shè)計(jì)中不要出現(xiàn)死鎖狀態(tài)。()要用寄存器和觸發(fā)器設(shè)計(jì)電路,盡量不要用鎖存器,因它對輸入信號(hào)的毛刺太敏感。如果堅(jiān)持用鎖存器設(shè)計(jì)必須保證輸入信號(hào)絕對沒有毛刺,且滿足保持時(shí)間。6.5 FPGA設(shè)計(jì)的注意問題202

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論