1,問題描述
使用BRAM存儲資料,并且按照上一篇文章所叙述,對BRAM進行讀操作,但是當複位信号複位時,輸出的結果中出現了一段不定狀态,并且這段不定狀态的長度和複位之前已讀出的資料的長度相同,仿真得到的波形圖如圖一所示:

圖一,出現錯誤的波形圖
檢查了好久,也一直在看BMG IP核的說明文檔,還是沒有發現錯誤,後來不經意間發現,自己一直考慮讀的問題,沒有考慮到有可能在“寫”的過程中出現了錯誤。下面是例化BRAM IP核的程式;
BRAM0 My_Bram (
.clka(clk1), // input wire clka
.rsta(rsta), // input wire rsta
.ena(temp), // input wire ena
.wea(), // input wire [0 : 0] wea
.addra(addra), // input wire [11 : 0] addra
.douta(dout), // output wire [15 : 0] douta
.dina()
);
由于整個過程中并沒有用到寫,是以dina和wea引腳均懸空,思考,wea引腳狀态未定,可能為0,也可能為1,是以嘗試着将wea引腳置1,然後仿真得到的波形圖如圖二所示:
圖二,對wea引腳置零後得到的輸出波形
困擾了多天的問題就這樣得到了解決。