据我所知,EBR的ice40不能改变 WRITE_MODE 和 READ_MODE 跑步的时候(如果我错的话请纠正我)。因此,我建议在您要使用的配置中实例化您的EBR 后 启动PMOD。 EBR的内容必须包括PMOD的配置数据,以通常的方式指定 INIT_0 通过 INIT_F 。
WRITE_MODE
READ_MODE
INIT_0
INIT_F
EBR的读地址需要是来自控制PMOD启动的FSM的地址的多路复用器,以及启动后使用的地址,这将仅花费大约8个LUT。
我使用的是Xilinx,但FPGA中基本构建模块之间的差异很小。
我快速搜索了“Lattice BRAM”,发现Lattice存储器和Xilinx一样,是双端口存储器。这意味着您可以从两个位置访问内存。您应该检查您的设备是否具有该选项。
如果是这样,解决方案是实例化双端口存储器并首先将其用作ROM来初始化显示器。然后使用另一个端口将BRAM用作普通内存。 最大的优点是两端口访问的所有逻辑都已经在芯片上,因此您不必使用任何可编程逻辑。
请注意,只有设备重新配置才能恢复内容。正常重置不会。
仍然是在启动时初始化RAM内容的问题。我知道它可以在Xilinx中完成,因此您必须查找等效的莱迪思应用笔记。