<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 大型設計中FPGA的多時(shí)鐘策略

大型設計中FPGA的多時(shí)鐘策略

——
作者:Tim Behne 時(shí)間:2005-10-12 來(lái)源:電子產(chǎn)品世界 收藏

  利用 實(shí)現大型設計時(shí),可能需要 具有以多個(gè)時(shí)鐘運行的多重數據通路,這種多時(shí)鐘 設計必須特別小心,需要注意最大時(shí)鐘速率、抖動(dòng)、最大時(shí)鐘數、異步時(shí)鐘設計和時(shí)鐘/數據關(guān)系。設計過(guò)程中最重要的一步是確定要用多少個(gè)不同的時(shí)鐘,以及如何進(jìn)行布線(xiàn),本文將對這些設計策略深入闡述。

  FPGA 設計的第一步是決定需要什么樣的時(shí)鐘速率,設計中最快的時(shí)鐘將確定FPGA 必須能處理的時(shí)鐘速率。最快時(shí)鐘速率由設計中兩個(gè)觸發(fā)器之間一個(gè)信號的傳輸時(shí)間P 來(lái)決定,如果P 大于時(shí)鐘周期T,則當信號在一個(gè)觸發(fā)器上改變后,在下一個(gè)邏輯級上將不會(huì )改變,直到兩個(gè)時(shí)鐘周期以后才改變,如圖1 所示。

   傳輸時(shí)間為信號在第一個(gè)觸發(fā)器輸出處所需的保持時(shí)間加上兩級之間的任何組合邏輯的延遲,再加兩級之間的布線(xiàn)延遲以及信號進(jìn)入第二級觸發(fā)器的設置時(shí)間。無(wú)論時(shí)鐘速率為多少,每一個(gè)FPGA 設計所用的時(shí)鐘必須具有低抖動(dòng)特性。抖動(dòng)S 是觸發(fā)器的一個(gè)時(shí)鐘輸入到另一個(gè)觸發(fā)器的時(shí)鐘輸入之間的最大延遲。為使電路正常工作,抖動(dòng)必須小于兩個(gè)觸發(fā)器之間的傳輸時(shí)間。

  圖2 顯示了如果抖動(dòng)大于傳輸時(shí)間(S>P)將出現的情況,該電路用時(shí)鐘的兩個(gè)上升沿來(lái)延遲信號1。然而,信號1 上的一個(gè)改變會(huì )在相同的時(shí)鐘周期上傳輸到的信號3 上,從而引起信號2 的改變。因為S>P,電路將不能不正常。

  須注意的是,時(shí)鐘速率與傳輸延時(shí)并沒(méi)有什么關(guān)系,甚至普通的100bps 時(shí)鐘也會(huì )出現抖動(dòng)

  好在FPGA 供應商已經(jīng)認識到時(shí)鐘抖動(dòng)的影響,并在他們的芯片中提供低抖動(dòng)的布線(xiàn)資源。這些特殊的布線(xiàn)能夠在芯片中一個(gè)給定范圍內的任何兩個(gè)觸發(fā)器之間提供一個(gè)確定的最大抖動(dòng)。部分產(chǎn)品的低抖動(dòng)資源覆蓋了整個(gè)芯片,而其它的則可能只覆蓋了FPGA 邏輯塊中的一個(gè)特定的行或列。對于一個(gè)需要很多不同時(shí)鐘源的設計,這些低抖動(dòng)FPGA 是比較理想的選擇。

  多時(shí)鐘設計的最嚴重問(wèn)題之一是用異步時(shí)鐘將兩級邏輯結合在一起。由于異步時(shí)鐘會(huì )產(chǎn)生亞穩態(tài),從而嚴重降低設計性能,或完全破壞設計所能實(shí)現的功能。在觸發(fā)器的時(shí)序要求產(chǎn)生沖突時(shí)(設置時(shí)間和保持時(shí)間)將產(chǎn)生亞穩態(tài),觸發(fā)器的最終輸出是未知的,并使整個(gè)設計處于不確定狀態(tài)。如果有一級邏輯要將數據異步地發(fā)送到另一級,圖3 所示的情形將不能滿(mǎn)足觸發(fā)器的設置和保持時(shí)間要求。確切地說(shuō),如果設計中含有異步邏輯將有可能會(huì )產(chǎn)生亞穩態(tài)。在處置異步資源時(shí)必需非常小心,因為這可能產(chǎn)生一些很?chē)乐氐膯?wèn)題。

