官术网_书友最值得收藏!

1.2 存儲器塊

本節將介紹存儲器塊的設計指導、操作和配置等內容,使讀者能正確配置和使用存儲器塊資源,以達到最好的設計性能,并通過設計實例說明嵌入式存儲器塊M20K的使用方法。

1.2.1 嵌入式存儲器塊設計指導

以確保設計的成功,此處需要讀者關注一些問題,包括存儲器塊的選擇、訪問沖突的解決、寫期間讀行為和奇偶校驗。

1.存儲器塊的選擇

Quartus 軟件會根據設計的速度和容量限制將用戶定義的存儲器分配到存儲器塊。例如,Quartus 軟件可以跨越多個可用存儲器塊來分布存儲器,以提高設計性能。如果要手工將存儲器分配給一個特定大小的存儲器塊,則在參數編輯器中使用 RAM IP 核。對于MLAB,可以使用軟件通過仿真實現單端口SRAM,這將使得使用最少的額外邏輯資源。

由于 MLAB 的雙重用途架構,在存儲器塊中只有數據輸入寄存器、輸出寄存器和寫地址寄存器可用。MLAB從ALM獲得讀地址寄存器。

對于Cyclone 10GX器件,資源屬性編輯器和時序分析器將M20K存儲器塊的位置報告為 EC_X<編號>_Y<編號>_N<編號>。盡管允許的分配位置為 M20K_X<編號>_Y<編號>_N<編號>。嵌入式單元(EC)是M20K存儲器塊的子位置。

2.訪問沖突的解決

在真正的雙端口模式下,可以對同一個存儲器位置執行兩個寫操作。然而,存儲器塊內沒有解決沖突的電路。為了避免將未知數據寫到地址,請在存儲器塊的外部實現沖突解決邏輯。

3.寫期間讀行為

自定義寫期間讀(read-during-write)行為,以滿足設計要求。這個行為有兩種模式,即相同端口的寫期間讀模式和混合端口的寫期間讀模式。

1)相同端口的寫期間讀模式

該模式用于單端口 RAM 或真正雙端口 RAM 的相同端口。在該模式下的輸出模式如表1.13所示,輸出模式為新數據的時序如圖1.25所示。

表1.13 用于相同端口寫期間讀模式的輸出模式

圖1.25 用于相同端口寫期間讀模式的時序(輸出模式為新數據)

2)混合端口的寫期間讀模式

該模式適用于簡單和真正雙端口 RAM 模式,其中兩個端口使用相同的時鐘對同一個存儲器地址執行讀和寫操作,即一個端口從存儲地址讀取,而另一個端口向該存儲地址寫入。在混合端口寫期間讀模式下,RAM的輸出模式如表1.14所示。

表1.14 混合端口寫期間讀模式下的RAM輸出模式

續表

圖1.26 用于混合端口寫期間讀模式的時序(輸出模式為新數據)

圖1.27 用于混合端口寫期間讀模式的時序(輸出模式為舊數據)

4.奇偶校驗

M20K塊的奇偶校驗位支持:

(1)奇偶校驗位是與數據寬度為 5、10、20 和 40(位 4、9、14、19、24、29、34 和39)的每4個數據位相關的第5位;

(2)在非奇偶校驗數據寬度中,在讀取或寫入操作期間會跳過奇偶校驗位;

(3)不對奇偶校驗位執行奇偶校驗功能。

1.2.2 存儲器塊打包模式

M20K 存儲器塊支持打包模式。打包模式功能將兩個獨立的單端口 RAM 塊打包到一個存儲器塊中。Quartus軟件通過將物理RAM塊置于真正的雙端口模式并使用地址的MSB來區分兩個邏輯 RAM 塊,在適當的情況下自動實現打包模式。每個獨立單端口 RAM 的大小不能超過目標塊大小的一半。

圖1.28 用于混合端口寫期間讀模式的時序(輸出模式為無關值/受限的無關值)

1.2.3 地址時鐘使能

