色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 影響FPGA設(shè)計(jì)中時(shí)鐘因素的探討

          影響FPGA設(shè)計(jì)中時(shí)鐘因素的探討

          作者: 時(shí)間:2008-07-21 來(lái)源:電子開(kāi)發(fā)網(wǎng) 收藏

            綜上所述,如果不考慮的延時(shí)那么只需關(guān) 心建立時(shí)間,如果考慮的延時(shí)那么更需關(guān)心保持時(shí)間。下面將要分析在設(shè)計(jì)中如何提高同步系統(tǒng)中的工作。

          本文引用地址:http://cafeforensic.com/article/85938.htm

            1.2 如何提高同步系統(tǒng)中的工作時(shí)鐘

            從上面的分析可以看出同步系統(tǒng)時(shí)對(duì)D2建立時(shí)間T3的要求為:

            T-Tco-T2max>=T3

            所以很容易推出T>=T3+Tco+T2max,其中T3為D2的建立時(shí)間Tset,T2為組合邏輯的延時(shí)。在一個(gè)設(shè)計(jì)中T3和Tco都是由器件決定的固定值,可控的也只有T2也就時(shí)輸入端組合邏輯的延時(shí),所以通過(guò)盡量來(lái)減小T2就可以提高系統(tǒng)的工作時(shí)鐘。為了達(dá)到減小T2在設(shè)計(jì)中可以用下面不同的幾種方法綜合來(lái)實(shí)現(xiàn)。

            1.2.1 通過(guò)改變走線的方式來(lái)減小延時(shí)

            以altera的器件為例,我們?cè)趒uartus里面的timing closure floorplan可以看到有很多條條塊塊,我們可以將條條塊塊按行和按列分,每一個(gè)條塊代表1個(gè)LAB,每個(gè)LAB里有8個(gè)或者是10個(gè)LE。它們的走線時(shí)延的關(guān)系如下:同一個(gè)LAB中(最快) < 同列或者同行 < 不同行且不同列。我們通過(guò)給綜合器加適當(dāng)?shù)募s束(約束要適量,一般以加5%裕量較為合適,比如電路工作在100Mhz,則加約束加到105Mhz就可以了,過(guò)大的約束效果反而不好,且極大增加綜合時(shí)間)可以將相關(guān)的邏輯在布線時(shí)盡量布的靠近一點(diǎn),從而減少走線的時(shí)延。

            1.2.2 通過(guò)拆分組合邏輯的方法來(lái)減小延時(shí)

            由于一般同步電路都不止一級(jí)鎖存(如圖8),而要使電路穩(wěn)定工作,時(shí)鐘周期必須滿(mǎn)足最大延時(shí)要求,縮短最長(zhǎng)延時(shí)路徑,才可提高電路的工作頻率。如圖7所示:我們可以將較大的組合邏輯分解為較小的幾塊,中間插入觸發(fā)器,這樣可以提高電路的工作頻率。這也是所謂“流水線”(pipelining)技術(shù)的基本原理。

            對(duì)于圖8的上半部分,它時(shí)鐘頻率受制于第二個(gè)較大的組合邏輯的延時(shí),通過(guò)適當(dāng)?shù)姆椒ㄆ骄峙浣M合邏輯,可以避免在兩個(gè)觸發(fā)器之間出現(xiàn)過(guò)大的延時(shí),消除速度瓶頸。

          圖7 分割組合邏輯

          圖8 轉(zhuǎn)移組合邏輯

            那么在設(shè)計(jì)中如何拆分組合邏輯呢,更好的方法要在實(shí)踐中不斷的積累,但是一些良好的設(shè)計(jì)思想和方法也需要掌握。我們知道,目前大部分都基于4輸入 LUT的,如果一個(gè)輸出對(duì)應(yīng)的判斷條件大于四輸入的話就要由多個(gè)LUT級(jí)聯(lián)才能完成,這樣就引入一級(jí)組合邏輯時(shí)延,我們要減少組合邏輯,無(wú)非就是要輸入條件盡可能的少,這樣就可以級(jí)聯(lián)的LUT更少,從而減少了組合邏輯引起的時(shí)延。

            我們平時(shí)聽(tīng)說(shuō)的流水就是一種通過(guò)切割大的組合邏輯(在其中插入一級(jí)或多級(jí)D觸發(fā)器,從而使寄存器與寄存器之間的組合邏輯減少)來(lái)提高工作頻率的方法。比如一個(gè)32 位的計(jì)數(shù)器,該計(jì)數(shù)器的進(jìn)位鏈很長(zhǎng),必然會(huì)降低工作頻率,我們可以將其分割成4位和 8位的計(jì)數(shù),每當(dāng)4位的計(jì)數(shù)器計(jì)到15后觸發(fā)一次8位的計(jì)數(shù)器,這樣就實(shí)現(xiàn)了計(jì)數(shù)器的切割,也提高了工作頻率。

            在狀態(tài)機(jī)中,一般也要將大的計(jì)數(shù)器移到狀態(tài)機(jī)外,因?yàn)橛?jì)數(shù)器這東西一般是經(jīng)常是大于4輸入的,如果再和其它條件一起做為狀態(tài)的跳變判據(jù)的話,必然會(huì)增加LUT的級(jí)聯(lián),從而增大組合邏輯。以一個(gè)6輸入的計(jì)數(shù)器為例,我們?cè)M?dāng)計(jì)數(shù)器計(jì)到111100后狀態(tài)跳變,現(xiàn)在我們將計(jì)數(shù)器放到狀態(tài)機(jī)外,當(dāng)計(jì)數(shù)器計(jì)到111011后產(chǎn)生個(gè)enable信號(hào)去觸發(fā)狀態(tài)跳變,這樣就將組合邏輯減少了。狀態(tài)機(jī)一般包含三個(gè)模塊,一個(gè)輸出模塊,一個(gè)決定下個(gè)狀態(tài)是什么的模塊和一個(gè)保存當(dāng)前狀態(tài)的模塊。組成三個(gè)模塊所采用的邏輯也各不相同。輸出模塊通常既包含組合邏輯又包含時(shí)序邏輯;決定下一個(gè)狀態(tài)是什么的模塊通常又組合邏輯構(gòu)成;保存現(xiàn)在狀態(tài)的通常由時(shí)序邏輯構(gòu)成。三個(gè)模塊的關(guān)系如下圖9所示。

          圖9 狀態(tài)機(jī)的組成

            所有通常寫(xiě)狀態(tài)機(jī)時(shí)也按照這三個(gè)模塊將狀態(tài)機(jī)分成三部分來(lái)寫(xiě),如下面就是一種良好的狀態(tài)機(jī)設(shè)計(jì)方法:
          /*-----------------------------------------------------
          This is FSM demo program
          Design Name : arbiter
          File Name : arbiter2.v
          -----------------------------------------------------*/
          module arbiter2 (
          clock , // clock
          reset , // Active high, syn reset
          req_0 , // Request 0
          req_1 , // Request 1
          gnt_0 ,
          gnt_1);
          //-------------Input Ports-----------------------------
          input clock ;
          input res



          關(guān)鍵詞: FPGA 時(shí)鐘

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