引言
UltraRAM 原語(yǔ)(也稱(chēng)為 URAM)可在 Xilinx UltraScale +? 架構(gòu)中使用,而且可用來(lái)高效地實(shí)現(xiàn)大容量深存儲(chǔ)器。
由于大小和性能方面的要求,通常這類(lèi)存儲(chǔ)器不適合使用其他存儲(chǔ)器資源來(lái)實(shí)現(xiàn)。
URAM 原語(yǔ)具有實(shí)現(xiàn)高速內(nèi)存訪問(wèn)所需的可配置流水線屬性和專(zhuān)用級(jí)聯(lián)連接。流水線階段和級(jí)聯(lián)連接是使用原語(yǔ)上的屬性來(lái)配置的。
本篇博文描述的是通過(guò)將 URAM 矩陣配置為使用流水線寄存器來(lái)實(shí)現(xiàn)最佳時(shí)序性能的方法。
注意:本文由 Pradip K Kar、Satyaprakash Pareek 和 Chaithanya Dudha 共同撰寫(xiě)。
流水線需求:
通過(guò)在矩陣結(jié)構(gòu)中連接多個(gè) URAM,從可用的 URAM 原語(yǔ)實(shí)現(xiàn)大容量深存儲(chǔ)器。
矩陣由 URAM 的行和列組成。一列中的 URAM 使用內(nèi)置級(jí)聯(lián)電路級(jí)聯(lián),且多列 URAM 通過(guò)外部級(jí)聯(lián)電路互連,這被稱(chēng)為水平級(jí)聯(lián)電路。
作為示例,圖 1 示出了針對(duì) 64K 深 x 72 位寬存儲(chǔ)器的 4x4 URAM 矩陣的矩陣分解。
圖 1:4 行 4 列的 URAM 矩陣(可實(shí)現(xiàn) 64K 深 72 位寬的存儲(chǔ)器)
在沒(méi)有流水線設(shè)計(jì)的情況下,深度聯(lián)結(jié)構(gòu)會(huì)導(dǎo)致內(nèi)存訪問(wèn)出現(xiàn)大的時(shí)鐘輸出延遲。例如,在默認(rèn)情況下,上述 URAM 矩陣可以達(dá)到約 350 MHz。要以更快的速度訪問(wèn)內(nèi)存,應(yīng)插入流水線。如果在網(wǎng)表中指定了一定數(shù)量的輸出時(shí)延,Vivado Synthesis 即會(huì)自動(dòng)實(shí)現(xiàn)此功能。
指定 RTL 設(shè)計(jì)中的流水線:
有兩種方法可以用來(lái)指定 RTL 設(shè)計(jì)中的流水線的用途,可以通過(guò)使用 XPM 流程,也可以通過(guò)行為 RTL 來(lái)推斷內(nèi)存。
如果 RTL 設(shè)計(jì)通過(guò) XPM 流程來(lái)創(chuàng)建 URAM 內(nèi)存,則用戶(hù)可以將對(duì)流水線的要求指定為 XPM 實(shí)例的參數(shù)。參數(shù)“READ_LATENCY_A/B”用于捕獲內(nèi)存的時(shí)延要求。
可用的流水線階段數(shù)是 LATENCY 值減去 2。例如,如果 Latency 設(shè)置為 10,則允許 8 個(gè)寄存器階段用于流水線操作。另外兩個(gè)寄存器可用來(lái)創(chuàng)建 URAM 本身。
圖 2:使用 XPM 設(shè)置流水線設(shè)計(jì)
如果用戶(hù)使用 Vivado 用戶(hù)指南中提供的模板來(lái)編寫(xiě) RTL,并通過(guò)此方法來(lái)創(chuàng)建 URAM,那么,他們可以在 URAM 的輸出時(shí)創(chuàng)建盡可能多的寄存器階段。唯一的要求是,與數(shù)據(jù)一起,流水線寄存器的啟用也需要流水線化。
圖 3:URAM 塊輸出時(shí)的數(shù)據(jù)及流水線啟用規(guī)范
圖 3 顯示數(shù)據(jù)和流水線的啟用
圖 4 示出了 RTL 級(jí) RAM 流水線設(shè)計(jì)示例。
圖 4:用來(lái)指定數(shù)據(jù)和流水線啟用的 verilog 模板
分析日志文件:
Vivado Synthesis 根據(jù)上下文環(huán)境和場(chǎng)景發(fā)布與 URAM 流水線相關(guān)的不同消息。下表說(shuō)明要在 vivado.log文件中查找的一些消息和要采取的相應(yīng)操作。
請(qǐng)注意,推薦的流水線階段基于可實(shí)現(xiàn)最高性能(800 MHz+)的完全流水線化的矩陣。此建議不受實(shí)際時(shí)序約束的限制。
時(shí)間性能估計(jì):
下表說(shuō)明流水線寄存器的數(shù)量與可實(shí)現(xiàn)的最大估計(jì)頻率之間的關(guān)系。
請(qǐng)注意,實(shí)際的時(shí)間數(shù)仍將取決于最終地點(diǎn)和路線結(jié)果。
下列數(shù)字基于 speedgrade-2 Virtex? UltraScale+? 部件以及我們使用 4x4 矩陣實(shí)現(xiàn)的 64K x 72 URAM示例工程。
數(shù)據(jù)路徑延遲具有以下一個(gè)或多個(gè)組件。
Tco = 1.38 ns, Clk To CascadeOut on URAM
Tco = 0.82 ns, Clk To CascadeOut on URAM with OREG=true
Tco = 0.726 ns, Clk to Dataout on URAM with OREG=true, CASCADE_ORDER = LAST
URAM -> URAM級(jí)聯(lián)延遲= 0.2 ns
URAM -> LUT信號(hào)網(wǎng)絡(luò)延遲= 0.3 ns
LUT傳輸延遲= 0.125 ns
LUT -> LUT信號(hào)網(wǎng)絡(luò)延遲= 0.2 ns
LUT5 -> FF延遲= 0.05
結(jié)論:
URAM 原語(yǔ)是創(chuàng)建容量非常大的 RAM 結(jié)構(gòu)的有效方法。它們被設(shè)置為易于級(jí)聯(lián)以便在您的設(shè)計(jì)中創(chuàng)建容量更大的 RAM。
但是,太多這類(lèi)結(jié)構(gòu)級(jí)聯(lián)在一起可能會(huì)通過(guò) RAM 產(chǎn)生很大的延遲。從長(zhǎng)遠(yuǎn)來(lái)看,花時(shí)間讓您的 RAM 完全流水線化會(huì)帶來(lái)很多好處。
URAM 原語(yǔ)是創(chuàng)建容量非常大的 RAM 結(jié)構(gòu)的有效方法。它們被設(shè)置為易于級(jí)聯(lián)以便在您的設(shè)計(jì)中創(chuàng)建容量更大的 RAM。
但是,太多這類(lèi)結(jié)構(gòu)級(jí)聯(lián)在一起可能會(huì)通過(guò) RAM 產(chǎn)生很大的延遲。從長(zhǎng)遠(yuǎn)來(lái)看,花時(shí)間讓您的 RAM 完全流水線化會(huì)帶來(lái)很多好處。
-
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124514 -
時(shí)序設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
21瀏覽量
44026
原文標(biāo)題:通過(guò)在 Vivado Synthesis 中使 URAM 矩陣自動(dòng)流水線化來(lái)實(shí)現(xiàn)最佳時(shí)序性能
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開(kāi)發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
自動(dòng)化開(kāi)裝封碼流水線數(shù)據(jù)采集解決方案

面包成型流水線數(shù)據(jù)采集遠(yuǎn)程監(jiān)控系統(tǒng)

遠(yuǎn)程io模塊在汽車(chē)流水線的應(yīng)用
RISC-V五級(jí)流水線CPU設(shè)計(jì)

工業(yè)讀碼器解決方案在自動(dòng)化流水線上掃描條碼的應(yīng)用

SMT流水線布局優(yōu)化技巧
行云流水線 滿(mǎn)足你對(duì)工作流編排的一切幻想~skr
ADS900高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS5237流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS828流水線式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

MT6835磁編碼IC在自動(dòng)鏈板流水線中控制電機(jī)的應(yīng)用

評(píng)論