- 2017-05-24
- dut的数据来自两个方面:logic逐拍产生的data_gen数据,速率快;以及来自user的固定数据,灵活度高。
将bram作为整页数据的缓冲区,供logic、dut、arm侧缓存读写。合理控制WEB、ENB、甚至是RSTB信号,来控制数据的读写方向和节奏。
- 向dut写数据
- 由data_gen产生数据,控制web+enb写入bram,该数据会出现在doutb上(稳定在下个节拍);
- 数据来自arm侧,由PortA写入缓存在bram中,禁止web使能enb,数据在doutb出来,同上;
- dut数据读出给user
- dut数据在dinb写入,配合web+enb,然后在下个节拍doutb上跟data_gen的数据实时compare,出fbc;
- 因为数据缓存在bram中,用户可以随时读出来;
经过对bram的研究,最终设置为:
- stand-alone模式,true-dual-port;
- byte-write-enable功能不需要勾选;
- PortA-32bx2k, PortB-8bx8k;
- primitive和core 的output registers都不要勾选;
- rst信号可选,value可选;
- io接口上怎么设置默认态?包含hi-z,全1,全0,其他数据5A等。
- 全0全1及其他数据比较好处理,保持上环节的写dut状态,写的数据即doutb上保持的数据;
- stand-alone模式下的rstb功能也能复位到一个默认value上,仅限于一个;
- 高阻hi-z态不好处理。可以在we/re都无效的时候,将io赋值为高阻hi-z。