Altera自帶的RAM仿真學習


(1)單口RAM

1.無讀使能rden信號的ModelSim功能仿真:

wave_4

在不使用讀使能rden信號的情況下,單口RAM仿真結果表明:

1.寫使能wren為高時,寫數據操作有效;

2.寫使能wren為低時,讀數據操作有效;

3.寫有效(高)時,輸出端q輸出為剛寫入的數據;

4.一般選擇輸出寄存一拍。

2.有讀使能rden信號的ModelSim功能仿真:

wave_1

wave_2

在使用讀使能rden信號的情況下,單口RAM仿真結果表明:

1.讀使能rdren為高時,讀數據操作有效;

2.寫有效(高)時,讀使能信號為低,則輸出為上次讀使能信號有效時的數據;

3.寫有效(高)時,讀也有效(高)時,輸出端q輸出為剛寫入的數據。

 

另外,由於地址和數據在時鍾上升沿改變,因而此刻有效值仍為改變前的值。在下一上升沿,改變后的值有效。再下一個上升沿,輸出端q數據讀出。所以,由時序結果好像是經過“兩拍”后輸出數據。這源於數據是邊沿有效而不是中央有效(時序約束中也有涉及),同理SignalTap II中抓取的數據也會有這個情況。對於邊沿有效,在時鍾上升沿,信號的有效值為改變前的結果。

(2)雙口RAM

雙口RAM的仿真選用了真雙口RAM,有兩組PORT(A、B),初始內部數據為0。

2013-12-07_141236

仿真結果如下:

nonblocking_2

testbench中利用非阻塞賦值,在仿真時刻完成右值的更新,在仿真結束時刻完成左值的賦值。所以和單口RAM仿真中提到的一樣,信號在第一個時鍾沿改變數值,在第二個時鍾沿有效,在第三個時鍾沿輸出數據(由於輸出寄存一拍),這和實際情況也一致。

說明下圖中幾個標尺的解釋:

1.在25000ps時刻,地址0寫入數據f0h,在下一個時鍾沿q_a端輸出f0h,后面同理。

2.在155000ps時刻,A端口對地址2進行寫操作,而B端口對地址2進行讀操作,出現了Mixed Port Read-During_Write情況,在配置IP核時,我們選擇了讀端口輸出Old memory contents appear,故此時B端口讀出地址2原先的值f2h。同理,在165000ps時刻,B端口讀出地址2原先的值02h。

另外對於下面的設置,有點不理解,不知和上面有何區別。

2013-12-07_141458


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM