天天看點

Xilinx BRAM輸出不定狀态的問題描述與解決措施1,問題描述

1,問題描述

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

Xilinx BRAM輸出不定狀态的問題描述與解決措施1,問題描述

圖一,出現錯誤的波形圖

檢查了好久,也一直在看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,然後仿真得到的波形圖如圖二所示:

Xilinx BRAM輸出不定狀态的問題描述與解決措施1,問題描述

圖二,對wea引腳置零後得到的輸出波形

困擾了多天的問題就這樣得到了解決。

繼續閱讀