同步設(shè)計的最大頻率由最長的時序路徑的延遲決定。然而,在復(fù)雜的高頻設(shè)計中,可能存在一些路徑,其傳播延遲大于最大工作時鐘頻率的周期。如果不要求信號在一個時鐘周期內(nèi)傳播到下一個時序,則需要實施適當(dāng)?shù)脑O(shè)計技術(shù)以使其成為有效的多周期路徑。時序電路中的多周期路徑是一種組合路徑,它不必在一個時鐘周期內(nèi)完成信號沿的傳播。對于 N 的多周期路徑,設(shè)計應(yīng)確保信號轉(zhuǎn)換在 N 個時鐘周期內(nèi)從源端傳播到目的端。因此,如果系統(tǒng)的最長路徑是多周期路徑,則它不會限制系統(tǒng)的運行頻率。下面描述了一些常見的多循環(huán)路徑設(shè)計。
二倍多周期路徑(2倍MCP)
如果在高頻系統(tǒng)中,兩個相互通信的子模塊以 1:2 的時鐘比運行,并且不需要在更快時鐘的一個時鐘周期內(nèi)捕獲源信號轉(zhuǎn)換,則可以實現(xiàn)二倍多周期處理情況。
在上述電路中,數(shù)據(jù)從觸發(fā)器 D1 啟動并由運行速度比啟動觸發(fā)器的時鐘快兩倍的觸發(fā)器捕獲,是 clk 的半周期路徑或 clk_2x 的單周期路徑。如果兩者之間的組合邏輯的傳播延遲很大,那么可能無法滿足這個半周期路徑的時序。如果不要求輸入數(shù)據(jù)在 2x 時鐘的下一個正沿捕獲,則需要引入適當(dāng)?shù)碾娐穪矸艑挄r序要求。
在上述電路中,F(xiàn)3 的輸出用于啟用捕獲門復(fù)用器。捕獲門使能 (F3.Q) 確保 F1_reg->F2_reg 作為與 clk_fast(clk_2x) 相關(guān)的兩個多周期路徑。當(dāng)數(shù)據(jù)信號從 clk_2x -> clk 交叉時,可以實現(xiàn)類似的電路。
在上述電路中,假設(shè) clk_fast 和 clock_slow 的第一個上升沿總是同時發(fā)生并保持對齊。比例大于2:1時可設(shè)計復(fù)雜高效的“capture_gate enable”電路
N倍多周期路徑(N倍MCP)
上述電路是從 D1_reg->D2_reg 的 n-1 個周期的 Multi cycle 路徑。當(dāng)輸入數(shù)據(jù)在 M1 多路復(fù)用器輸入處變?yōu)橛行r,狀態(tài)機 (FSM) 會在一個時鐘周期內(nèi)生成一個脈沖。數(shù)據(jù)在下一個周期被 D1 觸發(fā)器捕獲。脈沖通過由“n”個觸發(fā)器組成的移位寄存器傳播,并且在“n-1”個時鐘周期之后,M2 多路復(fù)用器將使輸入數(shù)據(jù)到達 D2 觸發(fā)器。下一個周期它將被 D2 觸發(fā)器捕獲。這樣可以放寬時序以補償 D1 和 D2 觸發(fā)器之間存在的組合邏輯的巨大傳播延遲。
在上面的時序圖中,N 等于 3。因此從 D1_reg -> D2_reg 的路徑可以限制為 MCP 為 2。
外設(shè)讀/寫接口的多周期路徑
在一些低性能、低帶寬的外設(shè)寄存器讀/寫接口中,數(shù)據(jù)傳輸發(fā)生在兩個階段。此傳輸?shù)牡谝粋€周期稱為設(shè)置階段。在此階段,ADDR、DATA(寫入時)和其他控制信號在外設(shè)邊界處變?yōu)橛行АT谙乱粋€時鐘沿,模塊使能信號被置位,指示讀/寫傳輸?shù)牡诙A段。地址和數(shù)據(jù)信號在 ENABLE 周期結(jié)束時被外設(shè)鎖存,因此為 ADDR 和 DATA 信號提供額外的一個周期余量以到達外設(shè)邊界。
寫周期
在數(shù)據(jù)寫入周期地址線和寫入數(shù)據(jù)總線在第 2 個時鐘沿(T2 周期開始)生效,并且在第 4 個時鐘沿(T4 周期開始)由外設(shè)寫入。讓我們考慮源寄存器的命名為 PERIPH_BUS_CONTROLLER_ADDR_reg , PERIPH_BUS_CONTROLLER_WDATA_reg 和目標寄存器是 PERIPH_WDATA_CAPT_reg。
寫入周期為 2 的 MCP 可應(yīng)用于以下路徑:
PERIPH_BUS_CONTROLLER_ADDR_reg -> PERIPH_WDATA_CAPT_reg PERIPH_BUS_CONTROLLER_WDATA_reg -> PERIPH_WDATA_CAPT_reg
PERIPH_BUS_CONTROLLER_SEL_reg -> PERIPH_WDATA_CAPT_reg
讀周期
類似地,對于讀取傳輸,外設(shè)的地址在第 2 個時鐘沿變?yōu)橛行?,并且外設(shè)在 T3 周期將有效數(shù)據(jù)放在讀取數(shù)據(jù)總線上,因此讀取數(shù)據(jù)在第 4 個時鐘沿變?yōu)橛行?。這里源寄存器是PERIPH_BUS_CONTROLLER_ADDR_reg,目的寄存器是PERIPH_BUS_CONTROLLER_RDATA_CAPT_reg。
讀取周期的 MCP 為 2:
PERIPH_BUS_CONTROLLER_ADDR_reg -> PERIPH_BUS_CONTROLLER_RDATA_CAPT_reg。
PERIPH_BUS_CONTROLLER_SEL_reg -> PERIPH_BUS_CONTROLLER_RDATA_CAPT_reg。
Amba 外設(shè)總線就是這樣一種接口,它有兩個周期訪問外設(shè)。
多周期訪問慢速外設(shè)
在高性能外圍總線中,數(shù)據(jù)讀/寫訪問發(fā)生在一個周期內(nèi)。然而,在該系統(tǒng)中,如果某些外圍設(shè)備不需要像整個系統(tǒng)那樣運行得更快,它可以通過向外圍總線控制器斷言等待狀態(tài)來創(chuàng)建每個讀/寫訪問作為多周期訪問。
在上面的示例中,外圍設(shè)備以該系統(tǒng)時鐘頻率的一半運行。已放置一個墊片,以便為每個讀/寫訪問為外圍總線控制器生成一個循環(huán)等待狀態(tài)。在沒有任何等待狀態(tài)(用于快速訪問)的情況下,總線控制器將在 sys_clk 的一個周期內(nèi)保持地址、控制和數(shù)據(jù)信號(用于寫入)有效。在對慢速外設(shè)進行讀/寫訪問期間,墊片生成一個周期的等待狀態(tài)(圖中的“transfer_wait”),該周期將 ADDR、DATA 和控制信號擴展為 sys_clk 的另一個周期。
地址和寫入數(shù)據(jù)在外設(shè)邊界處的 sys_clk 的第 3 個邊沿變?yōu)橛行?。?dāng) periph_module_en 被墊片斷言時,外設(shè)在 sys_clk 的第 5 個邊沿(periph clk 的第 3 個邊沿)鎖存地址和寫入數(shù)據(jù)總線。因此,對該外設(shè)的寫訪問相對于系統(tǒng)時鐘 (sys_clk) 的 MCP 為 2。
在讀操作期間,外設(shè)將有效數(shù)據(jù)放在讀數(shù)據(jù)總線上,在系統(tǒng)時鐘的第 5 個有效時鐘沿由主設(shè)備捕獲。因此,從 bus_controller_address_reg 生成并終止于“bus_controller_read_data_capt_reg”的路徑的 MCP 為 2。
路徑源自 periph_module_en 生成寄存器并終止于外設(shè)。
寫入數(shù)據(jù)捕捉寄存器或bus_controller_read_data捕捉寄存器仍然是periph_clk的半周期路徑或sys_clk的單周期路徑。同樣從transfer_wait生成寄存器到bus_controller的路徑也是periph_clk的半周期路徑或sys_clk的單周期路徑。
設(shè)計正確的錯誤或多周期路徑并在時序分析期間使用約束有助于關(guān)閉高頻系統(tǒng)的時序。同時,提供錯誤的約束可能導(dǎo)致設(shè)備的災(zāi)難性故障。設(shè)計人員在為綜合或時序分析設(shè)計或提供約束時應(yīng)該非常小心。