多時(shí)鐘設計

  本文以電信應用中的E3 多路復用/解復用設計為例。如圖4 所示,多路復用器接收來(lái)自一組獨立線(xiàn)路接口芯片的16 個(gè)獨立E1 信道,每一個(gè)信道都工作于2.048MHz;經(jīng)復用后,這些E1 流組合成4 個(gè)E2 流,分別工作在8.0448MHz;4 個(gè)E2 流最后組合成一個(gè)E3 流,以34.368Mbps 的速率串行發(fā)送出去。在接收端執行相反的操作:解復用器從E3 流提取4 個(gè)E2 數據流,然后從E2 流提取16 個(gè)E1 流,最終將E1 流發(fā)送到接收端的線(xiàn)路接口芯片。

  這些E1 線(xiàn)路接口在發(fā)送和接收時(shí)都獨立工作,因此2.048MHz 的時(shí)鐘速率可以有+/- 20ppm

  由于E2 流是在芯片上產(chǎn)生的,這些E2 多路復用器可以共享同一個(gè)8.448MHz 時(shí)鐘。然而,由于接收的數據速率與我們所設計的板無(wú)關(guān)(且不能假定所有E2 多路復用器使用相同時(shí)鐘),所以E2 解復用器時(shí)鐘必須能工作在略為不同的速率下。

  此外,假定設計中需要一個(gè)由工作頻率為1MHz 的處理器控制的獨立SPI(串行外圍接口)總線(xiàn)接口,該接口用于狀態(tài)和控制。這樣一來(lái),設計中總共用了32 個(gè)2.048MHz 時(shí)鐘,5 個(gè)8.448MHz 時(shí)鐘,2 個(gè)34.368MHz 時(shí)鐘和一個(gè)1MHz 時(shí)鐘,總共多達40 個(gè)時(shí)鐘。
 
  本設計中最快時(shí)鐘是34.368MHz E3 時(shí)鐘。FPGA 的最大時(shí)鐘速率的確定很重要,因為設計的差異將影響到該最大值。然而,在芯片商的資料手冊中常??梢钥吹健叭謺r(shí)鐘設置及保持時(shí)間”和“至CLB 輸出的時(shí)鐘”兩個(gè)參數,將這兩個(gè)參數的最大值相加,再增加25%就能可以得到最小時(shí)鐘周期的初略值,在最大時(shí)鐘速率條件下允許10%的余量,以保證過(guò)熱條件下能正常工作。因此,我們設置的最小速率為40MHz,很多較新的FPGA 都能夠很容易地支持該頻率。事實(shí)上,FPGA 供應商已經(jīng)推出了超過(guò)300MHz 的器件。

  在確定了能滿(mǎn)足最大頻率要求的FPGA 后,就需要保證有足夠的空間來(lái)實(shí)現你的設計。如果所選的FPGA 沒(méi)有足夠的余量,就不能提供足夠的布線(xiàn)資源來(lái)滿(mǎn)足設計的時(shí)序約束。通常芯片供應商宣稱(chēng)的速率是最佳條件下的速率,FPGA 供應商一般建議FPGA 邏輯在布線(xiàn)功能開(kāi)始明顯變差以前可以用到80%。在選擇FPGA 器件時(shí),建議在新的設計時(shí)最好使FPGA 邏輯用到50%左右,這樣就允許計算起始設計大小出現超差,以及為在設計起動(dòng)后產(chǎn)生不可避免的設計變更留出空間。如果最終的設計只占用低于50%的資源,則可以使用同一系列中較小的FPGA 以降低成本。

  通過(guò)時(shí)序約束來(lái)規定慢時(shí)鐘速率,從而可以改進(jìn)設計中最快時(shí)鐘的布線(xiàn)。在多路復用器例子中,如果設置FPGA 布線(xiàn)工具SPI 總線(xiàn)時(shí)鐘為1MHz,而E3 時(shí)鐘為40MHz,布線(xiàn)工具將盡量使E3 時(shí)鐘的邏輯電路模塊相鄰布局。如果由于空間的限制而不能將全部電路布局在一起,則首先應將SPI 邏輯另外布局,因為SPI 邏輯可以處理更長(cháng)傳輸延遲。所有FPGA 供應商的布線(xiàn)工具都能規定這些較慢時(shí)鐘速率。

