使用QDR-IV設(shè)計高性能網(wǎng)絡(luò)系統(tǒng)之二
在本系列第一部分,我們探討了兩種類型的QDR-IV存儲器、時鐘、讀/寫操作和分組操作。在第二部分,我們將探討總線轉(zhuǎn)換、總線翻轉(zhuǎn)、地址奇偶校驗等重要的總線問題。
總線轉(zhuǎn)換的注意事項
總線轉(zhuǎn)換時間非常重要,其決定了讀和寫指令間是否需要額外的間隔來避免在同一個I/O 端口上發(fā)生總線沖突。
想象下QDR-IV HP SRAM 中端口A 先后收到寫指令和讀指令。從CK 信號的上升沿(與初始化寫指令周期相對應(yīng))算起,在整整三個時鐘周期后向DQA 引腳提供寫數(shù)據(jù)。讀數(shù)據(jù)則將在下一個周期發(fā)送,因為 DQ從CK 信號的上升沿(與初始化讀指令的周期相應(yīng))算起五個時鐘周期后才能獲得數(shù)據(jù)。此外,為符合總線轉(zhuǎn)換時間和傳輸時延(從ASIC/FPGA 到QDR IV 存儲器),還有兩個額外周期。因此,啟動寫指令后,可以立即啟動讀指令。
在其他情況下,如果先啟動讀指令后啟動寫指令,那么發(fā)送讀指令經(jīng)過三個時鐘周期后,才能發(fā)送寫指令。這是因為,從在時鐘信號CK 的上升沿上對讀指令進(jìn)行采樣算起,經(jīng)過五個周期后可獲得DQA 引腳上的讀數(shù)據(jù),并且從在時鐘信號CK 的上 升沿上對寫指令進(jìn)行采樣算起,在整三個時鐘周期內(nèi)向DQA 引腳提供寫數(shù)據(jù)。否則,將會發(fā)生總線沖突。因此,發(fā)送寫指令后的最小時鐘周期應(yīng)該為RL – WL + 1(RL:讀時延;WL:寫時延;這兩個時延的單位為時鐘周期數(shù))。另外一個時鐘周期用于正確捕獲數(shù)據(jù)并補償總線轉(zhuǎn)換時延(通常為一個時鐘周期)。
如果傳輸時延大于總線轉(zhuǎn)換時延,那么‘讀到寫’指令間的間隔為:
“讀到寫”指令間的時間周期 = 讀時延 – 寫時延 + 1 + 傳輸時延
請參考圖7。發(fā)送讀指令經(jīng)過四個時鐘周期后,將發(fā)送端口A 的寫指令。這樣是為了避免因讀/寫時延、總線轉(zhuǎn)換時間和傳輸時延間的差別而導(dǎo)致的總線沖突。
圖7. QDR-IV HP SRAM時序分析圖
總線翻轉(zhuǎn)
QDR-IV 器件支持總線翻轉(zhuǎn)以降低切換噪聲和I/O功耗。在存儲事務(wù)處理中,存儲器控制器和QDR-IV都可以選擇應(yīng)用總線翻轉(zhuǎn)。
由于QDR-IV 器件的POD 信令模式為I/O 信號提供了到VDDQ 的高壓終端選項,所以信號轉(zhuǎn)為高電平邏輯狀態(tài)不會耗電。因此,總線翻轉(zhuǎn)對于POD I/O 信號是一個很重要的性能。QDR-IV 會保證翻轉(zhuǎn)地址和數(shù)據(jù)總線的數(shù)據(jù)完整性。
使用芯片配置寄存器來啟用或禁用地址和數(shù)據(jù)總線翻轉(zhuǎn)功能。
地址總線翻轉(zhuǎn)
AINV 是雙倍數(shù)據(jù)速率信號,每次將地址發(fā)送給存儲器器件時都會更新該信號。AINV 引腳指示是否對地址總線(An –A0)和AP 進(jìn)行了翻轉(zhuǎn)。AINV 是高電平有效信號。當(dāng)AINV = 1 時,將翻轉(zhuǎn)地址總線;當(dāng)AINV = 0 時,不翻轉(zhuǎn)地址總線。AINV 引腳的功能由存儲器控制器控制。
地址總線和地址奇偶位都被視為地址組(AG)。
表5顯示的是AG 定義以及x18 和x36 QDR-IV 選項的AINV 設(shè)置條件。
表5. 地址總線翻轉(zhuǎn)條件
x18 | x36 | ||
地址群 | AG[22:0] = A[21:0],AP | AG[21:0] = A[20:0],AP | |
翻轉(zhuǎn)邏輯 |
| 如果AG[21:0]中邏輯“0”的數(shù)量≥11,將AINV置為1,這時會對AG[21:0]進(jìn)行翻轉(zhuǎn) | |
如果AG[22:0]中邏輯“0”的數(shù)量12,將AINV置為0,這時不會翻轉(zhuǎn)AG[22:0] | 如果AG[21:0]中邏輯“0”的數(shù)量11,將AINV 置為0,這時不會翻轉(zhuǎn)AG[21:0] |
x36器件示例
不進(jìn)行地址總線翻轉(zhuǎn):
假設(shè)要訪問的地址分別為22’h 000199和22’h 3FFCFF。17個地址引腳需要在第一個和第二個地址的邏輯狀態(tài)間進(jìn)行切換,如下表所示(紅色單元格顯示)。這樣會增大地址引腳上的切換噪聲、I/O電流以及串?dāng)_。
表6. 地址總線序列(未進(jìn)行總線翻轉(zhuǎn))
AG[21:0] | 22位(二進(jìn)制) | |||||||||||||||||||||
第一個地址組- 22h 000199 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
第2個地址組 - 22h 3FFCFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
進(jìn)行地址總線翻轉(zhuǎn):
根據(jù)表5顯示,第一個地址組(22h 000199)滿足翻轉(zhuǎn)邏輯條件。因此,存儲器控制器發(fā)送第一個地址組前,它會將地址組從22’h 000199翻轉(zhuǎn)為22’h 3FFE66,并將AINV引腳置為1。由于不需要翻轉(zhuǎn)第二個地址組,所以存儲器控制器可以將其直接發(fā)送,并將AINV設(shè)置為0。
下表顯示的是地址總線翻轉(zhuǎn)的結(jié)果。在這種情況下,只有5個地址引腳需要切換邏輯(紅色單元格顯示)。切換位的總數(shù)降低為5,所以降低了由于同時切換輸出(SSO)而引起的噪聲、I/O電流以及串?dāng)_。
表7. 地址總線序列(進(jìn)行總線翻轉(zhuǎn))
AG[21:0] | 22位(二進(jìn)制) | AINV | |||||||||||||||||||||
第一個地址組 - 22h 3FFE66(翻轉(zhuǎn)后) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
第二個地址組 - 22h 3FFCFF(保持不變) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
數(shù)據(jù)總線翻轉(zhuǎn)
數(shù)據(jù)總線翻轉(zhuǎn)在數(shù)據(jù)線路中也類似,但翻轉(zhuǎn)位由存儲器控制器在存儲器寫操作期間生成,并且翻轉(zhuǎn)位由QDR-IV存儲器中的翻轉(zhuǎn)邏輯在存儲器讀操作期間生成。
DINVA和DINVB引腳指示了是否翻轉(zhuǎn)相應(yīng)的DQA和DQB引腳。DINVA和DINVB均為高電平有效信號。當(dāng)DINV = 1時,將翻轉(zhuǎn)數(shù)據(jù)總線;當(dāng)DINV = 0時,不翻轉(zhuǎn)數(shù)據(jù)總線。
DINVA[1]和DINVA[0]相互獨立并控制與其相應(yīng)的DQA組。DINVA[0]控制DQA[17:0](對于x36的配置)或DQA[8:0](對于x18的配置)。DINVA[1]控制DQA[35:18](對于x36的配置)或DQA[17:9](對于x18的配置)。同樣,DINVB[0]控制x36配置中的DQB[17:0]或x18配置中的DQB[8:0]。DINVB[1]控制x36配置中的DQB[35:18]或x18配置中的DQA[17:9]。
表8顯示的是DINV位說明以及x18和x36 QDR-IV選項的DINVA設(shè)置條件。
表8. 數(shù)據(jù)總線翻轉(zhuǎn)條件
x18 | x36 | |
DINV位 | DINVB[1]控制DQB[17:9], DINVB[0]控制DQB[8:0] | DINVA[1]控制DQA[35:18], DINVA[0]控制DQA[17:0] DINVB[1]控制DQB[35:18], DINVB[0]控制DQB[17:0] |
翻轉(zhuǎn)邏輯 | 如果DQA[8:0]中的邏輯“0”數(shù)量 ≥ 5,將DINVA[0]設(shè)置為1,這時會對DQA[8:0]進(jìn)行翻轉(zhuǎn) | 如果DQA[17:0]中的邏輯“0”數(shù)量 ≥ 10,將DINVA[0]設(shè)置為1,這時會對DQA[17:0]進(jìn)行翻轉(zhuǎn) |
如果DQA[8:0]中的邏輯“0”數(shù)量 5,那么不對DQA[8:0]進(jìn)行翻轉(zhuǎn)并將DINVA[0]設(shè)置為0 | 如果DQA[17:0]中的邏輯“0”數(shù)量 10,那么不對DQA[17:0]進(jìn)行翻轉(zhuǎn),并將DINVA[0]設(shè)置為0 |
注意:可以對DINVA[1]、DINVB[0]以及DINVB[1]使用相同的翻轉(zhuǎn)邏輯,以便控制相應(yīng)的DQ組。
x18器件的示例
不進(jìn)行數(shù)據(jù)總線翻轉(zhuǎn):
假設(shè)需要分別發(fā)送DQA[8:0]上的9’h 007和9’h 1F3。6個數(shù)據(jù)引腳需要在第一個和第二個DQA[8:0]位的邏輯狀態(tài)之間進(jìn)行切換,如下表所示(紅色單元格顯示)。這樣會增大數(shù)據(jù)引腳上的切換噪聲、I/O電流以及串?dāng)_。
表9. 數(shù)據(jù)總線序列(不進(jìn)行總線翻轉(zhuǎn))
DQA[8:0] | 9位(二進(jìn)制) | ||||||||
第一個DQA[8:0] - 9h 007 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
第二個DQA[8:0] - 9h 1F3 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
進(jìn)行數(shù)據(jù)總線翻轉(zhuǎn):
根據(jù)表8,第一個DQA[8:0]滿足翻轉(zhuǎn)邏輯條件。因此,存儲器控制器發(fā)送第一個DQA[8:0]前,它會將引腳地址從9’h 007翻轉(zhuǎn)為9’h 1F8,并將DINVA[0]引腳設(shè)置為1。由于第二個DQA[8:0]不需要翻轉(zhuǎn),所以存儲器控制器可以直接發(fā)送它,并將DINVA[0]設(shè)置為0。
表10顯示的是數(shù)據(jù)總線翻轉(zhuǎn)的結(jié)果。在這種情況下,只有3個數(shù)據(jù)引腳需要切換邏輯(紅色單元格顯示)。切換位的總數(shù)降低為3,所以降低了SSO的噪聲、I/O電流以及串?dāng)_。
表10. 數(shù)據(jù)總線序列(進(jìn)行總線翻轉(zhuǎn))
DQA[8:0] | 9位(二進(jìn)制) | DINVA[0] | ||||||||
第一DQA[8:0] - 9h 1F8(翻轉(zhuǎn)后) | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
第二個DQA[8:0] - 9h 1F3(保持不變) | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
QDR-IV只有一條地址總線,但其以雙倍數(shù)據(jù)速率和高頻率運行。因此,地址奇偶校驗輸入(AP)和地址奇偶校驗錯誤標(biāo)志輸出(PE#)引腳提供了片上地址奇偶校驗功能,以便能夠確保地址總線完整性。地址奇偶校驗功能是可選的;可以使用配置寄存器來啟用或禁用它。
通過該AP引腳可以在各地址引腳(An到A0)上進(jìn)行偶校驗。設(shè)置AP值,使AP和An-A0中邏輯“1”的總數(shù)為偶數(shù)。
對于數(shù)據(jù)總線寬度為x18的器件,設(shè)置AP值,使A[21:0]和AP中邏輯“1”的總數(shù)為偶數(shù)。
對于數(shù)據(jù)總線寬度為x36的器件,設(shè)置AP值,使A[20:0]和AP中邏輯“1”的總數(shù)為偶數(shù)。
器件的示例
以數(shù)據(jù)總線寬度為x36的器件的21’h1E0000和21’h1F0000地址為示例。表11顯示的是如何為每個地址設(shè)置AP值。
表11. 地址奇偶功能
| AP | A[20:0]和AP中邏輯“1”的 總數(shù) | |||||||||||||||||||||||
21h1E0000 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 因為在A[20:0]中邏輯“1”的總數(shù)為偶數(shù)(4) | |
21h1F0000 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 6 |
|
當(dāng)發(fā)生奇偶錯誤時,在配置寄存器4、5、6和7中(請查看相關(guān)數(shù)據(jù)手冊,了解有關(guān)配置寄存器的更多信息)記錄第一個錯誤的完整地址以及端口A/B錯誤位和地址翻轉(zhuǎn)位。端口A/B錯誤位表示發(fā)生地址奇偶錯誤的端口:0表示端口A,1表示端口B。持續(xù)鎖存該信息,直到向配置寄存器3中的地址奇偶錯誤清除位寫入1來清除該信息為止。
通過兩個計數(shù)器,可以表示是否發(fā)生了多個地址奇偶錯誤。端口A錯誤計數(shù)是端口A地址上奇偶錯誤數(shù)量的運行計數(shù)器。同樣,端口B錯誤計數(shù)是端口b地址上奇偶錯誤數(shù)量的運行計數(shù)器。每個計數(shù)器獨立計數(shù)到最大值(3),然后將停止計數(shù)。這些計數(shù)器均是自由運行的;對配置寄存器3的地址奇偶錯誤清除位寫入1,可將其復(fù)位。
檢測到地址奇偶錯誤后,寫操作就會被忽略,以防止損壞存儲器。但是,如果輸入地址錯誤,仍會繼續(xù)執(zhí)行讀操作,但存儲器會發(fā)送出假數(shù)據(jù)。
PE#為低電平有效信號,表示地址奇偶錯誤。檢測到地址奇偶錯誤后,PE#信號在8個周期(QDR-IV XP SRAM)或5個周期(QDR-IV HP SRAM)內(nèi)被設(shè)置為0。它將保持置位狀態(tài),直到通過配置寄存器清除了錯誤為止。處理完地址翻轉(zhuǎn)便表示完成了地址奇偶檢查。
PE#轉(zhuǎn)為低電平后,會停止存儲器操作,并使用配置寄存器將PE#復(fù)位為高電平。此外,由于發(fā)生AP錯誤的寫操作也被阻止,所以需要向存儲器重新編寫數(shù)據(jù)。
在本系列第三部分,我們將探討校正問題,其中包括矯正訓(xùn)練、控制/地址校正和讀寫校正,以及糾錯碼(ECC)和QDR-IV存儲器控制器的設(shè)計建議。
評論