天天看点

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引脚置零后得到的输出波形

困扰了多天的问题就这样得到了解决。

继续阅读