減少時(shí)鐘數量

  根據市場(chǎng)調查,目前還沒(méi)有哪個(gè)FPGA 器件能夠支持這種多路復用器/解復用器設計所需的40 個(gè)時(shí)鐘。所以,我們必須減少所需要的時(shí)鐘數。

  首先了解E2 和E3 多路復用器的時(shí)鐘。前面已經(jīng)分析了4 個(gè)E2 多路復用器工作在相同時(shí)鐘下的可接受度,E3 多路復用器運行于比E2 時(shí)鐘高得多的速率,必需使用一個(gè)不同的時(shí)鐘。但是,如果我們從E3 時(shí)鐘中引出E2 時(shí)鐘是否可行呢?因為E3 多路復用器要從每個(gè)E2 支路得到數據,我們可以在需要E2 多路復用器給我們數據時(shí),簡(jiǎn)單地將脈沖送給每個(gè)多路復用器。我們沒(méi)有去掉任何時(shí)鐘,但E2 時(shí)鐘現在是基于E3 時(shí)鐘。

  如果在所有的多路復用器中也使用同樣的時(shí)鐘,并且只使用一個(gè)使能信號來(lái)告訴E2 多路復用器什么時(shí)候工作,這時(shí)會(huì )產(chǎn)生什么問(wèn)題呢?如果E3 多路復用器用34.368MHz 時(shí)鐘產(chǎn)生使能信號,在這些使能信號上的抖動(dòng)不會(huì )比用在FPGA 中任何其它同步邏輯更大。所以,使能信號可以使用正常(高抖動(dòng))布線(xiàn)資源,這樣就不需要單獨的8.448MHz多路復用器時(shí)鐘,讀取E1 數據緩沖器的數據時(shí)也是一樣。換言之,如果E2 多路復用器需要數據,它可以激活到特定緩沖器的使能信號。到緩沖器的時(shí)鐘本身能夠保持E3 多路復用器所用的

34.368MHz 時(shí)鐘,如圖5 所示。


 
  最后,我們檢查16 個(gè)從線(xiàn)路接口芯片輸入到FPGA 的E1 時(shí)鐘。這些時(shí)鐘有會(huì )產(chǎn)生下面幾個(gè)問(wèn)題:首先,16 個(gè)時(shí)鐘將占用太多可用芯片時(shí)鐘布線(xiàn)資源;其次,在同一個(gè)FPGA 中使用16 個(gè)異步時(shí)鐘來(lái)驅動(dòng)相互鄰近的觸發(fā)器,由于地彈、串擾和其它效應將產(chǎn)生噪聲問(wèn)題。例如,由于噪聲的原因,一個(gè)正邊沿觸發(fā)器會(huì )在下降邊沿時(shí)改變輸出狀態(tài),此類(lèi)問(wèn)題將難以處理。

  作為一種可能的解決方案,我們推薦使用一個(gè)最快的時(shí)鐘來(lái)對16 個(gè)E1 時(shí)鐘采樣。16 個(gè)輸入時(shí)鐘都接近2.048MHz,并且還有一個(gè)34.368MHz 的系統時(shí)鐘。這樣,我們可以用

  34.368MHz 時(shí)鐘來(lái)對16 個(gè)E1 時(shí)鐘分別進(jìn)行采樣,并將結果存儲在一個(gè)16 位存儲器中(每個(gè)E1 時(shí)鐘一個(gè)位)。然后,我們可以使用一個(gè)算法來(lái)檢測在E1 時(shí)鐘上由低至高的轉換,為每一個(gè)E1 數據信號產(chǎn)生一個(gè)使能信號,并在下一個(gè)周期(34.368MHz)中存儲數據。

  要成功實(shí)現這種方案,還必需了解時(shí)鐘-數據關(guān)系以避免在數據變化時(shí)對數據采樣,參見(jiàn)圖6。請注意在時(shí)鐘采樣電路的第一級中使用了兩個(gè)觸發(fā)器以確保在亞穩態(tài)下正常工作。另外需要注意的是,數據和時(shí)鐘必須具有相同時(shí)鐘周期數的延遲。

  我們已經(jīng)成功地將多路復用器的時(shí)鐘減少到一個(gè)時(shí)鐘,同樣的方法可否用在解復用器呢?E3 解復用器必須采用一個(gè)外部輸入時(shí)鐘,這是因為驅動(dòng)E3 輸入數據的同一個(gè)片外器件利用到該時(shí)鐘。由于E3 解復用器知道在什么時(shí)候發(fā)送數據到E2 解復用器,并能對每個(gè)E2 解復用器產(chǎn)生使能信號,而四個(gè)E2 解復用器能工作在與E3 多路復用器相同的主時(shí)鐘下。同樣,E2 多路復用器能夠為每個(gè)E1 流產(chǎn)生使能信號。

  如果我們假設線(xiàn)路接口芯片能夠接受有間隙的時(shí)鐘(gapped clock),一旦確定發(fā)出E1 使能信號,我們只需要發(fā)送一個(gè)時(shí)鐘脈沖至線(xiàn)路接口。然而,只需要簡(jiǎn)單地發(fā)送使能信號本身至接口芯片而不必產(chǎn)生一個(gè)新的時(shí)鐘。因為送至接口的數據將在使能信號的下降沿產(chǎn)生改變(參見(jiàn)圖5),我們需要確認接口在時(shí)鐘的上升沿進(jìn)行采樣。因為使能信號僅在線(xiàn)路接口芯片上而不是在FPGA 內用作一個(gè)時(shí)鐘,就沒(méi)有必要在一個(gè)低抖動(dòng)源中進(jìn)行布線(xiàn)。注意這是在知道將再也不會(huì )用主時(shí)鐘的連續脈沖送數據到相同的從屬器件中時(shí)才這樣做。

