新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 高速環境下的狀態機設計和優化方法

        高速環境下的狀態機設計和優化方法

        作者: 時間:2009-05-12 來源:網絡 收藏

          對于分發模塊設計,關鍵參考信號是EOP及快滿信號AF1、AF2,參考EOP可以實現每次處理一個包,參考AF1、AF2信號可以決定相應的包該往哪個 FIFO中寫入。分發算法為:FIFO1未滿(AF1=0),數據包將寫入FIFO1;如果FIFO1將滿且FIFO2未滿(AF1=1,且 AF2=0),則下一數據包將寫入FIFO2;如果FIFO1、FIFO2都將滿(AF1=1且AF2=1),則進入丟包狀態。UseFifo1狀態下數據包將寫入FIFO1,UseFifo2狀態下數據包將寫入FIFO2,丟包狀態下數據包被丟棄,提供丟包計數

        使能 DropCountEnable。

          狀態機的進一步優化

          1. 利用一位有效編碼方式

          如前所述,狀態機的工作頻率跟狀態機中各個狀態對應的不同轉移條件的入線數目有關。如果到一個狀態的轉移條件相同但入線數非常多,其邏輯實現很可能并不復雜。在一位有效編碼方式下,對于某個狀態,如果其他所有狀態經相同的轉移條件到該狀態,那么其邏輯實現可以很好地化簡。

          例4:一位有效編碼方式下狀態位s_State[n:0]中,

          s_State[1] | s_State[2] | ... | s_State[n]=1與 s_State[0]=1等價,那么

          next_State[0]=(s_State[0]S) | (s_State[1]T) | (s_State[2]T) | ... | (s_State[n]) 可以化簡為:

          next_State[0]=(s_State[0]S) | ((~s_State[0])T),右端輸入信號數目大大減少。

          2. 利用寄存器的使能信號

          多數FPGA或CPLD寄存器提供使能端,如果所有的狀態機轉移必須至少滿足某個條件,那么這個條件可以通過使能信號連接實現,從而可以降低寄存器輸入端的邏輯復雜度。如上例中不同狀態間轉移必須以EOP為1作為前提,因而可以將該信號作為使能信號來設計。

          3. 結合所選FPGA或CPLD內部邏輯單元結構編寫代碼

          以Xilinx FPGA為例,一個單元內2個4輸入查找表及相關配置邏輯可以實現5個信號輸入的最復雜的邏輯,或8~9個信號的簡單邏輯(例如全與或者全或),延時為一級查找表及配置邏輯延時;如果將相鄰單元的4個4輸入查找表輸出連接到一個4輸入查找表,那么可以實現最復雜的6輸入邏輯,此時需要兩級查找表延時及相關配置邏輯延時。更復雜的邏輯需要更多的級連來實現。針對高速狀態機的情況,可以盡量將狀態寄存器輸入端的邏輯來源控制在7個信號以內,從而自主控制查找表的級連級數,提高設計的工作頻率。

          4. 通過修改狀態機

          如果一個狀態機達不到工作頻率要求,則必須根據延時最大路徑修改設計,通常的辦法有:改變狀態設置,添加新狀態或刪除某些狀態,簡化轉移條件及單個狀態連接的轉移數目;修改轉移條件設置,包括改變轉移條件的組合,以及將復雜的邏輯改為分級經寄存器輸出由寄存器信號再形成的邏輯,后者將會改變信號時序,因而可能需要改變狀態設置。

          5. 使用并行邏輯

          很多情況下要參考的關鍵信號可能非常多,如果參考這些關鍵信號直接設計狀態機所得到的結果可能很復雜,個別狀態的出線或入線將會非常多,因而將降低工作頻率。可以考慮通過設計并行邏輯來提供狀態機的關鍵信號以及所需的中間結果,狀態機負責維護并行邏輯以及產生數據處理的流程。并行邏輯應分級設計,級間為寄存器,從而減少寄存器到寄存器的延時。

          該設計用于使用單一數據總線將FIFO1~4中的數據發送到4個數據通路上去,該設計中并行邏輯產生每次操作時的通路及 FIFO選擇結果,狀態機負責控制每次操作的流程:在“Idle”狀態下,如果FIFO1~4中有數據包供讀取,則進入“Schedule”狀態;獲得調度結果后“Schedule”經過一個“Wait”狀態,然后進入“ReadData”狀態讀取數據,同時開始計數,計數到達所指定數值或者讀到數據包尾時進入空閑狀態“Idle”,依次循環下去。

          流水線設計

          流水線(Pipelining)設計是將一個時鐘周期內執行的邏輯操作分成幾步較小的操作,并在較高速時鐘下完成。如果它的Tpd為T,則該電路最高時鐘頻率為1/T,而假設每部分的Tpd為T/3,則其時鐘頻率可提高到原來的3倍,因而單位時間內的數據流量可以達到原來的三倍。代價是輸出信號相對于輸入滯后3個周期,時序有所改變(輸出信號的總延時一樣,但數據吞吐量提高了),同時增加了寄存器資源,而FPGA具有豐富的寄存器資源。

          本文所強調的通過減少寄存器間的邏輯延時來提高狀態機的工作頻率,與流水線設計的出發點一樣,不同的是流水線所強調的是數據處理時的數據通路優化,而本文所強調的是狀態機中控制邏輯的優化。


        上一頁 1 2 下一頁

        關鍵詞: 環境 方法

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 太白县| 邵阳市| 泰州市| 秦皇岛市| 阿勒泰市| 凌源市| 海林市| 温州市| 民丰县| 双辽市| 南康市| 乐至县| 海晏县| 分宜县| 乐安县| 武平县| 方城县| 蛟河市| 南京市| 当涂县| 库伦旗| 容城县| 渭南市| 郁南县| 金湖县| 崇礼县| 炎陵县| 南丰县| 加查县| 溧阳市| 中山市| 锡林浩特市| 池州市| 丰都县| 宝坻区| 同江市| 秭归县| 桑植县| 永福县| 汝城县| 河源市|