嵌入式存儲器塊支持地址時鐘使能,只要信號使能(addressstall=1),就會保留以前的地址值。當存儲器塊配置為雙端口模式時,每個端口都有它自己獨立的地址時鐘使能。默認,地址時鐘使能信號為低(禁止)。

1.2.4 存儲器塊異步清除

M20K 存儲器塊支持對輸出鎖存器和輸出寄存器的異步清除。如果 RAM 不使用輸出寄存器,使用輸出鎖存器異步清除來清除RAM的輸出。

清除是一個異步信號脈沖,用于清除輸出。內部邏輯將清除脈沖進行擴展直到輸出時鐘的下一個上升沿。輸出將被清除,直到清除信號無效。

1.2.5 存儲器塊糾錯碼

糾錯碼(Error Correcting Code,ECC)允許用于檢測和糾正存儲器塊輸出的數據錯誤。ECC 可以在32 位字中糾正單個錯誤、雙鄰接錯誤和三鄰接錯誤。但是,ECC不能檢測到4個及以上的錯誤,M20K存儲器塊的ECC塊圖如圖1.29所示。

在×32寬度的簡單雙端口模式下,M20K存儲器塊內置對ECC的支持:

(1)當使用 ECC 時,M20K 存儲器塊的運行速度要比沒有 ECC 的簡單雙端口模式要慢。但是,在輸出譯碼器之前,可以選擇使能 ECC 流水線寄存器以實現更高的性能,與非流水線的ECC相比,有一個周期延遲的代價。

圖1.29 M20K存儲器塊的ECC塊圖

(2)M20K存儲器塊的ECC狀態與兩個ECC狀態標志通信,包括信號e(錯誤)和ue (不可糾正錯誤)。狀態標志是存儲器塊常規輸出的一部分,ECC 狀態的真值表如表 1.15 所示。當使用ECC時,無法訪問兩個奇偶校驗位,這是因為ECC會代替它們。

表1.15 ECC狀態的真值表

(1)如果使用ECC,則不能使用字節使能特征;

(2)不支持寫期間讀舊數據模式;

(3)不支持混合寬度配置。

1.2.6 使用M20K實現RAM

帶有一個時鐘真正雙端口 RAM 的 Verilog HDL 描述如代碼清單 1-14 所示,適配后的RAM網表結構如圖1.30所示。

代碼清單1-14 帶有一個時鐘真正雙端口RAM的Verilog HDL描述

圖1.30 帶有一個時鐘真正雙端口RAM適配后的RAM網表結構

真正雙端口RAM的符號如圖1.31所示。Cyclone 10 GX器件中M20K嵌入式存儲器塊的布局如圖1.32所示。

圖1.31 真正雙端口RAM的符號

圖1.32 Cyclone 10 GX器件中M20K嵌入式存儲器塊的布局

一個帶有字節使能簡單雙端口同步RAM的Verilog HDL描述如代碼清單1-15所示。

代碼清單1-15 一個帶有字節使能簡單雙端口同步RAM的Verilog HDL描述

適配后 RAM 部分的網表結構如圖 1.33 所示。設計在 Cyclone 10 GX 器件中的布局如圖1.34所示。

圖1.33 適配后RAM部分的網表結構

圖1.34 設計在Cyclone 10 GX器件中的布局

主站蜘蛛池模板: 陆河县| 丁青县| 乃东县| 河北省| 长治县| 湖口县| 响水县| 浮梁县| 广饶县| 青河县| 临湘市| 天津市| 高唐县| 彭泽县| 新余市| 马尔康县| 元谋县| 大理市| 五指山市| 正定县| 永仁县| 巴彦淖尔市| 辰溪县| 连州市| 潮州市| 黄大仙区| 柳江县| 德化县| 新疆| 本溪市| 灌南县| 耿马| 双峰县| 鄄城县| 洪江市| 西华县| 双峰县| 当涂县| 明光市| 绥中县| 师宗县|