異步時(shí)鐘

  在用異步時(shí)鐘產(chǎn)生任何邏輯前應該盡量先考慮采用其它替代方法,用異步時(shí)鐘的組合邏輯是產(chǎn)生亞穩態(tài)問(wèn)題的主要原因。同樣,當違反觸發(fā)器的設置和保持時(shí)間約束時(shí),在一個(gè)短時(shí)間內輸出將具有不確定性,并且將最終設定在“1”或“0”上,確切的狀態(tài)不可預知。

 
  幸運的是對于亞穩態(tài)性問(wèn)題已經(jīng)有一些解決方案。圖6 說(shuō)明了這一方案,這是一種雙寄存器方法:進(jìn)入第一級觸發(fā)器的數據與時(shí)鐘異步,所以第一級觸發(fā)器幾乎肯定是亞穩態(tài);然而,只要亞穩態(tài)的長(cháng)度小于時(shí)鐘的周期,第二級觸發(fā)器就不會(huì )進(jìn)入亞穩態(tài)。但是,FPGA 供應商很少提供亞穩態(tài)時(shí)間,盡管該時(shí)間一般小于觸發(fā)器的設置和保持時(shí)間之和。

  如果時(shí)鐘不是太快而且能滿(mǎn)足時(shí)序約束的話(huà),像圖6 所示的電路將可能不會(huì )產(chǎn)生亞穩態(tài)。只要所有輸出到觸發(fā)器的通路由相同時(shí)鐘驅動(dòng),即使第一級觸發(fā)器的輸出可用,通常還是需要用像圖6 中電路來(lái)將亞穩態(tài)隔離到一條短線(xiàn)。采用這種方法后,將不太可能出現由于電路的改變而無(wú)意地在無(wú)時(shí)鐘驅動(dòng)的邏輯中用到該亞穩太線(xiàn)。

  如果讀數據的是一個(gè)計數器,像從一個(gè)異步FIFO 讀或寫(xiě)地址,你應該考慮下列情況:一個(gè)傳統的3 位計數器在狀態(tài)之間有一個(gè)、兩個(gè)或三個(gè)位的變化,例如讀數發(fā)生在計數器從“011” 到“100”變化的瞬間,則所有三個(gè)位的值將不確定,讀的值會(huì )是八種可能狀態(tài)中的任一種。如果計數器是使用格雷碼,如表所示,則每次僅有一位發(fā)生狀態(tài)改變,如果讀數發(fā)生在計數器變化的瞬間,則只有一個(gè)位會(huì )有問(wèn)題,所以在讀操作中只有兩種可能結果,而且這兩種可能結果是計數器正好在讀以前的值和正好在讀以后的值時(shí)。因為讀正好發(fā)生在計數器產(chǎn)生變化的瞬間,你不可能確切地說(shuō)哪個(gè)值是正確的,即兩者都應該認為是有效的。

  另一個(gè)避免異步時(shí)鐘問(wèn)題的方法是忽略較慢的時(shí)鐘,并用較快的時(shí)鐘來(lái)采樣。這需要數據有特殊的成幀特性(例如,具有一個(gè)前導碼)來(lái)定義數據邊界。這是一個(gè)常用的方法,在差不多每一個(gè)具有UART 形式的系統都有應用。該方法是:采用一個(gè)非??斓臅r(shí)鐘,比如數據符號率的16 倍,在連續發(fā)現15 個(gè)起始字符后開(kāi)始采樣,則下一個(gè)16(左右)位相當于送的第一個(gè)位,再下一個(gè)16(左右)位對應下一個(gè)位,并以次類(lèi)推。



關(guān)鍵詞: FPGA 嵌入式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>